licenses.pwn 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393
  1. /*
  2. /$$ /$$ /$$$$$$ /$$$$$$$ /$$$$$$$
  3. | $$$ | $$ /$$__ $$ | $$__ $$| $$__ $$
  4. | $$$$| $$| $$ \__/ | $$ \ $$| $$ \ $$
  5. | $$ $$ $$| $$ /$$$$ /$$$$$$| $$$$$$$/| $$$$$$$/
  6. | $$ $$$$| $$|_ $$|______/| $$__ $$| $$____/
  7. | $$\ $$$| $$ \ $$ | $$ \ $$| $$
  8. | $$ \ $$| $$$$$$/ | $$ | $$| $$
  9. |__/ \__/ \______/ |__/ |__/|__/
  10. Licensing System
  11. Next Generation Gaming, LLC
  12. (created by Next Generation Gaming Development Team)
  13. * Copyright (c) 2016, Next Generation Gaming, LLC
  14. *
  15. * All rights reserved.
  16. *
  17. * Redistribution and use in source and binary forms, with or without modification,
  18. * are not permitted in any case.
  19. *
  20. *
  21. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  22. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  23. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  24. * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  25. * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  26. * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  27. * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  28. * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  29. * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  30. * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  31. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  32. */
  33. CMD:getlicense(playerid, params[])
  34. {
  35. if (!IsPlayerInRangeOfPoint(playerid,2.0,366.54, 159.09, 1008.38)) { return 1; }
  36. if (PlayerInfo[playerid][pWantedLevel] > 0) return SendClientMessageEx(playerid, COLOR_LIGHTRED, "You have an outstanding arrest warrant - acquisition of a license is prohibited.");
  37. ShowPlayerDialogEx(playerid, DIALOG_LICENSE_BUY, DIALOG_STYLE_LIST, "Select the type of license you wish to acquire.", "Boating License ($5,000)\r\nPilot License ($25,000)\r\nTaxi License ($35,000)", "Purchase", "Cancel");
  38. return 1;
  39. }
  40. CMD:revokelicense(playerid, params[])
  41. {
  42. if(IsACop(playerid) || (IsAMedic(playerid) && arrGroupData[PlayerInfo[playerid][pMember]][g_iAllegiance] == 2) || IsAGovernment(playerid) || IsAJudge(playerid))
  43. {
  44. new string[128], giveplayerid, type, reason[64], sz_FacInfo[3][64];
  45. if(sscanf(params, "uds[64]", giveplayerid, type, reason))
  46. {
  47. SendClientMessageEx(playerid, COLOR_GREY, "USAGE: /revokelicense [player] [type] [reason]");
  48. SendClientMessageEx(playerid, COLOR_GRAD2, "Types: 1 = Driving, 2 = Boating, 3 = Flying, 4 = Firearm License");
  49. return 1;
  50. }
  51. if (playerid == giveplayerid) return SendClientMessageEx(playerid, COLOR_GRAD2, "You can't revoke your own licenses!");
  52. if((IsPlayerConnected(giveplayerid)) && giveplayerid != INVALID_PLAYER_ID)
  53. {
  54. if(GetPVarInt(playerid, "Injured") != 0) return SendClientMessageEx (playerid, COLOR_GRAD2, "You cannot do this at this time.");
  55. if(!ProxDetectorS(8.0, playerid, giveplayerid)) return SendClientMessageEx (playerid, COLOR_GRAD2, "You aren't near that person!");
  56. switch(type)
  57. {
  58. case 1:
  59. {
  60. if(PlayerInfo[giveplayerid][pCarLic] == 0) return SendClientMessageEx(playerid, COLOR_GRAD2, "This person has no driver's license to revoke.");
  61. GetPlayerGroupInfo(playerid, sz_FacInfo[0], sz_FacInfo[1], sz_FacInfo[2]);
  62. format(string,sizeof(string),"The %s has revoked your driver's license, reason: %s.", sz_FacInfo[2], reason);
  63. SendClientMessageEx(giveplayerid,COLOR_LIGHTBLUE,string);
  64. format(string,sizeof(string),"HQ: %s %s %s has revoked %s' driver's license, reason: %s.", sz_FacInfo[2], sz_FacInfo[0], GetPlayerNameEx(playerid), GetPlayerNameEx(giveplayerid), reason);
  65. SendGroupMessage(GROUP_TYPE_LEA,TEAM_BLUE_COLOR,string);
  66. format(string,sizeof(string),"You have revoked %s' driver's license.",GetPlayerNameEx(giveplayerid));
  67. SendClientMessageEx(playerid,COLOR_WHITE,string);
  68. format(string, sizeof(string), "%s(%d) has taken %s'(%d) driver's license. reason: %s.", GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), GetPlayerNameEx(giveplayerid), GetPlayerSQLId(giveplayerid), reason);
  69. Log("logs/licenses.log", string);
  70. PlayerInfo[giveplayerid][pCarLic] = 0;
  71. return 1;
  72. }
  73. case 2:
  74. {
  75. if(PlayerInfo[giveplayerid][pBoatLic] == 0) return SendClientMessageEx(playerid, COLOR_GRAD2, "This person has no boating license to revoke.");
  76. GetPlayerGroupInfo(playerid, sz_FacInfo[0], sz_FacInfo[1], sz_FacInfo[2]);
  77. format(string,sizeof(string),"The %s has revoked your boater's license, reason: %s.", sz_FacInfo[2], reason);
  78. SendClientMessageEx(giveplayerid,COLOR_LIGHTBLUE,string);
  79. format(string,sizeof(string),"HQ: %s %s %s has revoked %s' boater's license, reason: %s.", sz_FacInfo[2], sz_FacInfo[0], GetPlayerNameEx(playerid), GetPlayerNameEx(giveplayerid), reason);
  80. SendGroupMessage(GROUP_TYPE_LEA,TEAM_BLUE_COLOR,string);
  81. format(string,sizeof(string),"You have revoked %s' boater's license.",GetPlayerNameEx(giveplayerid));
  82. SendClientMessageEx(playerid,COLOR_WHITE,string);
  83. format(string, sizeof(string), "%s(%d) has taken %s'(%d) boater's license. reason: %s.", GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), GetPlayerNameEx(giveplayerid), GetPlayerSQLId(giveplayerid), reason);
  84. Log("logs/licenses.log", string);
  85. PlayerInfo[giveplayerid][pBoatLic] = 0;
  86. return 1;
  87. }
  88. case 3:
  89. {
  90. if(PlayerInfo[giveplayerid][pFlyLic] == 0) return SendClientMessageEx(playerid, COLOR_GRAD2, "This person has no pilot license to revoke.");
  91. GetPlayerGroupInfo(playerid, sz_FacInfo[0], sz_FacInfo[1], sz_FacInfo[2]);
  92. format(string,sizeof(string),"The %s has revoked your pilot's license, reason: %s.", sz_FacInfo[2], reason);
  93. SendClientMessageEx(giveplayerid,COLOR_LIGHTBLUE,string);
  94. format(string,sizeof(string),"HQ: %s %s %s has revoked %s' pilot's license, reason: %s.", sz_FacInfo[2], sz_FacInfo[0], GetPlayerNameEx(playerid), GetPlayerNameEx(giveplayerid), reason);
  95. SendGroupMessage(GROUP_TYPE_LEA,TEAM_BLUE_COLOR,string);
  96. format(string,sizeof(string),"You have revoked %s' pilot's license.",GetPlayerNameEx(giveplayerid));
  97. SendClientMessageEx(playerid,COLOR_WHITE,string);
  98. format(string, sizeof(string), "%s(%d) has taken %s'(%s) pilot's license. reason: %s.", GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), GetPlayerNameEx(giveplayerid), GetPlayerSQLId(giveplayerid), reason);
  99. Log("logs/licenses.log", string);
  100. PlayerInfo[giveplayerid][pFlyLic] = 0;
  101. return 1;
  102. }
  103. case 4:
  104. {
  105. //if((!IsAGovernment(playerid) && PlayerInfo[playerid][pLeader] != 1))) return SendClientMessageEx(playerid, COLOR_GRAD2, "You are not authorized to revoke this license.");
  106. if(PlayerInfo[giveplayerid][pGunLic] == 0) return SendClientMessageEx(playerid, COLOR_GRAD2, "This person has no firearms license to revoke.");
  107. GetPlayerGroupInfo(playerid, sz_FacInfo[0], sz_FacInfo[1], sz_FacInfo[2]);
  108. format(string,sizeof(string),"The %s has revoked your firearm's license, reason: %s.", sz_FacInfo[2], reason);
  109. SendClientMessageEx(giveplayerid,COLOR_LIGHTBLUE,string);
  110. format(string,sizeof(string),"HQ: %s %s %s has revoked %s' firearm's license, reason: %s.", sz_FacInfo[2], sz_FacInfo[0], GetPlayerNameEx(playerid), GetPlayerNameEx(giveplayerid), reason);
  111. SendGroupMessage(GROUP_TYPE_LEA,TEAM_BLUE_COLOR,string);
  112. format(string,sizeof(string),"You have revoked %s' firearm's license.",GetPlayerNameEx(giveplayerid));
  113. SendClientMessageEx(playerid,COLOR_WHITE,string);
  114. format(string, sizeof(string), "%s(%d) has taken %s'(%s) firearm's license. reason: %s.", GetPlayerNameEx(playerid), GetPlayerSQLId(playerid), GetPlayerNameEx(giveplayerid), GetPlayerSQLId(giveplayerid), reason);
  115. Log("logs/licenses.log", string);
  116. PlayerInfo[giveplayerid][pGunLic] = 0;
  117. return 1;
  118. }
  119. }
  120. }
  121. SendClientMessageEx(playerid, COLOR_GRAD2, "Invalid player specified.");
  122. return 1;
  123. }
  124. SendClientMessageEx(playerid, COLOR_GRAD2, "You're not authorised to do this.");
  125. return 1;
  126. }
  127. CMD:givelicense(playerid, params[])
  128. {
  129. if(PlayerInfo[playerid][pAdmin] >= 4 || PlayerInfo[playerid][pASM] >= 1)
  130. {
  131. new string[128], giveplayerid, type;
  132. if(sscanf(params, "ud", giveplayerid, type))
  133. {
  134. SendClientMessageEx(playerid, COLOR_GREY, "USAGE: /givelicense [player] [type]");
  135. SendClientMessageEx(playerid, COLOR_GRAD2, "Types: 1 = Driving, 2 = Boating, 3 = Flying, 4 = Taxi.");
  136. return 1;
  137. }
  138. if(!IsPlayerConnected(giveplayerid))
  139. {
  140. SendClientMessageEx(playerid, COLOR_GRAD2, "Invalid player specified.");
  141. return 1;
  142. }
  143. switch(type)
  144. {
  145. case 1:
  146. {
  147. if(PlayerInfo[giveplayerid][pCarLic] == 1)
  148. {
  149. SendClientMessageEx(playerid, COLOR_GRAD2, "This person already has a driver's license.");
  150. return 1;
  151. }
  152. format(string, sizeof(string), "You have given a driver's license to %s.",GetPlayerNameEx(giveplayerid));
  153. SendClientMessageEx(playerid, COLOR_WHITE, string);
  154. format(string, sizeof(string), "Administrator %s has given you a driver's license.",GetPlayerNameEx(playerid));
  155. SendClientMessageEx(giveplayerid, COLOR_WHITE, string);
  156. format(string, sizeof(string), "Administrator %s has given a driver's license to %s(%d)",GetPlayerNameEx(playerid),GetPlayerNameEx(giveplayerid), GetPlayerSQLId(giveplayerid));
  157. Log("logs/licenses.log", string);
  158. PlayerInfo[giveplayerid][pCarLic] = 1;
  159. return 1;
  160. }
  161. case 2:
  162. {
  163. if(PlayerInfo[giveplayerid][pBoatLic] == 1)
  164. {
  165. SendClientMessageEx(playerid, COLOR_GRAD2, "This person already has a boating license.");
  166. return 1;
  167. }
  168. format(string, sizeof(string), "You have given a boating license to %s.",GetPlayerNameEx(giveplayerid));
  169. SendClientMessageEx(playerid, COLOR_WHITE, string);
  170. format(string, sizeof(string), "Administrator %s has given you a boating license.",GetPlayerNameEx(playerid));
  171. SendClientMessageEx(giveplayerid, COLOR_WHITE, string);
  172. format(string, sizeof(string), "Administrator %s has given a boating license to %s(%d)",GetPlayerNameEx(playerid),GetPlayerNameEx(giveplayerid), GetPlayerSQLId(giveplayerid));
  173. Log("logs/licenses.log", string);
  174. PlayerInfo[giveplayerid][pBoatLic] = 1;
  175. return 1;
  176. }
  177. case 3:
  178. {
  179. if(PlayerInfo[giveplayerid][pFlyLic] == 1)
  180. {
  181. SendClientMessageEx(playerid, COLOR_GRAD2, "This person already has a pilot license.");
  182. return 1;
  183. }
  184. format(string, sizeof(string), "You have given a pilot license to %s.",GetPlayerNameEx(giveplayerid));
  185. SendClientMessageEx(playerid, COLOR_WHITE, string);
  186. format(string, sizeof(string), "Administrator %s has given you a pilot license.",GetPlayerNameEx(playerid));
  187. SendClientMessageEx(giveplayerid, COLOR_WHITE, string);
  188. format(string, sizeof(string), "Administrator %s has given a pilot license to %s(%d)",GetPlayerNameEx(playerid),GetPlayerNameEx(giveplayerid), GetPlayerSQLId(giveplayerid));
  189. Log("logs/licenses.log", string);
  190. PlayerInfo[giveplayerid][pFlyLic] = 1;
  191. return 1;
  192. }
  193. case 4:
  194. {
  195. if(PlayerInfo[giveplayerid][pTaxiLicense] == 1)
  196. {
  197. SendClientMessageEx(playerid, COLOR_GRAD2, "This person already has a taxi license.");
  198. return 1;
  199. }
  200. format(string, sizeof(string), "You have given a taxi license to %s.",GetPlayerNameEx(giveplayerid));
  201. SendClientMessageEx(playerid, COLOR_WHITE, string);
  202. format(string, sizeof(string), "Administrator %s has given you a taxi license.",GetPlayerNameEx(playerid));
  203. SendClientMessageEx(giveplayerid, COLOR_WHITE, string);
  204. format(string, sizeof(string), "Administrator %s has given a taxi license to %s(%d)",GetPlayerNameEx(playerid),GetPlayerNameEx(giveplayerid), GetPlayerSQLId(giveplayerid));
  205. Log("logs/licenses.log", string);
  206. PlayerInfo[giveplayerid][pTaxiLicense] = 1;
  207. return 1;
  208. }
  209. default:
  210. {
  211. SendClientMessageEx(playerid, COLOR_WHITE, "Invalid license type! /givelicense [player] [type]");
  212. SendClientMessageEx(playerid, COLOR_GRAD2, "Types: 1 = Driving, 2 = Boating, 3 = Flying, 4 = Taxi.");
  213. }
  214. }
  215. }
  216. else SendClientMessageEx(playerid, COLOR_GREY, "You're not authorised to use this command.");
  217. return 1;
  218. }
  219. CMD:droplicense(playerid, params[])
  220. {
  221. new string[128], type;
  222. if(sscanf(params, "d", type))
  223. {
  224. SendClientMessageEx(playerid, COLOR_GREY, "USAGE: /droplicense [type]");
  225. SendClientMessageEx(playerid, COLOR_GRAD2, "Types: 1 = Driving, 2 = Boating, 3 = Flying, 4 = Taxi.");
  226. return 1;
  227. }
  228. switch(type)
  229. {
  230. case 1:
  231. {
  232. if(PlayerInfo[playerid][pCarLic] == 0)
  233. {
  234. SendClientMessageEx(playerid, COLOR_GRAD2, "You don't have a driver's license to drop.");
  235. return 1;
  236. }
  237. format(string, sizeof(string), "You have dropped your driver's license.");
  238. SendClientMessageEx(playerid, COLOR_WHITE, string);
  239. PlayerInfo[playerid][pCarLic] = 0;
  240. return 1;
  241. }
  242. case 2:
  243. {
  244. if(PlayerInfo[playerid][pBoatLic] == 0)
  245. {
  246. SendClientMessageEx(playerid, COLOR_GRAD2, "You don't have a boating license to drop.");
  247. return 1;
  248. }
  249. format(string, sizeof(string), "You have dropped your boating license.");
  250. SendClientMessageEx(playerid, COLOR_WHITE, string);
  251. PlayerInfo[playerid][pBoatLic] = 0;
  252. return 1;
  253. }
  254. case 3:
  255. {
  256. if(PlayerInfo[playerid][pFlyLic] == 0)
  257. {
  258. SendClientMessageEx(playerid, COLOR_GRAD2, "You don't have a pilot license to drop.");
  259. return 1;
  260. }
  261. format(string, sizeof(string), "You have dropped your pilot license.");
  262. SendClientMessageEx(playerid, COLOR_WHITE, string);
  263. PlayerInfo[playerid][pFlyLic] = 0;
  264. return 1;
  265. }
  266. case 4:
  267. {
  268. if(PlayerInfo[playerid][pTaxiLicense] == 0)
  269. {
  270. SendClientMessageEx(playerid, COLOR_GRAD2, "You don't have a taxi license to drop.");
  271. return 1;
  272. }
  273. format(string, sizeof(string), "You have dropped your taxi license.");
  274. SendClientMessageEx(playerid, COLOR_WHITE, string);
  275. PlayerInfo[playerid][pTaxiLicense] = 0;
  276. return 1;
  277. }
  278. default:
  279. {
  280. SendClientMessageEx(playerid, COLOR_WHITE, "Invalid license type! /droplicense [type]");
  281. SendClientMessageEx(playerid, COLOR_GRAD2, "Types: 1 = Driving, 2 = Boating, 3 = Flying, 4 = Taxi.");
  282. }
  283. }
  284. return 1;
  285. }
  286. CMD:licenses(playerid, params[])
  287. {
  288. new string[128], text1[20], text2[20], text3[20], text4[20], text5[40];
  289. if(PlayerInfo[playerid][pCarLic]) { text1 = "Acquired"; } else { text1 = "Not acquired"; }
  290. if(PlayerInfo[playerid][pFlyLic]) { text4 = "Acquired"; } else { text4 = "Not acquired"; }
  291. if(PlayerInfo[playerid][pBoatLic]) { text2 = "Acquired"; } else { text2 = "Not acquired"; }
  292. if(PlayerInfo[playerid][pTaxiLicense]) { text3 = "Acquired"; } else { text3 = "Not acquired"; }
  293. if(PlayerInfo[playerid][pGunLic] == 0) {text5 = "Not acquired"; }
  294. else {text5 = date(PlayerInfo[playerid][pGunLic], 1);}
  295. SendClientMessageEx(playerid, COLOR_WHITE, "Your licenses...");
  296. format(string, sizeof(string), "** Driver's license: %s.", text1);
  297. SendClientMessageEx(playerid, COLOR_GREY, string);
  298. format(string, sizeof(string), "** Pilot license: %s.", text4);
  299. SendClientMessageEx(playerid, COLOR_GREY, string);
  300. format(string, sizeof(string), "** Boating license: %s.", text2);
  301. SendClientMessageEx(playerid, COLOR_GREY, string);
  302. format(string, sizeof(string), "** Taxi license: %s.", text3);
  303. SendClientMessageEx(playerid, COLOR_GREY, string);
  304. format(string, sizeof(string), "** SA Firearm license: %s.", text5);
  305. SendClientMessageEx(playerid, COLOR_GREY, string);
  306. return 1;
  307. }
  308. CMD:showid(playerid, params[])
  309. {
  310. return cmd_showlicenses(playerid, params);
  311. }
  312. CMD:showlicenses(playerid, params[])
  313. {
  314. new giveplayerid;
  315. if(sscanf(params, "u", giveplayerid)) return SendClientMessageEx(playerid, COLOR_GREY, "USAGE: /showlicenses [player]");
  316. if(IsPlayerConnected(giveplayerid))
  317. {
  318. if (ProxDetectorS(8.0, playerid, giveplayerid))
  319. {
  320. if(giveplayerid == playerid) { SendClientMessageEx(playerid, COLOR_GREY, "You can't show licenses to yourself - use /licenses for that."); return 1; }
  321. PlayerShowLicenses(playerid, giveplayerid);
  322. }
  323. else
  324. {
  325. SendClientMessageEx(playerid, COLOR_GREY, "That person isn't near you.");
  326. return 1;
  327. }
  328. }
  329. else
  330. {
  331. SendClientMessageEx(playerid, COLOR_GREY, "Invalid player specified.");
  332. return 1;
  333. }
  334. return 1;
  335. }
  336. PlayerShowLicenses(playerid, giveplayerid);
  337. {
  338. new text1[20], text2[20], text3[20], text4[20], text5[40], string[256];
  339. if(PlayerInfo[playerid][pCarLic]) { text1 = "Acquired"; } else { text1 = "Not acquired"; }
  340. if(PlayerInfo[playerid][pFlyLic]) { text4 = "Acquired"; } else { text4 = "Not acquired"; }
  341. if(PlayerInfo[playerid][pBoatLic]) { text2 = "Acquired"; } else { text2 = "Not acquired"; }
  342. if(PlayerInfo[playerid][pTaxiLicense]) { text3 = "Acquired"; } else { text3 = "Not acquired"; }
  343. if(PlayerInfo[playerid][pGunLic] == 0) {text5 = "Not acquired"; }
  344. else {text5 = date(PlayerInfo[playerid][pGunLic], 1);}
  345. switch(PlayerInfo[playerid][pNation])
  346. {
  347. case 0: SendClientMessageEx(giveplayerid, COLOR_WHITE, "** Citizen of San Andreas **");
  348. case 1: SendClientMessageEx(giveplayerid, COLOR_TR, "** Citizen of New Robada **");
  349. default: SendClientMessageEx(giveplayerid, COLOR_TR, "** No citizenship **");
  350. }
  351. format(string, sizeof(string), "Listing %s's licenses...", GetPlayerNameEx(playerid));
  352. SendClientMessageEx(giveplayerid, COLOR_WHITE, string);
  353. format(string, sizeof(string), "Date of Birth: %s", PlayerInfo[playerid][pBirthDate]);
  354. SendClientMessageEx(giveplayerid, COLOR_WHITE, string);
  355. format(string, sizeof(string), "** Driver's license: %s.", text1);
  356. SendClientMessageEx(giveplayerid, COLOR_GREY, string);
  357. format(string, sizeof(string), "** Pilot license: %s.", text4);
  358. SendClientMessageEx(giveplayerid, COLOR_GREY, string);
  359. format(string, sizeof(string), "** Boating license: %s.", text2);
  360. SendClientMessageEx(giveplayerid, COLOR_GREY, string);
  361. format(string, sizeof(string), "** Taxi license: %s.", text3);
  362. SendClientMessageEx(giveplayerid, COLOR_GREY, string);
  363. format(string, sizeof(string), "** SA Firearm license: %s.", text5);
  364. SendClientMessageEx(giveplayerid, COLOR_GREY, string);
  365. format(string, sizeof(string), "* %s has shown their licenses to you.", GetPlayerNameEx(playerid));
  366. SendClientMessageEx(giveplayerid, COLOR_LIGHTBLUE, string);
  367. format(string, sizeof(string), "* You have shown your licenses to %s.", GetPlayerNameEx(giveplayerid));
  368. SendClientMessageEx(playerid, COLOR_LIGHTBLUE, string);
  369. }