PDA

Просмотр полной версии : [Античит] Античит на серфинг



Dima_Tushin
15.02.2017, 21:06
Здравствуйте пользователи pro-pawn решил поделиться античитом
Серфинг - это чит который позволяет передвигаться с бешеной скорость принципе как AirBreak только сквозь стены не пробегает.

Сам код.

Ищем таймер с повторение в 1 секунду

if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
{
if(GetPlayerSpeed(playerid) > 100//Проверяем скорость
&& !IsPlayerApplyAnimation(playerid, "FALL_FALL")//Проверка на анимацию
&& !IsPlayerApplyAnimation(playerid, "FALL_SKYDIVE_ACCEL")//Проверка на анимацию
&& !IsPlayerApplyAnimation(playerid, "PARA_OPEN")//Проверка на анимацию
&& !IsPlayerApplyAnimation(playerid, "FALL_SKYDIVE") && PlayerInfo[playerid][pAdmin] < 1)//Проверка на анимацию и Администратора
{
if(GetPVarInt(playerid, "FloodTime") > gettime()) return 1;
new string[90];
static const admins[] = "<<Warning>> Игрок %s[%d]: Возможно чит на серфинг";
format(string, sizeof(string), admins, PlayerInfo[playerid][pName], playerid);
SendAdminMessage(COLOR_ADMIN, string);
SetPVarInt(playerid, "FloodTime", gettime()+60);
}
}
в конец мода


stock GetPlayerSpeed(playerid)//Функция с помощью которой мы получаем скорость Игрока
{
new Float:Coord[4];
GetPlayerVelocity(playerid, Coord[0], Coord[1], Coord[2]);
Coord[3] = floatsqroot(floatpower(floatabs(Coord[0]), 2.0) + floatpower(floatabs(Coord[1]), 2.0) + floatpower(floatabs(Coord[2]), 2.0)) * 213.3;
return floatround(Coord[3]);
}

stock IsPlayerApplyAnimation(playerid, animation[])//Функция с помощью которой мы получаем анимацию Игрока
{
if(!GetPlayerAnimationIndex(playerid)) return false;
else
{
new animlib[32], animname[32];
GetAnimationName(GetPlayerAnimationIndex(playerid), animlib, sizeof(animlib), animname, sizeof(animname));
if(!strcmp(animname, animation, true)) return 1;
}
return false;
}
Жду критики по поводу Анти чита или же если найдете ошибку ложное срабатывание пишите исправим вместе.

vovandolg
15.02.2017, 21:21
Ну чтож пусть будет так:
1) Зачем узнавать имя анимации когда можно тупо по ID её проверить
2) Зачем нужна фулловая функция для проверки скорости, можно просто через VectorSize(там хз что быстрее floatcmp или floatround)
3) Ну а теперь вспомним как работаёт сёрфинг и посмотрим что ты проверяешь там.

Сёрфинг ускоряет бег, ходьбу(зажатый Alt).
Ты проверяешь анимации которые по сути могут ложно сработать при десантировании
(можно чекнуть на то что парашют висит или нет, но и тут будут свои обходы),
а надо проверять что игрок юзает ходьбу или бег ну и скорость к каждому критерию естесна.

Вот кстате подарок тебе


case 1160..1163,1224,1226,1228,1231,1249,1276,1278,1280:

это часть switch Anim's ID бегов и ходьбы всех видов походок(CJ есть или нету я не помню, для рп когда то собирал)

Dima_Tushin
15.02.2017, 21:26
Сёрфинг ускоряет бег, ходьбу(зажатый Alt). что то не ускаряет у меня не чего я просто делаю шаг и он сам на скорости летит можно так сказать и не чего зажимать не надо)

- При десантировании Ложных не нашел я проверял и учел этот момент)
- 1) Зачем узнавать имя анимации когда можно тупо по ID её проверить - кому как удобно)

vovandolg
15.02.2017, 21:34
Сёрфинг ускоряет бег, ходьбу(зажатый Alt). что то не ускаряет у меня не чего я просто делаю шаг и он сам на скорости летит можно так сказать и не чего зажимать не надо)

