Small problem. >>OnPlayerWeaponShot/Ammo saving<<
#1

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;
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
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=*********
Reply
#2

bump
Reply
#3

Bump, changed some stuff, but i still have the problem
Code once again;
pawn Код:
new currentammo[MAX_PLAYERS], currentweapon[MAX_PLAYERS];
    currentweapon[playerid] = GetPlayerWeapon(playerid);

    if(currentweapon[playerid] == ACWeapon[playerid])
    {
        currentammo[playerid] = GetPlayerAmmo(playerid)+1;

        if(ACAmmo[playerid] == currentammo[playerid]) //> didn't work xd
        {
            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 {F81414}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("KickTimer2", 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]+1);

                    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,GetPlayerCountry(playerid, Country, sizeof(Country)), 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), "*{FFFFFF}Dr_Hax {F81414}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("KickTimer2", 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]+1);

                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,GetPlayerCountry(playerid, Country, sizeof(Country)), BOT_NAME);
                    fwrite(ACBans, string);
                    fclose(ACBans);
                }
                return 1;
            }
        }
    }
Timer
pawn Код:
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;
}
Console stuff:
Код:
[13:56:52] Incoming connection: 127.0.0.1:51297
[13:56:52] [join] Kyance has joined the server (1:127.0.0.1)
[13:57:21] ANTI-CHEAT - Kyance has been detected using Infinite Ammo hacks
Current online admins ( LEVEL 2+ ): 1
[13:57:21] ANTI-CHEAT - Kyance has been detected using Infinite Ammo hacks
Current online admins ( LEVEL 2+ ): 1
[13:57:22] ANTI-CHEAT - Kyance has been detected using Infinite Ammo hacks
Current online admins ( LEVEL 2+ ): 1
[13:57:22] « ANTI-CHEAT has BANNED Kyance for using Infinite-Ammo hacks! »
[13:57:22] « Last checked ammo for Kyance - 800
« Current ammo - 797
[13:57:23] [part] Kyance has left the server (1:2)
Reply
#4

Bump..
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)