SA-MP Forums Archive
KeyStateChange - Anti weapon hack help - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: KeyStateChange - Anti weapon hack help (/showthread.php?tid=521862)



KeyStateChange - Anti weapon hack help - [Cali]ChrOnic_T - 24.06.2014

Help me fix this, it keeps giving me errors


pawn Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
        if(newkeys & KEY_FIRE && ForbiddenGuns(playerid) && !pInfo[playerid][pLevel] >= 0)) // firs this was IsPlayerAdmin but i need it to block admins, not rcon. ever since i changed it i got errors, help me fix
        {
            new pname[MAX_PLAYER_NAME];
            new zstr[124];
            GetPlayerName(playerid, pname, sizeof(pname));
            format(zstr, sizeof(string), "SERVER: %s has been banned! Reason: Forbidden weapon", pname);
            SendClientMessageToAll(0xFF1A00C8,zstr);
            print(zstr);
            BanEx(playerid,zstr);
            }
        }
        // and other codes below this but its no point posting them cause the errors are here xd ^



Re: KeyStateChange - Anti weapon hack help - Jacksta21 - 24.06.2014

Change
pawn Код:
!pInfo[playerid][pLevel] >= 0)
to
pawn Код:
pInfo[playerid][pLevel] == 0
Should only check people who have the (admin?) level of 0


Re: KeyStateChange - Anti weapon hack help - Vince - 24.06.2014

Why don't you stick simpler operators? That last part will always return true, regardless of what level the player actually is.

Let's say the admin level is 0: 0 inverted becomes 1, 1 is greater than or equal to 0, statement is true. However, let's now assume that the admin level is 5: 5 inverted becomes 0, 0 is greater than or equal to 0, statement is true.

Much simpler to just do:
pawn Код:
pInfo[playerid][pLevel] < 1



Re: KeyStateChange - Anti weapon hack help - Juvanii - 24.06.2014

There is a closed bracket that shouldn't be there under BanEx. Fix it like this:
pawn Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys & KEY_FIRE && ForbiddenGuns(playerid) && !pInfo[playerid][pLevel] >= 0)) // firs this was IsPlayerAdmin but i need it to block admins, not rcon. ever since i changed it i got errors, help me fix
    {
        new pname[MAX_PLAYER_NAME];
        new zstr[124];
        GetPlayerName(playerid, pname, sizeof(pname));
        format(zstr, sizeof(string), "SERVER: %s has been banned! Reason: Forbidden weapon", pname);
        SendClientMessageToAll(0xFF1A00C8,zstr);
        print(zstr);
        BanEx(playerid,zstr);
    }
}



Re: KeyStateChange - Anti weapon hack help - Koala818 - 24.06.2014

And there's another bracket in plus in that if statement.

Код:
        if(newkeys & KEY_FIRE && ForbiddenGuns(playerid) && !pInfo[playerid][pLevel] >= 0))
Delete it


Re: KeyStateChange - Anti weapon hack help - Juvanii - 25.06.2014

So the final solution is:
pawn Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(newkeys & KEY_FIRE && ForbiddenGuns(playerid) && !pInfo[playerid][pLevel] >= 0) // firs this was IsPlayerAdmin but i need it to block admins, not rcon. ever since i changed it i got errors, help me fix
    {
        new pname[MAX_PLAYER_NAME];
        new zstr[124];
        GetPlayerName(playerid, pname, sizeof(pname));
        format(zstr, sizeof(string), "SERVER: %s has been banned! Reason: Forbidden weapon", pname);
        SendClientMessageToAll(0xFF1A00C8,zstr);
        print(zstr);
        BanEx(playerid,zstr);
    }
}