Хотел бы Вам предоставить защиту от читерской программы 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