partoftheworlD Опубликовано 7 января, 2016 Поделиться Опубликовано 7 января, 2016 В этот раз статья будет состоять из 2 частей, постараюсь дописать сразу как появится свободное время. В первой у нас будет теория о том как работает анти-чит и как можно его обмануть, во второй напишем простейший Bunnyhop. Часть 1. Теория.Немного теории о том как работает SMAC анти-чит на примере Bunnyhop.Ссылка на репозиторий анти-чита.SMAC это довольно не плохой анти-чит и к тому-же c исходным кодом.Как же анти-чит вычисляет читера? Ниже под спойлером функция обнаружения использования Bhop. Скрытый текст Эта функция проверяет время от приземления игрока и до следующего прыжка, если время равно 0 и у вас 5 прыжков(идеальных прыжков) с таким результатом вы получаете бан. Как это можно обойти? Например, создать таймер который задает рандомное время простоя до следующего прыжка, но добавление дополнительного времени в выполнение функции сказывается на качестве распрыга. Так, что мы создадим двойной прыжок т.е. 1-й прыжок основной будет происходить когда мы на земле,2-й прыжок когда мы находимся в воздухе и это никак не влияет на основной распрыг, но путает анти-чит. /* BunnyHop */ static Float:fCheckTime[MAXPLAYERS + 1]; // Игрок не прыгает сразу после последнего прыжка. if (!(buttons & IN_JUMP) && (GetEntityFlags(client) & FL_ONGROUND) && fCheckTime[client] > 0.0){ fCheckTime[client] = 0.0; } // Игнорировать прыжок, если игрок находится в ограниченном пространстве или застрял в земле if ((buttons & IN_JUMP) && !(iPrevButtons[client] & IN_JUMP)) { // Игрок находится на земле и выполняет прыжок. if (GetEntityFlags(client) & FL_ONGROUND) { new Float:fGameTime = GetGameTime(); // Игрок прыгнул на точном кадре, что разрешено. Не уверен, что перевел правильно. Оригинал: Player jumped on the exact frame that allowed it. if (fCheckTime[client] > 0.0 && fGameTime > fCheckTime[client]) { AutoTrigger_Detected(client, METHOD_BUNNYHOP); } else { fCheckTime[client] = fGameTime + MIN_JUMP_TIME; } } else { fCheckTime[client] = 0.0; } } 3 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения