Доступ к архиву

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

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

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

Anti-Cheat l Beta Version

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

Seregamil

Мастер
Всем привет, решил попробовать написать свой первый анти чит,
Пока выкладываю свои наработки, дабы извлечь все неполадки и баги...
Скрипт работает как FS так и в моде
У меня он в FS, все оружие которое запрещено на сервере вычерните из списка)
PHP:
/*
Анти чит для Sa-Mp Сервера
Автор Seregamil
*/

#include <a_samp>
#define FloodTime 5

forward AntiCheat();
public OnFilterScriptInit()
{
    print("\n--------------------------------------");
    print(" Anti-Cheat By Seregamil...Loading - 100%");
    print("--------------------------------------\n");
    SetTimer("AntiCheat", 100,1);
    return 1;
}

public OnFilterScriptExit()
{
    print("\n--------------------------------------");
    print(" Anti-Cheat By Seregamil...Unloading - 100%");
    print("--------------------------------------\n");
    return 1;
}

public OnPlayerConnect(playerid)
{
    new playerip[30],string[64], pName[MAX_PLAYER_NAME];
    GetPlayerIp(playerid, playerip, sizeof(playerip));GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
    format(string,sizeof string,">> Player [ %s ] is connected [ip: %s]",pName, playerip);
    SendClientMessageToAll(0xFFFFFFAA,string);
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    new string[64],name[MAX_PLAYER_NAME],Float:hp,Float:ar,playerip[30];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);GetPlayerHealth(playerid, hp);GetPlayerArmour(playerid, ar);GetPlayerIp(playerid, playerip, sizeof(playerip));
    switch(reason)
    {
        case 0: format(string,sizeof string,"The player %s left our server. (Disconnected) [%s] [Health: %0.f] [Armour: %0.f]",name , playerip, hp, ar);
        case 1: format(string,sizeof string,"The player %s left our server. (Exit) [%s] [Health: %0.f] [Armour: %0.f]",name,playerip, hp, ar);
        case 2: format(string,sizeof string,"The player %s left our server. (Kicked | Banned) [%s] [Health: %0.f] [Armour: %0.f]",name,playerip, hp, ar);
    }
    SendClientMessageToAll(0xFFFFFFAA,string);
    return 1;
}

public OnPlayerText(playerid,text[])
{
    if ( containsAnyIP(text) )
    {
        SendClientMessage( playerid, 0xAFAFAFAA, "Реклама запрещена." );
        return false;
    }
	if(GetPVarInt(playerid,"CountFlood") > gettime())
    {
        SendClientMessage(playerid,-1,"No Floood");
        return false;
    }
    SetPVarInt(playerid,"CountFlood",gettime() + FloodTime);

    return 1;
}
public AntiCheat()
{
/*Anti-Weapon_Hack*/
/*Ручные*/
    for(new i = 0; i <= MAX_PLAYERS; i++)
    {
        if(GPW(i) == 35){KMes(i);Kick(i);return true;}//Raketomet
        if(GPW(i) == 36){KMes(i);Kick(i);return true;}//raketomet2
        if(GPW(i) == 37){KMes(i);Kick(i);return true;}//ognemet
        if(GPW(i) == 38){KMes(i);Kick(i);return true;}//миниган
    /*Anti Big Ping*/
        if(GetPlayerPing(i) > 500){SendClientMessage(i,0xAFAFAFAA,"[Anti-Cheat] Вы удалены с сервера из-за высокого пинга");Kick(i);return true;}
    /*Anti Speed Hack & Anti Jet Pack*/
        if(GetSpeedVehicleKM(i) > 300){KMes(i);Kick(i);return true;}
        if(GetPlayerSpecialAction(i) == SPECIAL_ACTION_USEJETPACK){KMes(i);Kick(i);return true;}
    }
    return 1;
}
public OnVehicleMod(playerid,vehicleid,componentid)
{
    if(!(IsPlayerInRangeOfPoint(playerid,15.0,616.7820,-74.8151,997.6350) || IsPlayerInRangeOfPoint(playerid,15.0,615.2851,-124.2390,997.6350) || IsPlayerInRangeOfPoint(playerid,15.0,617.5380,-1.9900,1000.6829)) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
        KMes(playerid);
        Kick(playerid);
    }
    return true;
}
stock GetSpeedVehicleKM(playerid) // проверяет скорость
{
     new Float:PosX, Float:PosY, Float:PosZ, Float:PlayerSpeedDistance;
     GetVehicleVelocity(GetPlayerVehicleID(playerid), PosX, PosY, PosZ);
     PlayerSpeedDistance = floatmul(floatsqroot(floatadd(floatadd(floatpower( PosX, 2), floatpower(PosY, 2)), floatpower(PosZ, 2))), 170.0);
     new spe = floatround(PlayerSpeedDistance * 1);
     return spe;
}
stock KMes(playerid)return SendClientMessage(playerid,0xAFAFAFAA,"[Anti-Cheat] Вы удалены с сервера за использования читов");
stock GPW(playerid)return GetPlayerWeapon(playerid);
stock containsAnyIP ( string[] )
{
    new digits, digitGroups;
    for ( new pos; ; pos++ )
    {
        switch ( string[pos] )
        {
            case 0 : break;
            case '0'..'9', 'o', 'O', 'о', 'О', 'З', 'з' : digits++;
            default :
            {
                if ( digits >= 2 )
                {
                    digitGroups++;
                    digits = 0;
                }
            }
        }
    }
    if ( digits >= 2 ) digitGroups++;
    if ( digitGroups >= 4 ) return 1;
    return 0;
}
По крайней мере у меня за IP в чате, за превышения лимита скорости и за оружие запретное ловил, тюнинг и джет пак я не проверял если честно)
Автор: Seregamil
О всех багах, недостатках и пожеланиях сообщайте в теме)

P.S. не придираться что половина на англ.языке, переключать лень было)
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу