init.c: o coração do servidor (sua primeira linha de EnScript)
Todo servidor DayZ tem um init.c — o script que roda quando o mundo nasce. É aqui que você define data, clima, loadout inicial e liga a economia. É também sua porta de entrada no EnScript, a linguagem do DayZ. Visão de quem nunca programou.
Dentro da pasta da sua missão (`mpmissions/<sua-missao>/`) tem um arquivo chamado `init.c`. Quando o servidor sobe, é esse script que roda primeiro — ele monta o mundo: que horas são, que clima faz, como o jogador nasce e com o quê, e liga a Central Economy. Mexer aqui é mexer no coração do servidor.
O `.c` não é por acaso: o DayZ usa o **EnScript**, uma linguagem muito parecida com C/C++. Se você nunca programou, a lógica básica (variáveis, if/else, laços, funções) é a MESMA — e é exatamente isso que você aprende no nosso repositório aberto Codes-C antes de encarar o init.c.
As 3 partes que todo init.c tem
- `void main()` — roda uma vez no boot. Aqui você acerta data/hora, clima e liga a economia.
- `class CustomMission: MissionServer` — onde você SOBRESCREVE (override) comportamentos: como o personagem é criado (`CreateCharacter`) e o que ele ganha ao nascer (`StartingEquipSetup`).
- `Mission CreateCustomMission(...)` — a última linha, que entrega a sua missão pro jogo usar.
void main()
{
// 1. Data/hora do servidor
int year, month, day, hour, minute;
GetGame().GetWorld().GetDate(year, month, day, hour, minute);
GetGame().GetWorld().SetDate(year, month, day, 9, 0); // sempre 09:00
// 2. Liga a Central Economy (loot/eventos)
Hive ce = CreateHive();
if (ce) ce.InitOffline();
}
class CustomMission: MissionServer
{
// O que o jogador ganha ao nascer
override void StartingEquipSetup(PlayerBase player, bool clothesChosen)
{
player.GetInventory().CreateInInventory("Rag");
// adicione mais itens aqui...
}
}
Mission CreateCustomMission(string path)
{
return new CustomMission();
}Diferente de um XML, no init.c uma vírgula/chave fora do lugar quebra TUDO — o servidor não sobe. Depois de mexer, suba uma vez e leia o `.RPT`: erros de script aparecem lá (procure por `Compile error` / `unexpected`). É EnScript: indentação não importa, mas `{ }` e `;` sim.
Não tente reescrever o init.c inteiro no primeiro dia. Mude UMA coisa (a hora no `SetDate`, ou um item no `StartingEquipSetup`), suba, veja funcionar. Aprender EnScript a fundo (override de hooks, 3_Game, mods) é assunto dos módulos avançados — aqui é só você entender o mapa.
Ferramentas que ajudam aqui
Conteúdo original da Tecplay. Referências à wiki oficial da Bohemia Interactive servem apenas como atribuição de fonte — não reproduzimos textos, tabelas ou assets deles.