- При десантировании Ложных не нашел я проверял и учел этот момент)
- 1) Зачем узнавать имя анимации когда можно тупо по ID её проверить - кому как удобно)

Смотри сам, ты видать только начал таким заниматься, как будут обходить такой античит бери мой пост и разжёвывай, ещё забыл добавить при моём коде понадобится проверка на то что ты сёрфингуешь на авто или объекте так как шагать можно и на двигающихся авто/объектах и тогда ложняки будут.

Nexius_Tailer
16.02.2017, 16:28
Вот кстате подарок тебе


case 1160..1163,1224,1226,1228,1231,1249,1276,1278,1280:

это часть switch Anim's ID бегов и ходьбы всех видов походок(CJ есть или нету я не помню, для рп когда то собирал)
А толку? Я включу анимку приседания, танца ..., чего угодно, и смысл такой защиты будет нулевым, так что методом от противного как раз таки гораздо лучше, но всё равно вариант не самый удачный (т.к. можно вполне отсылать и анимку падения с парашютом, при этом нисколько не падая).


- 1) Зачем узнавать имя анимации когда можно тупо по ID её проверить - кому как удобно)
Не как удобно, а как быстрее. А быстрее было бы именно с простой проверкой на ид

- - - Добавлено - - -

И что-то мне подсказывает, что анимки падения учтены не все

vovandolg
17.02.2017, 04:11
А толку? Я включу анимку приседания, танца ..., чего угодно, и смысл такой защиты будет нулевым, так что методом от противного как раз таки гораздо лучше, но всё равно вариант не самый удачный (т.к. можно вполне отсылать и анимку падения с парашютом, при этом нисколько не падая).


Не как удобно, а как быстрее. А быстрее было бы именно с простой проверкой на ид


Ну если клео ложный ID анимации не умеет посылать так как собейт(я по крайней мере не видел),
то тогда другие анимации будут лишь обузой для такого чита, получится тупо аир,
а так это для быстрого плавного передвижения с прицеливанием,
может быть анимку и найдут какую то, но самый распространённый варик прикроет.

Alpano
17.02.2017, 11:33
Я что-то недогоняю.
Зачем проверять анимки, если это заведомо ненадежный способ выявления читеров.
Почему не катит просто проверять в таймере на 500 мс скорость игрока?
Но не тупо проверять, и сразу кикать а действовать по такому принципу:

Создаем переменную для каждого игрока.
Если игрок летит как еб..й ежик соник, прибавляем еденицу к нашей перменной.
Нежели он ведет себя адекватно, но наша переменная отлична от нуля, то убавляем.

И смотрим, если наше значение > 2, то уже принимать меры.

Да, быстродействие не такое шустрое, но такой способ практически исключает ложные. И стоит проверить, сидит ли игрок на крыше машины.

П.С. я не умник, я бы и сам проверил, но читами этой категории не распологаю, а качать с нета это качать кота в мешке.

Nexius_Tailer
17.02.2017, 15:42
Ну если клео ложный ID анимации не умеет посылать так как собейт(я по крайней мере не видел),
то тогда другие анимации будут лишь обузой для такого чита, получится тупо аир,
а так это для быстрого плавного передвижения с прицеливанием,
может быть анимку и найдут какую то, но самый распространённый варик прикроет.
Аир так не работает Он наоборот детектится через маленькую скорость при большой смене позиций. Как флайхак скорее возможно, но всё равно - подобрать можно абсолютно любую анимку, отличную от тех что в проверке (если брать твой вариант), а в варианте из первого поста как раз прокатит летать с анимкой падения или парашютиста, что кстати умеют не самые новые флайхаки. В общем, закрывать используемые на данный момент читы самым банальным образом не всегда вариант, так как труда обойти это не составит.


Создаем переменную для каждого игрока.
Если игрок летит как еб..й ежик соник, прибавляем еденицу к нашей перменной.
Нежели он ведет себя адекватно, но наша переменная отлична от нуля, то убавляем.

И смотрим, если наше значение > 2, то уже принимать меры.
Вообще можно заморочиться и замерить приблизительную скорость для большинства анимок (как в анти-сх делали свою максимальную скорость для каждой модели авто), и уже от этого потом отталкиваться. Но работать это всё равно будет только если игрок прибавит в беге как "еб..й ежик соник", а словить ускорение на чуть-чуть не позволит хотя-бы та же зависимость скорости игрока от его FPS.

Alpano
17.02.2017, 16:24
Мы сейчас про чит на AirBrk или "серфинг" ?!
Я так понял это принципиально разные читы.

Nexius_Tailer
17.02.2017, 16:43
Тема, очевидно, про сёрфинг, и речь также о нём. Сёрфинг по сути тот же спидхак пешком, и ловить эффективней его можно задав свою максимальную скорость для разных групп анимаций, как сказал ранее

vovandolg
17.02.2017, 17:21
лол вы вообще не читаете что я пишу))
я пишу что сёрфинг это быстрая ходьба с возможностью прицеливания,
а вы лепите что можно анимацию сменить и всё огонь будет, не черта не будет,
когда вы на прицеливание нажимаете анимация по дефолту сбивается,
как я писал уже если в клео нету ложного посыльного с левым ID анимации,
то и не получится подменить анимацию, а подмените анимацию получится подобие флая и т.п.

Игрок будет тупо летать и не сможет перестрелку вести.

Nexius_Tailer
17.02.2017, 18:12
Игрок будет тупо летать и не сможет перестрелку вести.
А зачем ему обязательно перестрелку вести? Будто бы если б он бегал на огромных скоростях, но при этом ни в кого не целился, то это бы всех устраивало. Защита должна быть функциональной, а не только от "бега именно с прицеливанием с одним оружием под конкретный скин" и т.п. С таким же успехом можно просто запретить на сервере миниган и сказать, что у тебя стоит полноценный античит на оружие и патроны

vovandolg
17.02.2017, 22:15
А зачем ему обязательно перестрелку вести? Будто бы если б он бегал на огромных скоростях, но при этом ни в кого не целился, то это бы всех устраивало. Защита должна быть функциональной, а не только от "бега именно с прицеливанием с одним оружием под конкретный скин" и т.п. С таким же успехом можно просто запретить на сервере миниган и сказать, что у тебя стоит полноценный античит на оружие и патроны

дак ты не напишешь полноценного античита на самп,
даже на оружие что я писал обходится через SF,
а то что я изначально тут написал было бы наилучшим вариантом.

Nexius_Tailer
18.02.2017, 00:00
дак ты не напишешь полноценного античита на самп,
даже на оружие что я писал обходится через SF,
а то что я изначально тут написал было бы наилучшим вариантом.
Почему не напишу? Обходится в какой-то мере всё, вопрос лишь в том, насколько этот обход реально себя оправдывает и какую он даёт пользу. С твоим вариантом от защиты не будет никакого толка в большинстве случаев, чем, к примеру, если бы шли замеры максимальной скорости для большинства анимок

vovandolg
18.02.2017, 09:19
Почему не напишу? Обходится в какой-то мере всё, вопрос лишь в том, насколько этот обход реально себя оправдывает и какую он даёт пользу. С твоим вариантом от защиты не будет никакого толка в большинстве случаев, чем, к примеру, если бы шли замеры максимальной скорости для большинства анимок

Ну ок, тогда я познакомлю Вас с такой вещью как Anim ID = -1 тот случай когда придумали паркур,
всё же клео посылает левый ID, и этот -1 иногда срабатывает(это из опыта когда я пытался взять чей то анти паркур и тестил его)
в игре когда делаешь какие то анимации,
так что ко всем ID ты может и напишешь по скорости что то(дай бог тебе чтоб руки не отвалились анимаций за ~1к),
но к значению -1 ты не подберешь точно не чего, так как оно иногда случайно вылетает без всяких читов.
А свой вариант я ещё раз повторюсь писал сам и при это держал сервер,
коли вы так печётесь поставьте этот вариант что в шапке темы и дайте мне IP я зайду покажу Вам как я буду насёрфивать и стрелять одновременно.
Парашютные анимации он взял как защита от флая, а вот от самого сёрфа он не написал защиты, вот к чему я клонил.

