08.04.2014, 07:07
I tried making an Infinite Ammo Anti-cheat thing, but i see that the way i save the Weapon Ammo/Name etc. isn't so effective.
My code;
The problem is, that it keeps saying that i have Infinite-Ammo hacks, even though i don't ;_;
EDIT: Should i maybe save at "OnPlayerSpawn"?
EDIT #2: video - https://www.youtube.com/watch?v=WxFR...ature=*********
My code;
pawn Код:
//As local variables;
new ACAmmo[MAX_PLAYERS];
new ACWeapon[MAX_PLAYERS];
//OnGameModeInit;
SetTimer("ACWeaponCheck", 15000, true);
//Timer;
forward ACWeaponCheck();
public ACWeaponCheck()
{
foreach(Player, i)
{
if(GetPlayerWeapon(i) != 0 || GetPlayerWeapon(i) != 4)
{
/*new currentweapon[MAX_PLAYERS], currentammo[MAX_PLAYERS];
new currentweapon[33];*/
ACWeapon[i] = GetPlayerWeapon(i);
ACAmmo[i] = GetPlayerAmmo(i);
//GetWeaponName(ACWeapon[i], currentweapon, sizeof(currentweapon));
}
}
return 1;
}
//OnPlayerWeaponShot
//other codes here
new currentammo[MAX_PLAYERS], currentweapon[MAX_PLAYERS];
currentweapon[playerid] = GetPlayerWeapon(playerid);
if(currentweapon[playerid] == ACWeapon[playerid])
{
currentammo[playerid] = GetPlayerAmmo(playerid);
if(ACAmmo[playerid] == currentammo[playerid])
{
new string[134], name[MAX_PLAYER_NAME], count = 0;
GetPlayerName(playerid, name, sizeof(name));
foreach(Player, i)
{
if(PlayerInfo[i][pAdmin] >= 2)
{
count++;
}
}
if(count)
{
TimesDetected[playerid]++;
if(TimesDetected[playerid] <= 3)
{
format(string, sizeof(string), "*{F81414}[ANTI-CHEAT] {FFFFFF}- {F81414}%s[%d] {FFFFFF}has been {F81414}DETECTED {FFFFFF}for {F81414}Infinite-Ammo hacks!", name, playerid);
SendMessageToAdmins(-1, string);
printf("ANTI-CHEAT - %s has been detected using Infinite Ammo hacks\nCurrent online admins ( LEVEL 2+ ): %d", name, count);
if(PlayerInfo[playerid][pACDetected] == 0)
{
SendMessageToAdmins(-1, "* /hackers list has been updated!");
PlayerInfo[playerid][pACDetected] = 1;
}
}
else
{
SendClientMessage(playerid, -1, "{F81414}[ANTI-CHEAT] {FFFFFF}- {F81414}You've been banned for using {FFFFFF}Infinite-Ammo {F81414}hacks!");
format(string, sizeof(string), "* {FFFFFF}Dr_Hax has {F81414}banned {FFFFFF}%s[%d] {F81414}for using {FFFFFF}Infinite-Ammo {F81414}hacks!", name, playerid);
SendClientMessageToAll(-1, string);
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"Anti-Cheat BAN info");
INI_WriteString(File,"Banned By", "Anti-Cheat");
INI_WriteString(File,"Reason", "SP Cheats - Infinite-Ammo");
SetTimerEx("KickTimer", 50, false, "i", playerid);
PlayerInfo[playerid][pACDetected] = 1;
PlayerInfo[playerid][pACBanned] = 1;
printf("« ANTI-CHEAT has BANNED %s for using Infinite-Ammo hacks! »", name);
printf("« Last checked ammo for %s - %d\n Current ammo - %d",name, ACAmmo[playerid], currentammo[playerid]);
new File:ACBans = fopen("ACBans.txt", io_append);
if(ACBans)
{
new y, m, d, h, mi, s;
getdate(y,m,d);
gettime(h,mi,s);
format(string, sizeof(string), "- %i/%i/%i (%i:%i:%i) - %s( %s ) banned by %s( Latvia ) for Infinite-Ammo Hacks\r\n", d, m, y, h, mi, s, name,GetPlayerCountryName( playerid ), BOT_NAME);
fwrite(ACBans, string);
fclose(ACBans);
}
}
}
else
{
//GetPlayerName(playerid, name, sizeof(name));
SendClientMessage(playerid, -1, "{F81414}[ANTI-CHEAT] {FFFFFF}- {F81414}You've been banned for using {FFFFFF}Infinite-Ammo {F81414}hacks!");
format(string, sizeof(string), "* {F81414}Dr_Hax has banned {FFFFFF}%s[%d] {F81414}for using {FFFFFF}Infinite-Ammo {F81414}hacks!", name, playerid);
SendClientMessageToAll(-1, string);
new INI:File = INI_Open(UserPath(playerid));
INI_SetTag(File,"Anti-Cheat BAN info");
INI_WriteString(File,"Banned By", "Anti-Cheat");
INI_WriteString(File,"Reason", "SP Cheats - Infinite-Ammo");
SetTimerEx("KickTimer", 50, false, "i", playerid);
PlayerInfo[playerid][pACDetected] = 1;
PlayerInfo[playerid][pACBanned] = 1;
printf("« ANTI-CHEAT has BANNED %s for using Infinite-Ammo hacks! »", name);
printf("« Last checked ammo for %s - %d\n Current ammo - %d",name, ACAmmo[playerid], currentammo[playerid]);
new File:ACBans = fopen("ACBans.txt", io_append);
if(ACBans)
{
new y, m, d, h, mi, s;
getdate(y,m,d);
gettime(h,mi,s);
format(string, sizeof(string), "- %i/%i/%i (%i:%i:%i) - %s( %s ) banned by %s( Latvia ) for Infinite-Ammo Hacks\r\n", d, m, y, h, mi, s, name,GetPlayerCountryName( playerid ), BOT_NAME);
fwrite(ACBans, string);
fclose(ACBans);
}
return 1;
}
}
}
//rest of code
EDIT: Should i maybe save at "OnPlayerSpawn"?
EDIT #2: video - https://www.youtube.com/watch?v=WxFR...ature=*********