[Ajuda] Array index out of bounds - Printable Version
+- SA-MP Forums Archive (
https://sampforum.blast.hk)
+-- Forum: Non-English (
https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (
https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (
https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Array index out of bounds (
/showthread.php?tid=586997)
Array index out of bounds -
Stean - 27.08.2015
Boa noite!
Estive analizando meu servidor nos ultimos dias com o CrashDetect, encontrei 3 erros como este, consegui arrumar dois deles, mas este nгo estб rolando..
Alguйm poderia me ajudar?
O problema ocorre quando um jogador morre sozinho.. ex: /kill ou por que caiu de um prйdio.
Console:
Linha do erro:
PHP код:
Spree[killerid] ++;
Em:
PHP код:
public OnPlayerDeath(playerid, killerid, reason)
Re: Array index out of bounds -
Boot - 27.08.2015
Isso ocorre porque quando o player morre sem que seja atingido por outro jogador(suicidio, por exemplo), o parвmetro killerid passa a assumir o valor de INVALID_PLAYER_ID, e o que seu script faz й aumentar o valor de Spree de um ID invбlido neste caso, o que й inviбvel. Coloque "if(killerid != INVALID_PLAYER_ID)" no comeзo da public OnPlayerDeath e cubra todo o restante do script que estб dentro dessa public para dentro desse if, ou acrescente "if(killerid == INVALID_PLAYER_ID) return 1;" logo no comeзo da callback.
Desse modo:
Код:
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid != INVALID_PLAYER_ID)
{
// seu script
}
return 1;
}
Ou simplesmente:
Код:
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid == INVALID_PLAYER_ID) return 1;
// seu script
return 1;
}
Re: Array index out of bounds -
Stean - 27.08.2015
Quote:
Originally Posted by Boot
Isso ocorre porque quando o player morre sem que seja atingido por outro jogador(suicidio, por exemplo), o parвmetro killerid passa a assumir o valor de INVALID_PLAYER_ID, e o que seu script faz й aumentar o valor de Spree de um ID invбlido neste caso, o que й inviбvel. Coloque "if(killerid != INVALID_PLAYER_ID)" no comeзo da public OnPlayerDeath e cubra todo o restante do script que estб dentro dessa public para dentro desse if, ou acrescente "if(killerid == INVALID_PLAYER_ID) return 1;" logo no comeзo da callback.
Desse modo:
Код:
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid != INVALID_PLAYER_ID)
{
// seu script
}
return 1;
}
Ou simplesmente:
Код:
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid == INVALID_PLAYER_ID) return 1;
// seu script
return 1;
}
|
Devo manter essa linha como estб?
PHP код:
Spree[killerid] ++;
Re: Array index out of bounds -
Andre02 - 27.08.2015
Sim,
Pege no codigo que o 'Boot' te deu e coloque o seu codigo no meio
PHP код:
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid != INVALID_PLAYER_ID) // Ve se o jogador foi matado por alguem
{
Spree[killerid] ++; // Se foi matado por alguem Aumenta o Spree do Matador
}
return 1;
}
Re: Array index out of bounds -
Stean - 27.08.2015
Quote:
Originally Posted by Andre02
Sim,
Pege no codigo que o 'Boot' te deu e coloque o seu codigo no meio
PHP код:
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid != INVALID_PLAYER_ID) // Ve se o jogador foi matado por alguem
{
Spree[killerid] ++; // Se foi matado por alguem Aumenta o Spree do Matador
}
return 1;
}
|
Deu certinho..
Muito obrigado pela ajuda!
Abraзo!