28/12/2024 16:41
(Esta mensagem foi modificada pela última vez a: 28/12/2024 16:53 por xbruno1000x.)
O ideal seria encontrar de onde esses valores tão altos estão surgindo e resolver a raiz do problema, mas é possível fazer uma solução temporária também para evitar crash's/debug's.
Adicione uma validação no modulo principal para que esses valores não passem adiante, conforme o exemplo abaixo:
Dessa forma nenhum código irá tentar acessar uma posição inválida do array. Poderia até mesmo remover o printf para manter o log limpo.
Por outro lado, para corrigir o problema de maneira permanente, teria que revisar os códigos de hook. O runtime error do YSI "Parameter count loop detected." indica que existe hook ou callback mal configurada ou mal chamada.
Certifique-se de a assinatura da função estar consistente, ou seja, deve ser da forma abaixo:
Também podem haver recursões gerando o problema, como o exemplo abaixo:
Busque por esses problemas nas hook OnPlayerDisconnect para tentar resolver o problema pela raiz. Com a verificação você já deve evitar que esse problema gere quaisquer males ao servidor.
Adicione uma validação no modulo principal para que esses valores não passem adiante, conforme o exemplo abaixo:
Código:
public OnPlayerDisconnect(playerid, reason)
{
//O código abaixo deve estar no topo da public, para garantir que nada seja processado antes dele.
if (playerid < 0 || playerid >= GetMaxPlayers())
{
printf("[ERRO] playerid fora dos limites na OnPlayerDisconnect: %d", playerid);
return 0;
}
return 1;
}
Dessa forma nenhum código irá tentar acessar uma posição inválida do array. Poderia até mesmo remover o printf para manter o log limpo.
Por outro lado, para corrigir o problema de maneira permanente, teria que revisar os códigos de hook. O runtime error do YSI "Parameter count loop detected." indica que existe hook ou callback mal configurada ou mal chamada.
Certifique-se de a assinatura da função estar consistente, ou seja, deve ser da forma abaixo:
Código:
//DEVE SER ASSIM:
hook OnPlayerDisconnect(playerid, reason)
{
return 1;
}
//NÃO DEVE SER ASSIM:
hook OnPlayerDisconnect(playerid)
{
return 1;
}
Também podem haver recursões gerando o problema, como o exemplo abaixo:
Código:
hook OnPlayerDisconnect(playerid, reason)
{
OnPlayerDisconnect(playerid, reason);
return 1;
}
Busque por esses problemas nas hook OnPlayerDisconnect para tentar resolver o problema pela raiz. Com a verificação você já deve evitar que esse problema gere quaisquer males ao servidor.
Discente de Sistemas de Informação no Centro Federal de Ensino Tecnológico(CEFET/RJ)
Programador SA-MP desde 2012
Programador SA-MP desde 2012
Não envie dúvidas por inbox, crie um tópico. Sua dúvida pode ser a dúvida de outro alguém, e seu tópico ajudará outras pessoas no futuro.