[Ajuda] Criei meu velocimetro e agora?
#1

Criei as textdraw e agora como faзo para ele comeзar a contar a velocidade?

criei uma textdraw com a velocidade e outra com KM/H

textdraw0
textdraw1

agora como faзo para ele contar a velocidade do veiculo?
Reply
#2

Existe uma funзгo que pega a velocidade do jogador.

Se eu nгo me engano, ela se chama GetVehicleVelocity.

Aн depois vocк usa a funзгo e formata a TextDraw.

Abraзos,
Reply
#3

humm.. entгo seria pelo que vi +- assim?


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]);
}
Reply
#4

Sim, provalvemente essa й a callback que executa a funзгo de pegar a velocidade.
Reply
#5

Quote:
Originally Posted by xCR7
Посмотреть сообщение
Existe uma funзгo que pega a velocidade do jogador.

Se eu nгo me engano, ela se chama GetVehicleVelocity.

Aн depois vocк usa a funзгo e formata a TextDraw.

Abraзos,
So esqueceu dizer que precisara de um timer tambem.

Para pegar a velocidade varias vezes, caso contrario mostrara sempre a mesma.
Reply
#6

fui testar aqui.. e o velocimetro nгo apareзeu contando.. pq sera?
Reply
#7

Sim, como o PT disse, use um SetTimerEx pro playerid a cada X ms e com o valor true pra ele ficar repetindo.

Best95, poste os cуdigos.
Reply
#8

Usa a funзгo GetVehicleVelocity.

Ela pega a velocidade instantвnea do veнculo em cada um dos 3 eixos.

Vocк pode fazer uma formula baseada na velocidade desses 3 eixos, matйria de mecвnica simples, fнsica de ensino mйdio:

Onde Velocidade = raiz de ( (deslocamento X ao quadrado) + (deslocamento Y ao quadrado) + (deslocamento Z ao quadrado) )

Fiz um desenho para te mostrar melhor (onde resultados obtidos seriam X: 10, Y: 15 e Z: 5):



Utilizando conhecimento bбsico com variбveis, й possнvel reproduzir esse cбlculo

Espero que eu tenha lhe ajudado

@Extra

Vocк pode calcular a velocidade de forma mais precisa, utilizando 2 coordenadas obtidas em um intervalo de tampo, calcular o tamanho do vetor usando VectorSize e entгo dividir pelo tempo do intervalo. Essa й a forma bбsica de velocidade = deslocamento dividido pelo tempo.
Reply
#9

fiz assim.. so que ainda nгo esta pegando quando estou dirigindo.

pawn Код:
new PlayerText:Veloci[MAX_PLAYERS];
new Float:kPos[4];
new Kilometros;

onplayerconnect
CriarVelocimetro(playerid);


stocks

stock CriarVelocimetro(playerid)
{
    Veloci[playerid] = CreatePlayerTextDraw(playerid, 3.000000, 423.000000, "~n~");
    PlayerTextDrawFont(playerid, Veloci[playerid], 1);
    PlayerTextDrawLetterSize(playerid, Veloci[playerid], 0.300000, 2.000000);
    PlayerTextDrawSetOutline(playerid, Veloci[playerid], 1);
    SetTimerEx("attVelocimetro", 100, true, "d", playerid);
    return 1;
}

forward attVelocimetro(playerid);
public attVelocimetro(playerid)
{
    new vStr[100];
    if(IsPlayerInAnyVehicle(playerid))
    {
        format(vStr, sizeof(vStr), "%d:KM/h:", rKilometros(playerid));
        PlayerTextDrawSetString(playerid, Veloci[playerid], vStr);
    }else{
        PlayerTextDrawHide(playerid, Veloci[playerid]);
    }
    return 1;
}

stock rKilometros(playerid)
{
    if(IsPlayerInAnyVehicle(playerid))
    {
        GetVehicleVelocity(GetPlayerVehicleID(playerid), kPos[0], kPos[1], kPos[2]);
        kPos[3] = floatmul(floatsqroot(floatadd(floatadd(floatpower(kPos[0], 2), floatpower(kPos[1], 2)),  floatpower(kPos[2], 2))), 170.0);
        Kilometros = floatround(kPos[3] * 1);
    }
    else
        return false;
    return Kilometros;
}
Oque sera que falta?
Reply
#10

tentei fazer isto pensei que deve ser a soluзгo.. mais esta dando erro:

ERRO:
pawn Код:
error 010: invalid function or declaration
LINHAS:
pawn Код:
}else{
return 1;
pawn Код:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(vVeloci[playerid] == true)
    {
    PlayerTextDrawShow(playerid, Veloci[playerid]);
    }
    /*format(String, sizeof(String), "%s", rVNomes[GetVehicleModel(GetPlayerVehicleID(playerid)) - 400]);
    GameTextForPlayer(playerid, String, 1000, 5);*/

    pvehicleid[playerid] = GetPlayerVehicleID(playerid);
    pmodelid[playerid] = GetVehicleModel(pvehicleid[playerid]);
    }else{
    pvehicleid[playerid] = 0;
    pmodelid[playerid] = 0;
    PlayerTextDrawHide(playerid, Veloci[playerid]);
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)