Hi Leute, ich habe mir ein Speedometer scrpipt downgeloadet und es ein bisschen umgeschreiben. Es funkioniert auch soweit, aber nur direkt nach dem Server Start. Da wird mir die korrekte Geschwindigkeit angezeigt. Wenn ich dann allerdings relogge und der Server weiterläuft und ich dann wieder in ein Fahrzeug steige, und fahre, werden plötzlich 2 verschiedene Geschwindigkeiten angezeigt. Die richtige nur ganz kurz und die Falsche fast die ganze Zeit. Ich hoffe ihr könnt mir weiterhelfen.
Mein Script:
public OnPlayerConnect(playerid)
{
TT_0[playerid] = TextDrawCreate(142.000000,365.000000,"100");
TextDrawUseBox(TT_0[playerid],1);
TextDrawBoxColor(TT_0[playerid],0x00000099);
TextDrawTextSize(TT_0[playerid],250.000000,0.000000);
TextDrawAlignment(TT_0[playerid],0);
TextDrawBackgroundColor(TT_0[playerid],0x000000ff);
TextDrawFont(TT_0[playerid],3);
TextDrawLetterSize(TT_0[playerid],0.499999,1.000000);
TextDrawColor(TT_0[playerid],0xffffffff);
TextDrawSetOutline(TT_0[playerid],1);
TextDrawSetProportional(TT_0[playerid],1);
TextDrawSetShadow(TT_0[playerid],1);
TextDrawHideForAll(TT_0[playerid]);
}
public Updating(playerid)//Ist ein Timer mit dem Intervall 1000
{
if(IsPlayerInAnyVehicle(playerid))
{
new speed[128];
new Float:xg,Float:yg,Float:zg;
new Float:distance,value;
GetPlayerPos(playerid, xg, yg, zg);
distance = floatsqroot(floatpower(floatabs(floatsub(xg,SavedPOSx[playerid])),2)+floatpower(floatabs(floatsub(yg,SavedPOSy[playerid])),2)+floatpower(floatabs(floatsub(zg,SavedPOSz[playerid])),2));
value = floatround(distance * 11000);
SavedPOSx[playerid] = xg;
SavedPOSy[playerid] = yg;
SavedPOSz[playerid] = zg;
format(speed,sizeof(speed),"%d km/h",floatround(value/3200));
TextDrawSetString(TT_0[playerid],speed);
}
}
OnPlayerStateChange(playerid,...,...)
{
if(newstate == PLAYER_STATE_DRIVER)
{
TextDrawShowForPlayer(playerid,TT_0[playerid]);
}
if(newstate == PLAYER_STATE_ONFOOT)
{
TextDrawHideForPlayer(playerid,TT_0[playerid]);
}
}
public OnPlayerDisconnect(playerid, reason)
{
TextDrawDestroy(TT_0[playerid]);
TextDrawHideForAll(TT_0[playerid]);
}