SendClientMessage("Oops your are warned for cbuging ! [1/3]")
#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; }
#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;
}
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)
{
Kick(playerid);
}
CheckCrouch[playerid] = 0;
return 1;
}
forward CrouchCheck(playerid);
public CrouchCheck(playerid) {
CheckCrouch[playerid] = 0;
return 1;
}
#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;
}