Advertisement
S4T3K

FIX - Scroll reload bug

Jul 13th, 2014
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.09 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. static const magazines[] = {34, 17, 7, 1, 4, 7, 100, 30, 30, 50, 100};
  10.  
  11. new
  12.     ANTIBUG_g_shots[MAX_PLAYERS][13],
  13.     ANTIBUG_g_muni[MAX_PLAYERS][13],
  14.     oldw[MAX_PLAYERS]
  15. ;
  16.  
  17.  
  18. stock ANTIBUG_GivePlayerWeapon(playerid, weaponid, ammo)
  19. {
  20.     if(22 <= weaponid <= 32)
  21.     {
  22.         new stockage[2][13];
  23.         for(new s = 0; s < 13; s++)
  24.         {
  25.             GetPlayerWeaponData(playerid, s, stockage[0][s], stockage[1][s]);
  26.             if(stockage[0][s] == weaponid) ANTIBUG_g_muni[playerid][weaponid-22] += ammo, break;
  27.         }
  28.         ANTIBUG_g_muni[playerid][weaponid-22] = ammo;
  29.     }
  30.     GivePlayerWeapon(playerid, weaponid, ammo);
  31.     return 1;
  32. }
  33.  
  34. #if defined _ALS_GivePlayerWeapon
  35.     #undef GivePlayerWeapon
  36. #else
  37.     #define _ALS_GivePlayerWeapon
  38. #endif
  39.  
  40. #define GivePlayerWeapon ANTIBUG_GivePlayerWeapon
  41.  
  42. stock ANTIBUG_ResetPlayerWeapons(playerid)
  43. {
  44.     for(new s = 0; s < 13; s++) ANTIBUG_g_muni[playerid][s] = 0, ANTIBUG_g_shots[playerid][s] = 0;
  45.     ResetPlayerWeapons(playerid);
  46.     return 1;
  47. }
  48.  
  49. #if defined _ALS_ResetPlayerWeapons
  50.     #undef ResetPlayerWeapons
  51. #else
  52.     #define _ALS_ResetPlayerWeapons
  53. #endif
  54.  
  55. #define ResetPlayerWeapons ANTIBUG_ResetPlayerWeapons
  56.  
  57.  
  58. stock ANTIBUG_SetPlayerAmmo(playerid, weaponslot, ammo)
  59. {
  60.     new weaponid = GetWeaponBySlot(playerid, weaponslot);
  61.     if(22 <= weaponid <= 32) ANTIBUG_g_muni[playerid][weaponid-22] = ammo;
  62.     SetPlayerAmmo(playerid, weaponslot, ammo);
  63.     return 1;
  64. }
  65.  
  66. #if defined _ALS_SetPlayerAmmo
  67.     #undef SetPlayerAmmo
  68. #else
  69.     #define _ALS_SetPlayerAmmo
  70. #endif
  71.  
  72. #define SetPlayerAmmo ANTIBUG_SetPlayerAmmo
  73.  
  74. public OnPlayerUpdate(playerid)
  75. {
  76.     #if defined ANTIBUG_OnPlayerUpdate
  77.         return ANTIBUG_OnPlayerUpdate(playerid);
  78.     #else
  79.         new weaponid = GetPlayerWeapon(playerid);
  80.         if(weaponid != oldw[playerid] && weaponid <= 22 <= 32) SetPlayerAmmo(playerid, GetWeaponSlot(weaponid), magazines[weaponid-22]-ANTIBUG_g_shots[playerid][weaponid-22]);
  81.         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]);
  82.         oldw[playerid] = GetPlayerWeapon(playerid);
  83.         return 1;
  84.     #endif
  85. }
  86.  
  87. #if defined _ALS_OnPlayerUpdate
  88.     #undef OnPlayerUpdate
  89. #else
  90.     #define _ALS_OnPlayerUpdate
  91. #endif
  92.  
  93. #define OnPlayerUpdate ANTIBUG_OnPlayerUpdate
  94. #if defined ANTIBUG_OnPlayerUpdate
  95.     forward ANTIBUG_OnPlayerUpdate(playerid);
  96. #endif
  97.  
  98. public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
  99. {
  100.     #if defined ANTIBUG_OnPlayerWeaponShot
  101.         return ANTIBUG_OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
  102.     #else
  103.         switch(weaponid)
  104.         {
  105.             case 22..34: ANTIBUG_g_shots[playerid][weaponid-22]++;
  106.             default: return 1;
  107.         }
  108.         return 1;
  109.     #endif
  110. }
  111.  
  112. #if defined _ALS_OnPlayerWeaponShot
  113.     #undef OnPlayerWeaponShot
  114. #else
  115.     #define _ALS_OnPlayerWeaponShot
  116. #endif
  117.  
  118. #define OnPlayerWeaponShot ANTIBUG_OnPlayerWeaponShot
  119. #if defined ANTIBUG_OnPlayerWeaponShot
  120.     forward ANTIBUG_OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);
  121. #endif
  122.  
  123.  
  124. stock GetWeaponSlot(weaponid)
  125. {
  126.     switch(weaponid)
  127.     {
  128.         case 0,1: return 0;
  129.         case 2..9: return 1;
  130.         case 10..15: return 10;
  131.         case 16, 17, 18, 39: return 8;
  132.         case 22..24: return 2;
  133.         case 25..27: return 3;
  134.         case 28, 29, 32: return 4;
  135.         case 30, 31: return 5;
  136.         case 33, 34: return 6;
  137.         case 35..38: return 7;
  138.         case 40: return 12;
  139.         case 41..43: return 9;
  140.         case 44..46: return 11;
  141.     }
  142.     return -1;
  143. }
  144.  
  145. stock GetWeaponBySlot(playerid, slot)
  146. {
  147.     new w[2];
  148.     GetPlayerWeaponData(playerid, slot, w[0], w[1]);
  149.     return w[0];
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement