Criei meu velocimetro e agora? -
best95 - 20.02.2015
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?
Re: Criei meu velocimetro e agora? -
ipsLuan - 20.02.2015
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,
Re: Criei meu velocimetro e agora? -
best95 - 20.02.2015
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]);
}
Re: Criei meu velocimetro e agora? -
ipsLuan - 20.02.2015
Sim, provalvemente essa й a callback que executa a funзгo de pegar a velocidade.
Re: Criei meu velocimetro e agora? -
PT - 20.02.2015
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.
Re: Criei meu velocimetro e agora? -
best95 - 20.02.2015
fui testar aqui.. e o velocimetro nгo apareзeu contando.. pq sera?
Re: Criei meu velocimetro e agora? -
ipsLuan - 20.02.2015
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.
Re: Criei meu velocimetro e agora? -
arakuta - 20.02.2015
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.
Re: Criei meu velocimetro e agora? -
best95 - 20.02.2015
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?
Re: Criei meu velocimetro e agora? -
best95 - 20.02.2015
tentei fazer isto pensei que deve ser a soluзгo.. mais esta dando erro:
ERRO:
pawn Код:
error 010: invalid function or declaration
LINHAS:
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;
}