help with ANTI-CHEAT [need help]
#1

Ey guys!!!

i have a problem

if i want to give all a rpg or a mini gun or a launcher or if a admin wants to spawn a jetpack!

when i try to give rpg to all it will ban everyone lol -,-

or if i will spawn a jet pack it will also ban me lool -,-

here is the code of the anti cheat

Код:
public OnPlayerUpdate(playerid)
{
	new name[MAX_PLAYER_NAME];
	GetPlayerName(playerid,name,sizeof(name));
	#if JetpackCheck == true
	if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_USEJETPACK)
	{
	    #if JetpackAction == ban
	    ACBanLog(playerid);
	    new string[256], pname[MAX_PLAYER_NAME];
		GetPlayerName(playerid, pname, sizeof(pname));
		format(string, sizeof(string), "[ANTI-CHEAT]: %s has been banned for using jetpack!", pname);
		SendClientMessageToAll(red, string);
		new bandate[3];
		new TargetString[256];
		getdate(bandate[0], bandate[1], bandate[2]);
		format(TargetString,sizeof(TargetString),"{FF002B}Banned by: AntiCheat\n\n{FF002B}Reason: Jetpack usage\n\n{FF002B}Date: {FFFFFF}%02d/%02d/%04d", bandate[2], bandate[1], bandate[0]);
		ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "{FF002B}BANNED!", TargetString, "OK", "");
	    BanEx(playerid,"Jetpack Usage");
	    #endif
	    
	    #if JetpackAction == kick
		new kstring[256];
		format(kstring,sizeof(kstring),"* %s got kicked from the server! (Reason: Jetpack)",name);
	    SendClientMessageToAll(red,kstring);
		PingKickLog(playerid);
		new kickdate[3];
		new TargetString[256];
		getdate(kickdate[0], kickdate[1], kickdate[2]);
		format(TargetString,sizeof(TargetString),"{FF002B}Kicked by: AntiCheat\n\n{FF002B}Reason: Jetpack usage\n\n{FF002B}Date: {FFFFFF}%02d/%02d/%04d", kickdate[2], kickdate[1], kickdate[0]);
		ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "{FF002B}KICKED!", TargetString, "OK", "");
	    Kick(playerid);
		#endif
		
		#if JetpackAction == 0 && JetpackAction != ban && JetpackAction != kick
		return 0;
		#endif
		
		#if JetpackAction != 0 && JetpackAction != ban && JetpackAction != kick
		#error JetpackAction must be 0, ban(1) or kick(2)
		#endif
  	}
  	#endif
	    
	#if WeaponAntiCheat == true
	if(GetPlayerWeapon(playerid) == 35)
	{
	    ACBanLog(playerid);
	    new string[256], pname[MAX_PLAYER_NAME];
		GetPlayerName(playerid, pname, sizeof(pname));
		format(string, sizeof(string), "[ANTI-CHEAT]: %s has been banned for using weapon hacks! (RPG)", pname);
		SendClientMessageToAll(red, string);
		new bandate[3];
		new TargetString[256];
		getdate(bandate[0], bandate[1], bandate[2]);
		format(TargetString,sizeof(TargetString),"{FF002B}Banned by: AntiCheat\n\n{FF002B}Reason: Weapon hacks (RPG)\n\n{FF002B}Date: {FFFFFF}%02d/%02d/%04d", bandate[2], bandate[1], bandate[0]);
		ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "{FF002B}BANNED!", TargetString, "OK", "");
	    BanEx(playerid,"Weapon Hacks -> RPG");
	}
	else if(GetPlayerWeapon(playerid) == 36)
	{
	    ACBanLog(playerid);
	    new string[256], pname[MAX_PLAYER_NAME];
		GetPlayerName(playerid, pname, sizeof(pname));
		format(string, sizeof(string), "[ANTI-CHEAT]: %s has been banned for using weapon hacks! (Missile Launcher)", pname);
		SendClientMessageToAll(red, string);
		new bandate[3];
		new TargetString[256];
		getdate(bandate[0], bandate[1], bandate[2]);
		format(TargetString,sizeof(TargetString),"{FF002B}Banned by: AntiCheat\n\n{FF002B}Reason: Weapon hacks (Missile Launcher)\n\n{FF002B}Date: {FFFFFF}%02d/%02d/%04d", bandate[2], bandate[1], bandate[0]);
		ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "{FF002B}BANNED!", TargetString, "OK", "");
	    BanEx(playerid,"Weapon Hacks -> Missile Launcher");
	}
	else if(GetPlayerWeapon(playerid) == 38)
	{
	    ACBanLog(playerid);
	    new string[256], pname[MAX_PLAYER_NAME];
		GetPlayerName(playerid, pname, sizeof(pname));
		format(string, sizeof(string), "[ANTI-CHEAT]: %s has been banned for using weapon hacks! (Minigun)", pname);
		SendClientMessageToAll(red, string);
		new bandate[3];
		new TargetString[256];
		getdate(bandate[0], bandate[1], bandate[2]);
		format(TargetString,sizeof(TargetString),"{FF002B}Banned by: AntiCheat\n\n{FF002B}Reason: Weapon hacks (Minigun)\n\n{FF002B}Date: {FFFFFF}%02d/%02d/%04d", bandate[2], bandate[1], bandate[0]);
		ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "{FF002B}BANNED!", TargetString, "OK", "");
	    BanEx(playerid,"Weapon Hacks -> Minigun");
	}
	#endif
	
	#if EnableAFKdetection == true
	if(afk_timer_used[playerid] == 0)
	{
		new Float:old_angle, Float:old_x, Float:old_y, Float:old_z;
		GetPlayerFacingAngle(playerid, old_angle);
		GetPlayerPos(playerid,old_x,old_y,old_z);
		CheckAFKtimer[playerid] = SetTimerEx("CheckPlayerAFK", AFK_DETECT_TIME, true, "dffff", playerid, old_angle, old_x, old_y, old_z);
		afk_timer_used[playerid] = 1;
	}
	else return 0;
	#endif
	return 1;
}
i want something like HackTest = False\True

