Advertisement
Whitetigerswt

Anti-C-Bug

Sep 22nd, 2011
8,575
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.66 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. #define COLOR_RED 0xAA3333AA
  4.  
  5. #undef MAX_PLAYERS
  6. #define MAX_PLAYERS 500 // Change to you're servers max player count.
  7.  
  8. #define MAX_SLOTS 48
  9.  
  10. new NotMoving[MAX_PLAYERS];
  11. new WeaponID[MAX_PLAYERS];
  12. new CheckCrouch[MAX_PLAYERS];
  13. new Ammo[MAX_PLAYERS][MAX_SLOTS];
  14.  
  15. new aWeaponNames[][32] = {
  16.     {"Fist"}, // 0
  17.     {"Brass Knuckles"}, // 1
  18.     {"Golf Club"}, // 2
  19.     {"Night Stick"}, // 3
  20.     {"Knife"}, // 4
  21.     {"Baseball Bat"}, // 5
  22.     {"Shovel"}, // 6
  23.     {"Pool Cue"}, // 7
  24.     {"Katana"}, // 8
  25.     {"Chainsaw"}, // 9
  26.     {"Purple Dildo"}, // 10
  27.     {"Vibrator"}, // 11
  28.     {"Vibrator"}, // 12
  29.     {"Vibrator"}, // 13
  30.     {"Flowers"}, // 14
  31.     {"Cane"}, // 15
  32.     {"Grenade"}, // 16
  33.     {"Teargas"}, // 17
  34.     {"Molotov"}, // 18
  35.     {" "}, // 19
  36.     {" "}, // 20
  37.     {" "}, // 21
  38.     {"Colt 45"}, // 22
  39.     {"Silenced Pistol"}, // 23
  40.     {"Deagle"}, // 24
  41.     {"Shotgun"}, // 25
  42.     {"Sawns"}, // 26
  43.     {"Spas"}, // 27
  44.     {"Uzi"}, // 28
  45.     {"MP5"}, // 29
  46.     {"AK47"}, // 30
  47.     {"M4"}, // 31
  48.     {"Tec9"}, // 32
  49.     {"Country Rifle"}, // 33
  50.     {"Sniper Rifle"}, // 34
  51.     {"Rocket Launcher"}, // 35
  52.     {"Heat-Seeking Rocket Launcher"}, // 36
  53.     {"Flamethrower"}, // 37
  54.     {"Minigun"}, // 38
  55.     {"Satchel Charge"}, // 39
  56.     {"Detonator"}, // 40
  57.     {"Spray Can"}, // 41
  58.     {"Fire Extinguisher"}, // 42
  59.     {"Camera"}, // 43
  60.     {"Night Vision Goggles"}, // 44
  61.     {"Infrared Vision Goggles"}, // 45
  62.     {"Parachute"}, // 46
  63.     {"Fake Pistol"} // 47
  64. };
  65.  
  66. public OnFilterScriptInit()
  67. {
  68.     print("\n--------------------------------------");
  69.     print(" Simple & Accurate Anti-C-Bug by Whitetiger.");
  70.     print("--------------------------------------\n");
  71.     return 1;
  72. }
  73.  
  74. public OnFilterScriptExit()
  75. {
  76.     return 1;
  77. }
  78.  
  79. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  80. {
  81.     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)) ) {
  82.         switch(GetPlayerWeapon(playerid)) {
  83.             case 23..25, 27, 29..34, 41: {
  84.                 if(Ammo[playerid][GetPlayerWeapon(playerid)] > GetPlayerAmmo(playerid)) {
  85.                     OnPlayerCBug(playerid);
  86.                 }
  87.                 return 1;
  88.             }
  89.         }
  90.     }
  91.  
  92.     if(CheckCrouch[playerid] == 1) {
  93.         switch(WeaponID[playerid]) {
  94.             case 23..25, 27, 29..34, 41: {
  95.                 if((newkeys & KEY_CROUCH) && !((newkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) && GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK ) {
  96.                     if(Ammo[playerid][GetPlayerWeapon(playerid)] > GetPlayerAmmo(playerid)) {
  97.                         OnPlayerCBug(playerid);
  98.                     }
  99.                 }
  100.             }
  101.         }
  102.     }
  103.  
  104.     //if(newkeys & KEY_CROUCH || (oldkeys & KEY_CROUCH)) return 1;
  105.  
  106.     else if(((newkeys & KEY_FIRE) && (newkeys & KEY_HANDBRAKE) && !((newkeys & KEY_SPRINT) || (newkeys & KEY_JUMP))) ||
  107.     (newkeys & KEY_FIRE) && !((newkeys & KEY_SPRINT) || (newkeys & KEY_JUMP)) ||
  108.     (NotMoving[playerid] && (newkeys & KEY_FIRE) && (newkeys & KEY_HANDBRAKE)) ||
  109.     (NotMoving[playerid] && (newkeys & KEY_FIRE)) ||
  110.     (newkeys & KEY_FIRE) && (oldkeys & KEY_CROUCH) && !((oldkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) ||
  111.     (oldkeys & KEY_FIRE) && (newkeys & KEY_CROUCH) && !((newkeys & KEY_FIRE) || (newkeys & KEY_HANDBRAKE)) ) {
  112.         SetTimerEx("CrouchCheck", 3000, 0, "d", playerid);
  113.         CheckCrouch[playerid] = 1;
  114.         WeaponID[playerid] = GetPlayerWeapon(playerid);
  115.         Ammo[playerid][GetPlayerWeapon(playerid)] = GetPlayerAmmo(playerid);
  116.         return 1;
  117.     }
  118.    
  119.     return 1;
  120. }
  121.  
  122. public OnPlayerUpdate(playerid)
  123. {
  124.     new Keys, ud, lr;
  125.     GetPlayerKeys(playerid, Keys, ud, lr);
  126.     if(CheckCrouch[playerid] == 1) {
  127.         switch(WeaponID[playerid]) {
  128.             case 23..25, 27, 29..34, 41: {
  129.                 if((Keys & KEY_CROUCH) && !((Keys & KEY_FIRE) || (Keys & KEY_HANDBRAKE)) && GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK ) {
  130.                     if(Ammo[playerid][GetPlayerWeapon(playerid)] > GetPlayerAmmo(playerid)) {
  131.                         OnPlayerCBug(playerid);
  132.                     }
  133.                 }
  134.                 //else SendClientMessage(playerid, COLOR_RED, "Failed in onplayer update");
  135.             }
  136.         }
  137.     }
  138.  
  139.     if(!ud && !lr) { NotMoving[playerid] = 1; /*OnPlayerKeyStateChange(playerid, Keys, 0);*/ }
  140.     else { NotMoving[playerid] = 0; /*OnPlayerKeyStateChange(playerid, Keys, 0);*/ }
  141.    
  142.     return 1;
  143. }
  144.  
  145. forward OnPlayerCBug(playerid);
  146. public OnPlayerCBug(playerid) {
  147.     new playername[MAX_PLAYER_NAME];
  148.     GetPlayerName(playerid, playername, sizeof(playername));
  149.     new str2[128];
  150.     format(str2, sizeof(str2), "Automatic system has kicked %s for Crouch bugging with weapon (%s!)", playername, aWeaponNames[WeaponID[playerid]]);
  151.     SendClientMessageToAll(COLOR_RED, str2);
  152.     CheckCrouch[playerid] = 0;
  153.     Kick(playerid);
  154.     return 1;
  155. }
  156. forward CrouchCheck(playerid);
  157. public CrouchCheck(playerid) {
  158.     CheckCrouch[playerid] = 0;
  159.     return 1;
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement