SA-MP Forums Archive
OnPlayerDeath - 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: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: OnPlayerDeath (/showthread.php?tid=467458)



OnPlayerDeath - Ganza199 - 03.10.2013

Здравствуйте, вчера поставил crashdetect но сегодня в логах заметил это:

PHP код:
[04:15:12] [debugRun time error 4"Array index out of bounds"
[04:15:12] [debug]  Accessing element at index 65535 past array upper bound 499
[04:15:12] [debugAMX backtrace:
[
04:15:12] [debug#0 0006bff4 in public OnPlayerDeath (0x00000001, 0x0000ffff, 0x00000036) from gf.amx 

Помогите исправить данную ошибку, вот public OnPlayerDeath:


PHP код:
public OnPlayerDeath(playeridkilleridreason
{
  
//if(killerid == INVALID_PLAYER_ID) return 1;
  
new name[MAX_PLAYER_NAME], names[MAX_PLAYER_NAME], string[128];
//------------------------------------------------------------------------------
  
if(killerid != 255) { // Убийство с транспорта
    
if(killerid != INVALID_PLAYER_ID) {
      if(
GetPlayerState(killerid) == 2) {
        
GetPlayerName(playeridnameMAX_PLAYER_NAME);
        
GetPlayerName(killeridnamesMAX_PLAYER_NAME);
        
SendClientMessage(killeridCOLOR_YELLOW"Убийство с транспорта строго запрещено на сервере, вы можете получить [WARN]");
        
format(stringsizeof(string), "[DRIVE BAY] %s[%d] - Совершил ДБ/Drive Bay (Погиб: %s[%d])"nameskilleridnameplayerid);
        
ABroadCast(COLOR_YELLOWstring1);
      }
    }
  }
  if(
reason == 38) {
    if(
killerid != INVALID_PLAYER_ID) {
      if(
IsPlayerConnected(killerid)) {
        
GetPlayerName(killeridnamesMAX_PLAYER_NAME);
        
format(stringsizeof(string), "[MINIGUN] %s[%d] только что убил игрока миниганом, проверьте его /spec %d"nameskilleridkillerid);
        
ABroadCast(COLOR_YELLOWstring1);
      }
    }
  }
  if(
killerid == playerid) { 
    if(
killerid != INVALID_PLAYER_ID) {
      
SendClientMessage(playeridCOLOR_ALLDEPT"Вы были кикнуты по подозрению в читерстве! (code: 13)");
      
SendClientMessage(playeridCOLOR_ALLDEPT"Если вы считайте что произошла ошибка обратитесь на форум");
      
Kick(playerid); return 1;
    }
  }
  return 
1;




Re: OnPlayerDeath - Stepashka - 03.10.2013

ABroadCast что внутри?


Re: OnPlayerDeath - BJIADOKC - 03.10.2013

Quote:
PHP код:
if(killerid == playerid
за такое всегда и сразу нужно банить, так как это невозможно.


Re: OnPlayerDeath - Stepashka - 04.10.2013

Quote:
Originally Posted by BJIADOKC
Посмотреть сообщение
за такое всегда и сразу нужно банить, так как это невозможно.
Может, сам себя со своей гранаты.


Re: OnPlayerDeath - Ganza199 - 04.10.2013

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
ABroadCast что внутри?
Вот:

PHP код:
public ABroadCast(color,const string[], level)
{
    for(new 
0MAX_PLAYERSi++)
    {
        if(
IsPlayerConnected(i))
        {
            if (
PlayerInfo[i][pAdmin] >= level)
            {
                
SendClientMessage(icolorstring);
            }
        }
    }
    return 
true;




Re: OnPlayerDeath - Ganza199 - 04.10.2013

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Может, сам себя со своей гранаты.
Попробовал не получилось сам себя не смог убить...


Re: OnPlayerDeath - White_116 - 04.10.2013

Quote:
Originally Posted by Ganza199
Посмотреть сообщение
Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Может, сам себя со своей гранаты.
Попробовал не получилось сам себя не смог убить...
Всё правильно, он от практики давно ушёл, переквалифицировался в теоретики.

П.С.
PHP код:
if(killerid != 255) { // Убийство с транспорта 
это как понимать? Игрок Транспорт? Что-то новенькое...
Quote:

[DRIVE BAY] %s[%d] - Совершил ДБ/Drive Bay

Убылно. Drive By


Re: OnPlayerDeath - Ganza199 - 04.10.2013

Quote:
Originally Posted by White_116
Посмотреть сообщение
Всё правильно, он от практики давно ушёл, переквалифицировался в теоретики.

П.С.
PHP код:
if(killerid != 255) { // Убийство с транспорта 
это как понимать? Игрок Транспорт? Что-то новенькое...
Убылно. Drive By
Вот убийство с транспорта:

PHP код:
  if(killerid != 255) { // Убийство с транспорта 
    
if(killerid != INVALID_PLAYER_ID) { 
      if(
GetPlayerState(killerid) == 2) { 
        
GetPlayerName(playeridnameMAX_PLAYER_NAME); 
        
GetPlayerName(killeridnamesMAX_PLAYER_NAME); 
        
SendClientMessage(killeridCOLOR_YELLOW"Убийство с транспорта строго запрещено на сервере, вы можете получить [WARN]"); 
        
format(stringsizeof(string), "[DRIVE BAY] %s[%d] - Совершил ДБ/Drive Bay (Погиб: %s[%d])"nameskilleridnameplayerid); 
        
ABroadCast(COLOR_YELLOWstring1); 
      } 
    } 
  } 
А это

PHP код:
if(killerid != 255) { 
один человечек посчитал что данная проверка необходима, вот я и не стал удалять а сам не знаю что это такое))


Re: OnPlayerDeath - BJIADOKC - 04.10.2013

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Может, сам себя со своей гранаты.
killerid будет равен INVALID_PLAYER_ID


Re: OnPlayerDeath - Ganza199 - 05.10.2013

Кто нибудь знает как исправить данную ошибку ?