Гайд Защита от телепорта.

Статус
В этой теме нельзя размещать новые ответы.

bin01

Новичок
Автор темы
11
0
Привет, сегодня покажу как сделать Анти-Чит от любителей телепортироваться на серверах SA-MP.

Сделаем мы это простым методом. При спавне игрока записываем его подлинные координаты, дальше уже по проверке записываем. Держим код:

1. Объявим переменные для всех игроков с подлинными координатами:
C++:
 new Float:acX[MAX_PLAYERS], Float:acY[MAX_PLAYERS], Float:acZ[MAX_PLAYERS];
2. В паблик OnPlayerUpdate (каждый раз) вставим такой код:
C++:
   if(GetPlayerDistanceFromPoint(playerid, acX[playerid], acY[playerid], acZ[playerid]) > 100.0) Kick(playerid); // Если игрок далеко от своих подлиных координатов чем на 100 метров, тогда кикаем его.
    else GetPlayerPos(playerid, acX[playerid], acY[playerid], acZ[playerid]); // Иначе их записываем в подлиные координаты.
 
    new Float:X, Float:Y, Float:Z; // Переменные для записи координатов игрока.
    GetPlayerPos(playerid, X, Y, Z); // Записываем координаты игрока в переменные.
 
    if(!IsPlayerInRangeOfPoint(playerid, 5.0, X, Y, Z)) Kick(playerid); // Если игрок не рядом с собой в радиусе 5 метров, то возможно у него обход. Кикаем.
 
    return 1;
3. Создаём стоковую функцию в самом конце мода:
C++:
stock SetPlayerPosAC(playerid, Float:x, Float:y, Float:z)
{
    acX[playerid] = x, acY[playerid] = y, acZ[playerid] = z;
    SetPlayerPos(playerid, x, y, z);
    return 1;
}
4. Теперь в своём моде везде функции SetPlayerPos заменяем на SetPlayerPosAC или просто добавим к ним 'AC'.

Критикуйте новичка, и критикуешь - предлагай.
 
Последнее редактирование:

bin01

Новичок
Автор темы
11
0
в массиве будет 0, 0, 0 только себе хуже сделаешь. Да и обойти этот ач очень просто

Кстати, говоришь о спавне, а сам код с паблика OnPlayerSpawn не предоставил)
Я же сказал везде заменить на SetPlayerPosAC даже в OnPlayerRequestClass. Для безопасности поставить в OnPlayerSpawn - SetPlayerPosAC(playerid, позиция X из класса, позиция Y из класса, позиция Z из класса);
 

Alfinity

Известный
94
52
OnPlayerUpdate на секундный таймер замени и в нем перебирай всех игроков

Потому что OnPlayerUpdate вызывается чет 50-60 раз в сек(зависит от настроек серва), нагрузочно выходит

И что бы не заменять SetPlayerPos , можно использовать
#undef SetPlayerPos
#define SetPlayerPos SetPlayerPosAC

Зачем повторно узнавать координаты игрока?
 
Последнее редактирование:

bin01

Новичок
Автор темы
11
0
OnPlayerUpdate на секундный таймер замени и в нем перебирай всех игроков

Потому что OnPlayerUpdate вызывается чет 50-60 раз в сек(зависит от настроек серва), нагрузочно выходит

И что бы не заменять SetPlayerPos , можно использовать
#undef SetPlayerPos
#define SetPlayerPos SetPlayerPosAC

Зачем повторно узнавать координаты игрока?
Через CTRL + F можно сразу заменить определенный текст на другой причём все быстро.

Если будете использовать данную защиту не кидайте в OnPlayerUpdate, лучше кидайте в таймер с частотой в секунду. Бывают сбои в при переходах интерьеров.
 

Vovich

HOT
Проверенный
717
197
В конце концов игрок когда будет проходить пикапы, будет кикнут из-за частоты вызова OnPlayerUpdate.
 

f0Re3t

Poh production
Друг
876
807
Начнем с того, что имеется много видов телепорта которые данная система не закроет вообще, так же судя по коду это даст огроменное количество ложных на онлайне. Дистанции в 100 и 5 метров тупо взяты на обум, нет нормально вымеренных значений, нет анти-нопа и многого другого.
 

bin01

Новичок
Автор темы
11
0
В конце концов игрок когда будет проходить пикапы, будет кикнут из-за частоты вызова OnPlayerUpdate.
Писал выше: Если будете использовать данную защиту не кидайте в OnPlayerUpdate, лучше кидайте в таймер с частотой в секунду. Бывают сбои в при переходах интерьеров.

Начнем с того, что имеется много видов телепорта которые данная система не закроет вообще, так же судя по коду это даст огроменное количество ложных на онлайне. Дистанции в 100 и 5 метров тупо взяты на обум, нет нормально вымеренных значений, нет анти-нопа и многого другого.
100 метров как и 5 взяты для безопасности от ложных вызовов, можно и уменьшить. 1 из твоих аргументов верно это только: нет анти-нопа и многого другого.
 

Revalto

Известный
532
225
Если пинг подскачет, то тупо за тп кикать будет...
 
Статус
В этой теме нельзя размещать новые ответы.

Похожие темы

    • Закрыта
    • Опрос
    Ответы
    262
    Просмотры
    75K
  1. Ответы
    88
    Просмотры
    18K