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 == playerid) Kick(playerid);
Re: OnPlayerDeath reason 52 -
=KempeR= - 30.11.2013
Quote:
Originally Posted by nikita86826
попробуй в OnPlayerDeath
PHP код:
if(killerid == playerid) Kick(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.