SA-MP Forums Archive
OnPlayerDeath reason 52 - 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 reason 52 (/showthread.php?tid=478544)



OnPlayerDeath reason 52 - x_O - 30.11.2013

Читер сделал фейк-смерть себе и вот что вышло:

pawn Код:
OnPlayerDeath: playerid: 13 killerid: 0 reason: 52
13 это id читера.

Что за причина такая? В вики нету


Re: OnPlayerDeath reason 52 - nikita86826 - 30.11.2013

попробуй в OnPlayerDeath
PHP код:
if(killerid == playeridKick(playerid); 



Re: OnPlayerDeath reason 52 - =KempeR= - 30.11.2013

Quote:
Originally Posted by nikita86826
Посмотреть сообщение
попробуй в OnPlayerDeath
PHP код:
if(killerid == playeridKick(playerid); 
Бред.


Re: OnPlayerDeath reason 52 - nikita86826 - 30.11.2013

Quote:
Originally Posted by =KempeR=
Посмотреть сообщение
Бред.
защита от Fake Kill


Re: OnPlayerDeath reason 52 - OKStyle - 30.11.2013

Quote:
Originally Posted by nikita86826
Посмотреть сообщение
защита от Fake Kill
Ага, игрок наберёт /kill и его может забанить.

Уж лучше reason проверять: внести список возможных, а если отсутствует в списке - банить.


Re: OnPlayerDeath reason 52 - nikita86826 - 30.11.2013

Quote:
Originally Posted by OKStyle
Посмотреть сообщение
Ага, игрок наберёт /kill и его может забанить.
Сколько раз пробывал всё нормально, ну да ладно профи перечить не буду.


Re: OnPlayerDeath reason 52 - White_116 - 30.11.2013

Quote:
Originally Posted by OKStyle
Посмотреть сообщение
Ага, игрок наберёт /kill и его может забанить.
Не забанит, киллер будет инвалидом, причина 255.


Re: OnPlayerDeath reason 52 - Stepashka - 01.12.2013

Зачем столько понтов:
pawn Код:
new InValid_Reason[256 char]={0, ...};

public OnFilterScriptInit() {
    InValid_Reason{19}=1;
    InValid_Reason{20}=1;
    InValid_Reason{21}=1;
    InValid_Reason{48}=1;
    InValid_Reason{52}=1;
    return 1;
}
А если добавить макрос, то ещё и выглядеть будет лучше:
pawn Код:
#define IsReasonInvalid(%0) InValid_Reason{%0}

new InValid_Reason[256 char]={0, ...};

public OnFilterScriptInit() {
    InValid_Reason{19}=1;
    InValid_Reason{20}=1;
    InValid_Reason{21}=1;
    InValid_Reason{48}=1;
    InValid_Reason{52}=1;
    return 1;
}
 

public OnPlayerDeath(playerid, killerid, reason)
{
    if(playerid == INVALID_PLAYER_ID) return 0;//Неверный пакет
    if(playerid == killerid) return Kick(playerid);//Убил сам себя
    if(IsReasonInvalid(reason)) return Kick(playerid);//Неверная причина смерти
    return 1;
}



Re: OnPlayerDeath reason 52 - Jon_De - 01.12.2013

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Зачем столько понтов:
pawn Код:
new InValid_Reason[256 char]={0, ...};

public OnFilterScriptInit() {
    InValid_Reason{19}=1;
    InValid_Reason{20}=1;
    InValid_Reason{21}=1;
    InValid_Reason{48}=1;
    InValid_Reason{52}=1;
    return 1;
}
А если добавить макрос, то ещё и выглядеть будет лучше:
pawn Код:
#define IsReasonInvalid(%0) InValid_Reason{%0}

new InValid_Reason[256 char]={0, ...};

public OnFilterScriptInit() {
    InValid_Reason{19}=1;
    InValid_Reason{20}=1;
    InValid_Reason{21}=1;
    InValid_Reason{48}=1;
    InValid_Reason{52}=1;
    return 1;
}
 

public OnPlayerDeath(playerid, killerid, reason)
{
    if(playerid == INVALID_PLAYER_ID) return 0;//Неверный пакет
    if(playerid == killerid) return Kick(playerid);//Убил сам себя
    if(IsReasonInvalid(reason)) return Kick(playerid);//Неверная причина смерти
    return 1;
}
укажут причину 100500, и у тебя выйдет за рамки массива


Re: OnPlayerDeath reason 52 - White_116 - 01.12.2013

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Зачем столько понтов
Во первых, это не понты.
Во вторых, мне так проще.
В третьих, у вас ошибки.
Quote:
Originally Posted by Jon_De
Посмотреть сообщение
укажут причину 100500, и у тебя выйдет за рамки массива
Добавим строку if(!(-1 < reason < 256))return Kick(playerid);
На моей памяти reason -это одно байтовая переменная, т.е. читер не сможет отправить причину -234 или 4676.