i mean it should not ban everyone when i will give them a weap like id 38 or a rpg

plz help!
Reply
#2

ANYONEEEEEEEEEE
Reply
#3

Alter your if statements so that they only proceed if the player is not an admin. So something like this:
pawn Код:
if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_USEJETPACK && !IsPlayerAdmin(playerid))
but instead with your own admin stat (if you have one). Also I'd recommend not using OnPlayerUpdate, and instead something like a 5-10 second timer. That would solve admins (you) from being banned.

Next create a global variable by adding this to the top of your script:
pawn Код:
new HackTest;
And in a command somewhere toggle it by first checking the current value of HackTest (0 or 1), and setting it to the opposite of that. Within OnPlayerUpdate or in your timers if you do what I suggested check HackTest's value again.
pawn Код:
if(HackTest == 1)
or
pawn Код:
if(HackTest == 0)
If 1, execute the anti-cheat code. Do nothing if it's 0.
Reply
#4

thanksss
Reply
#5

dude, if you can do a timer instead if OnPlayerUpdate, it's would be better. OnPlayerUpdate cause to lag your server. it's woking very frequently per second per player
Reply
#6

umm like this

correct me if i am wrong :d plz plz

pawn Код:
forward AntiCheat(playerid);
public AntiCheat(playerid)
{
    new Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, sizeof(Name));
    if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_USEJETPACK && !IsPlayerVip(playerid == 3))
    {
        if(HackTest == 1)
        {
            SetTimerEx("BanHacker", 5000, false, "d", playerid);
            new string[128];
            format(string, sizeof(string), "Admin RDX banned %s due to \"Jetpack Hacks.\".", Name);
            SendClientMessageToAll(COLOR_RED, string);
            GameTextForPlayer(playerid, "~r~Banned", 10000, 2);
            SendClientMessage(playerid, COLOR_RED, "You are BANNED for jetpack hacks | Banned By: Admin RDX (NOTE: You can make a unban appeal on our website.) (NOTE: if you are a V.I.P. You will be unbanned A.S.A.P.");
            BanEx(playerid, "Hacking --> Jetpack.");
        }
    }
    if(GetPlayerWeapon(playerid) == 35)
    {
        if(HackTest == 1)
        {
            SetTimerEx("BanHacker", 5000, false, "d", playerid);
            new string[128];
            format(string, sizeof(string), "Admin RDX banned %s due to \"Weapon hacks.\".", Name);
            SendClientMessageToAll(COLOR_RED, string);
            GameTextForPlayer(playerid, "~r~Banned", 10000, 2);
            SendClientMessage(playerid, COLOR_RED, "You are BANNED for weapon hacks (RPG) | Banned By: Admin RDX (NOTE: You can make a unban appeal on our website.) (NOTE: If you are a V.I.P. You will be unbanned A.S.A.P.");
            BanEx(playerid, "Hacking --> Weapons --> RPG");
        }
    }
    if(GetPlayerWeapon(playerid) == 36)
    {
        if(HackTest == 1)
        {
            SetTimerEx("BanHacker", 5000, false, "d", playerid);
            new string[128];
            format(string, sizeof(string), "Admin RDX banned %s due to \"Weapon hacks.\".", Name);
            SendClientMessageToAll(COLOR_RED, string);
            GameTextForPlayer(playerid, "~r~Banned", 10000, 2);
            SendClientMessage(playerid, COLOR_RED, "You are BANNED for weapon hacks (Missile Launcher) | Banned By: Admin RDX (NOTE: You can make a unban appeal on our website.) (NOTE: If you are a V.I.P. You will be unbanned A.S.A.P.");
            BanEx(playerid, "Hacking --> Weapons --> Missile Launcher");
        }
    }
    if(GetPlayerWeapon(playerid) == 38)
    {
        if(HackTest == 1)
        {
            SetTimerEx("BanHacker", 5000, false, "d", playerid);
            new string[128];
            format(string, sizeof(string), "Admin RDX banned %s due to \"Weapon hacks.\".", Name);
            SendClientMessageToAll(COLOR_RED, string);
            GameTextForPlayer(playerid, "~r~Banned", 10000, 2);
            SendClientMessage(playerid, COLOR_RED, "You are BANNED for weapon hacks (MINI Gun) | Banned By: Admin RDX (NOTE: You can make a unban appeal on our website.) (NOTE: If you are a V.I.P. You will be unbanned A.S.A.P.");
            BanEx(playerid, "Hacking --> Weapons --> MINI Gun");
        }
    }
    return 1;
}
Reply
#7

Um, so, you're creating an anti-cheat? Then I'm sure you will find this theard so useful.
Reply
#8

kk i will see
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)