TecplayTECPLAY
Base de Conhecimento
Mods & Customização

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.

Atualizado em 10 de junho de 2026

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.

init.c é EnScript (parente do C)

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.

Codes-C — lógica de programação em C (nosso repo, grátis)

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.
Esqueleto mínimo de um init.c (a base que todo servidor tem)
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();
}
Um erro de sintaxe derruba a missão inteira

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.

Colou um erro de script? Joga no Diagnóstico de Erros
Comece pequeno

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.

Referência oficial de Enforce Script (Bohemia)

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.