Portal SAMP
[Ajuda] Posição - 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: [Ajuda] Posição (/showthread.php?tid=1130)



Posição - uyk - 24/04/2021

Como eu posso enviar uma posição de um jogador para outro?


RE: Posição - xbruno1000x - 24/04/2021

Código:
new Float: pz[3];
GetPlayerPos(ID DO JOGADOR, pz[0], pz[1], pz[2]);

format(string,sizeof(string),"O jogador está na posição %d %d %d", pz[0], pz[1], pz[2]);
SendClientMessage(ID DO JOGADOR QUE RECEBE A MSG, -1, string);

Mais ou menos isso. Só precisa pegar os id's dos jogadores, a forma mais fácil é com a Sscanf.


RE: Posição - uyk - 24/04/2021

Fiz desta forma:
Código PHP:
CMD:enviarpos(playeridparams[])
{
    new 
IDstring[150];
    if(
sscanf(params"uds"ID)) return SendClientMessage(playerid, -1"Use: /cadeia {00E5FF}[ID]");
    new 
Floatpz[3];
    
GetPlayerPos(IDpz[0], pz[1], pz[2]);
    
SetPlayerMapIcon(ID1pz[0], pz[1], pz[2], 410MAPICON_LOCAL_CHECKPOINT);
    
format(string,sizeof(string),"O jogador está na posição %d %d %d"pz[0], pz[1], pz[2]);
    
SendClientMessage(ID, -1string);
    return 
1;


Porém está dando um problema, quando eu digito o comando ao inves de setar a de quem digitou, seta é a posição do id que digitei


RE: Posição - Vel - 24/04/2021

Código:
if(sscanf(params, "r", ID)) return SendClientMessage(playerid, -1, "Use: /cadeia {00E5FF}[ID]");

Código:
Specifier(s)                Name                                Example values
   i, d                     Integer                             1, 42, -10
   c                        Character                           a, o, *
   l                        Logical                             true, false
   b                        Binary                              01001, 0b1100
   h, x                     Hex                                 1A, 0x23
   o                        Octal                               045 12
   n                        Number                              42, 0b010, 0xAC, 045
   f                        Float                               0.7, -99.5
   g                        IEEE Float                          0.7, -99.5, INFINITY, -INFINITY, NAN, NAN_E
   u                        User name/id (bots and players)     Y_Less, 0
   q                        Bot name/id                         ShopBot, 27
   r                        Player name/id                      Y_Less, 42



RE: Posição - xbruno1000x - 24/04/2021

(24/04/2021 12:57)uyk Escreveu: Fiz desta forma:
Código PHP:
CMD:enviarpos(playeridparams[])
{
    new 
IDstring[150];
    if(
sscanf(params"uds"ID)) return SendClientMessage(playerid, -1"Use: /cadeia {00E5FF}[ID]");
    new 
Floatpz[3];
    
GetPlayerPos(IDpz[0], pz[1], pz[2]);
    
SetPlayerMapIcon(ID1pz[0], pz[1], pz[2], 410MAPICON_LOCAL_CHECKPOINT);
    
format(string,sizeof(string),"O jogador está na posição %d %d %d"pz[0], pz[1], pz[2]);
    
SendClientMessage(ID, -1string);
    return 
1;


Porém está dando um problema, quando eu digito o comando ao inves de setar a de quem digitou, seta é a posição do id que digitei

Quando quiser atribuir algo a quem usou o comando, utilize "playerid". Quando for o ID digitado na sscanf, use a var "ID". Dessa forma vai dar certo.

edit: outra coisa, na sscanf você deve utilizar uma letra por variável. Então se você usou apenas a variável ID, use uma letra.

Código:
if(sscanf(params, "d", ID)) return SendClientMessage(playerid, -1, "Use: /enviarpos {00E5FF}[ID]");



RE: Posição - uyk - 24/04/2021

Consegui resolver, obrigado a todos!

Me surgiu mais uma dúvida, como posso fazer para que o mapicon se mova enquanto o player se move?


RE: Posição - xbruno1000x - 24/04/2021

(24/04/2021 15:02)uyk Escreveu: Consegui resolver, obrigado a todos!

Me surgiu mais uma dúvida, como posso fazer para que o mapicon se mova enquanto o player se move?

Nativamente não é possível.

Porém você pode utilizar a include CustomMarkers para isso.



Download:
https://github.com/IlyasMakari/SA-MP-Custom-Markers/releases


RE: Posição - uyk - 24/04/2021

Nem com checkpoint sendo setado é possivel?


RE: Posição - Vel - 24/04/2021

(24/04/2021 19:05)uyk Escreveu: Nem com checkpoint sendo setado é possivel?

Você pode fazer usando o plugin streamer (Map Icons) + um timer.


RE: Posição - xbruno1000x - 24/04/2021

(24/04/2021 20:26)Vel Escreveu:
(24/04/2021 19:05)uyk Escreveu: Nem com checkpoint sendo setado é possivel?

Você pode fazer usando o plugin streamer (Map Icons) + um timer.

A include CustomMarks é basicamente isso. Já poupa um grande tempo...além do que é um código simples e pode ser importado para o GM caso não deseje utilizar a include. É sem duvida o método mais rápido.

Sobre o checkpoint, não é possível setar mais de um checkpoint por vez, não funciona corretamente. Também vale para sequências de checkpoints, pois isso gera conflitos de checkpoints.