• Страница 1 из 1
  • 1
[Мануал] AntiSobeit (разработка)
Дмитрий Дата: Среда, 30.07.2014, 19:18 | Сообщение # 1 | Сообщить о нерабочей теме


Аватар для Дмитрий

Хотел бы Вам предоставить защиту от читерской программы sobeit. Суть ее заключается в проверке вектора камеры. Начнем!

К глобальным переменным
Код
new Fallen[MAX_PLAYERS];


В public OnPlayerSpawn добавим нашу проверку. И тут же у нас уже имеется 1 обход. Если мы будем флудить спам через тот же самый sobeit камера не успеет подняться просто напросто. Разрешаем спавниться только 1 раз, на 2 и последующие в течении 2 секунд кикаем.
Код
if(GetPVarInt(playerid, "proverkaoff") < 1)
     {
         TogglePlayerControllable(playerid,0); //замараживаем
         SetPVarInt(playerid,"connecttime",GetPVarInt(playerid, "connecttime") + 1); //наша защита от 1-го обхода.
         Fallen[playerid] = SetTimerEx("CheckClient", 1600+(GetPlayerPing(playerid)*2), 0, "ii", playerid); // запускаем таймер на 1.6 секунд + наш пинг*2.
     }  

Можно в конец мода.
Код
forward CheckClient(playerid);
public CheckClient(playerid)
{
     if(GetPVarInt(playerid, "connecttime") > 1) return Kick(playerid); // если заспавнились > 1 раза кикаем
     new Float:pos[6]; // создаем переменные
     GetPlayerCameraPos(playerid, pos[0], pos[1], pos[2]), GetPlayerPos(playerid, pos[3], pos[4], pos[5]); // узнаем позицию камеры и записываем ее в переменные X, Y, Z. То же самое делаем с позицией игрока.
     if(floatabs(pos[2] - pos[5]) > 2.1) Kick(playerid); // проверяем на sobeit. Если разница по шкале Z у камеры > в 2.1, чем позиция, выкидываем читера.
     SetPVarInt(playerid,"connecttime",0), SetPVarInt(playerid,"proverkaoff",1); //Если все хорошо обнуляем pvar. Можно удалить "connecttime" на Ваше усмотрение.
     TogglePlayerControllable(playerid,1);// размораживаем игрока.
}  

В OnPlayerDisconnect
Код
KillTimer(Fallen[playerid]);

Обязательно прочитать.
И тут я сразу стал искать обход. 1 уже фиксанул. И какой 2-ой обход? тупо размораживаем игрока в 1-ые сотые секунды спавна. Камера уже не поднимется.
И тут я сразу же стал думать фикс данного обхода. Какой фикс? Т.к. нам Невозможно проверить заморожен ли игрок, я придумал только 1 решение. Даем игроку любую не значительную на глаз анимацию. Как мы знаем при разморозке анимация сбивается. И при нашей проверке на sobeit мы проверяем нашу заданную анимацию, если не равна заданной - кикаем. Но думаю и тут возможно обойти.

Автор: Ilya_Marli


From Russia With Love!
  • Страница 1 из 1
  • 1
Поиск: