Warning Help (0/3)
#1

Hello,

How to make an warning code for example a player is using cbug then there will be a message like this

Код:
SendClientMessage("Oops your are warned for cbuging ! [1/3]")
and if they reach the 3/3 they will be kick.. how to do that any samples ?
Reply
#2

Show to us your anti c-bug system
Reply
#3

Here

Код:
#include <a_samp>
 
#define COLOR_RED 0xAA3333AA
 
#undef MAX_PLAYERS
#define MAX_PLAYERS 500 // Change to you're servers max player count.
 
#define MAX_SLOTS 48
 
new NotMoving[MAX_PLAYERS];
new WeaponID[MAX_PLAYERS];
new CheckCrouch[MAX_PLAYERS];
new Ammo[MAX_PLAYERS][MAX_SLOTS];
 
public OnFilterScriptInit()
{
        print("\n--------------------------------------");
        print(" Simple & Accurate Anti-C-Bug by Whitetiger.");
        print("--------------------------------------\n");
        return 1;
}
 
public OnFilterScriptExit()
{
        return 1;
}
 
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if((newkeys & KEY_FIRE) && (oldkeys & KEY_CROUCH) && !((oldkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) || (oldkeys & KEY_FIRE) && (newkeys & KEY_CROUCH) && !((newkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) ) {
        switch(GetPlayerWeapon(playerid)) {
                    case 23..25, 27, 29..34, 41: {
                        if(Ammo[playerid][GetPlayerWeapon(playerid)] > GetPlayerAmmo(playerid)) {
                                        OnPlayerCBug(playerid);
                                }
                                return 1;
                        }
                }
        }
 
        if(CheckCrouch[playerid] == 1) {
                switch(WeaponID[playerid]) {
                    case 23..25, 27, 29..34, 41: {
                        if((newkeys & KEY_CROUCH) && !((newkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) && GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK ) {
                                if(Ammo[playerid][GetPlayerWeapon(playerid)] > GetPlayerAmmo(playerid)) {
                                                OnPlayerCBug(playerid);
                                        }
                        }
                    }
                }
        }
 
        //if(newkeys & KEY_CROUCH || (oldkeys & KEY_CROUCH)) return 1;
 
        else if(((newkeys & KEY_FIRE) && (newkeys & KEY_HANDBRAKE) && !((newkeys & KEY_SPRINT) || (newkeys & KEY_JUMP))) ||
        (newkeys & KEY_FIRE) && !((newkeys & KEY_SPRINT) || (newkeys & KEY_JUMP)) ||
        (NotMoving[playerid] && (newkeys & KEY_FIRE) && (newkeys & KEY_HANDBRAKE)) ||
        (NotMoving[playerid] && (newkeys & KEY_FIRE)) ||
        (newkeys & KEY_FIRE) && (oldkeys & KEY_CROUCH) && !((oldkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) ||
        (oldkeys & KEY_FIRE) && (newkeys & KEY_CROUCH) && !((newkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) ) {
                SetTimerEx("CrouchCheck", 3000, 0, "d", playerid);
                CheckCrouch[playerid] = 1;
                WeaponID[playerid] = GetPlayerWeapon(playerid);
                Ammo[playerid][GetPlayerWeapon(playerid)] = GetPlayerAmmo(playerid);
                return 1;
        }
       
        return 1;
}
 
public OnPlayerUpdate(playerid)
{
        new Keys, ud, lr;
        GetPlayerKeys(playerid, Keys, ud, lr);
        if(CheckCrouch[playerid] == 1) {
                switch(WeaponID[playerid]) {
                    case 23..25, 27, 29..34, 41: {
                        if((Keys & KEY_CROUCH) && !((Keys & KEY_FIRE) || (Keys & KEY_HANDBRAKE)) && GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK ) {
                                if(Ammo[playerid][GetPlayerWeapon(playerid)] > GetPlayerAmmo(playerid)) {
                                                OnPlayerCBug(playerid);
                                        }
                        }
                        //else SendClientMessage(playerid, COLOR_RED, "Failed in onplayer update");
                    }
                }
        }
 
        if(!ud && !lr) { NotMoving[playerid] = 1; /*OnPlayerKeyStateChange(playerid, Keys, 0);*/ }
        else { NotMoving[playerid] = 0; /*OnPlayerKeyStateChange(playerid, Keys, 0);*/ }
       
        return 1;
}
 
forward OnPlayerCBug(playerid);
public OnPlayerCBug(playerid) {
        new playername[MAX_PLAYER_NAME];
        GetPlayerName(playerid, playername, sizeof(playername));
        new str2[128];
        SendClientMessage("blahblahblahblah[0/3]");
        CheckCrouch[playerid] = 0;
        return 1;
}
forward CrouchCheck(playerid);
public CrouchCheck(playerid) {
        CheckCrouch[playerid] = 0;
        return 1;
}
I got this from WhiteTiger and slightly edit it
Reply
#4

I added a variable at the top of your script and I add '1' to that every time a player c-bugs. Using a format to show them their warning amount and kicking them if their warning amount is 3 or higher.

pawn Код:
#include <a_samp>

#define COLOR_RED 0xAA3333AA

#undef MAX_PLAYERS
#define MAX_PLAYERS 500 // Change to you're servers max player count.

#define MAX_SLOTS 48

new NotMoving[MAX_PLAYERS];
new WeaponID[MAX_PLAYERS];
new CheckCrouch[MAX_PLAYERS];
new Ammo[MAX_PLAYERS][MAX_SLOTS];
new WarningAmount[MAX_PLAYERS];

public OnFilterScriptInit()
{
        print("\n--------------------------------------");
        print(" Simple & Accurate Anti-C-Bug by Whitetiger.");
        print("--------------------------------------\n");
        return 1;
}

public OnFilterScriptExit()
{
        return 1;
}

public OnPlayerDisconnect(playerid)
{
    WarningAmount[playerid] = 0;

    return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if((newkeys & KEY_FIRE) && (oldkeys & KEY_CROUCH) && !((oldkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) || (oldkeys & KEY_FIRE) && (newkeys & KEY_CROUCH) && !((newkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) ) {
        switch(GetPlayerWeapon(playerid)) {
                    case 23..25, 27, 29..34, 41: {
                        if(Ammo[playerid][GetPlayerWeapon(playerid)] > GetPlayerAmmo(playerid)) {
                                        OnPlayerCBug(playerid);
                                }
                                return 1;
                        }
                }
        }

        if(CheckCrouch[playerid] == 1) {
                switch(WeaponID[playerid]) {
                    case 23..25, 27, 29..34, 41: {
                        if((newkeys & KEY_CROUCH) && !((newkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) && GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK ) {
                                if(Ammo[playerid][GetPlayerWeapon(playerid)] > GetPlayerAmmo(playerid)) {
                                                OnPlayerCBug(playerid);
                                        }
                        }
                    }
                }
        }

        //if(newkeys & KEY_CROUCH || (oldkeys & KEY_CROUCH)) return 1;

        else if(((newkeys & KEY_FIRE) && (newkeys & KEY_HANDBRAKE) && !((newkeys & KEY_SPRINT) || (newkeys & KEY_JUMP))) ||
        (newkeys & KEY_FIRE) && !((newkeys & KEY_SPRINT) || (newkeys & KEY_JUMP)) ||
        (NotMoving[playerid] && (newkeys & KEY_FIRE) && (newkeys & KEY_HANDBRAKE)) ||
        (NotMoving[playerid] && (newkeys & KEY_FIRE)) ||
        (newkeys & KEY_FIRE) && (oldkeys & KEY_CROUCH) && !((oldkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) ||
        (oldkeys & KEY_FIRE) && (newkeys & KEY_CROUCH) && !((newkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) ) {
                SetTimerEx("CrouchCheck", 3000, 0, "d", playerid);
                CheckCrouch[playerid] = 1;
                WeaponID[playerid] = GetPlayerWeapon(playerid);
                Ammo[playerid][GetPlayerWeapon(playerid)] = GetPlayerAmmo(playerid);
                return 1;
        }

        return 1;
}

public OnPlayerUpdate(playerid)
{
        new Keys, ud, lr;
        GetPlayerKeys(playerid, Keys, ud, lr);
        if(CheckCrouch[playerid] == 1) {
                switch(WeaponID[playerid]) {
                    case 23..25, 27, 29..34, 41: {
                        if((Keys & KEY_CROUCH) && !((Keys & KEY_FIRE) || (Keys & KEY_HANDBRAKE)) && GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK ) {
                                if(Ammo[playerid][GetPlayerWeapon(playerid)] > GetPlayerAmmo(playerid)) {
                                                OnPlayerCBug(playerid);
                                        }
                        }
                        //else SendClientMessage(playerid, COLOR_RED, "Failed in onplayer update");
                    }
                }
        }

        if(!ud && !lr) { NotMoving[playerid] = 1; /*OnPlayerKeyStateChange(playerid, Keys, 0);*/ }
        else { NotMoving[playerid] = 0; /*OnPlayerKeyStateChange(playerid, Keys, 0);*/ }

        return 1;
}

forward OnPlayerCBug(playerid);
public OnPlayerCBug(playerid) {
        new playername[MAX_PLAYER_NAME], str2[128];
        GetPlayerName(playerid, playername, sizeof(playername));

        format(str2, sizeof(str2), "You have been warned for c-bugging! [[%d]/3]", WarningAmount[playerid]);
        SendClientMessage(playerid, -1, str2);
       
        WarningAmount[playerid] += 1;
       
        if(WarningAmount[playerid] > 3)
        {
            // do something here
        }

        CheckCrouch[playerid] = 0;
       
        return 1;
}
forward CrouchCheck(playerid);
public CrouchCheck(playerid) {
        CheckCrouch[playerid] = 0;
        return 1;
}
Reply
#5

Quote:
Originally Posted by Mionee
Посмотреть сообщение
I added a variable at the top of your script and I add '1' to that every time a player c-bugs. Using a format to show them their warning amount and kicking them if their warning amount is 3 or higher.

pawn Код:
#include <a_samp>

#define COLOR_RED 0xAA3333AA

#undef MAX_PLAYERS
#define MAX_PLAYERS 500 // Change to you're servers max player count.

#define MAX_SLOTS 48

new NotMoving[MAX_PLAYERS];
new WeaponID[MAX_PLAYERS];
new CheckCrouch[MAX_PLAYERS];
new Ammo[MAX_PLAYERS][MAX_SLOTS];
new WarningAmount[MAX_PLAYERS];

public OnFilterScriptInit()
{
        print("\n--------------------------------------");
        print(" Simple & Accurate Anti-C-Bug by Whitetiger.");
        print("--------------------------------------\n");
        return 1;
}

public OnFilterScriptExit()
{
        return 1;
}

public OnPlayerDisconnect(playerid)
{
    WarningAmount[playerid] = 0;

    return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if((newkeys & KEY_FIRE) && (oldkeys & KEY_CROUCH) && !((oldkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) || (oldkeys & KEY_FIRE) && (newkeys & KEY_CROUCH) && !((newkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) ) {
        switch(GetPlayerWeapon(playerid)) {
                    case 23..25, 27, 29..34, 41: {
                        if(Ammo[playerid][GetPlayerWeapon(playerid)] > GetPlayerAmmo(playerid)) {
                                        OnPlayerCBug(playerid);
                                }
                                return 1;
                        }
                }
        }

        if(CheckCrouch[playerid] == 1) {
                switch(WeaponID[playerid]) {
                    case 23..25, 27, 29..34, 41: {
                        if((newkeys & KEY_CROUCH) && !((newkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) && GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK ) {
                                if(Ammo[playerid][GetPlayerWeapon(playerid)] > GetPlayerAmmo(playerid)) {
                                                OnPlayerCBug(playerid);
                                        }
                        }
                    }
                }
        }

        //if(newkeys & KEY_CROUCH || (oldkeys & KEY_CROUCH)) return 1;

        else if(((newkeys & KEY_FIRE) && (newkeys & KEY_HANDBRAKE) && !((newkeys & KEY_SPRINT) || (newkeys & KEY_JUMP))) ||
        (newkeys & KEY_FIRE) && !((newkeys & KEY_SPRINT) || (newkeys & KEY_JUMP)) ||
        (NotMoving[playerid] && (newkeys & KEY_FIRE) && (newkeys & KEY_HANDBRAKE)) ||
        (NotMoving[playerid] && (newkeys & KEY_FIRE)) ||
        (newkeys & KEY_FIRE) && (oldkeys & KEY_CROUCH) && !((oldkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) ||
        (oldkeys & KEY_FIRE) && (newkeys & KEY_CROUCH) && !((newkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) ) {
                SetTimerEx("CrouchCheck", 3000, 0, "d", playerid);
                CheckCrouch[playerid] = 1;
                WeaponID[playerid] = GetPlayerWeapon(playerid);
                Ammo[playerid][GetPlayerWeapon(playerid)] = GetPlayerAmmo(playerid);
                return 1;
        }

        return 1;
}

public OnPlayerUpdate(playerid)
{
        new Keys, ud, lr;
        GetPlayerKeys(playerid, Keys, ud, lr);
        if(CheckCrouch[playerid] == 1) {
                switch(WeaponID[playerid]) {
                    case 23..25, 27, 29..34, 41: {
                        if((Keys & KEY_CROUCH) && !((Keys & KEY_FIRE) || (Keys & KEY_HANDBRAKE)) && GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK ) {
                                if(Ammo[playerid][GetPlayerWeapon(playerid)] > GetPlayerAmmo(playerid)) {
                                                OnPlayerCBug(playerid);
                                        }
                        }
                        //else SendClientMessage(playerid, COLOR_RED, "Failed in onplayer update");
                    }
                }
        }

        if(!ud && !lr) { NotMoving[playerid] = 1; /*OnPlayerKeyStateChange(playerid, Keys, 0);*/ }
        else { NotMoving[playerid] = 0; /*OnPlayerKeyStateChange(playerid, Keys, 0);*/ }

        return 1;
}

forward OnPlayerCBug(playerid);
public OnPlayerCBug(playerid) {
        new playername[MAX_PLAYER_NAME], str2[128];
        GetPlayerName(playerid, playername, sizeof(playername));

        format(str2, sizeof(str2), "You have been warned for c-bugging! [[%d]/3]", WarningAmount[playerid]);
        SendClientMessage(playerid, -1, str2);
       
        WarningAmount[playerid] += 1;
       
        if(WarningAmount[playerid] > 3)
        {
            // do something here
        }

        CheckCrouch[playerid] = 0;
       
        return 1;
}
forward CrouchCheck(playerid);
public CrouchCheck(playerid) {
        CheckCrouch[playerid] = 0;
        return 1;
}
So i will be

pawn Код:
#include <a_samp>

#define COLOR_RED 0xAA3333AA

#undef MAX_PLAYERS
#define MAX_PLAYERS 500 // Change to you're servers max player count.

#define MAX_SLOTS 48

new NotMoving[MAX_PLAYERS];
new WeaponID[MAX_PLAYERS];
new CheckCrouch[MAX_PLAYERS];
new Ammo[MAX_PLAYERS][MAX_SLOTS];
new WarningAmount[MAX_PLAYERS];

public OnFilterScriptInit()
{
        print("\n--------------------------------------");
        print(" Simple & Accurate Anti-C-Bug by Whitetiger.");
        print("--------------------------------------\n");
        return 1;
}

public OnFilterScriptExit()
{
        return 1;
}

public OnPlayerDisconnect(playerid)
{
    WarningAmount[playerid] = 0;

    return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if((newkeys & KEY_FIRE) && (oldkeys & KEY_CROUCH) && !((oldkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) || (oldkeys & KEY_FIRE) && (newkeys & KEY_CROUCH) && !((newkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) ) {
        switch(GetPlayerWeapon(playerid)) {
                    case 23..25, 27, 29..34, 41: {
                        if(Ammo[playerid][GetPlayerWeapon(playerid)] > GetPlayerAmmo(playerid)) {
                                        OnPlayerCBug(playerid);
                                }
                                return 1;
                        }
                }
        }

        if(CheckCrouch[playerid] == 1) {
                switch(WeaponID[playerid]) {
                    case 23..25, 27, 29..34, 41: {
                        if((newkeys & KEY_CROUCH) && !((newkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) && GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK ) {
                                if(Ammo[playerid][GetPlayerWeapon(playerid)] > GetPlayerAmmo(playerid)) {
                                                OnPlayerCBug(playerid);
                                        }
                        }
                    }
                }
        }

        //if(newkeys & KEY_CROUCH || (oldkeys & KEY_CROUCH)) return 1;

        else if(((newkeys & KEY_FIRE) && (newkeys & KEY_HANDBRAKE) && !((newkeys & KEY_SPRINT) || (newkeys & KEY_JUMP))) ||
        (newkeys & KEY_FIRE) && !((newkeys & KEY_SPRINT) || (newkeys & KEY_JUMP)) ||
        (NotMoving[playerid] && (newkeys & KEY_FIRE) && (newkeys & KEY_HANDBRAKE)) ||
        (NotMoving[playerid] && (newkeys & KEY_FIRE)) ||
        (newkeys & KEY_FIRE) && (oldkeys & KEY_CROUCH) && !((oldkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) ||
        (oldkeys & KEY_FIRE) && (newkeys & KEY_CROUCH) && !((newkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) ) {
                SetTimerEx("CrouchCheck", 3000, 0, "d", playerid);
                CheckCrouch[playerid] = 1;
                WeaponID[playerid] = GetPlayerWeapon(playerid);
                Ammo[playerid][GetPlayerWeapon(playerid)] = GetPlayerAmmo(playerid);
                return 1;
        }

        return 1;
}

public OnPlayerUpdate(playerid)
{
        new Keys, ud, lr;
        GetPlayerKeys(playerid, Keys, ud, lr);
        if(CheckCrouch[playerid] == 1) {
                switch(WeaponID[playerid]) {
                    case 23..25, 27, 29..34, 41: {
                        if((Keys & KEY_CROUCH) && !((Keys & KEY_FIRE) || (Keys & KEY_HANDBRAKE)) && GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK ) {
                                if(Ammo[playerid][GetPlayerWeapon(playerid)] > GetPlayerAmmo(playerid)) {
                                                OnPlayerCBug(playerid);
                                        }
                        }
                        //else SendClientMessage(playerid, COLOR_RED, "Failed in onplayer update");
                    }
                }
        }

        if(!ud && !lr) { NotMoving[playerid] = 1; /*OnPlayerKeyStateChange(playerid, Keys, 0);*/ }
        else { NotMoving[playerid] = 0; /*OnPlayerKeyStateChange(playerid, Keys, 0);*/ }

        return 1;
}

forward OnPlayerCBug(playerid);
public OnPlayerCBug(playerid) {
        new playername[MAX_PLAYER_NAME], str2[128];
        GetPlayerName(playerid, playername, sizeof(playername));

        format(str2, sizeof(str2), "You have been warned for c-bugging! [[%d]/3]", WarningAmount[playerid]);
        SendClientMessage(playerid, -1, str2);
       
        WarningAmount[playerid] += 1;
       
        if(WarningAmount[playerid] > 3)
        {
            Kick(playerid);
        }

        CheckCrouch[playerid] = 0;
       
        return 1;
}
forward CrouchCheck(playerid);
public CrouchCheck(playerid) {
        CheckCrouch[playerid] = 0;
        return 1;
}
Reply
#6

I am not test it.
But maybe works

pawn Код:
#include <a_samp>

#define COLOR_RED 0xAA3333AA

#undef MAX_PLAYERS
#define MAX_PLAYERS 500 // Change to you're servers max player count.

#define MAX_SLOTS 48

new NotMoving[MAX_PLAYERS];
new WeaponID[MAX_PLAYERS];
new CheckCrouch[MAX_PLAYERS];
new Ammo[MAX_PLAYERS][MAX_SLOTS];
// Count C_BUG
new PlayerCbugCount[MAX_PLAYERS];

public OnFilterScriptInit()
{
        print("\n--------------------------------------");
        print(" Simple & Accurate Anti-C-Bug by Whitetiger.");
        print("--------------------------------------\n");
        return 1;
}

public OnFilterScriptExit()
{
        return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if((newkeys & KEY_FIRE) && (oldkeys & KEY_CROUCH) && !((oldkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) || (oldkeys & KEY_FIRE) && (newkeys & KEY_CROUCH) && !((newkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) ) {
        switch(GetPlayerWeapon(playerid)) {
                    case 23..25, 27, 29..34, 41: {
                        if(Ammo[playerid][GetPlayerWeapon(playerid)] > GetPlayerAmmo(playerid)) {
                                        PlayerCbugCount[playerid]++;
                                        OnPlayerCBug(playerid);
                                }
                                return 1;
                        }
                }
        }

        if(CheckCrouch[playerid] == 1) {
                switch(WeaponID[playerid]) {
                    case 23..25, 27, 29..34, 41: {
                        if((newkeys & KEY_CROUCH) && !((newkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) && GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK ) {
                                if(Ammo[playerid][GetPlayerWeapon(playerid)] > GetPlayerAmmo(playerid)) {
                                                PlayerCbugCount[playerid]++;
                                                OnPlayerCBug(playerid);
                                        }
                        }
                    }
                }
        }

        //if(newkeys & KEY_CROUCH || (oldkeys & KEY_CROUCH)) return 1;

        else if(((newkeys & KEY_FIRE) && (newkeys & KEY_HANDBRAKE) && !((newkeys & KEY_SPRINT) || (newkeys & KEY_JUMP))) ||
        (newkeys & KEY_FIRE) && !((newkeys & KEY_SPRINT) || (newkeys & KEY_JUMP)) ||
        (NotMoving[playerid] && (newkeys & KEY_FIRE) && (newkeys & KEY_HANDBRAKE)) ||
        (NotMoving[playerid] && (newkeys & KEY_FIRE)) ||
        (newkeys & KEY_FIRE) && (oldkeys & KEY_CROUCH) && !((oldkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) ||
        (oldkeys & KEY_FIRE) && (newkeys & KEY_CROUCH) && !((newkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) ) {
                SetTimerEx("CrouchCheck", 3000, 0, "d", playerid);
                CheckCrouch[playerid] = 1;
                WeaponID[playerid] = GetPlayerWeapon(playerid);
                Ammo[playerid][GetPlayerWeapon(playerid)] = GetPlayerAmmo(playerid);
                return 1;
        }

        return 1;
}

public OnPlayerUpdate(playerid)
{
        new Keys, ud, lr;
        GetPlayerKeys(playerid, Keys, ud, lr);
        if(CheckCrouch[playerid] == 1) {
                switch(WeaponID[playerid]) {
                    case 23..25, 27, 29..34, 41: {
                        if((Keys & KEY_CROUCH) && !((Keys & KEY_FIRE) || (Keys & KEY_HANDBRAKE)) && GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK ) {
                                if(Ammo[playerid][GetPlayerWeapon(playerid)] > GetPlayerAmmo(playerid)) {
                                                OnPlayerCBug(playerid);
                                        }
                        }
                        //else SendClientMessage(playerid, COLOR_RED, "Failed in onplayer update");
                    }
                }
        }

        if(!ud && !lr) { NotMoving[playerid] = 1; /*OnPlayerKeyStateChange(playerid, Keys, 0);*/ }
        else { NotMoving[playerid] = 0; /*OnPlayerKeyStateChange(playerid, Keys, 0);*/ }

        return 1;
}

forward OnPlayerCBug(playerid);
public OnPlayerCBug(playerid) {
        new playername[MAX_PLAYER_NAME];
        GetPlayerName(playerid, playername, sizeof(playername));
        new str2[128];
       
        if(PlayerCbugCount[playerid] >= 2)
        {
            format(str2,128,"{FF0000}'%s[%i]' has been give warned ! REASON : C_BUG ! [Warn 1/3]",playername,playerid);
            SendClientMessageToAll(-1,str2);
        }
        else if(PlayerCbugCount[playerid] >= 4)
        {
            format(str2,128,"{FF0000}'%s[%i]' has been give warned ! REASON : C_BUG ! [Warn 2/3]",playername,playerid);
            SendClientMessageToAll(-1,str2);
        }
        if(PlayerCbugCount[playerid] >= 6)
        {
            format(str2,128,"{FF0000}'%s[%i]' has been Kicked from this server ! REASON : C_BUG ! [Warn 3/3]",playername,playerid);
            SendClientMessageToAll(-1,str2);
            SetTimerEx("KickTimer",1000,0,"d",playerid);
            PlayerCbugCount[playerid] = 0;
        }
        CheckCrouch[playerid] = 0;
        return 1;
}
forward CrouchCheck(playerid);
public CrouchCheck(playerid) {
        CheckCrouch[playerid] = 0;
        return 1;
}
forward KickTimer(playerid);
public KickTimer(playerid) {
        Kick(playerid);
        return 1;
}
Reply
#7

Thanks to all of you =] +rep
Reply
#8

Quote:
Originally Posted by ChuckyBabe
Посмотреть сообщение
Thanks to all of you =] +rep
No Problem
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)