Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

AntiSobeit (разработка)

Ilya_Marli

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

К глобальным переменным
PHP:
new Fallen[MAX_PLAYERS];
В public OnPlayerSpawn добавим нашу проверку. И тут же у нас уже имеется 1 обход. Если мы будем флудить спам через тот же самый sobeit камера не успеет подняться просто напросто. Разрешаем спавниться только 1 раз, на 2 и последующие в течении 2 секунд кикаем.
PHP:
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.
	}
Можно в конец мода.
PHP:
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
PHP:
KillTimer(Fallen[playerid]);
Обязательно прочитать.
И тут я сразу стал искать обход. 1 уже фиксанул. И какой 2-ой обход? тупо размораживаем игрока в 1-ые сотые секунды спавна. Камера уже не поднимется.
И тут я сразу же стал думать фикс данного обхода. Какой фикс? Т.к. нам Невозможно проверить заморожен ли игрок, я придумал только 1 решение. Даем игроку любую не значительную на глаз анимацию. Как мы знаем при разморозке анимация сбивается. И при нашей проверке на sobeit мы проверяем нашу заданную анимацию, если не равна заданной - кикаем. Но думаю и тут возможно обойти.

Давайте вместе подумаем)
 
Последнее редактирование:
Сверху Снизу