drugs.inc 42 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262
  1. /*
  2. Drug System
  3. -> UseDrug(playerid, drugid);
  4. -> DropDrug(playerid, amount, object, Float:x, Float:y, Float:z);
  5. -> CheckPlayerDrugs(playerid);
  6. -> GiveDrug(playerid, targetid, drugid, amount);
  7. -> MixDrugs(playerid, drug1, drug2, amount1, amount2)
  8. */
  9. #define MAX_DROPPED_DRUGS (100)
  10. forward UseDrug(playerid, drugid);
  11. forward DropDrug(playerid, dobject, drugid, amount, Float:x, Float:y, Float:z);
  12. forward PickUpDrug(playerid);
  13. forward CheckPlayerDrugs(playerid);
  14. forward GiveDrug(playerid, targetid, drugid, amount);
  15. forward GetDrugInfo(playerid);
  16. forward UseDrugs(playerid); // Timer
  17. forward DrugEffects(playerid); // Timer
  18. forward MixDrugs(playerid, drug1, drug2, amount1, amount2);
  19. forward OfferDrug(playerid, target, drugid, amount);
  20. enum { // Drug IDs
  21. DRUG_CANNABIS,
  22. DRUG_COCAINE,
  23. DRUG_METH,
  24. DRUG_XANAX,
  25. DRUG_CODEINE,
  26. DRUG_PROMETHAZINE,
  27. DRUG_LEAN
  28. };
  29. enum { // Object IDs
  30. DRUG_SHOE_OBJECT = 2694,
  31. DRUG_BOX_OBJECT = 2912,
  32. DRUG_DUFFLE_BAG = 11745
  33. }
  34. enum droppedDrugs {
  35. droppedID,
  36. bool:droppedDropped, // Check to see if the drug ID is dropped or not
  37. droppedDrug,
  38. Float:droppedPosition[3],
  39. Float:droppedRotPosition[3],
  40. droppedDropper[MAX_PLAYER_NAME],
  41. droppedDrugName[64],
  42. droppedObjName[64],
  43. droppedObject,
  44. droppedGrams, // how many grams in each object
  45. droppedMaxGrams // max grams an obj can hold
  46. };
  47. new DrugInfo[MAX_DROPPED_DRUGS][droppedDrugs];
  48. new drugofferplayer[MAX_PLAYERS], drugofferid[MAX_PLAYERS], drugofferamount[MAX_PLAYERS];
  49. GetDrugName(drugid)
  50. {
  51. new drugname[64];
  52. switch(drugid)
  53. {
  54. case DRUG_CANNABIS: drugname = "Cannabis";
  55. case DRUG_COCAINE: drugname = "Cocaine";
  56. case DRUG_METH: drugname = "Meth";
  57. case DRUG_XANAX: drugname = "Xanax";
  58. case DRUG_PROMETHAZINE: drugname = "Promethazine";
  59. case DRUG_CODEINE: drugname = "Codeine";
  60. case DRUG_LEAN: drugname = "Lean";
  61. }
  62. return drugname;
  63. }
  64. GetDrugEffectString(drugid)
  65. {
  66. new drugline[128];
  67. switch(drugid)
  68. {
  69. case DRUG_CANNABIS: drugline = "You've smoked some cannabis.";
  70. case DRUG_COCAINE: drugline = "You've snorted some cocaine";
  71. case DRUG_METH: drugline = "You've smoked some meth.";
  72. case DRUG_XANAX: drugline = "You've taken some xanax.";
  73. case DRUG_PROMETHAZINE: drugline = "You've taken promethazine.";
  74. case DRUG_CODEINE: drugline = "You've taken codeine.";
  75. case DRUG_LEAN: drugline = "You've drank some lean.";
  76. }
  77. return drugline;
  78. }
  79. GetPlayerDrugBubbleString(playerid, drugid)
  80. {
  81. new drugline[128];
  82. switch(drugid)
  83. {
  84. case DRUG_CANNABIS:
  85. {
  86. format(drugline, sizeof drugline, "%s's eyes would look blood shot and tired.", PlayerICName(playerid));
  87. }
  88. case DRUG_COCAINE:
  89. {
  90. format(drugline, sizeof drugline, "%s's eyes would look glazed over, and would seem clueless to surroundings.", PlayerICName(playerid));
  91. }
  92. case DRUG_METH:
  93. {
  94. format(drugline, sizeof drugline, "%s would look lost, and very fatigued.", PlayerICName(playerid));
  95. }
  96. case DRUG_XANAX:
  97. {
  98. format(drugline, sizeof drugline, "%s would begin to look drowsy and tired.", PlayerICName(playerid));
  99. }
  100. case DRUG_PROMETHAZINE:
  101. {
  102. format(drugline, sizeof drugline, "%s's pupils begin to dialate.", PlayerICName(playerid));
  103. }
  104. case DRUG_CODEINE:
  105. {
  106. format(drugline, sizeof drugline, "%s slowly begins look fatigued as time goes on.", PlayerICName(playerid));
  107. }
  108. case DRUG_LEAN:
  109. {
  110. format(drugline, sizeof drugline, "%s reacts very sluggishly and slurrs a lot.", PlayerICName(playerid));
  111. }
  112. }
  113. return drugline;
  114. }
  115. public DrugEffects(playerid)
  116. {
  117. SetPlayerWeather(playerid, g_WeatherID);
  118. new hour, minute, second;
  119. gettime(hour, minute, second);
  120. hour = FixHour(hour);
  121. SetPlayerTime(playerid, hour, minute);
  122. return 1;
  123. }
  124. public UseDrugs(playerid)
  125. {
  126. if(!IsPlayerConnected(playerid)) return 0;
  127. if(UseDrugsTimer[playerid])
  128. {
  129. UseDrugsTimer[playerid] = 0;
  130. }
  131. return 1;
  132. }
  133. new PlayerMixingDrug[MAX_PLAYERS],
  134. MixingDrugTimerID[MAX_PLAYERS];
  135. public MixDrugs(playerid, drug1, drug2, amount1, amount2)
  136. {
  137. if( (drug1 == DRUG_PROMETHAZINE && drug2 == DRUG_CODEINE) || (drug1 == DRUG_CODEINE && drug2 == DRUG_PROMETHAZINE) )
  138. {
  139. if(PlayerInfo[playerid][pCodeine] < 5)
  140. return SendClientMessage(playerid, COLOR_GREY, "You don't have enough drugs to perform this action.");
  141. if(PlayerInfo[playerid][pPromethazine] < 5)
  142. return SendClientMessage(playerid, COLOR_GREY, "You don't have enough drugs to perform this action.");
  143. if(PlayerMixingDrug[playerid] != 0)
  144. return SendClientMessage(playerid, COLOR_GREY, "You're already mixing drugs.");
  145. PlayerInfo[playerid][pPromethazine] -= amount1;
  146. PlayerInfo[playerid][pCodeine] -= amount2;
  147. MixingDrugMessage(playerid);
  148. TogglePlayerControllable(playerid, 0);
  149. }
  150. return 1;
  151. }
  152. forward MixingDrugMessage(playerid);
  153. public MixingDrugMessage(playerid)
  154. {
  155. PlayerMixingDrug[playerid] = 5;
  156. GameTextForPlayer(playerid, "~g~MIXING DRUG~n~~w~(5 SECONDS LEFT)", 1000, 3);
  157. MixingDrugTimerID[playerid] = SetTimerEx("PlayerMixingDrugEx", 1000, true, "i", playerid);
  158. return 1;
  159. }
  160. forward PlayerMixingDrugEx(playerid);
  161. public PlayerMixingDrugEx(playerid)
  162. {
  163. new drugmsg[128];
  164. if(PlayerMixingDrug[playerid] > 0) PlayerMixingDrug[playerid]--;
  165. if(PlayerMixingDrug[playerid] == 0)
  166. {
  167. TogglePlayerControllable(playerid, 1);
  168. PlayerInfo[playerid][pLean]++;
  169. SendClientMessage(playerid, COLOR_LIGHTBLUE, "You've used 5 fluid ounces of promethazine and codeine to make 1 fluid ounce of lean.");
  170. KillTimer(MixingDrugTimerID[playerid]);
  171. }
  172. format(drugmsg, sizeof(drugmsg), "~g~MIXING DRUG~n~~w~(%d SECONDS LEFT)", PlayerMixingDrug[playerid]);
  173. GameTextForPlayer(playerid, drugmsg, 1000, 3);
  174. return 1;
  175. }
  176. public UseDrug(playerid, drugid)
  177. {
  178. if(UseDrugsTimer[playerid] == 1)
  179. return SendClientMessage(playerid, COLOR_GREY, "You need to wait prior to consuming more drugs.");
  180. if(IsNearBank(playerid) && bankactive)
  181. return SendClientMessage(playerid, COLOR_GREY, "You can not use this inside/outside the bank during an active bank robbery.");
  182. if(drugid == DRUG_CANNABIS)
  183. {
  184. if(PlayerInfo[playerid][pCannabis] == 0)
  185. return SendClientMessage(playerid, COLOR_LIGHTBLUE, "ERROR: {FFFFFF}You do not have enough cannabis!");
  186. SetPlayerChatBubble(playerid, GetPlayerDrugBubbleString(playerid, DRUG_CANNABIS), COLOR_PURPLE, 5.0000, 5 * 1000);
  187. new Float:dHP;
  188. GetPlayerHealth(playerid, dHP);
  189. if(dHP > 85)
  190. SetPlayerHealth(playerid, 100);
  191. else SetPlayerHealth(playerid, dHP + 10.0);
  192. PlayerInfo[playerid][pCannabis] -= 1;
  193. SetPlayerDrunkLevel(playerid, 5000);
  194. SetPlayerTime(playerid, 22, 0);
  195. SetPlayerWeather(playerid, 10004);
  196. }
  197. else if(drugid == DRUG_COCAINE)
  198. {
  199. if(PlayerInfo[playerid][pCocaine] == 0)
  200. return SendClientMessage(playerid, COLOR_LIGHTBLUE, "ERROR: {FFFFFF}You do not have enough cocaine!");
  201. SetPlayerChatBubble(playerid, GetPlayerDrugBubbleString(playerid, DRUG_COCAINE), COLOR_PURPLE, 5.0000, 5 * 1000);
  202. new Float:dHP, Float:dAP;
  203. GetPlayerHealth(playerid, dHP);
  204. GetPlayerArmour(playerid, dAP);
  205. if(dAP > 85)
  206. SetPlayerArmour(playerid, 100);
  207. else SetPlayerArmour(playerid, dAP + 8);
  208. PlayerInfo[playerid][pCocaine] -= 1;
  209. SetPlayerDrunkLevel(playerid, 5000);
  210. SetPlayerTime(playerid, 22, 0);
  211. SetPlayerWeather(playerid, 467);
  212. }
  213. else if(drugid == DRUG_METH)
  214. {
  215. if(PlayerInfo[playerid][pMeth] == 0)
  216. return SendClientMessage(playerid, COLOR_LIGHTBLUE, "ERROR: {FFFFFF}You do not have enough meth!");
  217. SetPlayerChatBubble(playerid, GetPlayerDrugBubbleString(playerid, DRUG_METH), COLOR_PURPLE, 5.0000, 5 * 1000);
  218. new Float:dHP, Float:dAP;
  219. PlayerInfo[playerid][pMeth] -= 1;
  220. GetPlayerHealth(playerid, dHP);
  221. if(dHP > 85)
  222. SetPlayerHealth(playerid, 100);
  223. else SetPlayerHealth(playerid, dHP + 10);
  224. GetPlayerArmour(playerid, dAP);
  225. if(dAP > 85)
  226. SetPlayerArmour(playerid, 100);
  227. else SetPlayerArmour(playerid, dAP + 5);
  228. SetPlayerDrunkLevel(playerid, 5000);
  229. SetPlayerTime(playerid, 23, 0);
  230. SetPlayerWeather(playerid, 493);
  231. }
  232. else if(drugid == DRUG_XANAX)
  233. {
  234. if(PlayerInfo[playerid][pXanax] == 0)
  235. return SendClientMessage(playerid, COLOR_LIGHTBLUE, "ERROR: {FFFFFF}You do not have enough xanax!");
  236. SetPlayerChatBubble(playerid, GetPlayerDrugBubbleString(playerid, DRUG_XANAX), COLOR_PURPLE, 5.0000, 5 * 1000);
  237. new Float:dHP;
  238. GetPlayerHealth(playerid, dHP);
  239. if(dHP > 85)
  240. SetPlayerHealth(playerid, 100);
  241. else SetPlayerHealth(playerid, dHP + 23);
  242. PlayerInfo[playerid][pXanax] -= 1;
  243. SetPlayerDrunkLevel(playerid, 5000);
  244. SetPlayerTime(playerid, 22, 0);
  245. SetPlayerWeather(playerid, 2009);
  246. }
  247. else if(drugid == DRUG_PROMETHAZINE)
  248. {
  249. if(PlayerInfo[playerid][pPromethazine] == 0)
  250. return SendClientMessage(playerid, COLOR_LIGHTBLUE, "ERROR: {FFFFFF}You do not have enough promethazine!");
  251. PlayerInfo[playerid][pPromethazine] -= 1;
  252. SetPlayerChatBubble(playerid, GetPlayerDrugBubbleString(playerid, DRUG_XANAX), COLOR_PURPLE, 5.0000, 5 * 1000);
  253. }
  254. else if(drugid == DRUG_CODEINE)
  255. {
  256. if(PlayerInfo[playerid][pCodeine] == 0)
  257. return SendClientMessage(playerid, COLOR_LIGHTBLUE, "ERROR: {FFFFFF}You do not have enough codeine!");
  258. PlayerInfo[playerid][pCodeine] -= 1;
  259. SetPlayerChatBubble(playerid, GetPlayerDrugBubbleString(playerid, DRUG_XANAX), COLOR_PURPLE, 5.0000, 5 * 1000);
  260. }
  261. else if(drugid == DRUG_LEAN)
  262. {
  263. if(PlayerInfo[playerid][pLean] == 0)
  264. return SendClientMessage(playerid, COLOR_LIGHTBLUE, "ERROR: {FFFFFF}You do not have enough lean!");
  265. SetPlayerChatBubble(playerid, GetPlayerDrugBubbleString(playerid, DRUG_XANAX), COLOR_PURPLE, 5.0000, 5 * 1000);
  266. PlayerInfo[playerid][pLean] -= 1;
  267. new Float:dAP;
  268. GetPlayerArmour(playerid, dAP);
  269. if(dAP > 85)
  270. SetPlayerArmour(playerid, 100);
  271. else SetPlayerArmour(playerid, dAP + 19);
  272. SetPlayerDrunkLevel(playerid, 5000);
  273. SetPlayerTime(playerid, 23, 0);
  274. SetPlayerWeather(playerid, 39);
  275. }
  276. SetTimerEx("DrugEffects", 30 * 1000, 0, "i", playerid); // 30 seconds
  277. UseDrugsTimer[playerid] = 1;
  278. SetTimerEx("UseDrugs", 5 * 1000, 0, "i", playerid); // 5 seconds
  279. if(!IsPlayerInAnyVehicle(playerid))
  280. OnePlayAnim(playerid, "SMOKING", "M_smk_in", 4.0, 0, 0, 0, 0, 0);
  281. SendClientMessage(playerid, COLOR_LIGHTBLUE, GetDrugEffectString(drugid));
  282. return 1;
  283. }
  284. public DropDrug(playerid, dobject, drugid, amount, Float:x, Float:y, Float:z)
  285. {
  286. for(new i = 1; i < MAX_DROPPED_DRUGS; i++)
  287. {
  288. if(DrugInfo[i][droppedDropped] == false)
  289. {
  290. DrugInfo[i][droppedID] = i;
  291. GetPlayerName(playerid, DrugInfo[i][droppedDropper], MAX_PLAYER_NAME);
  292. // Setting variables for the object size
  293. if(dobject == DRUG_SHOE_OBJECT)
  294. {
  295. new str[64] = "Bag";
  296. DrugInfo[i][droppedObjName] = str;
  297. DrugInfo[i][droppedMaxGrams] = 15; // 15 grams
  298. }
  299. else if(dobject == DRUG_BOX_OBJECT)
  300. {
  301. new str[64] = "Box";
  302. DrugInfo[i][droppedObjName] = str;
  303. DrugInfo[i][droppedMaxGrams] = 50; // 5 grams
  304. }
  305. else if(dobject == DRUG_DUFFLE_BAG)
  306. {
  307. new str[64] = "Duffle Bag";
  308. DrugInfo[i][droppedObjName] = str;
  309. DrugInfo[i][droppedMaxGrams] = 100; // 100 grams
  310. }
  311. else {
  312. new str[64] = "Unspecified Object";
  313. DrugInfo[i][droppedObjName] = str;
  314. DrugInfo[i][droppedMaxGrams] = 150; // Admin Object
  315. }
  316. if(amount > DrugInfo[i][droppedMaxGrams])
  317. return SendClientMessage(playerid, COLOR_LIGHTBLUE, "ERROR: {FFFFFF}This item cannot hold that many grams!");
  318. // Taking drugs from the player
  319. DrugInfo[i][droppedGrams] = amount;
  320. if(drugid == DRUG_CANNABIS) // Cannabis
  321. {
  322. DrugInfo[i][droppedDrugName] = GetDrugName(DRUG_CANNABIS);
  323. DrugInfo[i][droppedDrug] = DRUG_CANNABIS;
  324. PlayerInfo[playerid][pCannabis] -= amount;
  325. }
  326. else if(drugid == DRUG_COCAINE) // Cocaine
  327. {
  328. DrugInfo[i][droppedDrugName] = GetDrugName(DRUG_COCAINE);
  329. DrugInfo[i][droppedDrug] = DRUG_COCAINE;
  330. PlayerInfo[playerid][pCocaine] -= amount;
  331. }
  332. else if(drugid == DRUG_METH) // Meth
  333. {
  334. DrugInfo[i][droppedDrugName] = GetDrugName(DRUG_METH);
  335. DrugInfo[i][droppedDrug] = DRUG_METH;
  336. PlayerInfo[playerid][pMeth] -= amount;
  337. }
  338. else if(drugid == DRUG_XANAX) // Xanax
  339. {
  340. DrugInfo[i][droppedDrugName] = GetDrugName(DRUG_XANAX);
  341. DrugInfo[i][droppedDrug] = DRUG_XANAX;
  342. PlayerInfo[playerid][pXanax] -= amount;
  343. }
  344. else if(drugid == DRUG_PROMETHAZINE) // Promethazine
  345. {
  346. DrugInfo[i][droppedDrugName] = GetDrugName(DRUG_PROMETHAZINE);
  347. DrugInfo[i][droppedDrug] = DRUG_PROMETHAZINE;
  348. PlayerInfo[playerid][pPromethazine] -= amount;
  349. }
  350. else if(drugid == DRUG_CODEINE) // Codine
  351. {
  352. DrugInfo[i][droppedDrugName] = GetDrugName(DRUG_CODEINE);
  353. DrugInfo[i][droppedDrug] = DRUG_CODEINE;
  354. PlayerInfo[playerid][pCodeine] -= amount;
  355. }
  356. else if(drugid == DRUG_LEAN) // Lean
  357. {
  358. DrugInfo[i][droppedDrugName] = GetDrugName(DRUG_PROMETHAZINE);
  359. DrugInfo[i][droppedDrug] = DRUG_LEAN;
  360. PlayerInfo[playerid][pLean] -= amount;
  361. }
  362. // Creating the object
  363. DrugInfo[i][droppedObject] = CreateDynamicObject(dobject, x, y, z -= 0.9, 0, 0, 0);
  364. Streamer_Update(playerid);
  365. DrugInfo[i][droppedPosition][0] = x;
  366. DrugInfo[i][droppedPosition][1] = y;
  367. DrugInfo[i][droppedPosition][2] = z;
  368. DrugInfo[i][droppedDropped] = true;
  369. break;
  370. }
  371. }
  372. return 1;
  373. }
  374. public GetDrugInfo(playerid)
  375. {
  376. new str[244], Float:Position[3];
  377. GetPlayerPos(playerid, Position[0], Position[1], Position[2]);
  378. for(new i = 1; i < MAX_DROPPED_DRUGS; i++)
  379. {
  380. if(DrugInfo[i][droppedDropped] == false)
  381. continue;
  382. if(IsPlayerInRangeOfPoint(playerid, 3.0, Position[0], Position[1], Position[2]))
  383. {
  384. format(str, sizeof str, "Drug ID: {FFFFFF}%i{33ccff} | Drug Type: {FFFFFF}%s {33ccff}| Drug Grams: {FFFFFF}%i{33ccff} | Placer: {FFFFFF}%s", DrugInfo[i][droppedID], DrugInfo[i][droppedDrugName], DrugInfo[i][droppedGrams], DrugInfo[i][droppedDropper]);
  385. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  386. }
  387. }
  388. return 1;
  389. }
  390. public PickUpDrug(playerid)
  391. {
  392. new str[128], bool:founddrug = false;
  393. for(new i = 1; i < MAX_DROPPED_DRUGS; i++)
  394. {
  395. if(IsPlayerInRangeOfPoint(playerid, 2.0, DrugInfo[i][droppedPosition][0], DrugInfo[i][droppedPosition][1], DrugInfo[i][droppedPosition][2]))
  396. {
  397. if(DrugInfo[i][droppedDrug] == DRUG_CANNABIS)
  398. {
  399. format(str, sizeof(str), "You've picked up %i.0g of cannabis!", DrugInfo[i][droppedGrams]);
  400. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  401. PlayerInfo[playerid][pCannabis] += DrugInfo[i][droppedGrams];
  402. }
  403. else if(DrugInfo[i][droppedDrug] == DRUG_COCAINE)
  404. {
  405. format(str, sizeof(str), "You've picked up %i.0g of cocaine!", DrugInfo[i][droppedGrams]);
  406. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  407. PlayerInfo[playerid][pCocaine] += DrugInfo[i][droppedGrams];
  408. }
  409. else if(DrugInfo[i][droppedDrug] == DRUG_METH)
  410. {
  411. format(str, sizeof(str), "You've picked up %i.0g of meth!", DrugInfo[i][droppedGrams]);
  412. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  413. PlayerInfo[playerid][pMeth] += DrugInfo[i][droppedGrams];
  414. }
  415. else if(DrugInfo[i][droppedDrug] == DRUG_XANAX)
  416. {
  417. format(str, sizeof(str), "You've picked up %i.0 tabs of xanax!", DrugInfo[i][droppedGrams]);
  418. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  419. PlayerInfo[playerid][pXanax] += DrugInfo[i][droppedGrams];
  420. }
  421. else if(DrugInfo[i][droppedDrug] == DRUG_PROMETHAZINE)
  422. {
  423. format(str, sizeof(str), "You've picked up %i.0 tabs of promethazine!", DrugInfo[i][droppedGrams]);
  424. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  425. PlayerInfo[playerid][pPromethazine] += DrugInfo[i][droppedGrams];
  426. }
  427. else if(DrugInfo[i][droppedDrug] == DRUG_CODEINE)
  428. {
  429. format(str, sizeof(str), "You've picked up %i.0 tabs of codeine!", DrugInfo[i][droppedGrams]);
  430. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  431. PlayerInfo[playerid][pCodeine] += DrugInfo[i][droppedGrams];
  432. }
  433. else if(DrugInfo[i][droppedDrug] == DRUG_LEAN)
  434. {
  435. format(str, sizeof(str), "You've picked up %i.0 tabs of lean!", DrugInfo[i][droppedGrams]);
  436. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  437. PlayerInfo[playerid][pLean] += DrugInfo[i][droppedGrams];
  438. }
  439. DestroyDynamicObjectEx(DrugInfo[i][droppedObject]);
  440. Streamer_Update(playerid);
  441. DrugInfo[i][droppedPosition][0] = 0;
  442. DrugInfo[i][droppedPosition][1] = 0;
  443. DrugInfo[i][droppedPosition][2] = 0;
  444. DrugInfo[i][droppedMaxGrams] = 0;
  445. DrugInfo[i][droppedGrams] = 0;
  446. DrugInfo[i][droppedDrug] = 0;
  447. DrugInfo[i][droppedDropped] = false;
  448. founddrug = true;
  449. break;
  450. }
  451. }
  452. if(founddrug != true) SendClientMessage(playerid, COLOR_GREY, "You are not by any pickable drugs.");
  453. return 1;
  454. }
  455. CMD:takedrug(playerid, params[])
  456. {
  457. PickUpDrug(playerid);
  458. return 1;
  459. }
  460. public CheckPlayerDrugs(playerid)
  461. {
  462. new str[128];
  463. format(str, sizeof(str), "[ {FFFFFF} ( 1. Cannabis (%i.0g) 2. Cocaine (%i.0g) 3. Meth (%i.0g) 4. Xanax (%d.0 tabs) 5. Promethazine (%d.0) ) {33ccff}]",
  464. PlayerInfo[playerid][pCannabis], PlayerInfo[playerid][pCocaine], PlayerInfo[playerid][pMeth], PlayerInfo[playerid][pXanax], PlayerInfo[playerid][pPromethazine]);
  465. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  466. format(str, sizeof(str), "[ {FFFFFF} ( 6. Codeine (%d.0 fl oz) 7. Lean (%d.0 fl oz) ) {33ccff}]",
  467. PlayerInfo[playerid][pCodeine], PlayerInfo[playerid][pLean]);
  468. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  469. return 1;
  470. }
  471. public GiveDrug(playerid, targetid, drugid, amount)
  472. {
  473. if(targetid == playerid) return SendClientMessage(playerid, COLOR_RED, "ERROR: {FFFFFF}You can not give drugs to yourself.");
  474. if(!IsPlayerConnected(targetid) || targetid == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_RED, "ERROR: {FFFFFF}Invalid player ID.");
  475. new Float:Position[3];
  476. GetPlayerPos(targetid, Position[0], Position[1], Position[2]);
  477. if(!IsPlayerInRangeOfPoint(playerid, 5.0, Position[0], Position[1], Position[2]))
  478. return SendClientMessage(playerid, COLOR_RED, "ERROR: {FFFFFF}You're not near the specified person!");
  479. if(drugid == DRUG_CANNABIS)
  480. {
  481. if(amount > PlayerInfo[playerid][pCannabis] || amount < 1)
  482. return SendClientMessage(playerid, COLOR_RED, "ERROR: {FFFFFF}You don't have enough cannabis!");
  483. }
  484. else if(drugid == DRUG_COCAINE)
  485. {
  486. if(amount > PlayerInfo[playerid][pCocaine] || amount < 1)
  487. return SendClientMessage(playerid, COLOR_RED, "ERROR: {FFFFFF}You don't have enough cocaine!");
  488. }
  489. else if(drugid == DRUG_METH)
  490. {
  491. if(amount > PlayerInfo[playerid][pMeth] || amount < 1)
  492. return SendClientMessage(playerid, COLOR_RED, "ERROR: {FFFFFF}You don't have enough meth!");
  493. }
  494. else if(drugid == DRUG_XANAX)
  495. {
  496. if(amount > PlayerInfo[playerid][pXanax] || amount < 1)
  497. return SendClientMessage(playerid, COLOR_RED, "ERROR: {FFFFFF}You don't have enough xanax!");
  498. }
  499. else if(drugid == DRUG_PROMETHAZINE)
  500. {
  501. if(amount > PlayerInfo[playerid][pPromethazine] || amount < 1)
  502. return SendClientMessage(playerid, COLOR_RED, "ERROR: {FFFFFF}You don't have enough promethazine!");
  503. }
  504. else if(drugid == DRUG_CODEINE)
  505. {
  506. if(amount > PlayerInfo[playerid][pCodeine] || amount < 1)
  507. return SendClientMessage(playerid, COLOR_RED, "ERROR: {FFFFFF}You don't have enough codeine!");
  508. }
  509. else if(drugid == DRUG_LEAN)
  510. {
  511. if(amount > PlayerInfo[playerid][pLean] || amount < 1)
  512. return SendClientMessage(playerid, COLOR_RED, "ERROR: {FFFFFF}You don't have enough lean!");
  513. }
  514. OfferDrug(playerid, targetid, drugid, amount);
  515. return 1;
  516. }
  517. public OfferDrug(playerid, target, drugid, amount)
  518. {
  519. new str[128];
  520. if(drugid == DRUG_CANNABIS)
  521. {
  522. format(str, sizeof str, "%s has offered you %i.0 grams of cannabis (/acceptdrug).", PlayerICName(playerid), amount);
  523. SendClientMessage(target, COLOR_LIGHTBLUE, str);
  524. format(str, sizeof str, "You have offered %s %i.0 grams of cannabis.", PlayerICName(target), amount);
  525. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  526. }
  527. else if(drugid == DRUG_COCAINE)
  528. {
  529. format(str, sizeof str, "%s has offered you %i.0 grams of cocaine (/acceptdrug).", PlayerICName(playerid), amount);
  530. SendClientMessage(target, COLOR_LIGHTBLUE, str);
  531. format(str, sizeof str, "You have offered %s %i.0 grams of cocaine.", PlayerICName(target), amount);
  532. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  533. }
  534. else if(drugid == DRUG_METH)
  535. {
  536. format(str, sizeof str, "%s has offered you %i.0 grams of meth (/acceptdrug).", PlayerICName(playerid), amount);
  537. SendClientMessage(target, COLOR_LIGHTBLUE, str);
  538. format(str, sizeof str, "You have offered %s %i.0 grams of meth.", PlayerICName(target), amount);
  539. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  540. }
  541. else if(drugid == DRUG_XANAX)
  542. {
  543. format(str, sizeof str, "%s has offered you %i.0 tabs of xanax (/acceptdrug).", PlayerICName(playerid), amount);
  544. SendClientMessage(target, COLOR_LIGHTBLUE, str);
  545. format(str, sizeof str, "You have offered %s %i.0 tabs of xanax.", PlayerICName(target), amount);
  546. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  547. }
  548. else if(drugid == DRUG_PROMETHAZINE)
  549. {
  550. format(str, sizeof str, "%s has offered you %i.0 tabs of promethazine (/acceptdrug).", PlayerICName(playerid), amount);
  551. SendClientMessage(target, COLOR_LIGHTBLUE, str);
  552. format(str, sizeof str, "You have offered %s %i.0 tabs of promethazine.", PlayerICName(target), amount);
  553. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  554. }
  555. else if(drugid == DRUG_CODEINE)
  556. {
  557. format(str, sizeof str, "%s has offered you %i.0 tabs of codeine (/acceptdrug).", PlayerICName(playerid), amount);
  558. SendClientMessage(target, COLOR_LIGHTBLUE, str);
  559. format(str, sizeof str, "You have offered %s %i.0 tabs of codeine.", PlayerICName(target), amount);
  560. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  561. }
  562. else if(drugid == DRUG_LEAN)
  563. {
  564. format(str, sizeof str, "%s has offered you %i.0 tabs of lean (/acceptdrug).", PlayerICName(playerid), amount);
  565. SendClientMessage(target, COLOR_LIGHTBLUE, str);
  566. format(str, sizeof str, "You have offered %s %i.0 tabs of lean.", PlayerICName(target), amount);
  567. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  568. }
  569. drugofferplayer[target] = playerid;
  570. drugofferid[target] = drugid;
  571. drugofferamount[target] = amount;
  572. return 1;
  573. }
  574. /*
  575. Commands
  576. Notes: dcmd_ = Prefix for drug commands
  577. */
  578. CMD:acceptdrug(playerid, params[])
  579. {
  580. new target = drugofferplayer[playerid];
  581. if(target == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_RED, "ERROR: {FFFFFF}You were not offered drugs.");
  582. if(!IsPlayerInRangeOfPlayer(5, playerid, target)) return SendClientMessage(playerid, COLOR_RED, "ERROR: {FFFFFF}That player is not near you.");
  583. new drugid = drugofferid[playerid];
  584. new amount = drugofferamount[playerid];
  585. if(drugid == DRUG_CANNABIS)
  586. {
  587. if(amount > PlayerInfo[target][pCannabis] || amount < 1)
  588. return SendClientMessage(playerid, COLOR_RED, "ERROR: {FFFFFF}That player no longer has the specified amount of Cannabis!");
  589. }
  590. else if(drugid == DRUG_COCAINE)
  591. {
  592. if(amount > PlayerInfo[target][pCocaine] || amount < 1)
  593. return SendClientMessage(playerid, COLOR_RED, "ERROR: {FFFFFF}That player no longer has the specified amount of Cocaine!");
  594. }
  595. else if(drugid == DRUG_METH)
  596. {
  597. if(amount > PlayerInfo[target][pMeth] || amount < 1)
  598. return SendClientMessage(playerid, COLOR_RED, "ERROR: {FFFFFF}That player no longer has the specified amount of Meth!");
  599. }
  600. else if(drugid == DRUG_XANAX)
  601. {
  602. if(amount > PlayerInfo[target][pXanax] || amount < 1)
  603. return SendClientMessage(playerid, COLOR_RED, "ERROR: {FFFFFF}That player no longer has the specified amount of Xanax!");
  604. }
  605. else if(drugid == DRUG_PROMETHAZINE)
  606. {
  607. if(amount > PlayerInfo[target][pPromethazine] || amount < 1)
  608. return SendClientMessage(playerid, COLOR_RED, "ERROR: {FFFFFF}That player no longer has the specified amount of promethazine!");
  609. }
  610. else if(drugid == DRUG_CODEINE)
  611. {
  612. if(amount > PlayerInfo[target][pCodeine] || amount < 1)
  613. return SendClientMessage(playerid, COLOR_RED, "ERROR: {FFFFFF}That player no longer has the specified amount of codeine!");
  614. }
  615. else if(drugid == DRUG_LEAN)
  616. {
  617. if(amount > PlayerInfo[target][pLean] || amount < 1)
  618. return SendClientMessage(playerid, COLOR_RED, "ERROR: {FFFFFF}That player no longer has the specified amount of lean!");
  619. }
  620. new str[128];
  621. if(drugid == DRUG_CANNABIS)
  622. {
  623. format(str, sizeof str, "%s has given you %i.0 grams of cannabis.", PlayerICName(target), amount);
  624. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  625. format(str, sizeof str, "You have given %s %i.0 grams of cannabis.", PlayerICName(playerid), amount);
  626. SendClientMessage(target, COLOR_LIGHTBLUE, str);
  627. PlayerInfo[playerid][pCannabis] += amount;
  628. PlayerInfo[target][pCannabis] -= amount;
  629. }
  630. else if(drugid == DRUG_COCAINE)
  631. {
  632. format(str, sizeof str, "%s has given you %i.0 grams of cocaine.", PlayerICName(target), amount);
  633. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  634. format(str, sizeof str, "You have given %s %i.0 grams of cocaine.", PlayerICName(playerid), amount);
  635. SendClientMessage(target, COLOR_LIGHTBLUE, str);
  636. PlayerInfo[playerid][pCocaine] += amount;
  637. PlayerInfo[target][pCocaine] -= amount;
  638. }
  639. else if(drugid == DRUG_METH)
  640. {
  641. format(str, sizeof str, "%s has given you %i.0 grams of meth.", PlayerICName(target), amount);
  642. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  643. format(str, sizeof str, "You have given %s %i.0 grams of meth.", PlayerICName(playerid), amount);
  644. SendClientMessage(target, COLOR_LIGHTBLUE, str);
  645. PlayerInfo[playerid][pMeth] += amount;
  646. PlayerInfo[target][pMeth] -= amount;
  647. }
  648. else if(drugid == DRUG_XANAX)
  649. {
  650. format(str, sizeof str, "%s has given you %i.0 tabs of xanax.", PlayerICName(target), amount);
  651. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  652. format(str, sizeof str, "You have given %s %i.0 tabs of xanax.", PlayerICName(playerid), amount);
  653. SendClientMessage(target, COLOR_LIGHTBLUE, str);
  654. PlayerInfo[playerid][pXanax] += amount;
  655. PlayerInfo[target][pXanax] -= amount;
  656. }
  657. else if(drugid == DRUG_PROMETHAZINE)
  658. {
  659. format(str, sizeof str, "%s has given you %i.0 FL OZ of promethazine.", PlayerICName(target), amount);
  660. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  661. format(str, sizeof str, "You have given %s %i.0 FL OZ of promethazine.", PlayerICName(playerid), amount);
  662. SendClientMessage(target, COLOR_LIGHTBLUE, str);
  663. PlayerInfo[playerid][pPromethazine] += amount;
  664. PlayerInfo[target][pPromethazine] -= amount;
  665. }
  666. else if(drugid == DRUG_CODEINE)
  667. {
  668. format(str, sizeof str, "%s has given you %i.0 FL OZ of codeine.", PlayerICName(target), amount);
  669. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  670. format(str, sizeof str, "You have given %s %i.0 FL OZ of codeine.", PlayerICName(playerid), amount);
  671. SendClientMessage(target, COLOR_LIGHTBLUE, str);
  672. PlayerInfo[playerid][pCodeine] += amount;
  673. PlayerInfo[target][pCodeine] -= amount;
  674. }
  675. else if(drugid == DRUG_LEAN)
  676. {
  677. format(str, sizeof str, "%s has given you %i.0 FL OZ of lean.", PlayerICName(target), amount);
  678. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  679. format(str, sizeof str, "You have given %s %i.0 FL OZ of lean.", PlayerICName(playerid), amount);
  680. SendClientMessage(target, COLOR_LIGHTBLUE, str);
  681. PlayerInfo[playerid][pLean] += amount;
  682. PlayerInfo[target][pLean] -= amount;
  683. }
  684. drugofferplayer[playerid] = INVALID_PLAYER_ID;
  685. drugofferamount[playerid] = 0;
  686. drugofferid[playerid] = 0;
  687. return 1;
  688. }
  689. CMD:usedrug(playerid, params[])
  690. {
  691. if(isnull(params))
  692. return SendClientMessage(playerid, COLOR_LIGHTBLUE, "USAGE: {FFFFFF}/usedrug [drug] (/drugs)");
  693. if(strcmp(params, "Cannabis", true) == 0)
  694. {
  695. UseDrug(playerid, DRUG_CANNABIS);
  696. }
  697. else if(strcmp(params, "Cocaine", true) == 0)
  698. {
  699. UseDrug(playerid, DRUG_COCAINE);
  700. }
  701. else if(strcmp(params, "Meth", true) == 0)
  702. {
  703. UseDrug(playerid, DRUG_METH);
  704. }
  705. else if(strcmp(params, "Xanax", true) == 0)
  706. {
  707. UseDrug(playerid, DRUG_XANAX);
  708. }
  709. else if(strcmp(params, "Promethazine", true) == 0)
  710. {
  711. UseDrug(playerid, DRUG_PROMETHAZINE);
  712. }
  713. else if(strcmp(params, "Codeine", true) == 0)
  714. {
  715. UseDrug(playerid, DRUG_CODEINE);
  716. }
  717. else if(strcmp(params, "Lean", true) == 0)
  718. {
  719. UseDrug(playerid, DRUG_LEAN);
  720. }
  721. return 1;
  722. }
  723. CMD:givedrug(playerid, params[])
  724. {
  725. new targetid, drug[24], amount;
  726. if(sscanf(params, "us[24]i", targetid, drug, amount))
  727. {
  728. SendClientMessage(playerid, COLOR_LIGHTBLUE, "USAGE: {FFFFFF}/givedrug [ID/PartOfName] [Drug] [Amount]");
  729. SendClientMessage(playerid, COLOR_GREY, "Avaliable drugs: cannabis, cocaine, meth, xanax, promethazine, codeine, lean");
  730. }
  731. if(strcmp(drug, "cannabis", true) == 0)
  732. {
  733. GiveDrug(playerid, targetid, DRUG_CANNABIS, amount);
  734. }
  735. else if(strcmp(drug, "cocaine", true) == 0)
  736. {
  737. GiveDrug(playerid, targetid, DRUG_COCAINE, amount);
  738. }
  739. else if(strcmp(drug, "meth", true) == 0)
  740. {
  741. GiveDrug(playerid, targetid, DRUG_METH, amount);
  742. }
  743. else if(strcmp(drug, "Xanax", true) == 0)
  744. {
  745. GiveDrug(playerid, targetid, DRUG_XANAX, amount);
  746. }
  747. else if(strcmp(drug, "promethazine", true) == 0)
  748. {
  749. GiveDrug(playerid, targetid, DRUG_PROMETHAZINE, amount);
  750. }
  751. else if(strcmp(drug, "codeine", true) == 0)
  752. {
  753. GiveDrug(playerid, targetid, DRUG_CODEINE, amount);
  754. }
  755. else if(strcmp(drug, "lean", true) == 0)
  756. {
  757. GiveDrug(playerid, targetid, DRUG_LEAN, amount);
  758. }
  759. return 1;
  760. }
  761. CMD:agivedrugs(playerid, params[])
  762. {
  763. if(PlayerInfo[playerid][pAdmin] < 99998)
  764. return SendClientMessage(playerid, COLOR_RED, "Error:{FFFFFF} You're not authorized to use this command.");
  765. new TargetPlayer, DrugName[24], amount;
  766. if(sscanf(params, "us[24]i", TargetPlayer, DrugName, amount))
  767. return SendClientMessage(playerid, COLOR_LIGHTBLUE, "USAGE: {FFFFFF}/agivedrugs [PlayerID/Part of Name] [Drug Name] [Amount]");
  768. if(strcmp(DrugName, "cannabis", true) == 0)
  769. {
  770. new GiveDrugsStr[64];
  771. format(GiveDrugsStr, sizeof GiveDrugsStr, "Admin %s has set your cannabis to %i.", PlayerOOCName(playerid), amount);
  772. SendClientMessage(TargetPlayer, COLOR_LIGHTBLUE, GiveDrugsStr);
  773. format(GiveDrugsStr, sizeof GiveDrugsStr, "You've set %s's cannabis to %i.", PlayerOOCName(TargetPlayer), amount);
  774. SendClientMessage(playerid, COLOR_LIGHTBLUE, GiveDrugsStr);
  775. PlayerInfo[TargetPlayer][pCannabis] = amount;
  776. }
  777. else if(strcmp(DrugName, "cocaine", true) == 0)
  778. {
  779. new GiveDrugsStr[64];
  780. format(GiveDrugsStr, sizeof GiveDrugsStr, "Admin %s has set your cocaine to %i.", PlayerOOCName(playerid), amount);
  781. SendClientMessage(TargetPlayer, COLOR_LIGHTBLUE, GiveDrugsStr);
  782. format(GiveDrugsStr, sizeof GiveDrugsStr, "You've set %s's cocaine to %i.", PlayerOOCName(TargetPlayer), amount);
  783. SendClientMessage(playerid, COLOR_LIGHTBLUE, GiveDrugsStr);
  784. PlayerInfo[TargetPlayer][pCocaine] = amount;
  785. }
  786. else if(strcmp(DrugName, "meth", true) == 0)
  787. {
  788. new GiveDrugsStr[64];
  789. format(GiveDrugsStr, sizeof GiveDrugsStr, "Admin %s has set your meth to %i.", PlayerOOCName(playerid), amount);
  790. SendClientMessage(TargetPlayer, COLOR_LIGHTBLUE, GiveDrugsStr);
  791. format(GiveDrugsStr, sizeof GiveDrugsStr, "You've set %s's meth to %i.", PlayerOOCName(TargetPlayer), amount);
  792. SendClientMessage(playerid, COLOR_LIGHTBLUE, GiveDrugsStr);
  793. PlayerInfo[TargetPlayer][pMeth] = amount;
  794. }
  795. else if(strcmp(DrugName, "xanax", true) == 0)
  796. {
  797. new GiveDrugsStr[64];
  798. format(GiveDrugsStr, sizeof GiveDrugsStr, "Admin %s has set your xanax to %i.", PlayerOOCName(playerid), amount);
  799. SendClientMessage(TargetPlayer, COLOR_LIGHTBLUE, GiveDrugsStr);
  800. format(GiveDrugsStr, sizeof GiveDrugsStr, "You've set %s's xanax to %i.", PlayerOOCName(TargetPlayer), amount);
  801. SendClientMessage(playerid, COLOR_LIGHTBLUE, GiveDrugsStr);
  802. PlayerInfo[TargetPlayer][pXanax] = amount;
  803. }
  804. else if(strcmp(DrugName, "promethazine", true) == 0)
  805. {
  806. new GiveDrugsStr[64];
  807. format(GiveDrugsStr, sizeof GiveDrugsStr, "Admin %s has set your promethazine to %i.", PlayerOOCName(playerid), amount);
  808. SendClientMessage(TargetPlayer, COLOR_LIGHTBLUE, GiveDrugsStr);
  809. format(GiveDrugsStr, sizeof GiveDrugsStr, "You've set %s's promethazine to %i.", PlayerOOCName(TargetPlayer), amount);
  810. SendClientMessage(playerid, COLOR_LIGHTBLUE, GiveDrugsStr);
  811. PlayerInfo[TargetPlayer][pPromethazine] = amount;
  812. }
  813. else if(strcmp(DrugName, "codeine", true) == 0)
  814. {
  815. new GiveDrugsStr[64];
  816. format(GiveDrugsStr, sizeof GiveDrugsStr, "Admin %s has set your codeine to %i.", PlayerOOCName(playerid), amount);
  817. SendClientMessage(TargetPlayer, COLOR_LIGHTBLUE, GiveDrugsStr);
  818. format(GiveDrugsStr, sizeof GiveDrugsStr, "You've set %s's codeine to %i.", PlayerOOCName(TargetPlayer), amount);
  819. SendClientMessage(playerid, COLOR_LIGHTBLUE, GiveDrugsStr);
  820. PlayerInfo[TargetPlayer][pCodeine] = amount;
  821. }
  822. else if(strcmp(DrugName, "lean", true) == 0)
  823. {
  824. new GiveDrugsStr[64];
  825. format(GiveDrugsStr, sizeof GiveDrugsStr, "Admin %s has set your lean to %i.", PlayerOOCName(playerid), amount);
  826. SendClientMessage(TargetPlayer, COLOR_LIGHTBLUE, GiveDrugsStr);
  827. format(GiveDrugsStr, sizeof GiveDrugsStr, "You've set %s's lean to %i.", PlayerOOCName(TargetPlayer), amount);
  828. SendClientMessage(playerid, COLOR_LIGHTBLUE, GiveDrugsStr);
  829. PlayerInfo[TargetPlayer][pLean] = amount;
  830. }
  831. return 1;
  832. }
  833. CMD:dropdrug(playerid, params[])
  834. {
  835. new drug[14], amount, dobject[50];
  836. if(sscanf(params, "s[24]is[24]", drug, amount, dobject))
  837. {
  838. SendClientMessage(playerid, COLOR_LIGHTBLUE, "USAGE: {FFFFFF}/dropdrug [drug] [amount (grams)] [Shoe Box / Box / Duffle Bag]");
  839. SendClientMessage(playerid, COLOR_GREY, "Avaliable Choices: cannabis, cocaine, meth, xanax, promethazine, codeine, lean");
  840. }
  841. new Float:DropDrugPos[3];
  842. GetPlayerPos(playerid, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  843. if(strcmp(drug, "cannabis", true) == 0)
  844. {
  845. if(amount > PlayerInfo[playerid][pCannabis] || amount < 1)
  846. return SendClientMessage(playerid, COLOR_LIGHTBLUE, "ERROR: {FFFFFF}You don't enough cannabis!");
  847. if(strcmp(dobject, "Shoe Box", true) == 0)
  848. {
  849. DropDrug(playerid, DRUG_SHOE_OBJECT, DRUG_CANNABIS, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  850. }
  851. else if(strcmp(dobject, "Box", true) == 0)
  852. {
  853. DropDrug(playerid, DRUG_BOX_OBJECT, DRUG_CANNABIS, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  854. }
  855. else if(strcmp(dobject, "Duffle Bag", true) == 0)
  856. {
  857. DropDrug(playerid, DRUG_DUFFLE_BAG, DRUG_CANNABIS, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  858. }
  859. }
  860. else if(strcmp(drug, "cocaine", true) == 0)
  861. {
  862. if(amount > PlayerInfo[playerid][pCocaine] || amount < 1)
  863. return SendClientMessage(playerid, COLOR_LIGHTBLUE, "ERROR: {FFFFFF}You don't enough cocaine!");
  864. if(strcmp(dobject, "Shoe Box", true) == 0)
  865. {
  866. DropDrug(playerid, DRUG_SHOE_OBJECT, DRUG_COCAINE, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  867. }
  868. else if(strcmp(dobject, "Box", true) == 0)
  869. {
  870. DropDrug(playerid, DRUG_BOX_OBJECT, DRUG_COCAINE, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  871. }
  872. else if(strcmp(dobject, "Duffle Bag", true) == 0)
  873. {
  874. DropDrug(playerid, DRUG_DUFFLE_BAG, DRUG_COCAINE, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  875. }
  876. }
  877. else if(strcmp(drug, "meth", true) == 0)
  878. {
  879. if(amount > PlayerInfo[playerid][pMeth] || amount < 1)
  880. return SendClientMessage(playerid, COLOR_LIGHTBLUE, "ERROR: {FFFFFF}You don't enough meth!");
  881. if(strcmp(dobject, "Shoe Box", true) == 0)
  882. {
  883. DropDrug(playerid, DRUG_SHOE_OBJECT, DRUG_METH, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  884. }
  885. else if(strcmp(dobject, "Box", true) == 0)
  886. {
  887. DropDrug(playerid, DRUG_BOX_OBJECT, DRUG_METH, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  888. }
  889. else if(strcmp(dobject, "Duffle Bag", true) == 0)
  890. {
  891. DropDrug(playerid, DRUG_DUFFLE_BAG, DRUG_METH, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  892. }
  893. }
  894. else if(strcmp(drug, "xanax", true) == 0)
  895. {
  896. if(amount > PlayerInfo[playerid][pXanax] || amount < 1)
  897. return SendClientMessage(playerid, COLOR_LIGHTBLUE, "ERROR: {FFFFFF}You don't enough xanax!");
  898. if(strcmp(dobject, "Shoe Box", true) == 0)
  899. {
  900. DropDrug(playerid, DRUG_SHOE_OBJECT, DRUG_XANAX, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  901. }
  902. else if(strcmp(dobject, "Box", true) == 0)
  903. {
  904. DropDrug(playerid, DRUG_BOX_OBJECT, DRUG_XANAX, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  905. }
  906. else if(strcmp(dobject, "Duffle Bag", true) == 0)
  907. {
  908. DropDrug(playerid, DRUG_DUFFLE_BAG, DRUG_XANAX, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  909. }
  910. }
  911. else if(strcmp(drug, "promethazine", true) == 0)
  912. {
  913. if(amount > PlayerInfo[playerid][pPromethazine] || amount < 1)
  914. return SendClientMessage(playerid, COLOR_LIGHTBLUE, "ERROR: {FFFFFF}You don't enough promethazine!");
  915. if(strcmp(dobject, "Shoe Box", true) == 0)
  916. {
  917. DropDrug(playerid, DRUG_SHOE_OBJECT, DRUG_PROMETHAZINE, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  918. }
  919. else if(strcmp(dobject, "Box", true) == 0)
  920. {
  921. DropDrug(playerid, DRUG_BOX_OBJECT, DRUG_PROMETHAZINE, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  922. }
  923. else if(strcmp(dobject, "Duffle Bag", true) == 0)
  924. {
  925. DropDrug(playerid, DRUG_DUFFLE_BAG, DRUG_PROMETHAZINE, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  926. }
  927. }
  928. else if(strcmp(drug, "codeine", true) == 0)
  929. {
  930. if(amount > PlayerInfo[playerid][pCodeine] || amount < 1)
  931. return SendClientMessage(playerid, COLOR_LIGHTBLUE, "ERROR: {FFFFFF}You don't enough codeine!");
  932. if(strcmp(dobject, "Shoe Box", true) == 0)
  933. {
  934. DropDrug(playerid, DRUG_SHOE_OBJECT, DRUG_CODEINE, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  935. }
  936. else if(strcmp(dobject, "Box", true) == 0)
  937. {
  938. DropDrug(playerid, DRUG_BOX_OBJECT, DRUG_CODEINE, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  939. }
  940. else if(strcmp(dobject, "Duffle Bag", true) == 0)
  941. {
  942. DropDrug(playerid, DRUG_DUFFLE_BAG, DRUG_CODEINE, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  943. }
  944. }
  945. else if(strcmp(drug, "lean", true) == 0)
  946. {
  947. if(amount > PlayerInfo[playerid][pLean] || amount < 1)
  948. return SendClientMessage(playerid, COLOR_LIGHTBLUE, "ERROR: {FFFFFF}You don't enough lean!");
  949. if(strcmp(dobject, "Shoe Box", true) == 0)
  950. {
  951. DropDrug(playerid, DRUG_SHOE_OBJECT, DRUG_LEAN, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  952. }
  953. else if(strcmp(dobject, "Box", true) == 0)
  954. {
  955. DropDrug(playerid, DRUG_BOX_OBJECT, DRUG_LEAN, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  956. }
  957. else if(strcmp(dobject, "Duffle Bag", true) == 0)
  958. {
  959. DropDrug(playerid, DRUG_DUFFLE_BAG, DRUG_LEAN, amount, DropDrugPos[0], DropDrugPos[1], DropDrugPos[2]);
  960. }
  961. }
  962. return 1;
  963. }
  964. CMD:checkdrugs(playerid, params[])
  965. {
  966. new str[128];
  967. for(new i = 1; i < MAX_DROPPED_DRUGS; i++)
  968. {
  969. if(IsPlayerInRangeOfPoint(playerid, 2.0, DrugInfo[i][droppedPosition][0], DrugInfo[i][droppedPosition][1], DrugInfo[i][droppedPosition][2]))
  970. {
  971. format(str, sizeof(str), "[ {FFFFFF}%s: %s ( %i.0g / %i.0g ) {33ccff}]", DrugInfo[i][droppedObjName], DrugInfo[i][droppedDrugName], DrugInfo[i][droppedGrams], DrugInfo[i][droppedMaxGrams]);
  972. SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
  973. break;
  974. }
  975. if(i == MAX_DROPPED_DRUGS)
  976. {
  977. SendClientMessage(playerid, playerid, "ERROR: {FFFFFF}You're not near any dropped drugs!");
  978. }
  979. }
  980. return 1;
  981. }
  982. CMD:listdrugs(playerid, params[])
  983. {
  984. GetDrugInfo(playerid);
  985. return 1;
  986. }
  987. CMD:createdrugs(playerid, params[])
  988. {
  989. if(PlayerInfo[playerid][pAdmin] != 1999999999)
  990. return SendClientMessage(playerid, COLOR_LIGHTBLUE, "ERROR: {FFFFFF}You're not a high enough level admin");
  991. new drugtype[64], amount, dobject;
  992. if(sscanf(params, "s[24]ii", drugtype, amount, dobject))
  993. return SendClientMessage(playerid, COLOR_LIGHTBLUE, "USAGE: {FFFFFF} /createdrugs [Drug] [Amount] [Object]");
  994. if(amount < 1)
  995. return SendClientMessage(playerid, COLOR_LIGHTBLUE, "ERROR: {FFFFFF}You can't go below 0.");
  996. new Float:Position[3];
  997. GetPlayerPos(playerid, Position[0], Position[1], Position[2]);
  998. if(strcmp(drugtype, "cannabis", true) == 0)
  999. {
  1000. DropDrug(playerid, dobject, DRUG_CANNABIS, amount, Position[0], Position[1], Position[2]);
  1001. }
  1002. else if(strcmp(drugtype, "cocaine", true) == 0)
  1003. {
  1004. DropDrug(playerid, dobject, DRUG_COCAINE, amount, Position[0], Position[1], Position[2]);
  1005. }
  1006. else if(strcmp(drugtype, "meth", true) == 0)
  1007. {
  1008. DropDrug(playerid, dobject, DRUG_METH, amount, Position[0], Position[1], Position[2]);
  1009. }
  1010. else if(strcmp(drugtype, "xanax", true) == 0)
  1011. {
  1012. DropDrug(playerid, dobject, DRUG_XANAX, amount, Position[0], Position[1], Position[2]);
  1013. }
  1014. else if(strcmp(drugtype, "lean", true) == 0)
  1015. {
  1016. DropDrug(playerid, dobject, DRUG_LEAN, amount, Position[0], Position[1], Position[2]);
  1017. }
  1018. else if(strcmp(drugtype, "promethazine", true) == 0)
  1019. {
  1020. DropDrug(playerid, dobject, DRUG_PROMETHAZINE, amount, Position[0], Position[1], Position[2]);
  1021. }
  1022. else if(strcmp(drugtype, "codeine", true) == 0)
  1023. {
  1024. DropDrug(playerid, dobject, DRUG_CODEINE, amount, Position[0], Position[1], Position[2]);
  1025. }
  1026. return 1;
  1027. }
  1028. CMD:destroydrugs(playerid, params[])
  1029. {
  1030. if(PlayerInfo[playerid][pAdmin] < 99999) return SendClientMessage(playerid, COLOR_GRAD2, "{FF0000}You're not authorized to use that command.");
  1031. new i;
  1032. if(sscanf(params, "i", i))
  1033. return SendClientMessage(playerid, COLOR_RED, "USAGE: {FFFFFF}/destroydrugs [ID] (/alistdrugs)");
  1034. if(DrugInfo[i][droppedDropped] == false)
  1035. return SendClientMessage(playerid, COLOR_RED, "ERROR: {FFFFFF}This ID isn't dropped.");
  1036. DrugInfo[i][droppedPosition][0] = 0;
  1037. DrugInfo[i][droppedPosition][1] = 0;
  1038. DrugInfo[i][droppedPosition][2] = 0;
  1039. DrugInfo[i][droppedMaxGrams] = 0;
  1040. DrugInfo[i][droppedGrams] = 0;
  1041. DrugInfo[i][droppedDrug] = 0;
  1042. DrugInfo[i][droppedDropped] = false;
  1043. DestroyDynamicObjectEx(DrugInfo[i][droppedObject]);
  1044. new str[128];
  1045. format(str, sizeof str, "AdmWarning{FFFFFF}: %s has deleted drug package ID %i.", PlayerOOCName(playerid), i);
  1046. SendAdminMessage(COLOR_RED, str);
  1047. return 1;
  1048. }
  1049. CMD:drughelp(playerid, params[])
  1050. {
  1051. new hstr[564];
  1052. format(hstr, sizeof(hstr), "{007BD0}Drug Help{B4B5B7}\n", hstr);
  1053. format(hstr, sizeof(hstr), "%s\n{007BD0}/inv{B4B5B7} - List all the drugs in your inventory.", hstr);
  1054. format(hstr, sizeof(hstr), "%s\n{007BD0}/dropdrug{B4B5B7} - Allows you to drop drugs on the floor.", hstr);
  1055. format(hstr, sizeof(hstr), "%s\n{007BD0}/takedrug{B4B5B7} - Picks up nearby drugs off of the floor.", hstr);
  1056. format(hstr, sizeof(hstr), "%s\n{007BD0}/givedrug{B4B5B7} - Gives a drug to a specified player.", hstr);
  1057. format(hstr, sizeof(hstr), "%s\n{007BD0}/usedrug{B4B5B7} - Uses a specific drug.", hstr);
  1058. format(hstr, sizeof(hstr), "%s\n{007BD0}/mixdrug{B4B5B7} - Mixes two drugs together.", hstr);
  1059. ShowPlayerDialog(playerid, DIALOG_UNUSED, DIALOG_STYLE_MSGBOX, "Drugs", hstr, "Ok", "Close");
  1060. return 1;
  1061. }
  1062. CMD:drugs(playerid, params[])
  1063. {
  1064. CheckPlayerDrugs(playerid);
  1065. return 1;
  1066. }
  1067. CMD:mixdrug(playerid, params[])
  1068. {
  1069. new drug1[24], drug2[24];
  1070. if(sscanf(params, "s[24]s[24]ii", drug1, drug2))
  1071. return SendClientMessage(playerid, COLOR_GREY, "USAGE: /mixdrug [drug 1] [drug 2]");
  1072. if(strcmp(drug1, "promethazine", true) == 0 && strcmp(drug2, "codeine", true) == 0)
  1073. {
  1074. MixDrugs(playerid, DRUG_PROMETHAZINE, DRUG_CODEINE, 5, 5);
  1075. } else{
  1076. SendClientMessage(playerid, COLOR_GREY, "Invalid drug mix.");
  1077. }
  1078. return 1;
  1079. }
  1080. Hook:drugs_OnPlayerConnect(playerid)
  1081. {
  1082. drugofferplayer[playerid] = INVALID_PLAYER_ID;
  1083. drugofferamount[playerid] = 0;
  1084. drugofferid[playerid] = 0;
  1085. return 1;
  1086. }
  1087. #include "../gamemodes/inc/drugs/growing.inc"