[Tutorial] Velocímetro Básico Usando GameTextForPlayer

É um velocímetro básico, criado a partir de uma GameTextForPlayerEm public OnPlayerStateChange, vamos verificar se o novo estado do jogador é de Motorista. Irá ser criado um tempo que seguira atualizando.

Primeiramente crie a variável global Timer_Velo de preferencia.
pawn Code:


new Timer_Velo;


Em public OnPlayerStateChange, estará verificando se o estado do jogador é de motorista. Caso seja, irá ser criado um tempo que seguira atualizando.

pawn Code:


public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if( newstate == PLAYER_STATE_DRIVER)
    {
        Timer_Velo = SetTimer("KMH", 10, true);
    }


Agora vamos declarar a callback, que será chamada ao tempo correspondente.
pawn Code:


forward KMH(playerid); // Atualizado by DartakousLien :p
public KMH(playerid)
{
    new Str[80];
    format(Str, sizeof(Str), "~w~KM/H:~g~ %d", GetPlayerSpeed(playerid));
    GameTextForPlayer(playerid, Str, false, 6);
}


Aqui, criamos uma string, que armazenara o valor da velocidade do jogador, que será chamada por uma stock .Valor correspondente será função GameTextForPlayer.

Agora declaração da função extra, que obterá a velocidade de determinado jogador, ocorrendo um processo de verificação.


Creditos da função desconhecido.
pawn Code:


stock GetPlayerSpeed(playerid)
{
    new Float:ST[4];
    if(IsPlayerInAnyVehicle(playerid))
    GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
    else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
    ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 100.3;
    return floatround(ST[3]);
}


 Em public OnPlayerStateChange vamos verificar, se o estado antigo do jogador era motorista. Assim, toda vez que ele sair de um veículo em que ele estivesse dirigindo, a verificação será chamada.
pawn Code:


public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if( oldstate == PLAYER_STATE_DRIVER)
    {
        KillTimer(Timer_Velo );
    }


Acima, estamos Destruindo o timer, fazendo que a GameTextForPlayer Desapareça .
A public OnPlayerStateChange deve ficar no final das contas assim :

pawn Code:


public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if( newstate == PLAYER_STATE_DRIVER)
    {
        Timer = SetTimer("KMH", 10, true);
    }
   
    if( oldstate == PLAYER_STATE_DRIVER)
    {
        KillTimer(Timer_Velo);
    }
    return 1;
}


Em fim, espero que tenham entendido.
Minhas intenções foram ajudar, estou aqui em casa deu certo, ficou como eu esperava.

Imagens:

--

--

Creditos: rCr
Espero que gostem!

0 comentários:

Postar um comentário

 
▲ Subir