OnPlayerDeath reason 52
#1

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

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

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

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

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

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

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

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

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

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

Зачем столько понтов:
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;
}
Reply
#9

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, и у тебя выйдет за рамки массива
Reply
#10

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


Forum Jump:


Users browsing this thread: 2 Guest(s)