Advertisement
FD2

DropGun System. By F2

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