SA-MP Forums Archive
[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(playeridkilleridreason



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(playeridkilleridreason)
{
      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(playeridkilleridreason)
{
      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!