PDA

Просмотр полной версии : [Античит] на Auto +C & Rapid Fire



L0ndl3m
10.10.2014, 22:06
Всем привет. Если вы ещё не поняли, что такое Auto +C и/или Rapid Fire, то для начала стоит просмотреть два видео:

https://www.youtube.com/watch?v=OhfnjnU_rSM

http://www.youtube.com/watch?v=bxRDwFaVBGo

Создадим глобальный массив (т.е. ко всем new), для подсчёта количества выстрелов за последнее время:


new player_shot_count[MAX_PLAYERS char];


Данный код добавляем в OnPlayerWeaponShot (здесь и проверяются все выстрелы, сделанные игроком):


switch(weaponid)
{
case 23, 24, 25, 34 :
{
new server_tick = GetTickCount();
if(server_tick - GetPVarInt(playerid, "player_last_shot_tick") < 300 // Последний выстрел игрока из оружия
&& server_tick - GetPVarInt(playerid, "player_last_c_key") > 1000 // Последнее нажатие клавиши 'С'
&& ++player_shot_count{playerid} > 2 // Количество выстрелов за некоторое время
&& !IsPlayerInAnyVehicle(playerid)) // Игрок не находится в транспорте ( выстрелы с оружия "Desert Eagle" достаточно быстрые, если игрок стреляет с пассажирского места из транспорта )
{
new str[75];
GetPlayerName(playerid, str, sizeof(str));
format(str, 75, "[AntiCheat] %s (%i) вероятно использует Auto +C / Rapid Fire.", str, playerid);
player_shot_count{playerid} = 0;
for (new i = GetPlayerPoolSize() + 1; i-- != 0;)
if(IsPlayerConnected(i) && IsPlayerAdmin(i))
SendClientMessage(i, -1, str);
}
SetPVarInt(playerid, "player_last_shot_tick", server_tick); // Перехватываем время, последнего выстрела игрока из оружия
}
}


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

Этот код добавляем в OnPlayerKeyStateChange:


if((newkeys & 2) != 0) // Если нажата хотя бы 1 клавиша, и/или это клавиша: 'C'
SetPVarInt(playerid, "player_last_c_key", GetTickCount()); // Перехватываем время последнего нажатия этой клавиши


Вот и всё, удачного скриптинга!


Автор: L0ndl3m (http://pro-pawn.ru/member.php?2057-L0ndl3m)

Специально для: Pro-Pawn.Ru (http://pro-pawn.ru)

Копирование данной статьи без разрешения автора запрещено!

$continue$
10.10.2014, 22:18
+C есть куда лучше этого....
Например вот это:

http://www.youtube.com/watch?v=xDVf_EAt9NE&feature=youtu.be&t=3m34s
Ложно сообщение будет, не?

DeimoS
10.10.2014, 22:38
+C есть куда лучше этого....
Например вот это:

http://www.youtube.com/watch?v=xDVf_EAt9NE&feature=youtu.be&t=3m34s
Ложно сообщение будет, не?

Какие ложные срабатывания? +С позволяет стрелять быстрее, чем задуманно игрой и античит именно на этом построен

L0ndl3m
10.10.2014, 22:40
+C есть куда лучше этого....
Например вот это:

http://www.youtube.com/watch?v=xDVf_EAt9NE&feature=youtu.be&t=3m34s
Ложно сообщение будет, не?
Что-то я здесь не заметил Auto +C, обычный Turbo +C, не более.

Перечитайте ещё раз первый пост, античит расчитан не на сам баг игрового движка, а на CLEO чит.

Dima_Tushin
10.10.2014, 22:47
Какие ложные срабатывания? +С позволяет стрелять быстрее, чем задуманно игрой и античит именно на этом построен

дай скайп пжл буду спрашивать если будут вопросы думаю ты мне поможешь!

Unreal
22.09.2015, 10:17
OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)

можно ли использовать вместо switch(GetPlayerWeapon(playerid)) weaponid?

L0ndl3m
22.09.2015, 16:45
Можно, я действительно не додумался до этого. Спасибо за заметку.