Advertisement
Synchr0

s_utils.inc

Nov 27th, 2012
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 38.34 KB | None | 0 0
  1. /*----------------------------------------------------------------------------*\
  2.                     s_utils - Include
  3. @Descrição:
  4.     Esta include conténs várias funções e macros para simplificar e ajudar a escrever
  5.     códigos mais rápidamente.
  6. @Legal:
  7.     Este código-fonte está sob os termos de licença da Mozilla Public
  8.     License, v. 2.0. Se uma cópia do MPL não for distribuida com este
  9.     arquivo, você pode obter uma em http://mozilla.org/MPL/2.0/
  10.  
  11.     O inicial desenvolvedor deste código é Lucas "Larceny" Godoy.
  12.     Códigos criados pelos iniciais desenvolvedores são Copyright (C) 2012
  13.     Inicial desenvolvedor.
  14.     Todos os direitos reservados.
  15. @Versão:
  16.     1.0 - 02:41 02/09/2011 - linhas: 582
  17.     1.1 - 14:27 27/11/2012 - linhas: 1249
  18. @Change-log:
  19.     1.0:
  20.         Primeira versão.
  21.     1.1:
  22.         Documentação do código, novas funções: GetVehicleDistanceFromVehicle(),
  23.         RemovePlayerSlotWeapon(), GetVehicleDriver(), GetFreeVehicleSeat(),
  24.         IsValidSkin(), IsAValidRPName(), GetPlayerRPName(playerid),
  25.         IsPlayerSpectating() e IsPlayerPassenger(), correções e melhorias.
  26. @Autor:
  27.     Lucas "Larceny" Godoy
  28. @Obrigado-a:
  29.     SA-MP Team -> (c) SA-MP
  30. \*----------------------------------------------------------------------------*/
  31.  
  32. #include <a_samp>
  33.  
  34. #if defined _rgutils_included
  35.     #endinput
  36. #endif
  37.  
  38. #define _rgutils_included
  39.  
  40. #if !defined isnull
  41.     #define isnull(%1) \
  42.                 ((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
  43. #endif
  44.  
  45. #define SetVehicleInterior LinkVehicleToInterior
  46.  
  47. #define INVALID_SEAT_ID -1
  48.  
  49. /*
  50. native SetPlayerPosEx(playerid, Float:x, Float:y, Float:z, Float:a);
  51. native IsPlayerInRangeOfVehicle(playerid, vehicleid, Float: radius);
  52. native GetVehicleDistanceFromVehicle(vehicleid, vtargetid);
  53. native GetPlayerDistanceFromVehicle(playerid, vehicleid);
  54. native GetPlayerDistanceFromPlayer(playerid, targetid);
  55. native TeleportPlayerToVehicle(playerid, vehicleid);
  56. native TeleportPlayerToPlayer(playerid, targetid);
  57. native SendAdminMessage(color, const message[]);
  58. native RemovePlayerSlotWeapon(playerid, slotid);
  59. native SetVehicleInterior(vehicleid, interior);
  60. native GivePlayerWantedLevel(playerid, level);
  61. native RemovePlayerWeapon(playerid, weaponid);
  62. native GetVehicleEngineStatus(vehicleid);
  63. native SetPlayerMoney(playerid, money);
  64. native GetPlayerFacingAnglef(playerid);
  65. native GetFreeVehicleSeat(vehicleid);
  66. native GetPlayerWeaponName(playerid);
  67. native GetVehicleHealthf(vehicleid);
  68. native GetVehicleZAnglef(vehicleid);
  69. native FreezePlayer(playerid, time);
  70. native IsVehicleOccupied(vehicleid);
  71. native IsPlayerPassenger(playerid);
  72. native ClearPlayerScreen(playerid);
  73. native GetVehicleDriver(vehicleid);
  74. native GetPlayerArmourf(playerid);
  75. native GetPlayerHealthf(playerid);
  76. native IsPlayerSwimming(playerid);
  77. native IsVehicleLocked(vehicleid);
  78. native GetVehicleName(vehicleid);
  79. native GetPlayerRPName(playerid);
  80. native UnlockVehicle(vehicleid);
  81. native GetWeaponNamef(weaponid);
  82. native GetPlayerNamef(playerid);
  83. native IsPlayerDriver(playerid);
  84. native GetPlayerIpf(playerid);
  85. native LockVehicle(vehicleid);
  86. native FlipVehicle(vehicleid);
  87. native IsAValidRPName(name);
  88. native IsValidSkin(skinid);
  89. */
  90.  
  91. forward OnPlayerUnfreeze(playerid);
  92.  
  93. /*----------------------------------------------------------------------------*\
  94.     Função:
  95.         - Obter o nome do jogador sem necessidade de uma variável intermediária.
  96.  
  97.     Params:
  98.         - playerid: ID do jogador que obterá o nome.
  99.  
  100.     Retorna:
  101.         - 'desconhecido' caso o id do jogador for inválido.
  102.         - O nome do jogador (string) caso o id for válido.
  103. \*----------------------------------------------------------------------------*/
  104. stock GetPlayerNamef(playerid)
  105. {
  106.     new s_PLAYER_NAME[MAX_PLAYER_NAME];
  107.     GetPlayerName(playerid, s_PLAYER_NAME, MAX_PLAYER_NAME);
  108.     if(isnull(s_PLAYER_NAME)) s_PLAYER_NAME = "desconhecido";
  109.     return s_PLAYER_NAME;
  110. }
  111.  
  112. /*----------------------------------------------------------------------------*\
  113.     Função:
  114.         - Obter o valor da saúde do colete do jogador, sem necessidade de uma
  115.         variável intermediária.
  116.  
  117.     Params:
  118.         - playerid: ID do jogador que obterá a saúde do colete.
  119.  
  120.     Retorna:
  121.         - 0 caso o id do jogador for inválido.
  122.         - A saúde do colete (float) caso o id for válido.
  123. \*----------------------------------------------------------------------------*/
  124. stock Float:GetPlayerArmourf(playerid)
  125. {
  126.     new Float:f_PLAYER_AMOUR;
  127.     GetPlayerArmour(playerid, f_PLAYER_AMOUR);
  128.     return f_PLAYER_AMOUR;
  129. }
  130.  
  131. /*----------------------------------------------------------------------------*\
  132.     Função:
  133.         - Obter o valor da saúde do jogador, sem necessidade de uma
  134.         variável intermediária.
  135.  
  136.     Params:
  137.         - playerid: ID do jogador que obterá a saúde.
  138.  
  139.     Retorna:
  140.         - 0 caso o id do jogador for inválido.
  141.         - A saúde (float) caso o id for válido.
  142. \*----------------------------------------------------------------------------*/
  143. stock Float:GetPlayerHealthf(playerid)
  144. {
  145.     new Float:f_PLAYER_HEALTH;
  146.     GetPlayerHealth(playerid, f_PLAYER_HEALTH);
  147.     return f_PLAYER_HEALTH;
  148. }
  149.  
  150. /*----------------------------------------------------------------------------*\
  151.     Função:
  152.         - Obter o ângulo do jogador, sem necessidade de uma
  153.         variável intermediária.
  154.  
  155.     Params:
  156.         - playerid: ID do jogador que obterá o ângulo.
  157.  
  158.     Retorna:
  159.         - 0 caso o id do jogador for inválido.
  160.         - O ângulo (float) caso o id for válido.
  161. \*----------------------------------------------------------------------------*/
  162. stock Float:GetPlayerFacingAnglef(playerid)
  163. {
  164.     new Float:f_PLAYER_ANGLE;
  165.     GetPlayerFacingAngle(playerid, f_PLAYER_ANGLE);
  166.     return f_PLAYER_ANGLE;
  167. }
  168.  
  169. /*----------------------------------------------------------------------------*\
  170.     Função:
  171.         - Obter o ângulo Z do veículo.
  172.  
  173.     Params:
  174.         - vehicleid: ID do veículo.
  175.  
  176.     Retorna:
  177.         - O ângulo do veículo (float).
  178. \*----------------------------------------------------------------------------*/
  179. stock Float:GetVehicleZAnglef(vehicleid)
  180. {
  181.     new Float:f_VEHICLE_ANGLE;
  182.     GetVehicleZAngle(vehicleid, f_VEHICLE_ANGLE);
  183.     return f_VEHICLE_ANGLE;
  184. }
  185.  
  186. /*----------------------------------------------------------------------------*\
  187.     Função:
  188.         - Verificar se um jogador está de espectador.
  189.  
  190.     Params:
  191.         - playerid: ID do jogador.
  192.  
  193.     Retorna:
  194.         - 1 se o jogador estiver de espectador.
  195.         - 0 se o jogador não estiver.
  196. \*----------------------------------------------------------------------------*/
  197. stock IsPlayerSpectating(playerid) {
  198.     return (GetPlayerState(playerid) == PLAYER_STATE_SPECTATING) ? 1 : 0; }
  199.  
  200. /*----------------------------------------------------------------------------*\
  201.     Função:
  202.         - Verificar se é uma skin válida.
  203.  
  204.     Params:
  205.         - skin: ID da skin.
  206.  
  207.     Retorna:
  208.         - 1 se a skin for válida.
  209.         - 0 se a skin for inválida.
  210. \*----------------------------------------------------------------------------*/
  211. stock IsValidSkin(skinid) {
  212.     return  (skinid != 74) ? 1 : 0; }
  213.  
  214. /*----------------------------------------------------------------------------*\
  215.     Função:
  216.         Retornar se um nome é um nome RolePlay válido.
  217.    
  218.     Param:
  219.         - name: O nome que será checado.
  220.     Retorna:
  221.         - 0 se o nome não possuir underline "_",
  222.         - 1 se o nome é valído,
  223.         - 2 se o nome conter números,
  224.         - 3 se a primeira letra do nome for minúscula,
  225.         - 4 se a primeira letra do sobrenome for minúscula,
  226.         - 5 se o nome tiver mais letras maiúsculas além das iniciais.
  227. (c) Larceny
  228. \*----------------------------------------------------------------------------*/
  229. stock IsAValidRPName(name[])
  230. {
  231.     new ch = name[0], chr;
  232.     if(strfind(name, "_") != -1)
  233.     {
  234.         if(ch >= 'A' && ch <= 'Z')
  235.         {
  236.             if(strfind(name, "0", true) != -1 ||
  237.                 strfind(name, "1", true) != -1 ||
  238.                 strfind(name, "2", true) != -1 ||
  239.                 strfind(name, "3", true) != -1 ||
  240.                 strfind(name, "4", true) != -1 ||
  241.                 strfind(name, "5", true) != -1 ||
  242.                 strfind(name, "6", true) != -1 ||
  243.                 strfind(name, "7", true) != -1 ||
  244.                 strfind(name, "8", true) != -1 ||
  245.                 strfind(name, "9", true) != -1)
  246.             {
  247.                 return 2;
  248.             }
  249.             for(new i=0, j=strlen(name); i < j; i++)
  250.             {
  251.                 if(!strfind(name[i], "_"))
  252.                 {
  253.                     name[++i];
  254.                     chr = i;
  255.                     if(name[i] >= 'A' && name[i] <= 'Z'){} //return 1;
  256.                     else
  257.                     {
  258.                         return 4;
  259.                     }
  260.                 }
  261.                 if(name[i] >= 'A' && name[i] <= 'Z' && i != 0 && chr != i)
  262.                 {
  263.                     return 5;
  264.                 }
  265.                 else continue;
  266.             }
  267.             return 1;
  268.         }
  269.         else
  270.         {
  271.             return 3;
  272.         }
  273.     }
  274.     else
  275.     {
  276.         return 0;
  277.     }
  278. }
  279.  
  280. /*----------------------------------------------------------------------------*\
  281.     Função:
  282.         Retornar se um jogador tem um nome RolePlay válido.
  283.    
  284.     Param:
  285.         - playerid: O ID do jogador.
  286.     Retorna:
  287.         - 0 se o nome não possuir underline "_",
  288.         - 1 se o nome é valído,
  289.         - 2 se o nome conter números,
  290.         - 3 se a primeira letra do nome for minúscula,
  291.         - 4 se a primeira letra do sobrenome for minúscula,
  292.         - 5 se o nome tiver mais letras maiúsculas além das iniciais.
  293. (c) Larceny
  294. \*----------------------------------------------------------------------------*/
  295. stock GetPlayerRPName(playerid)
  296. {
  297.     new name[MAX_PLAYER_NAME];
  298.     GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  299.  
  300.     new ch = name[0], chr;
  301.     if(strfind(name, "_") != -1)
  302.     {
  303.         if(ch >= 'A' && ch <= 'Z')
  304.         {
  305.             if(strfind(name, "0", true) != -1 ||
  306.                 strfind(name, "1", true) != -1 ||
  307.                 strfind(name, "2", true) != -1 ||
  308.                 strfind(name, "3", true) != -1 ||
  309.                 strfind(name, "4", true) != -1 ||
  310.                 strfind(name, "5", true) != -1 ||
  311.                 strfind(name, "6", true) != -1 ||
  312.                 strfind(name, "7", true) != -1 ||
  313.                 strfind(name, "8", true) != -1 ||
  314.                 strfind(name, "9", true) != -1)
  315.             {
  316.                 return 2;
  317.             }
  318.             for(new i=0, j=strlen(name); i < j; i++)
  319.             {
  320.                 if(!strfind(name[i], "_"))
  321.                 {
  322.                     name[++i];
  323.                     chr = i;
  324.                     if(name[i] >= 'A' && name[i] <= 'Z'){} //return 1;
  325.                     else
  326.                     {
  327.                         return 4;
  328.                     }
  329.                 }
  330.                 if(name[i] >= 'A' && name[i] <= 'Z' && i != 0 && chr != i)
  331.                 {
  332.                     return 5;
  333.                 }
  334.                 else continue;
  335.             }
  336.             return 1;
  337.         }
  338.         else
  339.         {
  340.             return 3;
  341.         }
  342.     }
  343.     else
  344.     {
  345.         return 0;
  346.     }
  347. }
  348.  
  349. /*----------------------------------------------------------------------------*\
  350.     Função:
  351.         - Obter próximo banco disponível de um veículo.
  352.  
  353.     Params:
  354.         - vehicleid: ID do veículo.
  355.  
  356.     Retorna:
  357.         - O ID do assento caso houver disponível.
  358.         - INVALID_SEAT_ID (ou -1) caso não houver bancos disponíveis.
  359. \*----------------------------------------------------------------------------*/
  360. stock GetFreeVehicleSeat(vehicleid)
  361. {
  362.     new bool:anVehicleSeats[5];
  363.     for ( new slots = GetMaxPlayers( ), i; i < slots; i++ ) {
  364.         if(IsPlayerInVehicle(i, vehicleid))
  365.             if(GetPlayerVehicleSeat(i) != 128)
  366.                 anVehicleSeats[GetPlayerVehicleSeat(i)] = true;
  367.     }
  368.  
  369.     for ( new s; s < sizeof anVehicleSeats; s++ ) {
  370.         if(anVehicleSeats[s])
  371.             continue;
  372.  
  373.         return s;
  374.     }
  375.     return INVALID_SEAT_ID;
  376. }
  377.  
  378. /*----------------------------------------------------------------------------*\
  379.     Função:
  380.         - Obter o motorista de um veículo.
  381.  
  382.     Params:
  383.         - vehicleid: ID do veículo.
  384.  
  385.     Retorna:
  386.         - O ID do jogador que estiver pilotando o veículo.
  387.         - INVALID_PLAYER_ID caso não tiver motorista.
  388. \*----------------------------------------------------------------------------*/
  389. stock GetVehicleDriver(vehicleid)
  390. {
  391.     for ( new slots = GetMaxPlayers( ), i; i < slots; i++ ) {
  392.         if(!IsPlayerConnected(playerid))
  393.             continue;
  394.         if(IsPlayerInVehicle(playerid, vehicleid))
  395.             return i;
  396.     }
  397.     return INVALID_PLAYER_ID;
  398. }
  399.  
  400. /*----------------------------------------------------------------------------*\
  401.     Função:
  402.         - Obter a distância entre dois jogadores.
  403.  
  404.     Params:
  405.         - playerid: ID do jogador 1.
  406.         - targetid: ID do jogador 2.
  407.  
  408.     Retorna:
  409.         - A distância (float) entre os dois jogadores.
  410. \*----------------------------------------------------------------------------*/
  411. stock Float:GetPlayerDistanceFromPlayer(playerid, targetid)
  412. {
  413.     new Float:fDist[3];
  414.     GetPlayerPos(playerid, fDist[0], fDist[1], fDist[2]);
  415.     return GetPlayerDistanceFromPoint(targetid, fDist[0],
  416.         fDist[1], fDist[2]);
  417. }
  418.  
  419. /*----------------------------------------------------------------------------*\
  420.     Função:
  421.         - Obter a distância entre um jogador e um veículo.
  422.  
  423.     Params:
  424.         - playerid: ID do jogador.
  425.         - vehicleid: ID do veículo.
  426.  
  427.     Retorna:
  428.         - A distância (float) entre o jogador e o veículo.
  429. \*----------------------------------------------------------------------------*/
  430. stock Float:GetPlayerDistanceFromVehicle(playerid, vehicleid)
  431. {
  432.     new Float:fDist[3];
  433.     GetPlayerPos(playerid, fDist[0], fDist[1], fDist[2]);
  434.     return GetVehicleDistanceFromPoint(vehicleid, fDist[0],
  435.         fDist[1], fDist[2]);
  436. }
  437.  
  438. /*----------------------------------------------------------------------------*\
  439.     Função:
  440.         - Obter a distância entre um dois veículos.
  441.  
  442.     Params:
  443.         - vehicleid: ID do veículo 1.
  444.         - vtargetid: ID do veículo 2.
  445.  
  446.     Retorna:
  447.         - A distância (float) entre os dois veículos.
  448. \*----------------------------------------------------------------------------*/
  449. stock Float:GetVehicleDistanceFromVehicle(vehicleid, vtargetid)
  450. {
  451.     new Float:fDist[3];
  452.     GetVehiclePos(vtargetid, fDist[0], fDist[1], fDist[2]);
  453.     return GetVehicleDistanceFromPoint(vehicleid, fDist[0],
  454.         fDist[1], fDist[2]);
  455. }
  456.  
  457. /*----------------------------------------------------------------------------*\
  458.     Função:
  459.         - Verificar se o jogador está próximo de um veículo, dentro de uma
  460.         determinada radiação.
  461.  
  462.     Params:
  463.         - playerid: ID do jogador.
  464.         - vehicleid: ID do veículo.
  465.         - radius: Radiação máxima (float) a ser checada.
  466.  
  467.     Retorna:
  468.         - 1 se o jogador estiver dentro da radiação do veículo.
  469.         - 0 se o jogador não estiver.
  470. \*----------------------------------------------------------------------------*/
  471. stock IsPlayerInRangeOfVehicle(playerid, vehicleid, Float:radius)
  472. {
  473.     new Float:fDist[3];
  474.     GetVehiclePos(vehicleid, fDist[0], fDist[1], fDist[2]);
  475.     return IsPlayerInRangeOfPoint(playerid, radius, fDist[0],
  476.         fDist[1], fDist[2]);
  477. }
  478.  
  479. /*----------------------------------------------------------------------------*\
  480.     Função:
  481.         - Obter o IP de um jogador, sem a necessidade de uma variável
  482.         intermediária.
  483.  
  484.     Params:
  485.         - playerid: ID do jogador.
  486.  
  487.     Retorna:
  488.         - O ip do jogador (string).
  489. \*----------------------------------------------------------------------------*/
  490. stock GetPlayerIpf(playerid)
  491. {
  492.     new s_PLAYER_IP[18];
  493.     GetPlayerIp(playerid, s_PLAYER_IP, sizeof(s_PLAYER_IP));
  494.     return s_PLAYER_IP;
  495. }
  496.  
  497. /*----------------------------------------------------------------------------*\
  498.     Função:
  499.         - Obter o nome da arma do jogador.
  500.  
  501.     Params:
  502.         - playerid: ID do jogador.
  503.  
  504.     Retorna:
  505.         - O nome da arma do jogador (string).
  506. \*----------------------------------------------------------------------------*/
  507. stock GetPlayerWeaponName(playerid)
  508. {  
  509.     new s_WEAPON_NAME[21];
  510.     GetWeaponName(GetPlayerWeapon(playerid), s_WEAPON_NAME,
  511.         sizeof(s_WEAPON_NAME));
  512.  
  513.     if(GetPlayerWeapon(playerid) == 0)
  514.         s_WEAPON_NAME = "Nenhuma";
  515.     else if(GetPlayerWeapon(playerid) == 18)
  516.         s_WEAPON_NAME = "Molotov Cocktail";
  517.     else if(GetPlayerWeapon(playerid) == 44)
  518.         s_WEAPON_NAME = "Night Vis Goggles";
  519.     else if(GetPlayerWeapon(playerid) == 45)
  520.         s_WEAPON_NAME = "Thermal Goggles";
  521.  
  522.     return s_WEAPON_NAME;
  523. }
  524.  
  525. /*----------------------------------------------------------------------------*\
  526.     Função:
  527.         - Limpar o chat de um jogador.
  528.  
  529.     Params:
  530.         - playerid: ID do jogador.
  531.  
  532.     Retorna:
  533.         - Esta função não retorna um valor específico.
  534. \*----------------------------------------------------------------------------*/
  535. stock ClearPlayerScreen(playerid)
  536. {
  537.     for(new i = 0; i < 100; i++){SendClientMessage(playerid, -1, " ");}
  538.     return;
  539. }
  540.  
  541. /*----------------------------------------------------------------------------*\
  542.     Função:
  543.         - Definir o dinheiro de um jogador.
  544.  
  545.     Params:
  546.         - playerid: ID do jogador.
  547.         - money: Quantia de dinheiro.
  548.  
  549.     Retorna:
  550.         - Esta função não retorna um valor específico.
  551. \*----------------------------------------------------------------------------*/
  552. stock SetPlayerMoney(playerid, money)
  553. {
  554.     ResetPlayerMoney(playerid);
  555.     GivePlayerMoney(playerid, money);
  556.     return;
  557. }
  558.  
  559. /*----------------------------------------------------------------------------*\
  560.     Função:
  561.         - Definir a posição e ângulo do jogador.
  562.  
  563.     Params:
  564.         - playerid: ID do jogador.
  565.         - Floatx: Posição X.
  566.         - Floaty: Posição Y.
  567.         - Floatz: Posição Z.
  568.         - Floata: Ângulo.
  569.  
  570.     Retorna:
  571.         - Esta função não retorna um valor específico.
  572. \*----------------------------------------------------------------------------*/
  573. stock SetPlayerPosEx(playerid, Float:x, Float:y, Float:z, Float:a)
  574. {
  575.     SetPlayerPos(playerid, x, y, z);
  576.     SetPlayerFacingAngle(playerid, a);
  577.     return;
  578. }
  579.  
  580. /*----------------------------------------------------------------------------*\
  581.     Função:
  582.         - Acrescentar nível de procurar a um jogador.
  583.  
  584.     Params:
  585.         - playerid: ID do jogador.
  586.         - level: Nível de procurado a ser acrescentado.
  587.  
  588.     Retorna:
  589.         - Esta função não retorna um valor específico.
  590. \*----------------------------------------------------------------------------*/
  591. stock GivePlayerWantedLevel(playerid, level)
  592. {
  593.     if(level + GetPlayerWantedLevel(playerid) > 6) {
  594.         SetPlayerWantedLevel(playerid, 6);
  595.         return;
  596.     }
  597.  
  598.     SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid)+level);
  599.     return;
  600. }
  601.  
  602. /*----------------------------------------------------------------------------*\
  603.     Função:
  604.         - Congelar um jogador por um período de tempo.
  605.  
  606.     Params:
  607.         - playerid: ID do jogador.
  608.         - time: Tempo em que o jogador ficará congelado.
  609.  
  610.     Retorna:
  611.         - Esta função não retorna um valor específico.
  612. \*----------------------------------------------------------------------------*/
  613. stock FreezePlayer(playerid, time = 5000)
  614. {
  615.     TogglePlayerControllable(playerid, false);
  616.  
  617.     if(GetPVarInt(playerid, "FreezeTimer") != 0)
  618.         KillTimer(GetPVarInt(playerid, "FreezeTimer"));
  619.  
  620.     SetPVarInt(playerid, "FreezeTimer",
  621.         SetTimerEx("OnPlayerUnfreeze", time, false, "i", playerid));
  622.     return;
  623. }
  624.  
  625. /*----------------------------------------------------------------------------*\
  626.     Função:
  627.         - Remover uma arma específica de um jogador.
  628.  
  629.     Params:
  630.         - playerid: ID do jogador.
  631.         - weaponid: ID da arma que será removida.
  632.  
  633.     Retorna:
  634.         - 0 caso o id do jogador inválido ou arma inválida.
  635.         - 1 caso for executada com sucesso.
  636. \*----------------------------------------------------------------------------*/
  637. stock RemovePlayerWeapon(playerid, weaponid)
  638. {
  639.     if(playerid == INVALID_PLAYER_ID ||
  640.         !IsPlayerConnected(playerid) ||
  641.         weaponid < 0 ||
  642.         weaponid > 46) return 0;
  643.  
  644.     new e_OLD_WEAPON[13], e_OLD_AMMO[13];
  645.  
  646.     for(new slot = 0; slot < 13; slot++) {
  647.         GetPlayerWeaponData(playerid,
  648.             slot,
  649.             e_OLD_WEAPON[slot],
  650.             e_OLD_AMMO[slot]);
  651.     }
  652.  
  653.     ResetPlayerWeapons(playerid);
  654.  
  655.     for(new slot; slot < 13; slot++) {
  656.  
  657.         if(e_OLD_WEAPON[slot] == weaponid || e_OLD_AMMO[slot] == 0) {
  658.             continue;
  659.         }
  660.  
  661.         GivePlayerWeapon(playerid, e_OLD_WEAPON[slot], e_OLD_AMMO[slot]);
  662.     }
  663.     GivePlayerWeapon(playerid, 0, 1);
  664.     return 1;
  665. }
  666.  
  667. /*----------------------------------------------------------------------------*\
  668.     Função:
  669.         - Obter a saúde do veículo.
  670.  
  671.     Params:
  672.         - vehicleid: ID do veículo.
  673.  
  674.     Retorna:
  675.         - A saúde do veículo (float).
  676. \*----------------------------------------------------------------------------*/
  677. stock Float:GetVehicleHealthf(vehicleid)
  678. {
  679.     new Float:f_VEHICLE_HEALTH;
  680.     GetVehicleHealth(vehicleid, f_VEHICLE_HEALTH);
  681.     return f_VEHICLE_HEALTH;
  682. }
  683.  
  684. /*----------------------------------------------------------------------------*\
  685.     Função:
  686.         - Remover qualquer arma de um slot específico de um jogador.
  687.  
  688.     Params:
  689.         - playerid: ID do jogador.
  690.         - slotid: ID do slot que a arma será removida.
  691.  
  692.     Retorna:
  693.         - 0 caso o id do jogador inválido ou slot inválido.
  694.         - 1 caso for executada com sucesso.
  695. \*----------------------------------------------------------------------------*/
  696. stock RemovePlayerSlotWeapon(playerid, slotid)
  697. {
  698.     if(playerid == INVALID_PLAYER_ID ||
  699.         !IsPlayerConnected(playerid) ||
  700.         slotid < 0 ||
  701.         slotid > 12) return 0;
  702.  
  703.     new e_OLD_WEAPON[13], e_OLD_AMMO[13];
  704.  
  705.     for(new slot = 0; slot < 13; slot++) {
  706.         GetPlayerWeaponData(playerid,
  707.             slot,
  708.             e_OLD_WEAPON[slot],
  709.             e_OLD_AMMO[slot]);
  710.     }
  711.  
  712.     ResetPlayerWeapons(playerid);
  713.  
  714.     for(new slot; slot < 13; slot++) {
  715.  
  716.         if(slot == slotid) {
  717.             continue;
  718.         }
  719.  
  720.         GivePlayerWeapon(playerid, e_OLD_WEAPON[slot], e_OLD_AMMO[slot]);
  721.     }
  722.     GivePlayerWeapon(playerid, 0, 1);
  723.     return 1;
  724. }
  725.  
  726. /*----------------------------------------------------------------------------*\
  727.     Função:
  728.         - Verificar se um veículo está ocupado com algum jogador.
  729.  
  730.     Params:
  731.         - vehicleid: ID do veículo.
  732.  
  733.     Retorna:
  734.         - 0 caso o id do jogador inválido ou slot inválido.
  735.         - 1 caso for executada com sucesso.
  736. \*----------------------------------------------------------------------------*/
  737. stock IsVehicleOccupied(vehicleid)
  738. {
  739.     for ( new slots = GetMaxPlayers( ), i; i < slots; i++ ) {
  740.         if(!IsPlayerConnected(i))
  741.             continue;
  742.  
  743.         if(IsPlayerInVehicle(i, vehicleid))
  744.             return 1;
  745.     }
  746.     return 0;
  747. }
  748.  
  749. /*----------------------------------------------------------------------------*\
  750.     Função:
  751.         - Teleportar um jogador para um veículo.
  752.  
  753.     Params:
  754.         - playerid: ID do jogador.
  755.         - vehicleid: ID do veículo.
  756.  
  757.     Retorna:
  758.         - Esta função não retorna um valor específico.
  759. \*----------------------------------------------------------------------------*/
  760. stock TeleportPlayerToVehicle(playerid, vehicleid)
  761. {
  762.     new Float:fDist[3];
  763.     GetVehiclePos(vehicleid, fDist[0], fDist[1], fDist[2]);
  764.     SetPlayerPos(playerid, fDist[0], fDist[1], fDist[2]);
  765.     return;
  766. }
  767.  
  768. /*----------------------------------------------------------------------------*\
  769.     Função:
  770.         - Teleportar um jogador para outro jogador.
  771.  
  772.     Params:
  773.         - playerid: ID do jogador 1.
  774.         - targetid: ID do jogador 2.
  775.  
  776.     Retorna:
  777.         - Esta função não retorna um valor específico.
  778. \*----------------------------------------------------------------------------*/
  779. stock TeleportPlayerToPlayer(playerid, targetid)
  780. {
  781.     new Float:fDist[3];
  782.     GetPlayerPos(targetid, fDist[0], fDist[1], fDist[2]);
  783.     SetPlayerPos(playerid, fDist[0], fDist[1], fDist[2]);
  784.     return;
  785. }
  786.  
  787. /*----------------------------------------------------------------------------*\
  788.     Função:
  789.         - Verificar se um jogador é motorista de algum veículo.
  790.  
  791.     Params:
  792.         - playerid: ID do jogador.
  793.  
  794.     Retorna:
  795.         - 0 caso o jogador não for um motorista.
  796.         - 1 caso o jogador for um motorista.
  797. \*----------------------------------------------------------------------------*/
  798. stock IsPlayerDriver(playerid)
  799. {
  800.     if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) return true;
  801.     return false;
  802. }
  803.  
  804. /*----------------------------------------------------------------------------*\
  805.     Função:
  806.         - Verificar se um jogador é um passageiro de algum veículo.
  807.  
  808.     Params:
  809.         - playerid: ID do jogador.
  810.  
  811.     Retorna:
  812.         - 0 caso o jogador não for um passageiro.
  813.         - 1 caso o jogador for um passageiro.
  814. \*----------------------------------------------------------------------------*/
  815. stock IsPlayerPassenger(playerid)
  816. {
  817.     if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER) return true;
  818.     return false;
  819. }
  820.  
  821. /*----------------------------------------------------------------------------*\
  822.     Função:
  823.         - Verificar se um jogador está nadando.
  824.  
  825.     Params:
  826.         - playerid: ID do jogador.
  827.  
  828.     Retorna:
  829.         - 0 caso o jogador não estiver nadando.
  830.         - 1 caso o jogador estiver nadando.
  831. \*----------------------------------------------------------------------------*/
  832. stock IsPlayerSwimming(playerid)
  833. {
  834.     if(IsPlayerInAnyVehicle(playerid) ||
  835.         GetPlayerState(playerid) != PLAYER_STATE_ONFOOT)
  836.         return 0;
  837.  
  838.     new animlib[32], animname[32];
  839.     GetAnimationName(GetPlayerAnimationIndex(playerid),
  840.         animlib, 32, animname,32);
  841.  
  842.     if(!strcmp(animlib, "SWIM", true) &&
  843.         (!strcmp(animname, "SWIM_CRAWL", true) ||
  844.         !strcmp(animname, "SWIM_GLIDE", true) ||
  845.         !strcmp(animname, "SWIM_UNDER", true) ||
  846.         !strcmp(animname, "SWIM_TREAD", true) ||
  847.         !strcmp(animname, "SWIM_BREAST", true) ||
  848.         !strcmp(animname, "SWIM_DIVE_UNDER", true) ||
  849.         !strcmp(animname, "SWIM_DIVE_GLIDE", true)))
  850.         return 1;
  851.     return 0;
  852. }
  853.  
  854. /*----------------------------------------------------------------------------*\
  855.     Função:
  856.         - Desvirar um veículo.
  857.  
  858.     Params:
  859.         - vehicleid: ID do veículo.
  860.  
  861.     Retorna:
  862.         - Esta função não retorna um valor específico.
  863. \*----------------------------------------------------------------------------*/
  864. stock FlipVehicle(vehicleid)
  865. {
  866.     SetVehicleZAngle(vehicleid, GetVehicleZAnglef(vehicleid));
  867.     return;
  868. }
  869.  
  870. /*----------------------------------------------------------------------------*\
  871.     Função:
  872.         - Obter o nome do veículo.
  873.  
  874.     Params:
  875.         - vehicleid: ID do veículo.
  876.  
  877.     Retorna:
  878.         - 'invalído' caso o id do veículo seja inválido.
  879.         - O nome do veículo (string) caso for válido.
  880. \*----------------------------------------------------------------------------*/
  881. stock GetVehicleName(vehicleid)
  882. {
  883.     new a_VEHICLE_NAME[22];
  884.     switch(GetVehicleModel(vehicleid)) {
  885.         case 400: a_VEHICLE_NAME = "Landstalker";
  886.         case 401: a_VEHICLE_NAME = "Bravura";
  887.         case 402: a_VEHICLE_NAME = "Buffalo";
  888.         case 403: a_VEHICLE_NAME = "Linerunner";
  889.         case 404: a_VEHICLE_NAME = "Perenniel";
  890.         case 405: a_VEHICLE_NAME = "Sentinel";
  891.         case 406: a_VEHICLE_NAME = "Dumper";
  892.         case 407: a_VEHICLE_NAME = "Firetruck";
  893.         case 408: a_VEHICLE_NAME = "Trashmaster";
  894.         case 409: a_VEHICLE_NAME = "Stretch";
  895.         case 410: a_VEHICLE_NAME = "Manana";
  896.         case 411: a_VEHICLE_NAME = "Infernus";
  897.         case 412: a_VEHICLE_NAME = "Voodoo";
  898.         case 413: a_VEHICLE_NAME = "Pony";
  899.         case 414: a_VEHICLE_NAME = "Mule";
  900.         case 415: a_VEHICLE_NAME = "Cheetah";
  901.         case 416: a_VEHICLE_NAME = "Ambulance";
  902.         case 417: a_VEHICLE_NAME = "Leviathan";
  903.         case 418: a_VEHICLE_NAME = "Moonbeam";
  904.         case 419: a_VEHICLE_NAME = "Esperanto";
  905.         case 420: a_VEHICLE_NAME = "Taxi";
  906.         case 421: a_VEHICLE_NAME = "Washigton";
  907.         case 422: a_VEHICLE_NAME = "Bobcat";
  908.         case 423: a_VEHICLE_NAME = "Mr Whoopee";
  909.         case 424: a_VEHICLE_NAME = "BF Injection";
  910.         case 425: a_VEHICLE_NAME = "Hunter";
  911.         case 426: a_VEHICLE_NAME = "Premier";
  912.         case 427: a_VEHICLE_NAME = "Enforcer";
  913.         case 428: a_VEHICLE_NAME = "Securicar";
  914.         case 429: a_VEHICLE_NAME = "Banshee";
  915.         case 430: a_VEHICLE_NAME = "Predator";
  916.         case 431: a_VEHICLE_NAME = "Bus";
  917.         case 432: a_VEHICLE_NAME = "Rhino";
  918.         case 433: a_VEHICLE_NAME = "Barracks";
  919.         case 434: a_VEHICLE_NAME = "Hotknife";
  920.         case 435: a_VEHICLE_NAME = "Article Trailer";
  921.         case 436: a_VEHICLE_NAME = "Previon";
  922.         case 437: a_VEHICLE_NAME = "Coach";
  923.         case 438: a_VEHICLE_NAME = "Cabbie";
  924.         case 439: a_VEHICLE_NAME = "Stallion";
  925.         case 440: a_VEHICLE_NAME = "Rumpo";
  926.         case 441: a_VEHICLE_NAME = "RC Bandit";
  927.         case 442: a_VEHICLE_NAME = "Romero";
  928.         case 443: a_VEHICLE_NAME = "Packer";
  929.         case 444: a_VEHICLE_NAME = "Monster";
  930.         case 445: a_VEHICLE_NAME = "Admiral";
  931.         case 446: a_VEHICLE_NAME = "Squallo";
  932.         case 447: a_VEHICLE_NAME = "Seasparrow";
  933.         case 448: a_VEHICLE_NAME = "Pizzaboy";
  934.         case 449: a_VEHICLE_NAME = "Tram";
  935.         case 450: a_VEHICLE_NAME = "Article Trailer 2";
  936.         case 451: a_VEHICLE_NAME = "Turismo";
  937.         case 452: a_VEHICLE_NAME = "Speeder";
  938.         case 453: a_VEHICLE_NAME = "Reefer";
  939.         case 454: a_VEHICLE_NAME = "Tropic";
  940.         case 455: a_VEHICLE_NAME = "Flatbed";
  941.         case 456: a_VEHICLE_NAME = "Yankee";
  942.         case 457: a_VEHICLE_NAME = "Caddy";
  943.         case 458: a_VEHICLE_NAME = "Solair";
  944.         case 459: a_VEHICLE_NAME = "Topfun Van";
  945.         case 460: a_VEHICLE_NAME = "Skimmer";
  946.         case 461: a_VEHICLE_NAME = "PCJ-600";
  947.         case 462: a_VEHICLE_NAME = "Faggio";
  948.         case 463: a_VEHICLE_NAME = "Freeway";
  949.         case 464: a_VEHICLE_NAME = "RC Baron";
  950.         case 465: a_VEHICLE_NAME = "RC Raider";
  951.         case 466: a_VEHICLE_NAME = "Glendale";
  952.         case 467: a_VEHICLE_NAME = "Oceanic";
  953.         case 468: a_VEHICLE_NAME = "Sanchez";
  954.         case 469: a_VEHICLE_NAME = "Sparrow";
  955.         case 470: a_VEHICLE_NAME = "Patriot";
  956.         case 471: a_VEHICLE_NAME = "Quad";
  957.         case 472: a_VEHICLE_NAME = "Coastguard";
  958.         case 473: a_VEHICLE_NAME = "Dinghy";
  959.         case 474: a_VEHICLE_NAME = "Hermes";
  960.         case 475: a_VEHICLE_NAME = "Sabre";
  961.         case 476: a_VEHICLE_NAME = "Rustler";
  962.         case 477: a_VEHICLE_NAME = "ZR-350";
  963.         case 478: a_VEHICLE_NAME = "Walton";
  964.         case 479: a_VEHICLE_NAME = "Regina";
  965.         case 480: a_VEHICLE_NAME = "Comet";
  966.         case 481: a_VEHICLE_NAME = "BMX";
  967.         case 482: a_VEHICLE_NAME = "Burrito";
  968.         case 483: a_VEHICLE_NAME = "Camper";
  969.         case 484: a_VEHICLE_NAME = "Marquis";
  970.         case 485: a_VEHICLE_NAME = "Baggage";
  971.         case 486: a_VEHICLE_NAME = "Dozer";
  972.         case 487: a_VEHICLE_NAME = "Maverick";
  973.         case 488: a_VEHICLE_NAME = "San News Maverick";
  974.         case 489: a_VEHICLE_NAME = "Rancher";
  975.         case 490: a_VEHICLE_NAME = "FBI Rancher";
  976.         case 491: a_VEHICLE_NAME = "Virgo";
  977.         case 492: a_VEHICLE_NAME = "Greenwood";
  978.         case 493: a_VEHICLE_NAME = "Jetmax";
  979.         case 494: a_VEHICLE_NAME = "Hotring Racer";
  980.         case 495: a_VEHICLE_NAME = "Sandking";
  981.         case 496: a_VEHICLE_NAME = "Blista Compact";
  982.         case 497: a_VEHICLE_NAME = "Police Maverick";
  983.         case 498: a_VEHICLE_NAME = "Boxville";
  984.         case 499: a_VEHICLE_NAME = "Benson";
  985.         case 500: a_VEHICLE_NAME = "Mesa";
  986.         case 501: a_VEHICLE_NAME = "RC Goblin";
  987.         case 502: a_VEHICLE_NAME = "Hotring Racer";
  988.         case 503: a_VEHICLE_NAME = "Hotring Racer";
  989.         case 504: a_VEHICLE_NAME = "Bloodring Banger";
  990.         case 505: a_VEHICLE_NAME = "Rancher";
  991.         case 506: a_VEHICLE_NAME = "Super GT";
  992.         case 507: a_VEHICLE_NAME = "Elegant";
  993.         case 508: a_VEHICLE_NAME = "Journey";
  994.         case 509: a_VEHICLE_NAME = "Bike";
  995.         case 510: a_VEHICLE_NAME = "Mountain Bike";
  996.         case 511: a_VEHICLE_NAME = "Beagle";
  997.         case 512: a_VEHICLE_NAME = "Cropduster";
  998.         case 513: a_VEHICLE_NAME = "Stuntplane";
  999.         case 514: a_VEHICLE_NAME = "Tanker";
  1000.         case 515: a_VEHICLE_NAME = "Roadtrain";
  1001.         case 516: a_VEHICLE_NAME = "Nebula";
  1002.         case 517: a_VEHICLE_NAME = "Majestic";
  1003.         case 518: a_VEHICLE_NAME = "Buccaneer";
  1004.         case 519: a_VEHICLE_NAME = "Shamal";
  1005.         case 520: a_VEHICLE_NAME = "Hydra";
  1006.         case 521: a_VEHICLE_NAME = "FCR-900";
  1007.         case 522: a_VEHICLE_NAME = "NRG-500";
  1008.         case 523: a_VEHICLE_NAME = "HPV-1000";
  1009.         case 524: a_VEHICLE_NAME = "Cement Truck";
  1010.         case 525: a_VEHICLE_NAME = "TowTruck";
  1011.         case 526: a_VEHICLE_NAME = "Fortune";
  1012.         case 527: a_VEHICLE_NAME = "Cadrona";
  1013.         case 528: a_VEHICLE_NAME = "FBI Truck";
  1014.         case 529: a_VEHICLE_NAME = "Willard";
  1015.         case 530: a_VEHICLE_NAME = "Forklift";
  1016.         case 531: a_VEHICLE_NAME = "Tractor";
  1017.         case 532: a_VEHICLE_NAME = "Combine Harvester";
  1018.         case 533: a_VEHICLE_NAME = "Feltzer";
  1019.         case 534: a_VEHICLE_NAME = "Remington";
  1020.         case 535: a_VEHICLE_NAME = "Slamvan";
  1021.         case 536: a_VEHICLE_NAME = "Blade";
  1022.         case 537: a_VEHICLE_NAME = "Freight (Train)";
  1023.         case 538: a_VEHICLE_NAME = "Brownstreak (Train)";
  1024.         case 539: a_VEHICLE_NAME = "Vortex";
  1025.         case 540: a_VEHICLE_NAME = "Vincent";
  1026.         case 541: a_VEHICLE_NAME = "Bullet";
  1027.         case 542: a_VEHICLE_NAME = "Clover";
  1028.         case 543: a_VEHICLE_NAME = "Sadler";
  1029.         case 544: a_VEHICLE_NAME = "Firetruck LA";
  1030.         case 545: a_VEHICLE_NAME = "Hustler";
  1031.         case 546: a_VEHICLE_NAME = "Intruder";
  1032.         case 547: a_VEHICLE_NAME = "Primo";
  1033.         case 548: a_VEHICLE_NAME = "Cargobob";
  1034.         case 549: a_VEHICLE_NAME = "Tampa";
  1035.         case 550: a_VEHICLE_NAME = "Sunrise";
  1036.         case 551: a_VEHICLE_NAME = "Merit";
  1037.         case 552: a_VEHICLE_NAME = "Utility Van";
  1038.         case 553: a_VEHICLE_NAME = "Nevada";
  1039.         case 554: a_VEHICLE_NAME = "Yosemite";
  1040.         case 555: a_VEHICLE_NAME = "Windsor";
  1041.         case 556: a_VEHICLE_NAME = "Monster ''A''";
  1042.         case 557: a_VEHICLE_NAME = "Monster ''B''";
  1043.         case 558: a_VEHICLE_NAME = "Uranus";
  1044.         case 559: a_VEHICLE_NAME = "Jester";
  1045.         case 560: a_VEHICLE_NAME = "Sultan";
  1046.         case 561: a_VEHICLE_NAME = "Stratum";
  1047.         case 562: a_VEHICLE_NAME = "Elegy";
  1048.         case 563: a_VEHICLE_NAME = "Raindance";
  1049.         case 564: a_VEHICLE_NAME = "RC Tiger";
  1050.         case 565: a_VEHICLE_NAME = "Flash";
  1051.         case 566: a_VEHICLE_NAME = "Tahoma";
  1052.         case 567: a_VEHICLE_NAME = "Savanna";
  1053.         case 568: a_VEHICLE_NAME = "Bandito";
  1054.         case 569: a_VEHICLE_NAME = "Freight Flat Trailer";
  1055.         case 570: a_VEHICLE_NAME = "Streak Trailer";
  1056.         case 571: a_VEHICLE_NAME = "Kart";
  1057.         case 572: a_VEHICLE_NAME = "Mower";
  1058.         case 573: a_VEHICLE_NAME = "Dune";
  1059.         case 574: a_VEHICLE_NAME = "Sweeper";
  1060.         case 575: a_VEHICLE_NAME = "Broadway";
  1061.         case 576: a_VEHICLE_NAME = "Tornado";
  1062.         case 577: a_VEHICLE_NAME = "AT400";
  1063.         case 578: a_VEHICLE_NAME = "DFT-30";
  1064.         case 579: a_VEHICLE_NAME = "Huntley";
  1065.         case 580: a_VEHICLE_NAME = "Stafford";
  1066.         case 581: a_VEHICLE_NAME = "BF-400";
  1067.         case 582: a_VEHICLE_NAME = "Newsvan";
  1068.         case 583: a_VEHICLE_NAME = "Tug";
  1069.         case 584: a_VEHICLE_NAME = "Petrol Trailer";
  1070.         case 585: a_VEHICLE_NAME = "Emperor";
  1071.         case 586: a_VEHICLE_NAME = "Wayfarer";
  1072.         case 587: a_VEHICLE_NAME = "Euros";
  1073.         case 588: a_VEHICLE_NAME = "Hotdog";
  1074.         case 589: a_VEHICLE_NAME = "Club";
  1075.         case 590: a_VEHICLE_NAME = "Freight Box Trailer";
  1076.         case 591: a_VEHICLE_NAME = "Article Trailer 3";
  1077.         case 592: a_VEHICLE_NAME = "Andromada";
  1078.         case 593: a_VEHICLE_NAME = "Dodo";
  1079.         case 594: a_VEHICLE_NAME = "RC Cam";
  1080.         case 595: a_VEHICLE_NAME = "Launch";
  1081.         case 596: a_VEHICLE_NAME = "Police Car (LSPD)";
  1082.         case 597: a_VEHICLE_NAME = "Police Car (SFPD)";
  1083.         case 598: a_VEHICLE_NAME = "Police Car (LVPD)";
  1084.         case 599: a_VEHICLE_NAME = "Police Ranger";
  1085.         case 600: a_VEHICLE_NAME = "Picador";
  1086.         case 601: a_VEHICLE_NAME = "S.W.A.T";
  1087.         case 602: a_VEHICLE_NAME = "Alpha";
  1088.         case 603: a_VEHICLE_NAME = "Phoenix";
  1089.         case 604: a_VEHICLE_NAME = "Glendale Shit";
  1090.         case 605: a_VEHICLE_NAME = "Sadler Shit";
  1091.         case 606: a_VEHICLE_NAME = "Baggage Trailer ''A''";
  1092.         case 607: a_VEHICLE_NAME = "Baggage Trailer ''B''";
  1093.         case 608: a_VEHICLE_NAME = "Tug Stairs Trailer";
  1094.         case 609: a_VEHICLE_NAME = "Boxville";
  1095.         case 610: a_VEHICLE_NAME = "Farm Trailer";
  1096.         case 611: a_VEHICLE_NAME = "Utility Trailer";
  1097.         default: a_VEHICLE_NAME = "inválido";
  1098.     }
  1099.     return a_VEHICLE_NAME;
  1100. }
  1101.  
  1102. /*----------------------------------------------------------------------------*\
  1103.     Função:
  1104.         - Obter o status do motor do veículo.
  1105.  
  1106.     Params:
  1107.         - vehicleid: ID do veículo.
  1108.  
  1109.     Retorna:
  1110.         - 1 caso o motor do veículo estiver ligado.
  1111.         - 0 caso o motor do veículo estiver desligado.
  1112. \*----------------------------------------------------------------------------*/
  1113. stock GetVehicleEngineStatus(vehicleid)
  1114. {
  1115.     new v_ENGINE, v_LIGHTS, v_ALARM, v_DOORS, v_BONNET, v_BOOT, v_OBJECTIVE;
  1116.     GetVehicleParamsEx(vehicleid, v_ENGINE, v_LIGHTS, v_ALARM,
  1117.         v_DOORS, v_BONNET, v_BOOT, v_OBJECTIVE);
  1118.     if(v_ENGINE == VEHICLE_PARAMS_ON) return 1;
  1119.     return 0;
  1120. }
  1121.  
  1122. /*----------------------------------------------------------------------------*\
  1123.     Função:
  1124.         - Verificar se um veículo está trancado.
  1125.  
  1126.     Params:
  1127.         - vehicleid: ID do veículo.
  1128.  
  1129.     Retorna:
  1130.         - 1 caso o veículo estiver trancado.
  1131.         - 0 caso o veículo estiver destrancado.
  1132. \*----------------------------------------------------------------------------*/
  1133. stock IsVehicleLocked(vehicleid)
  1134. {
  1135.     new v_ENGINE, v_LIGHTS, v_ALARM, v_DOORS, v_BONNET, v_BOOT, v_OBJECTIVE;
  1136.     GetVehicleParamsEx(vehicleid, v_ENGINE, v_LIGHTS, v_ALARM,
  1137.         v_DOORS, v_BONNET, v_BOOT, v_OBJECTIVE);
  1138.     if(v_DOORS == true) return 1;
  1139.     return 0;
  1140. }
  1141.  
  1142. /*----------------------------------------------------------------------------*\
  1143.     Função:
  1144.         - Trancar um veículo.
  1145.  
  1146.     Params:
  1147.         - vehicleid: ID do veículo.
  1148.  
  1149.     Retorna:
  1150.         - Esta função não retorna um valor específico.
  1151. \*----------------------------------------------------------------------------*/
  1152. stock LockVehicle(vehicleid)
  1153. {
  1154.     new v_ENGINE, v_LIGHTS, v_ALARM, v_DOORS, v_BONNET, v_BOOT, v_OBJECTIVE;
  1155.     GetVehicleParamsEx(vehicleid, v_ENGINE, v_LIGHTS, v_ALARM,
  1156.         v_DOORS, v_BONNET, v_BOOT, v_OBJECTIVE);
  1157.     SetVehicleParamsEx(vehicleid, v_ENGNIE, v_LIGHTS, v_ALARM,
  1158.         true, v_BONNET, v_BOOT, v_OBJECTIVE);
  1159.     return;
  1160. }
  1161.  
  1162. /*----------------------------------------------------------------------------*\
  1163.     Função:
  1164.         - Destrancar um veículo.
  1165.  
  1166.     Params:
  1167.         - vehicleid: ID do veículo.
  1168.  
  1169.     Retorna:
  1170.         - Esta função não retorna um valor específico.
  1171. \*----------------------------------------------------------------------------*/
  1172. stock UnlockVehicle(vehicleid)
  1173. {
  1174.     new v_ENGINE, v_LIGHTS, v_ALARM, v_DOORS, v_BONNET, v_BOOT, v_OBJECTIVE;
  1175.     GetVehicleParamsEx(vehicleid, v_ENGINE, v_LIGHTS, v_ALARM,
  1176.         v_DOORS, v_BONNET, v_BOOT, v_OBJECTIVE);
  1177.     SetVehicleParamsEx(vehicleid, v_ENGNIE, v_LIGHTS, v_ALARM,
  1178.         false, v_BONNET, v_BOOT, v_OBJECTIVE);
  1179.     return 0;
  1180. }
  1181.  
  1182. /*----------------------------------------------------------------------------*\
  1183.     Função:
  1184.         - Obter o nome de uma arma sem necessidade de uma variável
  1185.         intermediária.
  1186.  
  1187.     Params:
  1188.         - weaponid: ID da arma.
  1189.  
  1190.     Retorna:
  1191.         - 'desconhecida' caso o id da arma for inválido.
  1192.         - O nome da arma (string) caso o id for válido.
  1193. \*----------------------------------------------------------------------------*/
  1194. stock GetWeaponNamef(weaponid)
  1195. {  
  1196.     new e_WEAPON_NAME[21];
  1197.     GetWeaponName(weaponid, e_WEAPON_NAME, sizeof(e_WEAPON_NAME));
  1198.  
  1199.     if(weaponid == 0) s_WEAPON_NAME = "Nenhuma";
  1200.     else if(weaponid == 18) s_WEAPON_NAME = "Molotov Cocktail";
  1201.     else if(weaponid == 44) s_WEAPON_NAME = "Night Vis Goggles";
  1202.     else if(weaponid == 45) s_WEAPON_NAME = "Thermal Goggles";
  1203.     else if(isnull(e_WEAPON_NAME)) e_WEAPON_NAME = "desconhecida";
  1204.  
  1205.     return e_WEAPON_NAME;
  1206. }
  1207.  
  1208. /*----------------------------------------------------------------------------*\
  1209.     Função:
  1210.         - Enviar uma mensagem aos administradores RCON.
  1211.  
  1212.     Params:
  1213.         - color: Cor (hex) da mensagem.
  1214.         - message: Mensagem (string) a ser enviada.
  1215.  
  1216.     Retorna:
  1217.         - Esta função não retorna um valor específico.
  1218. \*----------------------------------------------------------------------------*/
  1219. stock SendAdminMessage(color, const message[])
  1220. {  
  1221.     for ( new slots = GetMaxPlayers( ), i; i < slots; i++ ) {
  1222.         if(!IsPlayerConnected(i))
  1223.             continue;
  1224.  
  1225.         if(IsPlayerAdmin(i)){
  1226.             SendClientMessage(i, color, message);
  1227.         }
  1228.     }
  1229.     return;
  1230. }
  1231.  
  1232. /*----------------------------------------------------------------------------*\
  1233.     Função:
  1234.         -
  1235.  
  1236.     Params:
  1237.         -
  1238.  
  1239.     Retorna:
  1240.         -
  1241. \*----------------------------------------------------------------------------*/
  1242. public OnPlayerUnfreeze(playerid)
  1243. {
  1244.     TogglePlayerControllable(playerid, true);
  1245.     DeletePVar(playerid, "FreezeTimer");
  1246.     return 1;
  1247. }
  1248.  
  1249. #undef isnull
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement