[Tutorial] Velocнmetro Bбsico Usando GameTextForPlayer.
#1

Entгo galera . fiz aqui , deu certo, e resolvi compartilhar
Й um velocнmetro bбsico , criado a partir de uma GameTextForPlayer.

Eu particularmente fiquei muito feliz, por que conseguir fazer , sem precisar de muito esforзo ,
sу usando a lуgica que eu tinha pensado ...

Em fim .

Primeiramente, na Public OnPlayerState, vamos verificar se o novo estado do jogador й de Motorista.
Se for, vamos disparar um Timer. Siga o exemplo:

OBS: Crie a variбvel global Timer_Velo. de preferencia, no topo de seu GM .
Assim:

pawn Код:
new Timer_Velo;
Aqui , na public OnPlayerStateChange, estamos verificando se o estado do jogador й de motorista, se for
a Variбvel Timer_Velo irб disparar um Timer.

pawn Код:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if( newstate == PLAYER_STATE_DRIVER)
    {
        Timer_Velo = SetTimer("KMH", 10, true);
    }
Agora vamos declarar a Public KMH, que foi chamada pelo Timer.
pawn Код:
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 a velocidade do jogador, que serб chamada por uma stock .
Jogamos o valor encontrado dentro da GameTextForPlayer.

OBS: Faзa exatamente como estб no exemplo.

Agora, no fim do GM, vamos declarar a Stock GetPlayerSpeed. ( Crйditos : Desconhecido , achei na net por acaso)

pawn Код:
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]);
}
E por ultimo, vamos voltar a public OnPlayerState, e 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 Код:
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 Код:
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. aqui em casa deu certo, ficou como eu esperava.

Algumas ScreenShots :


--

--


Se nгo carregar :

http://imageshack.us/a/img842/4350/samp000eng.png
--
http://imageshack.us/a/img29/4905/samp002gme.png
--
http://imageshack.us/a/img20/9828/samp001dmf.png

Boa noite !!
Reply
#2

Alguйm tem alguma observaзгo a fazer ?
Digam gente, й importante parar mim
Reply
#3

use textdraw garoto

simples, se esforзe um pouco mais para explicar as funзхes que usou.
Reply
#4

Ainda nгo sei imprimir os valores nas textdrawns kkk ^^
Vou aprender
Reply
#5

Quote:
Originally Posted by rCr
Посмотреть сообщение
Ainda nгo sei imprimir os valores nas textdrawns kkk ^^
Vou aprender
PlayerTextDrawSetString

TextDrawSetString

muito bom.
Reply
#6

Quote:
Originally Posted by Parka
Посмотреть сообщение
muito bom.
Isso foi um elogio ?

= ]
Reply
#7

se, muitas pessoas nгo valorizam o trabalho de outros e o que fazem й criticar.
Reply
#8

Bem bacana.
Reply
#9

Fico bom gostei.

:]
Reply
#10

Isso nгo funcionarб eficientemente, apenas para o id 0.
Verifique os timers. (Usar SetTimerEx)
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)