PDA

Просмотр полной версии : [Вопрос] Принцип работы Fake Kill



Prolific
16.03.2016, 22:57
Привет всем. Может кто знает принцип работы Fake Kill? И какие способы детекта есть (коллбэки может вызываются и т.д.), заранее спасибо.

$continue$
16.03.2016, 23:08
Залогируй OnPlayerDeath, то бишь:


public OnPlayerDeath(playerid, killerid, reason)
{
printf("ID: %d | kilerid: %d | reason: %d", playerid, killerid, reason);
}

Prolific
16.03.2016, 23:17
Залогируй OnPlayerDeath, то бишь:


public OnPlayerDeath(playerid, killerid, reason)
{
printf("ID: %d | kilerid: %d | reason: %d", playerid, killerid, reason);
}


Там нужно вроде бы 2 игрока, я к сожалению не имею знакомых заинтересованных в этом. Если у тебя есть возможность кинь результаты, спасибо.

Kazoox
16.03.2016, 23:34
Отсылает данные серверу об ложной смерти игрока, при этом игроки могут быть очень далеко друг от друга и тд. Можно сделать проверку на расстояние при убийстве.

Prolific
16.03.2016, 23:41
Вот такой вот код нашел в интернете:
В OnPlayerDeath:


if(killerid != INVALID_PLAYER_ID)
if(GetPlayerWeapon(killerid) != reason || !IsPlayerInRangeOfPlayer(5.0, playerid, killerid) && !GetPlayerWeapon(killerid))
Kick(playerid);
При изменении ХП игроку на ноль (SetPlayerHP(playerid, 0.0)) иногда срабатывает кик. Но т.к. точного принципа работы античита я не уловил, понять не могу, как сделать нормально.

$continue$
17.03.2016, 00:02
Лол, мда, шок, сейчас набегут меня учить как писать псевдокод.
Ну да, ладно:


если(ид_убийцы не равен инвалид_плейр_ид (0xFFFF (В 16 hex), что в dec значит: 65535)
{
если(ид_оружие_убийцы не равно причине или не радиусу и не оружию убийцы)
{
кикаем(убитого);
}
}

DeimoS
17.03.2016, 07:37
Есть Fake Kill, который перед этим телепортирует читера к нужному игроку и только потом убивает. Чтоб полностью от такого чита защитится, нужно и время последней смерти убитого проверять (записали время первой смерти и сверяем его с последующими. Если, например, второй раз умер за время, меньшее секунде - прибавляем одно предупреждение к, например, pVar, дабы предотвратить ложные срабатывания. Если же больше одной секунды - перезаписываем переменную с временем на новое значение. Ну и если первая проверка (меньше секунды) сработала, например, 3 раза подряд - читер), и расстояние + ID оружия сверять => получится уже две разные проверки

Prolific
17.03.2016, 22:47
Есть Fake Kill, который перед этим телепортирует читера к нужному игроку и только потом убивает. Чтоб полностью от такого чита защитится, нужно и время последней смерти убитого проверять (записали время первой смерти и сверяем его с последующими. Если, например, второй раз умер за время, меньшее секунде - прибавляем одно предупреждение к, например, pVar, дабы предотвратить ложные срабатывания. Если же больше одной секунды - перезаписываем переменную с временем на новое значение. Ну и если первая проверка (меньше секунды) сработала, например, 3 раза подряд - читер), и расстояние + ID оружия сверять => получится уже две разные проверки

Может ты перепутал с флудом коллбэка?

DeimoS
18.03.2016, 08:25
Может ты перепутал с флудом коллбэка?

При мне таким образом набивали килы на DM сервере. Похоже это на флуд коннектами?
Или ты никогда в собейте не видел функцию телепорта к любому игроку? Или нельзя эти две функции объединить в одну?