habs verändert und getestet jetzt klapps:
#include <a_samp>
#define TACHOTIME 200
new Float:X1[MAX_PLAYERS];
new Float:Y1[MAX_PLAYERS];
new Float:Z1[MAX_PLAYERS];
new Float:X2[MAX_PLAYERS];
new Float:Y2[MAX_PLAYERS];
new Float:Z2[MAX_PLAYERS];
forward TachoTimer();
new Text:Tacho[MAX_PLAYERS];
public OnGameModeInit()
{
SetTimer("TachoTimer",TACHOTIME,1);
}
public TachoTimer()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
{
new Float:Entfernung, Float:Geschwindigkeit; // Die definierten Floats die mit den Werten gefüttert werden
GetVehiclePos(GetPlayerVehicleID(i), X1[i], Y1[i], Z1[i]); //Erste Koordinate wird genommen
Entfernung = floatsqroot(floatpower(floatabs(floatsub(X1[i], X2[i])), 2)+floatpower(floatabs(floatsub(Y1[i], Y2[i])), 2)+floatpower(floatabs(floatsub(Z1[i], Z2[i])), 2)); //Berechnung der Entfernung
Geschwindigkeit = (Entfernung / (TACHOTIME/1000)) * 3.6; //Meter/Sekunde in Kilometer/Stunde
new Tachostring[20]; // definiert den String
format(Tachostring, sizeof(Tachostring), "Km/h: %d", floatround(Geschwindigkeit)); //Hier das format, was es macht siehe oben im Wiki-Link. floatround rundet die Kommerzahl (Float:Geschwindigkeit) zu einer normalen ganzzahligen zahl, damit wir den Integer %d der für ganze zahlen ist, verwenden können.
TextDrawSetString(Tacho[i], Tachostring); //Setzt den String für das Textdraw für den Spieler mit der ID "i"
GetVehiclePos(GetPlayerVehicleID(i), X2[i], Y2[i], Z2[i]); //Zweite Koordinate wird genommen
}
}
return 1;
}
public OnPlayerConnect(playerid)
{
Tacho[playerid] = TextDrawCreate(550.0, 370, " ");
TextDrawLetterSize(Tacho[playerid], 0.4, 1.1);
TextDrawFont(Tacho[playerid], 3);
TextDrawSetShadow(Tacho[playerid], 2);
TextDrawSetOutline(Tacho[playerid],2);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
TextDrawDestroy(Tacho[playerid]);
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
if(newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER)
{
TextDrawShowForPlayer(playerid,Tacho[playerid]);
}
else if(oldstate == PLAYER_STATE_DRIVER || oldstate == PLAYER_STATE_PASSENGER)
{
TextDrawHideForPlayer(playerid,Tacho[playerid]);
}
return 1;
}
//e hab was am code verändert