Portal SAMP
[Ajuda] AJUDA > Atualizar posição do player com checkpoint - 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] AJUDA > Atualizar posição do player com checkpoint (/showthread.php?tid=2181)



AJUDA > Atualizar posição do player com checkpoint - LUISBLACK_professor - 09/03/2022

Tipo assim, eu estou fazendo um emprego de Uber pro meu servidor! E eu queria que quando o player digitasse no chat o comando /servicouber ele enviasse uma mensagem para todos os motoristas de uber. Bom, até aí, consegui! O problema mesmo é a posição do player...Assim que ele dá o comando /servicouber é mandado uma mensagem para todos os motoristas de uber, e seta o checkpoint na localização onde o player digitou o comando. Mas o checkpoint continua lá no mesmo lugar onde o player digitou o comando pela primeira vez, apenas se ele digitar novamente o comando o checkpoint atualiza, mas da mesma forma irá ficar sempre onde o player digitar o comando.

Resumindo, eu queria que o checkpoint acompanhasse sempre o player que digitou o comando, mas só quem pode ver o checkpoint seria os motoristas de uber!


Segue abaixo meu código, caso alguem queira me ajudar a conseguir ajeitar esse pequeno código.



Código:
CMD:servicouber(playerid, params[])
{
new id;
    new Float:X, Float:Y, Float:Z;
if(sscanf(params, "s")) return MensagemDupla(playerid, "Use: /servicouber", "Para chamar um UBER");
if(PlayerEmprego[playerid][emprego] == 2) return SendClientMessage(playerid, -1, "Você já é um UBER");
format(NovaVARIAVEL, sizeof(NovaVARIAVEL), "O player %s está solicitando um UBER", pName(playerid));
SendUberMessage(-1, NovaVARIAVEL);
GetPlayerPos(playerid, X, Y, Z);
SetPlayerCheckpoint(id, X, Y, Z, 3.0);
return 1;
}




Código:
///ESSA É A STOCK QUE ENVIA MENSAGEM PARA OS MOTORISTAS DE UBER


stock SendUberMessage(cor, mensagem[])
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(PlayerEmprego[i][emprego] == 2)
            {
                SendClientMessage(i, cor, mensagem);
            }
        }
    }
    return 0;
}



RE: AJUDA > Atualizar posição do player com checkpoint - Luiz - 09/03/2022

Basicamente, você deve criar um timer e atualizar a posição do jogador para todos os Ubers.


RE: AJUDA > Atualizar posição do player com checkpoint - xbruno1000x - 10/03/2022

Primeiramente, lhe peço encarecidamente que se atente a área de postagem do tópico. A área de suporte mobile, como o nome já diz, é exclusiva para problemas mobile. Basicamente, se um problema ocorre em PC e mobile, ele é da área de suporte padrão.

Sobre o problema:
É necessário criar um SetTimerEx para atualizar a posição do player.

Código:
SetTimerEx("AtualizarUber", 1000, true, "ii", playerid, id); //coloque esse trecho no comando.

forward AtualizarUber(playerid, uberid);
public AtualizarUber(playerid, uberid)
{
    GetPlayerPos(playerid, X, Y, Z);
    SetPlayerCheckpoint(id, X, Y, Z, 3.0);
    return 1;
}



RE: AJUDA > Atualizar posição do player com checkpoint - LUISBLACK_professor - 11/03/2022

(10/03/2022 00:31)xbruno1000x Escreveu: Primeiramente, lhe peço encarecidamente que se atente a área de postagem do tópico. A área de suporte mobile, como o nome já diz, é exclusiva para problemas mobile. Basicamente, se um problema ocorre em PC e mobile, ele é da área de suporte padrão.

Sobre o problema:
É necessário criar um SetTimerEx para atualizar a posição do player.

Código:
SetTimerEx("AtualizarUber", 1000, true, "ii", playerid, id); //coloque esse trecho no comando.

forward AtualizarUber(playerid, uberid);
public AtualizarUber(playerid, uberid)
{
    GetPlayerPos(playerid, X, Y, Z);
    SetPlayerCheckpoint(id, X, Y, Z, 3.0);
    return 1;
}

Fiz o que vc disse, e funcionou para atualizar a posição o problema é que agora so quem ver o checkpoint é o playerid, no caso, quem digitar o comando! Pode me ajudar ?




Meu codigo ficou assim
Código:
    new id;
    if(sscanf(params, "s")) return MensagemDupla(playerid, "Use: /servicouber", "Para chamar um UBER");
    if(PlayerEmprego[playerid][emprego] == 2) return SendClientMessage(playerid, -1, "Você já é um UBER");
    format(NovaVARIAVEL, sizeof(NovaVARIAVEL), "O player %s está solicitando um UBER", pName(playerid));
    SendUberMessage(-1, NovaVARIAVEL);
    SetTimerEx("AtualizarUber", 1000, true, "i", playerid, id); //coloque esse trecho no comando.
    return 1;
}

Código:
forward AtualizarUber(playerid, id);
public AtualizarUber(playerid, id)
{
    new Float:X, Float:Y, Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    SetPlayerCheckpoint(id, X, Y, Z, 3.0);
    return 1;
}



RE: AJUDA > Atualizar posição do player com checkpoint - xbruno1000x - 11/03/2022

Código:
SetTimerEx("AtualizarUber", 1000, true, "i", playerid, id); //coloque esse trecho no comando.

Esse trecho do código tá formatado diferente. Deveriam haver 2 i's.

Ficando dessa forma:
Código:
SetTimerEx("AtualizarUber", 1000, true, "ii", playerid, id); //coloque esse trecho no comando.



RE: AJUDA > Atualizar posição do player com checkpoint - ProKillerPa - 15/03/2022

Atente-se se você está usando sscanf2, pois caso afirmativo você precisa declarar o size da string que você está usando no sscanf

Código PHP:
if(sscanf(params"s[TAMANHO DA STR]")) 

Abraços