SACFD.pwn 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584
  1. //SACFD
  2. CMD:heal(playerid, params[])
  3. {
  4. if(!Logged{playerid}) return true;
  5. if(Faction[playerid] == FACTION_SACFD || Faction[playerid] == FACTION_COP || Faction[playerid] == FACTION_RESEARCH)
  6. {
  7. new playa = -1;
  8. if(sscanf(params, "u", playa)) return SysMsg(playerid,"Use: /heal [ID ou nome do jogador]");
  9. if(InvalidPlayer(playa)) return SysMsg(playerid,"Esse jogador não está conectado.");
  10. if(IsPlayerNPC(playa)) return SysMsg(playerid,"Esse jogador é um NPC.");
  11. if(playa == playerid) return SysMsg(playerid,"Você não pode se curar.");
  12. if(!Dead{playa}) return SysMsg(playerid, "Este jogador não está abatido.");
  13. if(DeathTimer[playa] == 0) return SysMsg(playerid, "O tempo acabou, essa pessoa não resistiu e morreu.");
  14. new injuriescount = 0, injuries[100], namestring[64];
  15. gstr[0] = EOS;
  16. strcat(gstr, "Tipo de lesão\tLocalização\tArma\n");
  17. for(new hit = 0; hit < HitCount[playa]; hit++)
  18. {
  19. if(Injuries[playa][hit][pBodypart] > 0)
  20. {
  21. switch(Injuries[playa][hit][pWeaponID])
  22. {
  23. // Blunt Weapons
  24. case 0,1,2,3,5,6,7,10,11,12,13,14,15,41,42,43,44,45,46:
  25. {
  26. format(injuries, sizeof(injuries), "Traumatismo craniano\t%s\t%s\n", ReturnBodyPartName(Injuries[playa][hit][pBodypart]), GetWeaponNameFromID(Injuries[playa][hit][pWeaponID]));
  27. }
  28. // Stab Weapons
  29. case 4, 8, 9:
  30. {
  31. format(injuries, sizeof(injuries), "Ferida da facada\t%s\t%s\n", ReturnBodyPartName(Injuries[playa][hit][pBodypart]), GetWeaponNameFromID(Injuries[playa][hit][pWeaponID]));
  32. }
  33. // Gunshot Wounds
  34. case 22..34,38:
  35. {
  36. format(injuries, sizeof(injuries), "Ferimento de bala\t%s\t%s\n", ReturnBodyPartName(Injuries[playa][hit][pBodypart]), GetWeaponNameFromID(Injuries[playa][hit][pWeaponID]));
  37. }
  38. // Explosion/Burn
  39. case 16,17,18,35,36,37,39,40,51:
  40. {
  41. format(injuries, sizeof(injuries), "Explosão/Queimadura\t%s\t%s\n", ReturnBodyPartName(Injuries[playa][hit][pBodypart]), GetWeaponNameFromID(Injuries[playa][hit][pWeaponID]));
  42. }
  43. default:
  44. {
  45. format(injuries, sizeof(injuries), "Desconhecido\t%s\t%s\n", ReturnBodyPartName(Injuries[playa][hit][pBodypart]), GetWeaponNameFromID(Injuries[playa][hit][pWeaponID]));
  46. // Unknown wound
  47. }
  48. }
  49. injuriescount ++;
  50. strcat(gstr, injuries);
  51. }
  52. }
  53. format(namestring, sizeof(namestring), "Lesões de %s", NameRP(playa));
  54. if(injuriescount > 0)
  55. {
  56. Healing[playerid] = playa;
  57. Dialog_Show(playerid, HealDialog, DIALOG_STYLE_TABLIST_HEADERS, namestring, gstr, "Fechar", "");
  58. }
  59. else if(injuriescount == 0 && Dead{playa}) RevivePlayer(playa);
  60. else SysMsgF(playerid, "%s não tem quaisquer lesões.", NameRP(playa));
  61. }
  62. else SysMsg(playerid,"Você precisa ser um membro do SACFD.");
  63. return true;
  64. }
  65. CMD:maca(playerid, params[])//maca //retcher
  66. {
  67. if(!Logged{playerid}) return true;
  68. new action[9], playa = -1;
  69. if(sscanf(params, "s[9]U(-1)", action, playa)) return SysMsg(playerid,"Use: /maca [equipar/dropar/pegar/guardar/carregar/descarregar/sair/intoambu]");
  70. new Float:pX,Float:pY,Float:pZ, Float:oX,Float:oY,Float:oZ;
  71. GetPlayerPos(playerid, pX, pY, pZ);
  72. if(strcmp("equipar", action, true) == 0)
  73. {
  74. if(Faction[playerid] != FACTION_SACFD && !IsESU{playerid}) return SysMsg(playerid,"Você precisa ser um membro do SACFD.");
  75. if(FactionRank[playerid] < 2) return SysMsg(playerid,"Você precisa ser o rank 2 para usar isso.");
  76. if(StretcherEquipped[playerid] > 0) return SysMsg(playerid,"Você já tem uma maca.");
  77. if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 416) return SysMsg(playerid,"Você deve estar na parte de trás de uma ambulância para obter uma maca.");
  78. if(GetPlayerVehicleSeat(playerid) != 2 && GetPlayerVehicleSeat(playerid) != 3) return SysMsg(playerid,"Você deve estar na parte de trás de uma ambulância para obter uma maca.");
  79. StretcherEquipped[playerid] = CreateDynamicObject(1997, pX, pY + 1.5, pZ - 1.0, 0.0, 0.0, 100.0);//2146
  80. StretcherHolding[playerid] = 1;
  81. RemovePlayerFromVehicle(playerid);
  82. format(gstr, sizeof(gstr),"* Paramédico %s puxa uma maca para fora da ambulância. *",NameEx(playerid));
  83. ProxDetector(20.0, playerid, gstr, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE);
  84. return true;
  85. }
  86. if(strcmp("dropar", action, true) == 0)
  87. {
  88. new Float:pXb, Float:pYb;
  89. new Float:Ang = GetXYInFrontOfPlayer(playerid, pXb, pYb, 1.7);
  90. if(Faction[playerid] != FACTION_SACFD && !IsESU{playerid}) return SysMsg(playerid,"Você precisa ser um membro do SACFD.");
  91. if(StretcherHolding[playerid] == 0) return SysMsg(playerid,"Você precisa ter uma maca.");
  92. if(StretcherPlayerID[playerid] != -1) return SysMsg(playerid,"Você não pode deixar a maca com alguém sobre ela.");
  93. DestroyDynamicObjectEx(StretcherEquipped[playerid], "StretcherEquipped[playerid] 0");
  94. StretcherEquipped[playerid] = CreateDynamicObject(1997, pXb, pYb, pZ-1.0, 0.0, 0.0, Ang+180);
  95. StretcherHolding[playerid] = 0;
  96. StretcherTimer[playerid] = SetTimerEx("DestroyStretcher", 600000, 0, "ii", playerid, StretcherEquipped[playerid]);
  97. foreach(new p: Player) Streamer_Update(p);
  98. format(gstr, sizeof(gstr),"* Paramédico %s trava as rodas da maca no lugar. *",NameEx(playerid));
  99. ProxDetector(20.0, playerid, gstr, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE);
  100. return true;
  101. }
  102. if(strcmp("pegar", action, true) == 0)
  103. {
  104. GetDynamicObjectPos(StretcherEquipped[playerid],oX,oY,oZ);
  105. new Float:distance = DistanceBetweenPoints(pX,pY,pZ,oX,oY,oZ);
  106. if(Faction[playerid] != FACTION_SACFD && !IsESU{playerid}) return SysMsg(playerid,"Você precisa ser um membro do SACFD.");
  107. if(StretcherEquipped[playerid] == 0) return SysMsg(playerid,"Você precisa ter uma maca.");
  108. if(StretcherPlayerID[playerid] != -1) return SysMsg(playerid,"Você não pode deixar a maca com alguém sobre ela.");
  109. if(StretcherHolding[playerid] == 2) return SysMsg(playerid,"Você já tem uma maca");
  110. if(distance > 5) return SysMsg(playerid,"Você não está perto o suficiente.");
  111. KillTimer(StretcherTimer[playerid]);
  112. StretcherTimer[playerid] = -1;
  113. StretcherHolding[playerid] = 2;
  114. format(gstr, sizeof(gstr),"* Paramédico %s destrava as rodas na maca *",NameEx(playerid));
  115. ProxDetector(20.0, playerid, gstr, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE);
  116. return true;
  117. }
  118. if(strcmp("guardar", action, true) == 0)
  119. {
  120. if(Faction[playerid] != FACTION_SACFD && !IsESU{playerid}) return SysMsg(playerid,"Você precisa ser um membro do SACFD.");
  121. if(FactionRank[playerid] < 2) return SysMsg(playerid,"Você precisa ser rank 2 para usar este comando.");
  122. if(StretcherEquipped[playerid] == 0) return SysMsg(playerid,"Você não tem uma maca para guardar.");
  123. if(StretcherPlayerID[playerid] >= 0) return SysMsg(playerid,"Descarregue a maca antes de guardar.");
  124. new Float:vX, Float:vY, Float:vZ;
  125. for(new v = 1, x = GetVehiclePoolSize(); v <= x; v++)
  126. {
  127. if(GetVehicleModel(v) == 416)
  128. {
  129. GetVehiclePos(v, vX, vY, vZ);
  130. if(IsPlayerInRangeOfPoint(playerid, 10.0, vX, vY, vZ))
  131. {
  132. DestroyDynamicObjectEx(StretcherEquipped[playerid], "StretcherEquipped[playerid] 1");
  133. StretcherEquipped[playerid] = 0;
  134. StretcherHolding[playerid] = 0;
  135. format(gstr, sizeof(gstr),"* Paramédico %s coloca a maca na parte de trás da ambulância. *",NameEx(playerid));
  136. ProxDetector(20.0, playerid, gstr, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE);
  137. return true;
  138. }
  139. }
  140. }
  141. SysMsg(playerid,"Você deve estar perto de uma ambulância para arrumar uma maca.");
  142. return true;
  143. }
  144. if(strcmp("carregar", action, true) == 0)
  145. {
  146. if(Faction[playerid] != FACTION_SACFD && !IsESU{playerid}) return SysMsg(playerid,"Você precisa ser um membro do SACFD.");
  147. if(FactionRank[playerid] < 2) return SysMsg(playerid,"Você precisa ser o rank 2 para usar isso.");
  148. if(StretcherEquipped[playerid] == 0) return SysMsg(playerid,"Você deve ter uma maca para carregar alguém sobre ela.");
  149. if(StretcherPlayerID[playerid] >= 0) return SysMsg(playerid,"Você já tem alguém carregado na maca.");
  150. if(sscanf(params, "s[8]u", action, playa)) return SysMsg(playerid,"Use: /maca carregar [ID ou nome do jogador]");
  151. if(InvalidPlayer(playa)) return SysMsg(playerid,"Esse jogador não está conectado.");
  152. if(IsPlayerNPC(playa)) return SysMsg(playerid,"Esse jogador é um NPC.");
  153. if(playa == playerid) return SysMsg(playerid,"Você não pode fazer isso com você mesmo.");
  154. if(StretcherEquipped[playa] > 0) return SysMsg(playerid,"Você não pode colocar alguém com uma maca em uma maca.");
  155. if(StretcherHolding[playerid] == 0) return SysMsg(playerid, "Você precisa segurar a maca.");
  156. new Float:tX,Float:tY,Float:tZ;
  157. GetPlayerPos(playa,tX,tY,tZ);
  158. if(!IsPlayerInRangeOfPoint(playerid,3.5,tX,tY,tZ)) return SysMsg(playerid,"Você deve estar perto do jogador para colocá-lo em uma maca.");
  159. StretcherPlayerID[playerid] = playa;
  160. OnePlayAnim(playa,"BEACH", "bather", 4.0, 1, 0, 0, 1, -1);
  161. format(gstr, sizeof(gstr),"* Paramédico %s agora está puxando a maca com %s sobre. *",NameEx(playerid),NameRP(StretcherPlayerID[playerid]));
  162. ProxDetector(20.0, playerid, gstr, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE);
  163. format(gstr, sizeof(gstr),"%s agora em sua maca. Você pode tirá-los usando '/maca descarregar'",NameEx(StretcherPlayerID[playerid]));
  164. SendClientMessage(playerid,COLOR_WHITE,gstr);
  165. format(gstr, sizeof(gstr),"%s colocou você na maca. Use '/maca sair' se você não quer estar com isso.",NameEx(playerid));
  166. SendClientMessage(StretcherPlayerID[playerid],COLOR_WHITE,gstr);
  167. return true;
  168. }
  169. if(strcmp("descarregar", action, true) == 0)
  170. {
  171. if(Faction[playerid] != FACTION_SACFD && !IsESU{playerid}) return SysMsg(playerid,"Você precisa ser um membro do SACFD.");
  172. if(FactionRank[playerid] < 2) return SysMsg(playerid,"Você precisa ser o rank 2 para usar isso.");
  173. if(StretcherEquipped[playerid] == 0) return SysMsg(playerid,"You must have a stretcher to load someone on it.");
  174. if(StretcherPlayerID[playerid] == -1) return SysMsg(playerid,"You don't even have someone loaded on the stretcher.");
  175. if(StretcherHolding[playerid] == 0) return SysMsg(playerid, "You need to be holding the stretcher");
  176. new Float:playerpos[4];
  177. TogglePlayerControllable(StretcherPlayerID[playerid], 1);
  178. GetPlayerPos(playerid, playerpos[0], playerpos[1], playerpos[2]);
  179. GetXYInFrontOfPlayer(playerid, playerpos[0], playerpos[1], -2);
  180. SetPlayerPos(StretcherPlayerID[playerid], playerpos[0], playerpos[1], playerpos[2]);
  181. ClearAnimations(StretcherPlayerID[playerid]);
  182. format(gstr, sizeof(gstr),"%s has been removed from the stretcher.",NameEx(StretcherPlayerID[playerid]));
  183. SendClientMessage(playerid,COLOR_WHITE,gstr);
  184. format(gstr, sizeof(gstr),"%s has removed you from their stretcher.",NameEx(playerid));
  185. SendClientMessage(StretcherPlayerID[playerid],COLOR_WHITE,gstr);
  186. StretcherPlayerID[playerid] = -1;
  187. return true;
  188. }
  189. if(strcmp("sair", action, true) == 0)
  190. {
  191. foreach(new i: Player)
  192. {
  193. if(StretcherPlayerID[i] == playerid)
  194. {
  195. new Float:playerpos[4];
  196. TogglePlayerControllable(playerid, 1);
  197. GetPlayerPos(i, playerpos[0], playerpos[1], playerpos[2]);
  198. GetXYInFrontOfPlayer(i, playerpos[0], playerpos[1], 6.0);
  199. SetPlayerPos(playerid, playerpos[0], playerpos[1], playerpos[2]);
  200. ClearAnimations(playerid);
  201. format(gstr, sizeof(gstr),"%s saiu da maca.",NameEx(playerid));
  202. SendClientMessage(i,COLOR_WHITE,gstr);
  203. format(gstr, sizeof(gstr),"Você saiu da maca de %s.",NameEx(i));
  204. SendClientMessage(playerid,COLOR_WHITE,gstr);
  205. StretcherPlayerID[i] = -1;
  206. return true;
  207. }
  208. }
  209. SysMsg(playerid,"Você não está em uma maca tão claramente não pode sair de um.");
  210. return true;
  211. }
  212. if(strcmp("intoambu", action, true) == 0)//observar
  213. {
  214. if(Faction[playerid] != FACTION_SACFD && !IsESU{playerid}) return SysMsg(playerid,"Você precisa ser um membro do SACFD.");
  215. if(FactionRank[playerid] < 2) return SysMsg(playerid,"Você precisa ser o rank 2 para usar isso.");
  216. if(StretcherEquipped[playerid] == 0) return SysMsg(playerid,"Você deve ter uma maca.");
  217. if(StretcherPlayerID[playerid] == -1) return SysMsg(playerid,"Você nem tem alguém carregado na maca.");
  218. new Float:vX, Float:vY, Float:vZ;
  219. for(new v = 1, x = GetVehiclePoolSize(); v <= x; v++)
  220. {
  221. if(GetVehicleModel(v) == 416)
  222. {
  223. GetVehiclePos(v, vX, vY, vZ);
  224. if(IsPlayerInRangeOfPoint(playerid, 10.0, vX, vY, vZ))
  225. {
  226. new seatid = 2;
  227. foreach(new i: Player)
  228. {
  229. if(GetPlayerVehicleID(i) == v)
  230. {
  231. if(GetPlayerVehicleSeat(i) == 2) seatid = 3;
  232. if(GetPlayerVehicleSeat(i) == 3 && seatid == 3) seatid = -1;
  233. }
  234. }
  235. if(seatid == -1) return SysMsg(playerid,"Não há assentos livres na parte de trás desta ambulância.");
  236. PutPlayerInVehicle(StretcherPlayerID[playerid], v, seatid);
  237. TogglePlayerControllable(StretcherPlayerID[playerid], 1);
  238. format(gstr, sizeof(gstr),"* Paramédico %s empurra a maca com %s na parte de trás da ambulância. *",NameEx(playerid),NameRP(StretcherPlayerID[playerid]));
  239. ProxDetector(20.0, playerid, gstr, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE);
  240. DestroyDynamicObjectEx(StretcherEquipped[playerid], "StretcherEquipped[playerid] 2");
  241. StretcherEquipped[playerid] = 0;
  242. StretcherPlayerID[playerid] = -1;
  243. StretcherHolding[playerid] = 0;
  244. return true;
  245. }
  246. }
  247. }
  248. SysMsg(playerid,"Você deve estar perto de uma ambulância, para colocar uma maca dentro.");
  249. return true;
  250. }
  251. return true;
  252. }
  253. CMD:str(playerid, params[]) return cmd_maca(playerid, params);
  254. CMD:acriarfogo(playerid, params[])
  255. {
  256. if(!Logged{playerid}) return true;
  257. if((Faction[playerid] == FACTION_SACFD && FactionRank[playerid] > 8) || IsPlayerAdminLevelOK(playerid, 3))
  258. {
  259. //if(GetPlayerInterior(playerid) > 0) return SysMsg(playerid, "Você não pode criar um incêndio aqui.");
  260. if(isnull(params)) return SysMsg(playerid,"Use: /criarfogo [pequeno/med/grande]");
  261. if(strcmp("pequeno", params, true) == 0)
  262. {
  263. new Float:x, Float:y, Float:z;
  264. GetPlayerPos(playerid, x, y, z);
  265. GetXYInFrontOfPlayer(playerid, x, y, 2.5);
  266. PlaceFire(x, y, z, 1, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid), true);
  267. return true;
  268. }
  269. if(strcmp("med", params, true) == 0)
  270. {
  271. new Float:x, Float:y, Float:z;
  272. GetPlayerPos(playerid, x, y, z);
  273. GetXYInFrontOfPlayer(playerid, x, y, 2.5);
  274. PlaceFire(x, y, z, 2, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid), true);
  275. return true;
  276. }
  277. if(strcmp("grande", params, true) == 0)
  278. {
  279. new Float:x, Float:y, Float:z;
  280. GetPlayerPos(playerid, x, y, z);
  281. GetXYInFrontOfPlayer(playerid, x, y, 2.5);
  282. PlaceFire(x, y, z, 3, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid), true);
  283. return true;
  284. }
  285. }
  286. return true;
  287. }
  288. CMD:criarfogo(playerid, params[])
  289. {
  290. if(!Logged{playerid}) return true;
  291. if((Faction[playerid] == FACTION_SACFD && FactionRank[playerid] > 8) || IsPlayerAdminLevelOK(playerid, 2))
  292. {
  293. //if(GetPlayerInterior(playerid) > 0) return SysMsg(playerid, "Você não pode criar um incêndio aqui.");
  294. if(isnull(params)) return SysMsg(playerid,"Use: /criarfogo [pequeno/med/grande]");
  295. if(strcmp("pequeno", params, true) == 0)
  296. {
  297. new Float:x, Float:y, Float:z;
  298. GetPlayerPos(playerid, x, y, z);
  299. GetXYInFrontOfPlayer(playerid, x, y, 2.5);
  300. PlaceFire(x, y, z, 1, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid), false);
  301. return true;
  302. }
  303. if(strcmp("med", params, true) == 0)
  304. {
  305. new Float:x, Float:y, Float:z;
  306. GetPlayerPos(playerid, x, y, z);
  307. GetXYInFrontOfPlayer(playerid, x, y, 2.5);
  308. PlaceFire(x, y, z, 2, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid), false);
  309. return true;
  310. }
  311. if(strcmp("grande", params, true) == 0)
  312. {
  313. new Float:x, Float:y, Float:z;
  314. GetPlayerPos(playerid, x, y, z);
  315. GetXYInFrontOfPlayer(playerid, x, y, 2.5);
  316. PlaceFire(x, y, z, 3, GetPlayerVirtualWorld(playerid), GetPlayerInterior(playerid), false);
  317. return true;
  318. }
  319. }
  320. return true;
  321. }
  322. CMD:scba(playerid, params[])
  323. {
  324. if(!Logged{playerid}) return true;
  325. if(Faction[playerid] == FACTION_SACFD || (Faction[playerid] == FACTION_COP && IsESU{playerid}))
  326. {
  327. new playerskin = GetPlayerSkin(playerid);
  328. if(Faction[playerid] == FACTION_SACFD && (playerskin != 277 && playerskin != 278 && playerskin != 279)) return SendClientMessage(playerid, COLOR_WHITE, "Você precisa de seu equipamento de bunker em primeiro lugar!");
  329. if(Faction[playerid] == FACTION_COP && IsESU{playerid} && (playerskin != 277 && playerskin != 278 && playerskin != 279)) SetPlayerSkinEx(playerid, 279);
  330. if(scba[playerid] == 0)
  331. {
  332. new index = GetFreePlayerObjectIndex(playerid);
  333. if(index != -1)
  334. {
  335. AttachedObjects[playerid][index][aoModelID] = 1008;
  336. AttachedObjects[playerid][index][aoBone] = 1;
  337. SetPlayerAttachedObject(playerid, index, 19816, 1, -0.012000, -0.187999, 0.000000, -0.499998, -91.499885, 8.499999, 1.162999, 1.238000, 1.291000);
  338. SendClientMessage(playerid, COLOR_WHITE, "Seu SCBA está agora ligado");
  339. OnePlayAnim(playerid,"PARACHUTE","PARA_Land",4,0,0,0,0,0);
  340. scba[playerid] = 1;
  341. }
  342. else return SysMsg(playerid, "Você tem muitos objetos em seu personagem.");
  343. }
  344. else if(scba[playerid] == 1)
  345. {
  346. if(smask[playerid] == 1) return SendClientMessage(playerid, COLOR_WHITE, "Você precisa tirar sua máscara primeiro.");
  347. for(new index = 0; index < 6; index++)
  348. {
  349. if(AttachedObjects[playerid][index][aoModelID] == 1008)
  350. {
  351. AttachedObjects[playerid][index][aoModelID] = 0;
  352. AttachedObjects[playerid][index][aoBone] = 0;
  353. SendClientMessage(playerid, COLOR_WHITE, "Seu SCBA está agora desligado.");
  354. RemovePlayerAttachedObject(playerid, index);
  355. OnePlayAnim(playerid,"PARACHUTE","PARA_Land",4,0,0,0,0,0);
  356. scba[playerid] = 0;
  357. SetPlayerSkinEx(playerid, Clothes[playerid][4]);
  358. return true;
  359. }
  360. }
  361. SendClientMessage(playerid, COLOR_GREY, "Atualmente, você não possui equipamentos SCUBA equipados.");
  362. scba[playerid] = 0;
  363. }
  364. }
  365. else return SysMsg(playerid, "Você precisa ser um membro do SACFD ou ESU para usar esse comando.");
  366. return true;
  367. }
  368. CMD:smask(playerid, params[])
  369. {
  370. if(smask[playerid] == 0)
  371. {
  372. if(scba[playerid] == 0) return SendClientMessage(playerid, COLOR_WHITE, "Você precisa do seu SCBA primeiro!");
  373. new index = GetFreePlayerObjectIndex(playerid);
  374. if(index != -1)
  375. {
  376. OnePlayAnim(playerid,"goggles","goggles_put_on",4,0,0,0,0,0);
  377. AttachedObjects[playerid][index][aoModelID] = 19472;
  378. AttachedObjects[playerid][index][aoBone] = 2;
  379. SetPlayerAttachedObject(playerid,index,19472,2,-0.033000,0.124999,0.002999,-84.900085,-171.599990,2.100000,1.255001,1.124000,1.293001);
  380. SendClientMessage(playerid, COLOR_WHITE, "Sua máscara SCBA está agora ligada");
  381. smask[playerid] = 1;
  382. CanPlayerChoke{playerid} = false;
  383. }
  384. else return SendClientMessage(playerid, COLOR_GREY, "Você tem muitos objetos em seu personagem.");
  385. }
  386. else if(smask[playerid] == 1)
  387. {
  388. for(new index = 0; index < 6; index++)
  389. {
  390. if(AttachedObjects[playerid][index][aoModelID] == 19472)
  391. {
  392. AttachedObjects[playerid][index][aoModelID] = 0;
  393. AttachedObjects[playerid][index][aoBone] = 0;
  394. RemovePlayerAttachedObject(playerid, index);
  395. SendClientMessage(playerid, COLOR_WHITE, "Sua máscara SCBA está agora desligada.");
  396. smask[playerid] = 0;
  397. OnePlayAnim(playerid,"goggles","goggles_put_on",4,0,0,0,0,0);
  398. CanPlayerChoke{playerid} = true;
  399. PlayerChoking{playerid} = false;
  400. return true;
  401. }
  402. }
  403. SendClientMessage(playerid, COLOR_GREY, "Você não possui máscara.");
  404. smask[playerid] = 0;
  405. }
  406. return true;
  407. }
  408. CMD:detox(playerid, params[])
  409. {
  410. if(!Logged{playerid}) return true;
  411. if(Faction[playerid] != FACTION_SACFD) return SysMsg(playerid,"Você precisa ser um membro do SACFD.");
  412. new playa = -1, method[8];
  413. if(sscanf(params, "s[8]u", method, playa)) return SysMsg(playerid,"Use: /detox [alcool/drogas] [ID ou nome do jogador]");
  414. if(InvalidPlayer(playa)) return SysMsg(playerid,"Esse jogador não está conectado.");
  415. if(IsPlayerNPC(playa)) return SysMsg(playerid,"Esse jogador é um NPC.");
  416. if(playa == playerid) return SysMsg(playerid,"Você não pode se desintoxicar.");
  417. new Float:tX,Float:tY,Float:tZ;
  418. GetPlayerPos(playa,tX,tY,tZ);
  419. if(!IsPlayerInRangeOfPoint(playerid,3.5,tX,tY,tZ)) return SysMsg(playerid,"Você deve estar perto do jogador para desintoxicá-los.");
  420. if(strcmp(method, "drogas", true) == 0)
  421. {
  422. if(DrugSpamTimer[playa] == 0) return SysMsg(playerid,"Esta pessoa não parece ter nenhum efeito colateral de drogas.");
  423. DrugSpamTimer[playa] = 0;
  424. SetPlayerWeather(playa, gServerWeather);
  425. DrunkLevel[playerid] = 0;
  426. SetPlayerDrunkLevel(playa, 0);
  427. TextDrawHideForPlayer(playa, WeedEffect);
  428. format(gstr, sizeof(gstr),"* Paramédico %s desintoxica %s usando uma injeção de Narcan. *", NameEx(playerid), NameEx(playa));
  429. ProxDetector(20.0, playerid, gstr, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE);
  430. format(gstr, sizeof(gstr),"Paramédico %s desintoxicado você para remover os efeitos das drogas.",NameEx(playerid));
  431. SendClientMessage(playa,COLOR_RED,gstr);
  432. format(gstr, sizeof(gstr),"Você desintoxicado %s para remover os efeitos das drogas.",NameEx(playa));
  433. SendClientMessage(playerid,COLOR_LIGHTBLUE,gstr);
  434. }
  435. else if(strcmp(method, "alcool", true) == 0)
  436. {
  437. new drunkLevel = GetPlayerDrunkLevel(playa);
  438. if(drunkLevel < 100) return SysMsg(playerid,"Esta pessoa não parece estar sob a influência do álcool.");
  439. if(drunkLevel > 10000) SetPlayerDrunkLevel(playa, 2500);
  440. else SetPlayerDrunkLevel(playa, 0);
  441. format(gstr, sizeof(gstr),"* Paramédico %s desintoxica %s para reduzir os níveis de álcool. *", NameEx(playerid), NameEx(playa));
  442. ProxDetector(20.0, playerid, gstr, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE);
  443. format(gstr, sizeof(gstr),"Paramédico %s te desintoxicou.",NameEx(playerid));
  444. SendClientMessage(playa,COLOR_RED,gstr);
  445. format(gstr, sizeof(gstr),"Você desintoxicou %s.",NameEx(playa));
  446. SendClientMessage(playerid,COLOR_LIGHTBLUE,gstr);
  447. }
  448. return true;
  449. }
  450. CMD:pagermsg(playerid, params[])
  451. {
  452. if(!Logged{playerid}) return true;
  453. if(Faction[playerid] != FACTION_SACFD) return SysMsg(playerid,"Você precisa ser um membro do SACFD.");
  454. if(FactionRank[playerid] < 5) return SysMsg(playerid,"Você precisa ser pelo menos o rank 5.");
  455. if(!PagerStatus{playerid}) return SysMsg(playerid, "Seu pager não está ligado.");
  456. if(isnull(params)) return SysMsg(playerid,"Use: /pagermsg [mensagem]");
  457. foreach(new t: Player)
  458. {
  459. if(Logged{t} && Faction[t] == FACTION_SACFD && PagerStatus{t} && Faction[t] == Faction[playerid])
  460. {
  461. if(t != playerid && ADuty[playerid] == 0)
  462. {
  463. format(gstr, sizeof(gstr), "Um pager é ouvido. * BEEP BEEP * ((%s))", NameRP(t));
  464. ProxDetector(20.0,t,gstr, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE);
  465. }
  466. SendClientMessageF(t, COLOR_ORANGE, "[Pager Msg] %s: %s", GetPlayersFirstName(playerid), params);
  467. }
  468. }
  469. return true;
  470. }
  471. CMD:pager(playerid, params[])
  472. {
  473. if(!Logged{playerid}) return true;
  474. if(Faction[playerid] == FACTION_SACFD)
  475. {
  476. if(PagerStatus{playerid})
  477. {
  478. PagerStatus{playerid} = false;
  479. SendClientMessage(playerid,COLOR_GOLD,"Seu pager está desligado agora.");
  480. }
  481. else
  482. {
  483. PagerStatus{playerid} = true;
  484. SendClientMessage(playerid,COLOR_GOLD,"Seu pager está ligado agora.");
  485. }
  486. }
  487. else return SysMsg(playerid,"Você precisa ser um membro do SACFD.");
  488. return true;
  489. }
  490. CMD:resgate(playerid, params[])
  491. {
  492. if(!Logged{playerid}) return true;
  493. if(Faction[playerid] != FACTION_SACFD) return SysMsg(playerid,"Você precisa ser um membro do SACFD.");
  494. new playa = -1;
  495. if(sscanf(params, "u", playa)) return SysMsg(playerid,"Use: /rescue [ID ou nome do jogador]");
  496. if(InvalidPlayer(playa)) return SysMsg(playerid,"Esse jogador não está conectado.");
  497. if(IsPlayerNPC(playa)) return SysMsg(playerid,"Esse jogador é um NPC.");
  498. if(playa == playerid) return SysMsg(playerid,"Você não pode se resgatar.");
  499. if(WantsRescue[playa] == 1) return SysMsg(playerid,"Esse jogador já quer ajuda.");
  500. new Float:tX,Float:tY,Float:tZ;
  501. GetPlayerPos(playa,tX,tY,tZ);
  502. if(!IsPlayerInRangeOfPoint(playerid,3.5,tX,tY,tZ)) return SysMsg(playerid,"Você precisa estar proximo ao jogador para fazer isso.");
  503. WantsRescue[playa] = playerid+500;
  504. format(gstr, sizeof(gstr),"Bombeiro %s quer ajudá-lo. Escreva '/aceitar resgate' se você aceitar.",NameEx(playerid));
  505. SendClientMessage(playa,COLOR_RED,gstr);
  506. format(gstr, sizeof(gstr),"Você enviou um pedido de resgate para %s.",NameEx(playa));
  507. SendClientMessage(playerid,COLOR_LIGHTBLUE,gstr);
  508. return true;
  509. }
  510. CMD:cut(playerid, params[])
  511. {
  512. if(!Logged{playerid}) return true;
  513. if(Faction[playerid] != FACTION_SACFD) return SysMsg(playerid,"Você precisa ser um membro do SACFD.");
  514. new playa = -1;
  515. if(sscanf(params, "u", playa)) return SysMsg(playerid,"Use: /cut [ID ou nome do jogador]");
  516. if(InvalidPlayer(playa)) return SysMsg(playerid,"Esse jogador não está conectado.");
  517. if(IsPlayerNPC(playa)) return SysMsg(playerid,"Esse jogador é um NPC.");
  518. if(playa == playerid) return SysMsg(playerid,"Você não pode se cortar.");
  519. if(WantsRescue[playa] != 1) return SysMsg(playerid,"Esse jogador não quer assistência.");
  520. new vehid = GetPlayerVehicleID(playa);
  521. if(vehid == 0) return SysMsg(playerid,"Esse jogador não está em um veículo.");
  522. if(!VehicleHasWindows(vehid)) return SysMsg(playerid,"Esse jogador não pode ser cortado desse veículo.");
  523. new Float:tX,Float:tY,Float:tZ;
  524. GetPlayerPos(playa,tX,tY,tZ);
  525. if(!IsPlayerInRangeOfPoint(playerid,5.5,tX,tY,tZ)) return SysMsg(playerid,"Você deve estar perto do jogador para curá-los.");
  526. RemovePlayerFromVehicle(playa);
  527. format(gstr, sizeof(gstr),"* Bombeiro %s retira %s fora do %s usando uma grande ferramenta hidráulica. *",NameEx(playerid), NameEx(playa), GetVehicleName(vehid));
  528. ProxDetector(20.0, playerid, gstr, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE, COLOR_EMOTE);
  529. return true;
  530. }