AXV09

DropWeapons [pawno.pl]

Oct 28th, 2013
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.39 KB | None | 0 0
  1. #define MAX_DROP_AMOUNT -1
  2. #define MAX_DROP_LIFETIME 30
  3. #define MAX_PSLOTS 13
  4. #define INVALID_PICKUP -1
  5. #define PICKUP_TYPE 23
  6. #define MAX_PICKUPS_WDROPPING (300)
  7.  
  8. enum e_Weapon_dropping {
  9. ewd_pid,
  10. ewd_cTime,
  11. ewd_weapon,
  12. ewd_ammo,
  13. };
  14.  
  15. new g_WeaponDropping[MAX_PICKUPS_WDROPPING][e_Weapon_dropping];
  16.  
  17.  
  18. static const t_WeaponsPickups[] = { // constants table
  19. -1, // no fists
  20. 331, // - Brass Knuckles
  21. 333, // Golf Club
  22. 334, // Night Stick
  23. 335, // Knife
  24. 336, // baseball bat
  25. 337, // shovel
  26. 338, // pool cue
  27. 339, // katama
  28. 341, // chainsaw
  29. 321, // regular dildo
  30. 322, // white dildo
  31. 323, // Medium, white vibrator
  32. 324, // smaill, silver vibrator
  33. 325, // flowers
  34. 326, // cane
  35. 342, // grendade
  36. 343, // tear gas
  37. 344, // molotov
  38. -1, // RPG rocket - we can't pick up those, do we oO
  39. -1, // Heat-Seeking Rocket
  40. -1, // Hydra rocket
  41. 346, // colt 45
  42. 347, // colt 45 + silencer
  43. 348, // deagle
  44. 349, // shotgun
  45. 350, // sawn-off
  46. 351, // spaz
  47. 352, // micro-uzi
  48. 353, // mp5
  49. 355, // ak47
  50. 356, // m4
  51. 372, // tec9
  52. 357, // country rifle
  53. 358, // sniper rifle
  54. -1, // rocket launcher
  55. -1, // heat-seeking rocket launcher
  56. -1, // flamethrower
  57. -1, // minigun
  58. -1, // sachtel charges
  59. -1, // detonator
  60. 365, // spray can
  61. 366, // fire extinguisher
  62. 367, // camera
  63. -1, // night-vision goggles
  64. -1, // heat-vision goggles
  65. 371 // parachute
  66. };
  67.  
  68. public OnPlayerPickUpDynamicPickup(playerid, pickupid) {
  69. for(new i; i<MAX_PICKUPS_WDROPPING; i++) {
  70. if(g_WeaponDropping[i][ewd_pid]==pickupid) {
  71. GivePlayerWeapon(playerid, g_WeaponDropping[i][ewd_weapon], g_WeaponDropping[i][ewd_ammo]);
  72.  
  73. DestroyDynamicPickup(g_WeaponDropping[i][ewd_pid]);
  74. g_WeaponDropping[i][ewd_pid]=-1;
  75. g_WeaponDropping[i][ewd_weapon]=0;
  76. g_WeaponDropping[i][ewd_ammo]=0;
  77. g_WeaponDropping[i][ewd_cTime]=0;
  78. return 1;
  79. }
  80. }
  81. return 0;
  82. }
  83.  
  84. stock DropPlayerWeapon(player) {
  85. new
  86. Float:PP[3],
  87. pWeaponSlots[MAX_PSLOTS+1][2],
  88. pCount=0;
  89.  
  90. GetPlayerPos(player, PP[0],PP[1],PP[2]);
  91.  
  92. for(new i=1; i<MAX_PSLOTS; i++) {
  93. GetPlayerWeaponData(player, i, pWeaponSlots[i][0], pWeaponSlots[i][1]);
  94. if(pWeaponSlots[i][0]>1 && pWeaponSlots[i][1]>1) pCount++;
  95. else pWeaponSlots[i][0]=0, pWeaponSlots[i][1]=0;
  96. }
  97.  
  98. new fTmp=pCount,
  99. Float:rotation=0.0;
  100. for(new i; i<fTmp; i++) {
  101. rotation=360.0-float(pCount--)*(360.0/float(fTmp));
  102.  
  103. new id;
  104. for(new j; j<MAX_PICKUPS_WDROPPING; j++) {
  105. if(g_WeaponDropping[j][ewd_pid]<0) {
  106. id=j;
  107. break;
  108. }
  109. }
  110. g_WeaponDropping[id][ewd_pid]=CreateDynamicPickup(t_WeaponsPickups[pWeaponSlots[i][0]], PICKUP_TYPE, PP[0]+floatsin(rotation)*(fTmp/2+1.0), PP[1]+floatcos(rotation)*(fTmp/2+1.0), PP[2]);
  111. g_WeaponDropping[id][ewd_cTime]=gettime();
  112. g_WeaponDropping[id][ewd_weapon]=pWeaponSlots[i][0];
  113. g_WeaponDropping[id][ewd_ammo]=pWeaponSlots[i][1];
  114. }
  115. }
  116.  
  117. forward CheckinWeaponPickup(); // SetTimer("CheckinWeaponPickup", 5000, true);
  118. public CheckinWeaponPickup() {
  119. new delta;
  120. for(new i; i<MAX_PICKUPS_WDROPPING; i+=random(4)) {
  121. if(g_WeaponDropping[i][ewd_pid]<0) continue;
  122. else {
  123. delta=gettime()-g_WeaponDropping[i][ewd_cTime];
  124. if(delta>MAX_DROP_LIFETIME) {
  125. DestroyDynamicPickup(g_WeaponDropping[i][ewd_pid]);
  126. g_WeaponDropping[i][ewd_pid]=-1;
  127. g_WeaponDropping[i][ewd_weapon]=0;
  128. g_WeaponDropping[i][ewd_ammo]=0;
  129. g_WeaponDropping[i][ewd_cTime]=0;
  130. }
  131. }
  132. }
  133. }
Advertisement
Add Comment
Please, Sign In to add comment