Portal SAMP
[Ajuda] Erro acusado pelo CrashDetect - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Erro acusado pelo CrashDetect (/showthread.php?tid=3714)



Erro acusado pelo CrashDetect - diggao - 24/06/2023

Alguem pode me ajudar a resolver esse problema acusado pelo crashdetect? não entendi.





[debug] Run time error 4: "Array index out of bounds"

[debug]  Attempted to read/write array element at index 65535 in array of size 900

[debug] AMX backtrace:

[debug] #0 004d65a8 in BloquearDanoAreaNeutra (playerid=65535, 1) at C:\Users\W10\Desktop\minhagamemode\gamemodes\main.pwn:6487

[debug] #1 004d6994 in public OnPlayerTakeDamage (playerid=0, issuerid=65535, Float:amount=3.30000, weaponid=54, bodypart=3) at C:\Users\W10\Desktop\minhagamemode\gamemodes\main.pwn:6516





*LINHA 6516

public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
{
if(IsPlayerInSafe(playerid)) {
BloquearDanoAreaNeutra(issuerid,playerid);
return 1;
}

if(IsPlayerInPrisao(playerid)) {
BloquearDanoAreaNeutra(issuerid,playerid);
Kick(issuerid);
return 1;
}

if(IsPlayerInLevel(playerid)) {
BloquearDanoAreaNeutra(issuerid,playerid);
return 1;
}






* LINHA 6487
stock BloquearDanoAreaNeutra(playerid)
{
  for(new text; text < 6; text++) {
  PlayerTextDrawShow(playerid, textavisosantidm[text][playerid]);
  }
      SetTimerEx("TirarTextdrawDM", 4000*3, false, "d", playerid);
      ApplyAnimation(playerid,"PED","handscower",4.1,0,1,1,0,0);
}
    return 1;
}


RE: Erro acusado pelo CrashDetect - White_Blue - 24/06/2023

(24/06/2023 11:53)diggao Escreveu: Alguem pode me ajudar a resolver esse problema acusado pelo crashdetect? não entendi.





[debug] Run time error 4: "Array index out of bounds"

[debug]  Attempted to read/write array element at index 65535 in array of size 900

[debug] AMX backtrace:

[debug] #0 004d65a8 in BloquearDanoAreaNeutra (playerid=65535, 1) at C:\Users\W10\Desktop\minhagamemode\gamemodes\main.pwn:6487

[debug] #1 004d6994 in public OnPlayerTakeDamage (playerid=0, issuerid=65535, Float:amount=3.30000, weaponid=54, bodypart=3) at C:\Users\W10\Desktop\minhagamemode\gamemodes\main.pwn:6516





*LINHA 6516

public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)
{
if(IsPlayerInSafe(playerid)) {
BloquearDanoAreaNeutra(issuerid,playerid);
return 1;
}

if(IsPlayerInPrisao(playerid)) {
BloquearDanoAreaNeutra(issuerid,playerid);
Kick(issuerid);
return 1;
}

if(IsPlayerInLevel(playerid)) {
BloquearDanoAreaNeutra(issuerid,playerid);
return 1;
}






* LINHA 6487
stock BloquearDanoAreaNeutra(playerid)
{
  for(new text; text < 6; text++) {
  PlayerTextDrawShow(playerid, textavisosantidm[text][playerid]);
  }
      SetTimerEx("TirarTextdrawDM", 4000*3, false, "d", playerid);
      ApplyAnimation(playerid,"PED","handscower",4.1,0,1,1,0,0);
}
    return 1;
}

Verifique se a condição de parada(Tamanho do loop) está correta.

Ou simplesmente troque para:

Código PHP:
for(new texttext sizeof(variavel_da_textdraw); text++) // Troque variavel_da_text para o nome da variável da textdraw que deseja. Assim, o tamanho do loop será igual ao tamanho da variável. 

Outra coisa, você está usando incorretamente a função "BloquearDanoAreaNeutra" na callback OnPlayerTakeDamage:

Citar:
Código PHP:
BloquearDanoAreaNeutra(issuerid,playerid); 

Note que no código acima você está usando com dois parâmetros, mas na função que você mandou, você apenas está definindo um parâmetro, que é o parâmetro playerid, o que não faz sentido.


RE: Erro acusado pelo CrashDetect - diggao - 24/06/2023

Resolvido, obrigado pela explicação, bom final de semana!