Advertisement
TYUI

Create Weapon Pickup

Feb 11th, 2019
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.67 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. #define INFINITY 2147483647
  4. #define MAX_PICKUP_WEAPONS 500
  5. #define DELETE_PICKUP_TIME 30000 //30 sekund
  6.  
  7. new pickup[MAX_PICKUP_WEAPONS];
  8. new pickuptimer[MAX_PICKUP_WEAPONS];
  9. new pickupweapon[MAX_PICKUP_WEAPONS] = {-1, ...};
  10. new pickupammo[MAX_PICKUP_WEAPONS];
  11. new MaxCreatedPickup = -1;
  12.  
  13. stock GetWeaponPickupID(weaponid)
  14. {
  15.     if(weaponid == 1) return 331;
  16.     if(weaponid == 2) return 333;
  17.     if(weaponid == 3) return 334;
  18.     if(weaponid == 4) return 335;
  19.     if(weaponid == 5) return 336;
  20.     if(weaponid == 6) return 337;
  21.     if(weaponid == 7) return 338;
  22.     if(weaponid == 8) return 339;
  23.     if(weaponid == 9) return 341;
  24.     if(weaponid == 10) return 321;
  25.     if(weaponid == 11) return 322;
  26.     if(weaponid == 12) return 323;
  27.     if(weaponid == 13) return 324;
  28.     if(weaponid == 14) return 325;
  29.     if(weaponid == 15) return 326;
  30.     if(weaponid == 16) return 342;
  31.     if(weaponid == 17) return 343;
  32.     if(weaponid == 18) return 344;
  33.     if(weaponid == 22) return 346;
  34.     if(weaponid == 23) return 347;
  35.     if(weaponid == 24) return 348;
  36.     if(weaponid == 25) return 349;
  37.     if(weaponid == 26) return 350;
  38.     if(weaponid == 27) return 351;
  39.     if(weaponid == 28) return 352;
  40.     if(weaponid == 29) return 353;
  41.     if(weaponid == 30) return 355;
  42.     if(weaponid == 31) return 356;
  43.     if(weaponid == 32) return 372;
  44.     if(weaponid == 33) return 357;
  45.     if(weaponid == 34) return 358;
  46.     if(weaponid == 35) return 359;
  47.     if(weaponid == 36) return 360;
  48.     if(weaponid == 37) return 361;
  49.     if(weaponid == 38) return 362;
  50.     if(weaponid == 39) return 363;
  51.     if(weaponid == 40) return 364;
  52.     if(weaponid == 41) return 365;
  53.     if(weaponid == 42) return 366;
  54.     if(weaponid == 43) return 367;
  55.     if(weaponid == 44) return 368;
  56.     if(weaponid == 45) return 369;
  57.     if(weaponid == 46) return 371;
  58.     return 1239;
  59. }
  60.  
  61. stock GetWeaponPickupCreatePos(&Float:x, &Float:y, &Float:z, number)
  62. {
  63.     #pragma unused z
  64.     if(number == 2)
  65.     {
  66.         x += 1.0;
  67.     }
  68.     else if(number == 3)
  69.     {
  70.         x -= 1.0;
  71.     }
  72.     else if(number == 4)
  73.     {
  74.         y += 1.0;
  75.     }
  76.     else if(number == 5)
  77.     {
  78.         y -= 1.0;
  79.     }
  80.     else if(number == 6)
  81.     {
  82.         x += 1.0;
  83.         y += 1.0;
  84.     }
  85.     else if(number == 7)
  86.     {
  87.         x += 1.0;
  88.         y -= 1.0;
  89.     }
  90.     else if(number == 8)
  91.     {
  92.         x -= 1.0;
  93.         y -= 1.0;
  94.     }
  95.     else if(number == 9)
  96.     {
  97.         x -= 1.0;
  98.         y += 1.0;
  99.     }
  100.     else if(number == 10)
  101.     {
  102.         x += 2.0;
  103.     }
  104.     else if(number == 11)
  105.     {
  106.         x -= 2.0;
  107.     }
  108.     else if(number == 12)
  109.     {
  110.         y += 2.0;
  111.     }
  112.     else if(number == 13)
  113.     {
  114.         y -= 2.0;
  115.     }
  116.     return true;
  117. }
  118.  
  119. public OnFilterScriptInit()
  120. {
  121.     for(new p=0; p<MAX_PICKUP_WEAPONS; p++)
  122.     {
  123.         pickup[p] = CreatePickup(1007, 23, 0.0, 0.0, 10000.0, INFINITY);
  124.         DeleteWeaponPickup(p);
  125.     }
  126.     MaxCreatedPickup = -1;
  127.    
  128.         GetWeaponPickupCreatePos(2467.2654,-1717.5540,13.4988, 337);
  129.     GetWeaponPickupCreatePos(2508.7488,-1721.6685,18.5821, 365);
  130.     GetWeaponPickupCreatePos(2528.0208,-1678.6014,19.9302, 372);
  131.     GetWeaponPickupCreatePos(2539.2712,-1629.6547,13.4916, 22);
  132.     GetWeaponPickupCreatePos(2545.7944,-1587.3887,13.4287, 1242);
  133.     GetWeaponPickupCreatePos(2617.0667,-1733.6957,6.2422, 325);
  134.     return 1;
  135. }
  136.  
  137. public OnFilterScriptExit()
  138. {
  139.     for(new p=0; p<MAX_PICKUP_WEAPONS; p++) DestroyPickup(pickup[p]);
  140.     return 1;
  141. }
  142.  
  143. public OnPlayerDeath(playerid, killerid, reason)
  144. {
  145.     new w[13][2], weapons = 0;
  146.     for(new c=0; c<13; c++)
  147.     {
  148.         GetPlayerWeaponData(playerid, c, w[c][0], w[c][1]);
  149.         if(w[c][0] > 0) if(w[c][1] > 0) for(new p=0; p<MAX_PICKUP_WEAPONS; p++) if(pickupweapon[p] == -1)
  150.         {
  151.             if(p > MaxCreatedPickup) MaxCreatedPickup = p;
  152.        
  153.             weapons++;
  154.             new Float:x, Float:y, Float:z;
  155.             GetPlayerPos(playerid, x, y, z);
  156.             GetWeaponPickupCreatePos(x, y, z, weapons);
  157.             DestroyPickup(pickup[p]);
  158.             pickup[p] = CreatePickup(GetWeaponPickupID(w[c][0]), 23, x, y, z, GetPlayerVirtualWorld(playerid));
  159.             pickupweapon[p] = w[c][0];
  160.             pickupammo[p] = w[c][1];
  161.             pickuptimer[p] = SetTimerEx("DeleteWeaponPickup", DELETE_PICKUP_TIME, 0, "i", p);
  162.            
  163.             break;
  164.         }
  165.     }
  166.     return 1;
  167. }
  168.  
  169. public OnPlayerPickUpPickup(playerid, pickupid)
  170. {
  171.     for(new p=0; p<=MaxCreatedPickup; p++) if(pickupweapon[p] != -1) if(pickupid == pickup[p])
  172.     {
  173.         new Float:hp;
  174.         GetPlayerHealth(playerid, hp);
  175.  
  176.         if(hp > 0.0)
  177.         {
  178.             GivePlayerWeapon(playerid, pickupweapon[p], pickupammo[p]);
  179.             DeleteWeaponPickup(p);
  180.             KillTimer(pickuptimer[p]);
  181.         }
  182.         break;
  183.     }
  184.     return 1;
  185. }
  186.  
  187. forward DeleteWeaponPickup(p);
  188. public DeleteWeaponPickup(p)
  189. {
  190.     DestroyPickup(pickup[p]);
  191.     pickup[p] = CreatePickup(1007, 23, 0.0, 0.0, 10000.0, INFINITY);
  192.     pickupweapon[p] = -1;
  193.     pickupammo[p] = 0;
  194.     new save = MaxCreatedPickup;
  195.     MaxCreatedPickup = -1;
  196.     for(new c=0; c<=save; c++) if(pickupweapon[c] != -1) MaxCreatedPickup = c;
  197.     return 1;
  198. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement