Advertisement
Guest User

Untitled

a guest
Oct 24th, 2010
347
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.50 KB | None | 0 0
  1. /*
  2.  $ Latest Update :              22 / 10 / 2010
  3.  $ gDrop by :                   Daniel "Goldkiller" ( gta-goldkiller [at] web.de )
  4.  $ Supported SAMP Version:      ( 0.2-* & 0.3a ) 0.3b
  5.  $ Visit :                      www.san-vice.de.vu
  6.  
  7.  $ Usefull functions :          Mabako
  8. */
  9. #define MONEY_PACKET 1212
  10. #define MAX_MONEY_DROP 500000
  11. #define MAX_MUNI_DROP 5000
  12.  
  13. #define MONEY_PACKET_COLOR 0x228B22FE
  14. #define MONEY_PACKET_DISTANCE 18.0
  15.  
  16. #define DESTROY_COUNT 6
  17.  
  18. enum e_DropItem {
  19.     DI_iDestroyCount,
  20.     DI_iExtra, // Weapon | Munition   ||    Money
  21.     Text3D:DI_t3dInfo,
  22.     DI_iFlag
  23. };
  24. new
  25.     tDropItems;
  26.    
  27. new DropItems[MAX_PICKUPS][e_DropItem];
  28.  
  29.  
  30. enum ( <<= 1) {
  31.     e_Flag_MoneyDrop = 1,
  32.     e_Flag_WeaponDrop
  33. }
  34.  
  35.  
  36. new const PickupWeapons[] = // by Mabako
  37. {
  38.     -1, // no fists
  39.     331, // - Brass Knuckles
  40.     333, // Golf Club
  41.     334, // Night Stick
  42.     335, // Knife
  43.     336, // baseball bat
  44.     337, // shovel
  45.     338, // pool cue
  46.     339, // katama
  47.     341, // chainsaw
  48.     321, // regular dildo
  49.     322, // white dildo
  50.     323, // Medium, white vibrator
  51.     324, // smaill, silver vibrator
  52.     325, // flowers
  53.     326, // cane
  54.     342, // grendade
  55.     343, // tear gas
  56.     344, // molotov
  57.     -1, // RPG rocket - we can't pick up those, do we oO
  58.     -1, // Heat-Seeking Rocket
  59.     -1, // Hydra rocket
  60.     346, // colt 45
  61.     347, // colt 45 + silencer
  62.     348, // deagle
  63.     349, // shotgun
  64.     350, // sawn-off
  65.     351, // spaz
  66.     352, // micro-uzi
  67.     353, // mp5
  68.     355, // ak47
  69.     356, // m4
  70.     372, // tec9
  71.     357, // country rifle
  72.     358, // sniper rifle
  73.     359, // rocket launcher
  74.     360, // heat-seeking rocket launcher
  75.     361, // flamethrower
  76.     362, // minigun
  77.     363, // sachtel charges
  78.     -1, // detonator
  79.     365, // spray can
  80.     366, // fire extinguisher
  81.     367, // camera
  82.     -1, // night-vision goggles
  83.     -1, // heat-vision goggles
  84.     371 // parachute
  85. };
  86.  
  87. stock _DropItemInit() {
  88.     tDropItems = SetTimer("Drop_Pulse", (20 * 1000)  - 13,true);
  89.     return 1;
  90. }
  91.  
  92. stock _DropItemClose() {
  93.     KillTimer(tDropItems);
  94.     for(new i ; i < MAX_PICKUPS ; i++) {
  95.         if(DropItems[i][DI_iDestroyCount] > 0) {
  96.             DestroyDropItem(i);
  97.         }
  98.     }
  99.     return 1;
  100. }
  101.  
  102.  
  103. forward Drop_Pulse();
  104. public Drop_Pulse() {
  105.     for(new i ; i < MAX_PICKUPS ; i++) {
  106.         if(DropItems[i][DI_iDestroyCount] > 0) {
  107.             DropItems[i][DI_iDestroyCount]--;
  108.             if(DropItems[i][DI_iDestroyCount] == 0) {
  109.                 DestroyDropItem(i);
  110.             }
  111.         }
  112.     }
  113.     return 1;
  114. }
  115.  
  116. stock DestroyDropItem(pickup) {
  117.     if(_:DropItems[pickup][DI_t3dInfo] != INVALID_3DTEXT_ID) {
  118.         Delete3DTextLabel(DropItems[pickup][DI_t3dInfo]);
  119.     }
  120.     DropItems[pickup][DI_iExtra] = 0;
  121.     DropItems[pickup][DI_iDestroyCount] = -1;
  122.     DestroyPickup(pickup);
  123.     return 1;
  124. }
  125.  
  126. stock DropMoney(playerid) {
  127.     new
  128.         money = GetPlayerMoney(playerid);
  129.     if(money == 0) { // kein geld,kein drop
  130.         return 0;
  131.     }
  132.     new
  133.         iPickup,
  134.         sStr[16],
  135.         Float:fX,
  136.         Float:fY,
  137.         Float:fZ;
  138.     GetPlayerPos(playerid,fX,fY,fZ);
  139.     fX = fX + random(3) - random(3);
  140.     fY = fY + random(3) - random(3);
  141.     if(money > MAX_MONEY_DROP) {
  142.         money = MAX_MONEY_DROP;
  143.     }
  144.     iPickup = CreatePickup(MONEY_PACKET,1,fX,fY,fZ,0);
  145.     if(iPickup == -1) return 0;
  146.     DropItems[iPickup][DI_iFlag]   = e_Flag_MoneyDrop;
  147.     format(sStr,sizeof(sStr),"%d$",money);
  148.     DropItems[iPickup][DI_t3dInfo] = Create3DTextLabel(sStr,MONEY_PACKET_COLOR,fX,fY,fZ + 0.3,MONEY_PACKET_DISTANCE,0,1);
  149.     DropItems[iPickup][DI_iExtra]   = money;
  150.     DropItems[iPickup][DI_iDestroyCount] = DESTROY_COUNT;
  151.    
  152.     ResetPlayerMoney(playerid);
  153.     return 1;
  154. }
  155.  
  156. stock Drop_OnPlayerPickUpPickup(playerid, pickupid) {
  157.     if(DropItems[pickupid][DI_iFlag] & e_Flag_MoneyDrop) {
  158.         Money_OnPlayerPickUpPickup(playerid, pickupid);
  159.     }
  160.     else if(DropItems[pickupid][DI_iFlag] & e_Flag_WeaponDrop) {
  161.         Weapon_OnPlayerPickUpPickup(playerid,pickupid);
  162.     }
  163.     return 1;
  164. }
  165. stock Money_OnPlayerPickUpPickup(playerid, pickupid) {
  166.     GivePlayerMoney(playerid,DropItems[pickupid][DI_iExtra]);
  167.     PlayerPlaySound(playerid,1150,0.0,0.0,0.0);
  168.     DestroyDropItem(pickupid);
  169.     return 1;
  170. }
  171.  
  172. stock DropWeapon(playerid) {
  173.     new
  174.         iPickup,
  175.         _tmp,
  176.         iWeapon,
  177.         iSlot,
  178.         iMuni,
  179.         Float:fX,
  180.         Float:fY,
  181.         Float:fZ;
  182.     iWeapon = GetPlayerWeapon(playerid);
  183.     if(PickupWeapons[iWeapon] == -1) {
  184.         return 0;
  185.     }
  186.     iSlot = WeaponSlot(iWeapon);
  187.     GetPlayerWeaponData(playerid,iSlot,_tmp,iMuni);
  188.     GetPlayerPos(playerid,fX,fY,fZ);
  189.     fX = fX + random(3) - random(3);
  190.     fY = fY + random(3) - random(3);
  191.     if(iMuni > MAX_MUNI_DROP) {
  192.         iMuni = MAX_MUNI_DROP;
  193.     }
  194.     iPickup = CreatePickup(PickupWeapons[iWeapon],1,fX,fY,fZ,0);
  195.     if(iPickup == -1) return 0;
  196.     DropItems[iPickup][DI_iFlag]   = e_Flag_WeaponDrop;
  197.     DropItems[iPickup][DI_t3dInfo] = Text3D:INVALID_3DTEXT_ID;
  198.     DropItems[iPickup][DI_iDestroyCount] = DESTROY_COUNT;
  199.     DropItems[iPickup][DI_iExtra]   = iWeapon | ( iMuni << 8 );
  200.     ResetPlayerWeapons(playerid);
  201.     return 1;
  202.  
  203. }
  204.  
  205. stock Weapon_OnPlayerPickUpPickup(playerid, pickupid) {
  206.     new
  207.         iSlotPicked,
  208.         iWeapon_picked = (DropItems[pickupid][DI_iExtra] & 0xFF),
  209.         iAmmo,
  210.         iMuni = ( DropItems[pickupid][DI_iExtra] >> 8 ) & 0xFF,
  211.         iArmedWeapon,
  212.         iWeapon;
  213.     iSlotPicked = WeaponSlot(iWeapon_picked);
  214.     GetPlayerWeaponData(playerid,iSlotPicked,iWeapon,iAmmo);
  215.     iArmedWeapon = GetPlayerWeapon(playerid);
  216.     if(iWeapon == iWeapon_picked) {
  217.         GivePlayerWeapon(playerid,iWeapon_picked,iMuni);
  218.         if(iArmedWeapon != iWeapon_picked) {
  219.             SetPlayerArmedWeapon(playerid,iArmedWeapon);
  220.         }
  221.     }
  222.     else {
  223.         new
  224.             keys,
  225.             ud,
  226.             lr;
  227.         GetPlayerKeys(playerid,keys,ud,lr);
  228.         if(keys & KEY_WALK) {
  229.             GivePlayerWeapon(playerid,iWeapon_picked,iMuni);
  230.         }
  231.         else {
  232.             if( (iWeapon == 0) && (iAmmo == 0) ) {
  233.                 GivePlayerWeapon(playerid,iWeapon_picked,iMuni);
  234.             }
  235.             else {
  236.                 GivePlayerWeapon(playerid,iWeapon,( iMuni + iAmmo ));
  237.                 if(iArmedWeapon != iWeapon_picked) {
  238.                     SetPlayerArmedWeapon(playerid,iArmedWeapon);
  239.                 }
  240.             }
  241.         }
  242.     }
  243.     PlayerPlaySound(playerid,1150,0.0,0.0,0.0);
  244.     DestroyDropItem(pickupid);
  245.     return 1;
  246. }
  247. stock WeaponSlot(weaponid)
  248. {
  249.         switch (weaponid)
  250.         {
  251.             case 0,1: return 0;
  252.             case 2..9: return 1;
  253.             case 22..24: return 2;
  254.             case 25..27: return 3;
  255.             case 28,29,32: return 4;
  256.             case 33,34: return 5;
  257.             case 30,31: return 6;
  258.             case 35..38: return 7;
  259.             case 16..18,39: return 8;
  260.             case 41..43: return 9;
  261.             case 10..15: return 10;
  262.             case 44..46: return 11;
  263.             default: return 12;
  264.         }
  265.         return -1;
  266. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement