Перейти к содержанию

Создание Bhop для Counter-Strike:Source c функцией обхода SMAC(Часть 1)


Рекомендуемые сообщения

В этот раз статья будет состоять из 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
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.