[Ajuda] Array index out of bounds
#1

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
Reply
#2

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;
}
Reply
#3

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] ++; 
Reply
#4

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;

Reply
#5

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!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)