Advertisement
Bebras

[INC]Ginklų pickup - Bebras

Mar 28th, 2014
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.17 KB | None | 0 0
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8. /*
  9.                    
  10.  
  11.                         Ginklų pickup kūrimas.
  12.                         Autorius Bebras 2014.
  13.  
  14.  
  15.                         native CreateWeaponPickup(weaponid,ammo, Float:x,Float:y,Float:z,virtualworld = -1);
  16.                         native DestroyWeaponPickup(index);
  17.            
  18.    
  19.  
  20. */
  21.  
  22. #if !defined MAX_WEAPON_PICKUPS
  23.     #define MAX_WEAPON_PICKUPS          250
  24. #endif
  25.  
  26.  
  27. enum _:eWeaponPickup {
  28.     eWeaponPickup_Pickupid,
  29.     eWeaponPickup_WeaponId,
  30.     eWeaponPickup_Ammo,
  31.     #if defined _inc_y_timers
  32.         Timer:eWeaponPickup_Timer,
  33.     #else
  34.         eWeaponPickup_Timer,
  35.     #endif
  36.     bool:eWeaponPickup_Used
  37. };
  38. static stock WeaponPickups[MAX_WEAPON_PICKUPS][eWeaponPickup];
  39.  
  40. /*                      Funkcijos naudotojams                    */
  41.  
  42. stock CreateWeaponPickup(weaponid,ammo, Float:x,Float:y,Float:z,virtualworld = -1,destroydelay=-1)
  43. {
  44.     new index = GetFreeWeaponPickupIndex();
  45.     if(index == -1) return -1;
  46.  
  47.     new model = GetWeaponPickupModel(weaponid);
  48.     if(model == -1) return -1;
  49.  
  50.     WeaponPickups[index][eWeaponPickup_Used] = true;
  51.     WeaponPickups[index][eWeaponPickup_Pickupid] = CreatePickup(model, 1, x, y, z,virtualworld);
  52.     if(WeaponPickups[index][eWeaponPickup_Pickupid] == -1) return -1;
  53.  
  54.     WeaponPickups[index][eWeaponPickup_WeaponId] = weaponid;
  55.     WeaponPickups[index][eWeaponPickup_Ammo] = ammo;
  56.  
  57.  
  58.     #if defined _inc_y_timers
  59.         if(destroydelay > 0)
  60.             WeaponPickups[index][eWeaponPickup_Timer] = defer WeaponPickupDestroyDelay(index,destroydelay);
  61.     #else
  62.         if(destroydelay > 0)
  63.             WeaponPickups[index][eWeaponPickup_Timer] = SetTimerEx("WeaponPickupDestroyDelay", destroydelay, false,"i", index);
  64.     #endif
  65.  
  66.  
  67.     return index;
  68. }
  69. stock DestroyWeaponPickup(index)
  70. {
  71.     if( MAX_WEAPON_PICKUPS-1 < index || index < 0) return 0;
  72.     DestroyPickup(WeaponPickups[index][eWeaponPickup_Pickupid]);
  73.  
  74.     #if defined _inc_y_timers
  75.         stop WeaponPickups[index][eWeaponPickup_Timer];
  76.     #else
  77.         KillTimer(WeaponPickups[index][eWeaponPickup_Timer]);
  78.     #endif
  79.  
  80.     WeaponPickups[index][eWeaponPickup_Used] = false;
  81.     return 1;
  82. }
  83.  
  84.  
  85. /*              Vidinės funkcijos                                   */
  86.  
  87.  
  88. public OnPlayerPickUpPickup(playerid, pickupid)
  89. {
  90.     for(new i; i < MAX_WEAPON_PICKUPS; i++)
  91.     {
  92.         if(!WeaponPickups[i][eWeaponPickup_Used]) continue;
  93.         if(pickupid == WeaponPickups[i][eWeaponPickup_Pickupid])
  94.         {
  95.             GivePlayerWeapon(playerid, WeaponPickups[i][eWeaponPickup_WeaponId], WeaponPickups[i][eWeaponPickup_Ammo]);
  96.             DestroyWeaponPickup(i);
  97.             return 1;
  98.         }
  99.     }
  100.     #if defined Bebras_OnPlayerPickUpPickup
  101.         Bebras_OnPlayerPickUpPickup(playerid,pickupid);
  102.     #endif
  103.     return 1;
  104. }
  105. #if defined _ALS_OnPlayerPickUpPickup
  106.     #undef OnPlayerPickUpPickup
  107. #else
  108.     #define _ALS_OnPlayerPickUpPickup
  109. #endif
  110. #define OnPlayerPickUpPickup Bebras_OnPlayerPickUpPickup
  111. #if defined Bebras_OnPlayerPickUpPickup
  112.     forward Bebras_OnPlayerPickUpPickup(playerid, pickupid);
  113. #endif
  114.  
  115.  
  116.  
  117. #if defined _inc_y_timers
  118.     timer WeaponPickupDestroyDelay[delay](index,delay)
  119.     {
  120.         #pragma unused delay
  121.         DestroyWeaponPickup(index);
  122.         return;
  123.     }
  124. #else
  125.     forward WeaponPickupDestroyDelay(index);
  126.     public WeaponPickupDestroyDelay(index)
  127.         return DestroyWeaponPickup(index);
  128. #endif
  129.  
  130.  
  131.  
  132.  
  133. stock GetFreeWeaponPickupIndex()
  134. {
  135.     for(new i; i < MAX_WEAPON_PICKUPS; i++)
  136.         if(!WeaponPickups[i][eWeaponPickup_Used]) return i;
  137.     return -1;
  138. }
  139.  
  140. stock GetWeaponPickupModel(weaponid)
  141. {
  142.     switch(weaponid)
  143.     {
  144.         case 1: return 331; case 2: return 333; case 3: return 334;
  145.         case 4: return 335; case 5: return 336; case 6: return 337;
  146.         case 7: return 338; case 8: return 339; case 9: return 341;
  147.         case 10: return 321; case 11: return 322; case 12: return 323;
  148.         case 13: return 324; case 14: return 325; case 15: return 326;
  149.         case 16: return 342; case 17: return 343; case 18: return 344;
  150.         case 22: return 346; case 23: return 347; case 24: return 348;
  151.         case 25: return 349; case 26: return 350; case 27: return 351;
  152.         case 28: return 352; case 29: return 353; case 30: return 355;
  153.         case 31: return 356; case 32: return 372; case 33: return 357;
  154.         case 34: return 358; case 35: return 359; case 36: return 360;
  155.         case 37: return 361; case 38: return 362; case 39: return 363;
  156.         case 41: return 365; case 42: return 366; case 46: return 371;
  157.     }
  158.     return -1;
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement