Достаточно мощный Анти-чит на FlyHack

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

Batka1337

Новичок
Автор темы
21
9
Всем привет.
С вами Batka1337.
Сегодня я вам покажу и сделаю анти-чит на FlyHack.
Добавляем эти строчки в ежесекундный таймер, у меня это public OnPlayerUpdate
Код:
        if(IsPlayerFlyHack(playerid))
        {
            if(PlayerInfo[playerid][pAdmin] > 0 ) return 0;
            GKick(playerid);
            SendClientMessage(playerid,0xFF6347AA,"Вы кикнуты по подозрению в читерстве!");
            return 1;
        }
Далее создаём сам паблик анти-чита

Код:
stock IsPlayerFlyHack(const playerid)
{
    if(PlayerInfo[playerid][pAdmin] > 0) return 0;
    new Float:X, Float:Y, Float:Z;
    new Float:CoordX,Float:CoordY,Float:CoordZ;
    GetPlayerPos(playerid, CoordX, CoordY, CoordZ);
    GetPlayerVelocity(playerid,X,Y,Z);
    if((GetPlayerAnimationIndex(playerid) == 1538 || GetPlayerAnimationIndex(playerid) == 1539 || GetPlayerAnimationIndex(playerid) == 1543) && floatround(floatsqroot(X*X+Y*Y+Z*Z)*170.0) > 10 && CoordZ > 2)
    {
        if(IsPlayerInRangeOfPoint(playerid, 20.0, 1968.3948,-1198.0753,17.4500))      return 0;
          else if(IsPlayerInRangeOfPoint(playerid, 20.0, 2310.9861,-1412.8881,21.6151)) return 0;
          else if(IsPlayerInRangeOfPoint(playerid, 20.0, 1241.1094,-2379.7263,8.3145))  return 0;
        else if(IsPlayerInRangeOfPoint(playerid, 20.0, 225.6394,-1187.0551,73.4500))  return 0;
        else if(IsPlayerInRangeOfPoint(playerid, 20.0, 193.2040,-1224.7693,76.5034))  return 0;
        else if(IsPlayerInRangeOfPoint(playerid, 20.0, 196.0067,-1232.3684,76.5034))  return 0;
        else if(IsPlayerInRangeOfPoint(playerid, 20.0, 512.7349,-1104.1942,78.8238))  return 0;
        else if(IsPlayerInRangeOfPoint(playerid, 20.0, 1283.7939,-806.5845,86.1230))  return 0;
        else if(IsPlayerInRangeOfPoint(playerid, 20.0, 2531.6001,1568.4032,8.4171))  return 0;
        else if(IsPlayerInRangeOfPoint(playerid, 60.0, 2105.2651,1916.6781,9.5989))  return 0;
        else if(IsPlayerInRangeOfPoint(playerid, 150.0,-792.4582,2173.0356,40.0821))  return 0;
        else if(IsPlayerInRangeOfPoint(playerid, 150.0,1993.5868,1601.2623,9.2979))  return 0;
        return 1;
    }
    return 0;
}
Далее, делаем паблик кика, чтобы игрок успел прочитать за что кикнуло. Добави это в конец мода.
Код:
forward KickTimer(playerid);
public KickTimer(playerid) return GKick(playerid);
stock GKick(playerid, time = 5000)
{
    if(GetPVarInt(playerid, "Kick") == -1) Kick(playerid);
    else if(!GetPVarInt(playerid, "Kick")) SetPVarInt(playerid, "Kick", SetTimerEx("KickTimer", time, 0, "d", playerid));
    else
    {
        KillTimer(GetPVarInt(playerid, "Kick"));
        SetPVarInt(playerid, "Kick", -1);
        GKick(playerid);
    }
  return 1;
}
 

kaZax

samp.work
Проверенный
150
23
Callback public OnPlayerUpdate(playerid) вызывается при обновлений игрока.
И это далеко не каждые секунды.
Проверь все через print();
Ты ошибаешься.
 

Batka1337

Новичок
Автор темы
21
9
Callback public OnPlayerUpdate(playerid) вызывается при обновлений игрока.
И это далеко не каждые секунды.
Проверь все через print();
Ты ошибаешься.
Он не вызывается он включается при запуске сервера и каждую секунду он делает проверки которые у тебя в нём забиты.Проверено только что ещё раз
 

kaZax

samp.work
Проверенный
150
23
Похоже он нечего не проверил.
Либо сделал все криво. У меня нет времени на него.
Если у кого есть время образумите его.
 

Taylör

Новичок
1
0
Он не вызывается он включается при запуске сервера и каждую секунду он делает проверки которые у тебя в нём забиты.Проверено только что ещё раз
Он вызывается, когда игрок в сети, и он не вызывается ежесекундно, он вызывается на много раз больше, как бы, как только игрок обновляется - таймер запускается.

"This callback is called everytime a client/player updates the server with their status." - SA:MP wiki.
 

Zaxar_D

Известный
53
5
Своим мощным Анти Читом ты так же мощно убьёшь свой сервер!
 

White_116

Новичок
18
6
Карта высот + вектор передвижения.
Отловить по анимации можно только неопытных.
 
Статус
В этой теме нельзя размещать новые ответы.