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?