27.05.2013, 20:24
Ok, te explico por quй sucede el error (Espero que entiendas, no me sй explicar muy bien):
En tu CallBack de OnPlayerDeath, en la secciуn de stats tienes el siguiente cуdigo:
Lo que significa que al morir, al asesino se le agrega 1 punto, pero hay un simple problema, no estas verificando si el asesino es una ID vбlida, lo cual puede causa error, ya que al suicidarnos, el killerid serб una ID invбlida (INVALID_PLAYER_ID, que es 65535).
Recordemos que tu array, PlayerInfo, tiene un lнmite, el cual me supongo que es 500 (MAX_PLAYERS), pero como no verificas si el asesino es una ID vбlida (500 para abajo en tu caso), el script automбticamente procesa la ID del asesino y le agrega 1 punto, ya sea INVALID_PLAYER_ID o no, y ahн es cuando puede suceder el error, ya que el script intentarб procesar la ID 65535 como ID normal y acceder a la variable normalmente, pero como tu variable tiene un lнmite de 500, da error.
Lo correcto serнa:
En tu CallBack de OnPlayerDeath, en la secciуn de stats tienes el siguiente cуdigo:
pawn Код:
//------------------------------- [ stats ] ----------------------------------//
SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
PlayerInfo[killerid][Kills] = GetPlayerScore(killerid);
Recordemos que tu array, PlayerInfo, tiene un lнmite, el cual me supongo que es 500 (MAX_PLAYERS), pero como no verificas si el asesino es una ID vбlida (500 para abajo en tu caso), el script automбticamente procesa la ID del asesino y le agrega 1 punto, ya sea INVALID_PLAYER_ID o no, y ahн es cuando puede suceder el error, ya que el script intentarб procesar la ID 65535 como ID normal y acceder a la variable normalmente, pero como tu variable tiene un lнmite de 500, da error.
Lo correcto serнa:
pawn Код:
if(killerid != INVALID_PLAYER_ID)
{
SetPlayerScore(killerid,GetPlayerScore(killerid) + 1);
PlayerInfo[killerid][Kills] = GetPlayerScore(killerid);
}