eae gente, blz ? então, pra quem ta começando com pawno e até pra quem já e das antigas ainda esquenta a cabeça com warnings e erros simples que fodem com um dia inteiro de programação rs vou por uma lista aqui com a causa dos erros/warnings mais comuns, suas causas e como consertar.
Categorias de erro
Os erros são separados em três classes:
Errors - Descrever situações onde o compilador é incapaz de gerar o código apropriado.Mensagens de erros são numeradas de 1 a 99.
Fatal errors - Erros fatais são erros que o compilador não pode recuperar.Análise é abortada.Mensagens de fatal errors são numeradas 100-199.
Warnings - Os warnings são exibidos para os pressupostos do compilador não intencionais e erros comuns.As mensagens de warnings são numeradas 200-299.[/spoiler]
Warnings comuns
- Loose Indentation
- Causa: Você nao deu uma formatação (alinhamento) correto ao script.
public OnPlayerLeaveCheckpoint(playerid)
{
SendClientMessage(playerid,-1,"Exemplo de loose Indentation by ssgames.");
print("Exemplo de loose Indentation by ssgames.");
return 1;
}
- Fix: Só arrumar o alinhamento do código.
public OnPlayerLeaveCheckpoint(playerid)
{
SendClientMessage(playerid,-1,"Exemplo de loose Indentation by ssgames.");
print("Exemplo de loose Indentation by ssgames.");
return 1;
}
- Unreachable code
- Causa: O compilador diz que não pode ser acessado o trecho completo do código, é retornado antes que ele chegue lá.
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(vehicleid == 520)
{
SendClientMessage(playerid,-1,"Você entrou no veiculo 520, by ssgames.");
return 1;
}
else return 0;
return 1;
}
- Fix: Verifique os returns e conserte-os.
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(vehicleid == 520)
{
SendClientMessage(playerid,-1,"Você entrou no veiculo ID 520, by ssgames.");
return 1
}
return 1;
}
- Nested comment
- Causa: Um aviso muito importante. Você comentou algo em um comentário.
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
/* if(vehicleid == 520)
{
if(playerid == 0)
{
/* if(ispassenger)
{
print("SSGAMES!");
return 1;
}
}
} */
return 1;
}
- Fix: Basta retirar o segundo comentário.
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
/* if(vehicleid == 520)
{
if(playerid == 0)
{
if(ispassenger)
{
print("SSGAMES!");
return 1;
}
}
} */
return 1;
}
- Number of arguments does not match definition
- Causa: Você tem mais ou menos argumentos do que você realmente tem que ter.
CMD:centro(playerid,params[])
{
#pragma unused params
SetPlayerPos(playerid,0.0,0.0,3.0,90.0);
SendClientMessage(playerid,-1,"Você foi posicionado ao centro do mapa, by ssgames.");
return 1;
}
- Fix: Olhe para as sintaxes corretas para a função. Use sempre o SA-MP Wiki para ver as definições corretas dos argumentos. Lá diz que SetPlayerPos só tem quatro argumentos; playerid, X, Y e Z.
CMD:centro(playerid,params[])
{
#pragma unused params
SetPlayerPos(playerid,0.0,0.0,3.0);
SetPlayerFacingAngle(playerid,90.0);
SendClientMessage(playerid,-1,"Você foi posicionado ao centro do mapa, by ssgames.");
return 1;
}
- Symbol is never used 'symbol'
- Causa: Você criou alguma variavel que nunca foi usada.
CMD:supertapa(playerid,params[])
{
#pragma unused params
new Float:Pos[3],string[128];
GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
SetPlayerPos(playerid,Pos[0],Pos[1],Pos[2] + 200);
SendClientMessage(playerid,-1,"Voce tomou um tapa.");
return 1;
}
- Fix: Basta remove-la.
CMD:supertapa(playerid,params[])
{
#pragma unused params
new Float:Pos[3];
GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
SetPlayerPos(playerid,Pos[0],Pos[1],Pos[2] + 200);
SendClientMessage(playerid,-1,"Voce tomou um tapa, by ssgames.");
return 1;
}
- Unknown parameter in substitution
- Causa: Você usou um parâmetro em um define que é desconhecido.
#define PutPos(%1,%2,%3,%4); SetPlayerPos(%9,%2,%3,%4); // %9 não foi definido aqui.
- Fix: Use os parâmetros certos, e certifique-se que está definido antes.
#define PutPos(%1,%2,%3,%4); SetPlayerPos(%1,%2,%3,%4);
Se você acha que faltou algum warn aqui, comente abaixo seguindo o mesmo modelo, Causa e Fix.
Erros Comuns
- Undefined symbol 'symbol'
- Causa: O oposto de "symbol is never used". Você está usando uma variável em algum lugar que você não tenha criado.
CMD:ssgames(playerid,params[])
{
#pragma unused params
GetPlayerName(playerid,Playername,sizeof(Playername));
SendClientMessage(playerid,-1,Playername);
return 1;
}
- Fix: Crie a variável.
CMD:ssgames(playerid,params[])
{
#pragma unused params
new Playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,Playername,sizeof(Playername));
SendClientMessage(playerid,-1,Playername);
return 1;
}
- Symbol already defined 'symbol'
- Causa: Você criou uma variável duas vezes.
CMD:ssgames(playerid,params[])
{
new Playername[MAX_PLAYER_NAME];
#pragma unused params
new Playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,Playername,sizeof(Playername));
SendClientMessage(playerid,-1,Playername);
return 1;
}
- Fix: Apague uma.
CMD:ssgames(playerid,params[])
{
#pragma unused params
new Playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,Playername,sizeof(Playername));
SendClientMessage(playerid,-1,Playername);
return 1;
}
- Expression has no effect
- Causa: Não tenho certeza sobre isso. Eu acho que é causada por símbolos inválidos em lugares onde não deveriam estar.
CMD:ssgames(playerid,params[])
{
#pragma unused params
GivePlayerWeapon(playerid,46,1);k
SendClientMessage(playerid,-1,"Você ganhou um paraquedas.");
return 1;
}
- Fix: Apague-o.
CMD:ssgames(playerid,params[])
{
#pragma unused params
GivePlayerWeapon(playerid,46,1);
SendClientMessage(playerid,-1,"Você ganhou um paraquedas.");
return 1;
}
- Empty statement
- Causa: Você tem duplos símbolos, tais como;; .
CMD:ssgames(playerid,params[])
{
#pragma unused params
GivePlayerWeapon(playerid,46,1);
SendClientMessage(playerid,-1,"Você ganhou um paraquedas.");;
return 1;
}
- Fix: Apague um.
CMD:ssgames(playerid,params[])
{
#pragma unused params
GivePlayerWeapon(playerid,46,1);
SendClientMessage(playerid,-1,"Você ganhou um paraquedas.");
return 1;
}
- Function "function" is not implemented
- Causa: Você usou uma função que não é conhecida pelo compilador. ou Se você receber muitos erros, enquanto alguns deles são esse erro, você esqueceu de fechar uma função com um suporte.
CMD:ssgames(playerid,params[])
{
SendFormatMessage(playerid,-1,"Cash: %d ... Score: %d",GetPlayerMoney(playerid),GetPlayerScore(playerid));
return 1;
}
- Fix: Adicione a função ausente no script. ou Encontre o suporte em falta e adicione-o.
new str[128];
#define SendFormatMessage(%0,%1,%2,%3) format(str, sizeof(str),%2,%3) && SendClientMessage(%0, %1, str)
-[Fatal Error]- Cannot read from file 'file'
- Causa: Você colocou no topo do script '# include <file>', mas o arquivo não existe na pasta '/ pawno / includes.
- Fix: Coloque o arquivo na pasta includes ou remova a linha include (isso pode causar problemas com o script, por isso é melhor usar a primeira solução.)
Se você acha que faltou algum erro aqui, comente abaixo seguindo o mesmo modelo, Causa e Fix.
Creditos:Brinquedo_Script
Nenhum comentário:
Postar um comentário
Escreva seu comentario aqui.