São dez documentadas no repositório, cada uma com a mensagem exata que o jogo imprime, por que ela engana e a correção. Estas são as que mais aparecem.
Uma expressão continuada na linha de baixo
string msg = "first part "
"second part";
Expected ',' or ')', not a '<a primeira string>'
Can't compile "Game" script module!
Por que engana: O erro sai na linha de cima e cita o primeiro pedaço, então parece um parêntese faltando. No C as duas strings se juntariam; no Enforce, não. E não é só com texto: uma conta que começa a linha seguinte com + ou * derruba do mesmo jeito.
Correção: Uma instrução por linha, montando numa variável local. Quebrar a chamada da função em várias linhas pode; o que quebra é partir a expressão.
debug é palavra reservada
class MyConfig
{
int enabled;
int debug;
}
Syntax error
Por que engana: O erro aparece na linha da class, não no membro. Qualquer identificador chamado debug (campo, variável local ou parâmetro) é recusado.
Correção: Renomeie para debugLog, verbose ou parecido.
Pasta de script dentro do PBO que o config.cpp nunca compila
class defs
{
// sem gameScriptModule: Scripts/3_Game não é compilada por ninguém
class worldScriptModule
{
value = "";
files[] = { "MyMod/Scripts/4_World" };
};
};
Can't find variable 'MY_CONSTANT'
Por que engana: O erro aparece em outro arquivo, o que usa o símbolo. A reação natural é caçar um erro de digitação, mas a causa está no config.cpp, que nem parece relacionado. Estar empacotado no PBO não basta: quem decide é o files[].
Correção: Confira o files[] do config.cpp: toda pasta de script com arquivos .c precisa estar listada num módulo.
Global repetida entre dois mods
mymanager.c(28): Multiple declaration of variable 'ROOT_DIR'
Multiple declaration of variable
Por que engana: Cada mod compila sozinho sem problema. A falha só aparece quando os dois estão no mesmo servidor, que é a máquina do cliente, nunca a sua bancada. modded class repetido entre mods não conta: isso é o mecanismo funcionando.
Correção: Prefixe toda global com a sigla do próprio mod. Um nome genérico também colide com mods de terceiros que você nunca viu.