Would this be a accurate anti-cheat? (Basic)
#2

OnPlayerUpdate calls everything that happens.

Try using something like this

Credits to Coole210
Code:
new AntiCheatTimer;
enum _ACInfo
{
    Float:Health, Float:Armour, Money,
}
new ACInfo[MAX_PLAYERS][_ACInfo];

#define GivePlayerMoney GivePlayerMoneyEx
#define SetPlayerHealth SetPlayerHealthEx
#define SetPlayerArmour SetPlayerArmourEx

public OnGameModeInit()
{
    AntiCheatTimer = SetTimer("AntiCheat",1000,true);
}

public OnGameModeExit()
{
    KillTimer(AntiCheatTimer);
}

forward AntiCheat();
public AntiCheat()
{
    new Float:HP,Float:AP,_Money=GetPlayerMoney(playerid);
    GetPlayerHealth(playerid,HP);
    GetPlayerArmour(playerid,AP);
    if(HP > ACInfo[playerid][Health])
    {
        //Gained health, he used cheats
    }
    else
    {
        ACInfo[playerid][Health] = HP; //If he lost health, set anti-cheat info health to current health
    }
    if(AP > ACInfo[playerid][Armour])
    {
        //Gained armour, he used cheats
    }
    else
    {
        ACInfo[playerid][Health] = HP; //If he lost armour, set anti-cheat info armour to current armour
    }
    if(_Money > ACInfo[playerid][Money])
    {
        //Gained health, he used hacks
    }
    else
    {
        ACInfo[playerid][Money] = _Money; //If he lost money, set anti-cheat info money to current money
    }
    return 1;
}
stock SetPlayerHealthEx(playerid, Float:HP)
{
    SetPlayerHealth(playerid, HP);
    ACInfo[playerid][Health] = HP;
    return 1;
}
stock SetPlayerArmourEx(playerid, Float:AP)
{
    SetPlayerArmour(playerid, AP);
    ACInfo[playerid][Armour] = AP;
    return 1;
}
stock GivePlayerMoneyEx(playerid, money)
{
    GivePlayerMoney(playerid, money);
    ACInfo[playerid][Money] += money;
    return 1;
}
Set a timer to check his HP etc.
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)