Nexius_Tailer
18.02.2017, 14:02
Ну ок, тогда я познакомлю Вас с такой вещью как Anim ID = -1 тот случай когда придумали паркур,
всё же клео посылает левый ID, и этот -1 иногда срабатывает(это из опыта когда я пытался взять чей то анти паркур и тестил его)
в игре когда делаешь какие то анимации,
Это явление не рандомное, а происходящее только если у игрока стоят моды на анимки (добавленные), либо из-за конкретных анимок, которые вроде как в итоге из игры выпиливали (анимации из Hot Coffee, как пример). Да и вообще даже с такими анимками скорость игрока всё равно в пределах нормы.


так что ко всем ID ты может и напишешь по скорости что то(дай бог тебе чтоб руки не отвалились анимаций за ~1к),
но к значению -1 ты не подберешь точно не чего, так как оно иногда случайно вылетает без всяких читов.
Как вариант - вполне)
Но перечитав мой пост выше можно также подумать и о группах анимаций, т.е. вместо индивидуальных скоростей для каждой анимки, просто делить их на некие группы, в одной из которых допустима будет более высокая скорость, а для других более низкая. Для всех остальных же ставить какой-то общий лимит скорости.
Ну а про -1 опять-же не случайно, а только для конкретных анимаций такое бывает.


А свой вариант я ещё раз повторюсь писал сам и при это держал сервер,
коли вы так печётесь поставьте этот вариант что в шапке темы и дайте мне IP я зайду покажу Вам как я буду насёрфивать и стрелять одновременно.
Парашютные анимации он взял как защита от флая, а вот от самого сёрфа он не написал защиты, вот к чему я клонил.
Ну так а я уже сказал, как можно обойти твой, ибо проверка у тебя не по принципу "белого списка, с какими анимками можно", а по принципу "чёрного, с какими нельзя", что всё значительно упрощает.

А вообще если не париться по поводу анимаций, то как вариант ещё можно просто поставить максимальную скорость, достигаемую игроком без читов (свободное падение), больше которой уже будет наказывать, как это реализовано, например, в моей защите. В итоге сёрфить на небольших скоростях будет можно, но разносить сервер при этом не получится, да ещё и многочисленные кикеры фиксит, где скорость читеру вообще за 1000 даётся.

vovandolg
18.02.2017, 14:11
Короче жду кода который будет ловить лучше чем мой или как ты там хотел сделать))
А то лясы точятся - пруфы не пишутся))
Всё же я держал серв с таким кодом, знаю как к какому читу подойти правильно чтобы другие аспекты не затронуть.

Nexius_Tailer
18.02.2017, 14:31
Короче жду кода который будет ловить лучше чем мой или как ты там хотел сделать))
А то лясы точятся - пруфы не пишутся))
Всё же я держал серв с таким кодом, знаю как к какому читу подойти правильно чтобы другие аспекты не затронуть.
Без проблем (https://github.com/NexiusTailer/Nex-AC/blob/master/src/v1.9/v1.9.20/r2/nex-ac.inc#L4295-L4308)
И никакой зависимости от анимаций

vovandolg
18.02.2017, 15:03
Без проблем (https://github.com/NexiusTailer/Nex-AC/blob/master/src/v1.9/v1.9.20/r2/nex-ac.inc#L4295-L4308)
И никакой зависимости от анимаций

А ложные вызовы, к примеру машины будут на скорости сбивать?

Nexius_Tailer
18.02.2017, 15:09
А ложные вызовы, к примеру машины будут на скорости сбивать?
На моей памяти ещё ни одного случая, чтобы от сбивания тачкой игрок отлетал настолько быстро, чтобы это превышало скорость свободного падения с неба

vovandolg
18.02.2017, 15:24
На моей памяти ещё ни одного случая, чтобы от сбивания тачкой игрок отлетал настолько быстро, чтобы это превышало скорость свободного падения с неба

А допустим там я смотрю проверка есть по скорости тупо на положительный вектор X, а он же может быть и минусовым по идее, это как не лазейка получается?

Nexius_Tailer
18.02.2017, 15:26
А допустим там я смотрю проверка есть по скорости тупо на положительный вектор X, а он же может быть и минусовым по идее, это как не лазейка получается?
Нет, это просто использование одних переменных по несколько раз)
Там в ac_vX скорость игрока узнаётся (https://github.com/NexiusTailer/Nex-AC/blob/master/src/v1.9/v1.9.20/r2/nex-ac.inc#L4100) перед этой проверкой

vovandolg
18.02.2017, 15:39
Ну высуну сюда код, чтобы не путаться.


if(ac_gtc > ACInfo[playerid][acGtc][10] + ac_gpp &&
GetPlayerSurfingVehicleID(playerid) == 65535 &&
GetPlayerSurfingObjectID(playerid) == 65535)
{
if(ACInfo[playerid][acACAllow][9] && ac_vX > 212.0 && ACInfo[playerid][acSpeed] < ac_vX)
{
#if defined DEBUG
printf("[Nex-AC debug] Speed: %.1f, old speed: %.1f", ac_vX, ACInfo[playerid][acSpeed]);
#endif
#if defined OnCheatDetected
ac_KickWithCode(playerid, "", 0, 9);
#else
return ac_KickWithCode(playerid, "", 0, 9);
#endif
}


я конкретно вижу эту часть проверки как проблемной и обходной)) так как там условие спарено всё до кучи "И" а не "ИЛИ"

ac_vX > 212.0

Nexius_Tailer
18.02.2017, 15:45
Ну высуну сюда код, чтобы не путаться.


if(ac_gtc > ACInfo[playerid][acGtc][10] + ac_gpp &&
GetPlayerSurfingVehicleID(playerid) == 65535 &&
GetPlayerSurfingObjectID(playerid) == 65535)
{
if(ACInfo[playerid][acACAllow][9] && ac_vX > 212.0 && ACInfo[playerid][acSpeed] < ac_vX)
{
#if defined DEBUG
printf("[Nex-AC debug] Speed: %.1f, old speed: %.1f", ac_vX, ACInfo[playerid][acSpeed]);
#endif
#if defined OnCheatDetected
ac_KickWithCode(playerid, "", 0, 9);
#else
return ac_KickWithCode(playerid, "", 0, 9);
#endif
}


я конкретно вижу эту часть проверки как проблемной и обходной)) так как там условие спарено всё до кучи "И" а не "ИЛИ"

ac_vX > 212.0
Ну, всё верно.
"Если игроку только что скорость сервером поставлена не была, и если игрок не стоит на едущей машине, и если игрок не стоит на движущемся объекте, и если для игрока активен этот античит, и если его скорость больше максимально допустимой, а также если эта скорость больше предыдущей, то наказываем".
Про обходы конкретно этих проверок будет интересно послушать

vovandolg
18.02.2017, 16:04
ac_vX это не скорость общая, это тупо часть скорости по вектору X

P.S. Всё не досмотрел, у тебя переменная эта в двух местах используется, античит запутанный у тебя))

Nexius_Tailer
18.02.2017, 16:29
ac_vX это не скорость общая, это тупо часть скорости по вектору X

Нет, это просто использование одних переменных по несколько раз)
Там в ac_vX скорость игрока узнаётся (https://github.com/NexiusTailer/Nex-AC/blob/master/src/v1.9/v1.9.20/r2/nex-ac.inc#L4100) перед этой проверкой
Перечитывай сообщения выше, если что

Dima_Tushin
21.02.2017, 21:07
я так думаю не удачный античит))) или по пробывать его доработать

Alpano
21.02.2017, 21:49
я так думаю не удачный античит))) или по пробывать его доработать

1000 людей 1000 мнений
а 1000 программистов 1000^3 мнений...
пробуй, эксперементируй... если руки есть.