Advertisement
S4T3K

Fix - Scroll reload bug + C-BUG

Jul 13th, 2014
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 5.19 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. #if defined _ANTIBUG_INCLUDED
  4.     #endinput
  5. #endif
  6.  
  7. #define _ANTIBUG_INCLUDED
  8.  
  9. #if !defined PRESSED
  10.     #define PRESSED(%0) \
  11.         (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
  12. #endif
  13.  
  14.  
  15. static const magazines[] = {34, 17, 7, 1, 4, 7, 100, 30, 30, 50, 100};
  16.  
  17. new
  18.     ANTIBUG_g_shots[MAX_PLAYERS][13],
  19.     ANTIBUG_g_muni[MAX_PLAYERS][13],
  20.     ANTIBUG_g_lastCrouch[MAX_PLAYERS],
  21.     oldw[MAX_PLAYERS]
  22. ;
  23.  
  24.  
  25. stock ANTIBUG_GivePlayerWeapon(playerid, weaponid, ammo)
  26. {
  27.     if(22 <= weaponid <= 32)
  28.     {
  29.         new stockage[2][13];
  30.         for(new s = 0; s < 13; s++)
  31.         {
  32.             GetPlayerWeaponData(playerid, s, stockage[0][s], stockage[1][s]);
  33.             if(stockage[0][s] == weaponid) ANTIBUG_g_muni[playerid][weaponid-22] += ammo, break;
  34.         }
  35.         ANTIBUG_g_muni[playerid][weaponid-22] = ammo;
  36.     }
  37.     GivePlayerWeapon(playerid, weaponid, ammo);
  38.     return 1;
  39. }
  40.  
  41. #if defined _ALS_GivePlayerWeapon
  42.     #undef GivePlayerWeapon
  43. #else
  44.     #define _ALS_GivePlayerWeapon
  45. #endif
  46.  
  47. #define GivePlayerWeapon ANTIBUG_GivePlayerWeapon
  48.  
  49. stock ANTIBUG_ResetPlayerWeapons(playerid)
  50. {
  51.     for(new s = 0; s < 13; s++) ANTIBUG_g_muni[playerid][s] = 0, ANTIBUG_g_shots[playerid][s] = 0;
  52.     ResetPlayerWeapons(playerid);
  53.     return 1;
  54. }
  55.  
  56. #if defined _ALS_ResetPlayerWeapons
  57.     #undef ResetPlayerWeapons
  58. #else
  59.     #define _ALS_ResetPlayerWeapons
  60. #endif
  61.  
  62. #define ResetPlayerWeapons ANTIBUG_ResetPlayerWeapons
  63.  
  64.  
  65. stock ANTIBUG_SetPlayerAmmo(playerid, weaponslot, ammo)
  66. {
  67.     new weaponid = GetWeaponBySlot(playerid, weaponslot);
  68.     if(22 <= weaponid <= 32) ANTIBUG_g_muni[playerid][weaponid-22] = ammo;
  69.     SetPlayerAmmo(playerid, weaponslot, ammo);
  70.     return 1;
  71. }
  72.  
  73. #if defined _ALS_SetPlayerAmmo
  74.     #undef SetPlayerAmmo
  75. #else
  76.     #define _ALS_SetPlayerAmmo
  77. #endif
  78.  
  79. #define SetPlayerAmmo ANTIBUG_SetPlayerAmmo
  80.  
  81. public OnPlayerUpdate(playerid)
  82. {
  83.     #if defined ANTIBUG_OnPlayerUpdate
  84.         return ANTIBUG_OnPlayerUpdate(playerid);
  85.     #else
  86.         new weaponid = GetPlayerWeapon(playerid);
  87.         if(weaponid != oldw[playerid])
  88.         {
  89.             switch(GetPlayerWeapon(playerid))
  90.             {
  91.                 case 22..32: SetPlayerAmmo(playerid, GetWeaponSlot(weaponid), magazines[weaponid-22]-ANTIBUG_g_shots[playerid][weaponid-22]);
  92.                 default: return 1;
  93.             }
  94.         }
  95.         if((GetPlayerWeaponState(playerid) == WEAPONSTATE_RELOADING) && (22 <= weaponid <= 32)) ANTIBUG_g_shots[playerid][weaponid-22] = 0, ANTIBUG_g_muni[playerid][weaponid-22] -= magazines[weaponid-22], SetPlayerAmmo(playerid, GetWeaponSlot(weaponid), ANTIBUG_g_muni[playerid][weaponid-22]);
  96.         oldw[playerid] = GetPlayerWeapon(playerid);
  97.         return 1;
  98.     #endif
  99. }
  100.  
  101. #if defined _ALS_OnPlayerUpdate
  102.     #undef OnPlayerUpdate
  103. #else
  104.     #define _ALS_OnPlayerUpdate
  105. #endif
  106.  
  107. #define OnPlayerUpdate ANTIBUG_OnPlayerUpdate
  108. #if defined ANTIBUG_OnPlayerUpdate
  109.     forward ANTIBUG_OnPlayerUpdate(playerid);
  110. #endif
  111.  
  112. public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
  113. {
  114.     #if defined ANTIBUG_OnPlayerWeaponShot
  115.         return ANTIBUG_OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
  116.     #else
  117.         switch(weaponid)
  118.         {
  119.             case 22..34: ANTIBUG_g_shots[playerid][weaponid-22]++;
  120.             default: return 1;
  121.         }
  122.         return 1;
  123.     #endif
  124. }
  125.  
  126. #if defined _ALS_OnPlayerWeaponShot
  127.     #undef OnPlayerWeaponShot
  128. #else
  129.     #define _ALS_OnPlayerWeaponShot
  130. #endif
  131.  
  132. #define OnPlayerWeaponShot ANTIBUG_OnPlayerWeaponShot
  133. #if defined ANTIBUG_OnPlayerWeaponShot
  134.     forward ANTIBUG_OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
  135. #endif
  136.  
  137.  
  138. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  139. {
  140.     #if defined ANTIBUG_OnPlayerKeyStateChange
  141.         return ANTIBUG_OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
  142.     #else
  143.         if(PRESSED(KEY_CROUCH) && ANTIBUG_g_lastCrouch[playerid] <= gettime()) ANTIBUG_g_lastCrouch[playerid] = gettime() + 1;
  144.         else if(GetPlayerWeapon(playerid) == 24) return ClearAnimations(playerid), SendClientMessage(playerid, -1, "ANTI C-BUG !");
  145.         return 1;
  146.     #endif
  147. }
  148. #if defined _ALS_OnPlayerKeyStateChange
  149.     #undef OnPlayerKeyStateChange
  150. #else
  151.     #define _ALS_OnPlayerKeyStateChange
  152. #endif
  153.  
  154. #define OnPlayerKeyStateChange ANTIBUG_OnPlayerKeyStateChange
  155. #if defined ANTIBUG_OnPlayerKeyStateChange
  156.     forward ANTIBUG_OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
  157. #endif
  158.  
  159.  
  160. stock GetWeaponSlot(weaponid)
  161. {
  162.     switch(weaponid)
  163.     {
  164.         case 0,1: return 0;
  165.         case 2..9: return 1;
  166.         case 10..15: return 10;
  167.         case 16, 17, 18, 39: return 8;
  168.         case 22..24: return 2;
  169.         case 25..27: return 3;
  170.         case 28, 29, 32: return 4;
  171.         case 30, 31: return 5;
  172.         case 33, 34: return 6;
  173.         case 35..38: return 7;
  174.         case 40: return 12;
  175.         case 41..43: return 9;
  176.         case 44..46: return 11;
  177.     }
  178.     return -1;
  179. }
  180.  
  181. stock GetWeaponBySlot(playerid, slot)
  182. {
  183.     new w[2];
  184.     GetPlayerWeaponData(playerid, slot, w[0], w[1]);
  185.     return w[0];
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement