Hallo Brotfische,
Ich hab vor einen Tacho mit kmh anzeige zu erstellen :o und weiß ned wie ich ansetzen soll bzw wie frage ich die Geschwindigkeit vom Fahrzeug ab?
Hallo Brotfische,
Ich hab vor einen Tacho mit kmh anzeige zu erstellen :o und weiß ned wie ich ansetzen soll bzw wie frage ich die Geschwindigkeit vom Fahrzeug ab?
Das geht mit GetVehicleVelocity ![]()
Ich habe weng was gemacht und es geht nich
public KmhUpdate(playerid)
{
new pVeh,string[80],Float:PosX,Float:PosY,Float:PosZ,Geschw;
pVeh=GetPlayerVehicleID(playerid);
Geschw=GetVehicleVelocity(pVeh,PosX,PosY,PosZ);
format(string,sizeof(string)," %.0f",Geschw);
printf("Geschw:%d",Geschw);
}
Mach das so:
new Float:Bewegung[3],Float:health,string[300];
GetVehicleHealth(GetPlayerVehicleID(i),health);
GetVehicleVelocity(GetPlayerVehicleID(playerid),Bewegung[0],Bewegung[1],Bewegung[2]);
new Float:Ges=floatsqroot(floatpower(Bewegung[0],2)+floatpower(Bewegung[1],2)+floatpower(Bewegung[2],2))*175;
macht nur komische Zahlen und printet schon bevor ich überhaupt gefahren bin ![]()
public KmhUpdate(playerid)
{
new Float:Bewegung[3],Float:health,string[300];
GetVehicleHealth(GetPlayerVehicleID(playerid),health);
GetVehicleVelocity(GetPlayerVehicleID(playerid),Bewegung[0],Bewegung[1],Bewegung[2]);
new Float:Ges=floatsqroot(floatpower(Bewegung[0],2)+floatpower(Bewegung[1],2)+floatpower(Bewegung[2],2))*175;
printf("%f",Ges);
}
public KmhUpdate(playerid)
{
new Float:Bewegung[3],string[300];
GetVehicleVelocity(GetPlayerVehicleID(playerid),Bewegung[0],Bewegung[1],Bewegung[2]);
new Float:Ges=floatsqroot(floatpower(Bewegung[0],2)+floatpower(Bewegung[1],2)+floatpower(Bewegung[2],2))*175;
format(string,sizeof(string),"Geschwindigkeit: %d",floatround(Ges,floatround_round));
printf("%f",Ges);
}
public KmhUpdate(playerid)
{
new Float:Bewegung[3],string[300];
GetVehicleVelocity(GetPlayerVehicleID(playerid),Bewegung[0],Bewegung[1],Bewegung[2]);
new Float:Ges=floatsqroot(floatpower(Bewegung[0],2)+floatpower(Bewegung[1],2)+floatpower(Bewegung[2],2))*175;
format(string,sizeof(string),"Geschwindigkeit: %d",floatround(Ges,floatround_round));
printf("%f",string);
}
Printet immer null
Du musst dich auch in einem Fahrzeug befinden, und fahren.
Hab ich
Zeig mal, wo startest du den Timer denn?
public OnPlayerConnect(playerid)
{
SetTimerEx("KmhUpdate",150,true,"d",playerid);
Mach den Timer unter OnGameModeInit:
SetTimer("KmhUpdate",1000,1);
Nun der Public:
public KmhUpdate()
{
for(new i =0;i<GetMaxPlayers();i++)
{
if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
{
new Float:Bewegung[3],string[300];
GetVehicleVelocity(GetPlayerVehicleID(i),Bewegung[0],Bewegung[1],Bewegung[2]);
new Float:Ges=floatsqroot(floatpower(Bewegung[0],2)+floatpower(Bewegung[1],2)+floatpower(Bewegung[2],2))*175;
format(string,sizeof(string),"Geschwindigkeit: %d",floatround(Ges,floatround_round));
printf("%f",Ges);
}
}
}
Versuch das mal
ich war noch garnicht auf dem Server hat er schon Zahlen ausgegeben ![]()
Dann entferne das "print" doch einfach mal, und mach anstatt "%f" mal "%d"
wenn ich das print entferne weiß ich doch nicht obs geht ![]()
Dann musst du dir wohl einen TextDraw erstellen, der sich alle 1 Sekunde (immer wenn der public aufgerufen wird) sich updatet
wollte ich eigentlich später machen aber dann muss ich das wohl jetzt schon machen ![]()
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)) * 179.28625;
return floatround(ST[3]);
}
Nun kannst du die Funktion GetPlayerSpeed(playerid) da nutzen wo du die Geschwindigkeit bekommen möchtest.
Beispiel:
forward SpeedTimer(playerid);
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
{
SetTimer("SpeedTimer",1000,1);
}
return 1;
}
public SpeedTimer(playerid)
{
printf("%d km/h",GetPlayerSpeed(playerid));
return 1;
}
geht aber beschleunigt einwenig flott
hab den Timer auf 150 gesetzt vllt zu kurtz?