Advertisement
Guest User

[~DropGun~]

a guest
Feb 16th, 2013
699
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 4.87 KB | None | 0 0
  1. #include <a_samp>
  2. #include <streamer>
  3. #include <zcmd>
  4. #include <foreach>
  5.  
  6. #define MAX_DROP_ITEMS 1000
  7. #define COLOR_ACTION 0xFFC0CBFF
  8.  
  9. new string[128], sendername[MAX_PLAYER_NAME], DropObject[MAX_DROP_ITEMS];
  10.  
  11. new GunObjectIDs[200] ={
  12.  
  13.    1575,  331, 333, 334, 335, 336, 337, 338, 339, 341, 321, 322, 323, 324, 325, 326, 342, 343, 344, -1,  -1 , -1 ,
  14.    346, 347, 348, 349, 350, 351, 352, 353, 355, 356, 372, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
  15.    368, 369, 1575
  16. };
  17.  
  18. enum dData
  19. {
  20.     DropGunAmmount[2],
  21.     Float:DropGunPosX,
  22.     Float:DropGunPosY,
  23.     Float:DropGunPosZ,
  24.     DropGunVWorld,
  25.     DropGunInterior,
  26. };
  27.  
  28. public OnPlayerDeath(playerid, killerid, reason)
  29. {
  30.     new Float:X,Float:Y,Float:Z;
  31.     GetPlayerPos(playerid, X, Y, Z);
  32.     DropGun(playerid, GetPlayerWeapon(playerid),GetPlayerAmmo(playerid),X,Y,Z,GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid));
  33.     return 1;
  34. }
  35.  
  36. COMMAND:dropgun(playerid, params[])
  37. {
  38.     new Float:X,Float:Y,Float:Z;
  39.     new GunID = GetPlayerWeapon(playerid);
  40.     new GunAmmo = GetPlayerAmmo(playerid);
  41.     GetPlayerName(playerid, sendername, sizeof(sendername));
  42.     GetPlayerPos(playerid, X, Y, Z);
  43.     RemovePlayerWeapon(playerid, GunID);
  44.     DropGun(playerid, GunID,GunAmmo,X,Y,Z,GetPlayerVirtualWorld(playerid),GetPlayerInterior(playerid));
  45.     format(string, sizeof(string), "* %s drops his weapon to the pavement.", sendername);
  46.     SendLocalMessage(playerid, string, 10.0, COLOR_ACTION, COLOR_ACTION);
  47.     return 1;
  48. }
  49.  
  50. COMMAND:pickupgun(playerid, params[])
  51. {
  52.     for(new i = 0; i < sizeof(DropInfo); i++)
  53.     {
  54.         if (IsPlayerInRangeOfPoint(playerid, 2.0,DropInfo[i][DropGunPosX],DropInfo[i][DropGunPosY],DropInfo[i][DropGunPosZ]))
  55.         {
  56.             if(GetPlayerVirtualWorld(playerid) == DropInfo[i][DropGunVWorld] && GetPlayerInterior(playerid) == DropInfo[i][DropGunVWorld])
  57.             {
  58.                 GetPlayerName(playerid, sendername, sizeof(sendername));
  59.                 DestroyDynamicObject(DropObject[i]);
  60.                 DropInfo[i][DropGunPosX] = 0.0;
  61.                 DropInfo[i][DropGunPosY] = 0.0;
  62.                 DropInfo[i][DropGunPosZ] = 0.0;
  63.                 DropInfo[i][DropGunAmmount][0] = 0;
  64.                 DropInfo[i][DropGunAmmount][1] = 0;
  65.                 GivePlayerWeapon(playerid,DropInfo[i][DropGunAmmount][0],DropInfo[i][DropGunAmmount][1]);
  66.                 format(string, sizeof(string), "* %s picks up a weapon from the pavement.", sendername);
  67.                 SendLocalMessage(playerid, string, 10.0, COLOR_ACTION, COLOR_ACTION);
  68.                 return 1;
  69.             }
  70.         }
  71.     }
  72.     return 1;
  73. }
  74.  
  75. stock SendLocalMessage(playerid, msg[], Float:MessageRange, Range1color, Range2color)
  76. {
  77.     new Float: PlayerX, Float: PlayerY, Float: PlayerZ;
  78.     GetPlayerPos(playerid, PlayerX, PlayerY, PlayerZ);
  79.     foreach (Player, i)
  80.     {
  81.         if(IsPlayerInRangeOfPoint(i, MessageRange, PlayerX, PlayerY,PlayerZ))
  82.         {
  83.             SendClientMessage(i, Range1color, msg);
  84.         }
  85.         else if(IsPlayerInRangeOfPoint(i, MessageRange/2.0, PlayerX, PlayerY,PlayerZ))
  86.         {
  87.             SendClientMessage(i, Range2color, msg);
  88.         }
  89.     }
  90. }
  91.  
  92. stock GetGunObjectID(WeaponID)
  93. {
  94.     if (WeaponID < 0 || WeaponID > 64)
  95.     {
  96.         return 1575;
  97.     }
  98.     return GunObjectIDs[WeaponID];
  99. }
  100.  
  101. stock DropGun(playerid, GunID, GunAmmo, Float:X, Float:Y, Float:Z, world, interior)
  102. {
  103.     new name[MAX_PLAYER_NAME];
  104.     GetPlayerName(playerid,name,sizeof(name));
  105.     if(GunID != 0 && GunAmmo != 0)
  106.     {
  107.         for(new i = 0; i < sizeof(DropInfo); i++)
  108.         {
  109.             if(DropInfo[i][DropGunPosX] == 0.0 && DropInfo[i][DropGunPosY] == 0.0 && DropInfo[i][DropGunPosZ] == 0.0)
  110.             {
  111.                 DropInfo[i][DropGunAmmount][0] = GunID;
  112.                 DropInfo[i][DropGunAmmount][1] = GunAmmo;
  113.                 DropInfo[i][DropGunPosX] = X;
  114.                 DropInfo[i][DropGunPosY] = Y;
  115.                 DropInfo[i][DropGunPosZ] = Z;
  116.                 DropInfo[i][DropGunVWorld] = world;
  117.                 DropInfo[i][DropGunInterior] = interior;
  118.                 DropObject[i] = CreateDynamicObject(GetGunObjectID(GunID), X, Y, Z-1, 80.0, 0.0, 0.0, world);
  119.                 return 1;
  120.             }
  121.         }
  122.         return 1;
  123.     }
  124.     return 1;
  125. }
  126.  
  127. stock RemovePlayerWeapon(playerid, weaponid)
  128. {
  129.     if(!IsPlayerConnected(playerid) || weaponid < 0 || weaponid > 50)
  130.         return;
  131.     new saveweapon[13], saveammo[13];
  132.     for(new slot = 0; slot < 13; slot++)
  133.         GetPlayerWeaponData(playerid, slot, saveweapon[slot], saveammo[slot]);
  134.     ResetPlayerWeapons(playerid);
  135.     for(new slot; slot < 13; slot++)
  136.     {
  137.         if(saveweapon[slot] == weaponid || saveammo[slot] == 0)
  138.             continue;
  139.         GivePlayerWeapon(playerid, saveweapon[slot], saveammo[slot]);
  140.     }
  141.  
  142.     GivePlayerWeapon(playerid, 0, 1);
  143.  
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement