Portal SAMP
[Pedido] IsPlayerInRangeOfPoint para varias localizações - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Pedido] IsPlayerInRangeOfPoint para varias localizações (/showthread.php?tid=2622)



IsPlayerInRangeOfPoint para varias localizações - Ryuzaki - 02/08/2022

Boa noite, fiz um sistema de posto de gasolina, e está tudo pronto, só falta definir as localizações, mais me veio uma duvida, eu teria que usar vários

( IsPlayerInRangeOfPoint) 

Para checar se o player está na coordenada X e abrir o posto, teria como eu fazer uma lista com todas localizações e puxar de uma vez só com apenas uma linha de  isPlayerInRangeOfPoint ?

Lembro que vi isso em algum lugar mais não me lembro, era um dos sistemas que eu estava estudando, algo muito parecido, se tiver como e poderem me da exemplo, agradeço.


RE: IsPlayerInRangeOfPoint para varias localizações - White_Blue - 02/08/2022

Não, basta fazer assim:

Código PHP:
stock InPost(playerid) { // Aqui tem praticamente todos os postos de combustíveis disponíveis no gta-sa
        
static Float:LocaisPosto[][] = {
    {
70.45321219.195418.8117},
    {-
90.2719, -1169.95792.3964},
    {-
2411.5728976.189645.4609},
    {
2114.8413919.919410.8203},
    {
2638.95531107.178810.8203},
    {
1595.62332199.616210.8203},
    {
1940.8671, -1773.228313.3906},
    {-
2243.8435, -2560.559831.9219},
    {-
1328.88682677.626950.0625},
    {
1382.3647459.078520.3452},
    {-
1675.4781413.15947.1797},
    {
655.5922, -565.394316.3359},
    {-
1606.3616, -2713.587248.5335},
    {
576.37711662.789619.3304},
    {
1004.1403, -937.880142.1797},
    {
2202.12302476.858210.8203},
     {
417.2369, -1912.77081.5641}
      };
          for(new 
L17L++) if(IsPlayerInRangeOfPoint(playerid7.0LocaisPosto[L][0], LocaisPosto[L][1], LocaisPosto[L][2])) return 1;
          return 
0;


Código PHP:
CMD:estanoposto(playerid) { // Exemplo de verificação
 
if(InPost(playerid)) return SendClientMessage(playerid, -1"Está em um posto.");
 else return 
SendClientMessage(playerid, -1"Não está em um posto.");
 return 
1;

Dessa forma é possível agilizar o processo e deixar mais otimizado.


RE: IsPlayerInRangeOfPoint para varias localizações - Ryuzaki - 03/08/2022

Funcionou muito obrigado.


RE: IsPlayerInRangeOfPoint para varias localizações - OTAKEIRO - 07/08/2022

Achei interessante que você usou static para definir o array, mas voce usou "new L;" no loop, poderia usar "static L = 0;" no lugar


RE: IsPlayerInRangeOfPoint para varias localizações - Dr Editor - 07/08/2022

(07/08/2022 01:21)OTAKEIRO Escreveu: Achei interessante que você usou static para definir o array, mas voce usou "new L;" no loop, poderia usar "static L = 0;" no lugar

Variáveis estáticas não podem possuir valores predefinidos da mesma forma que "new" e "const", fora que é desnecessário neste caso.