hey,
ich hab mal nen Tacho editiert.
Dabei muss ich feststellen, dass die KM/h immer auf 0 bleibt.
hier der Code:
forward TachoTimer();
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 / (TACHOUPDATE/1000)) * 3.6; //Meter/Sekunde in Kilometer/Stunde
new Tachostring[20]; // definiert den String
new Tacho2string[30];
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
TextDrawShowForPlayer(i, Tacho[i]);
}
else
{
TextDrawHideForPlayer(i, Tacho[i]);
}
}
return 1;
}
oben:
#define TACHOUPDATE 500
und unter OnGameModeInit:
for(new i = 0; i < MAX_PLAYERS; i++)
{
Tacho[i] = TextDrawCreate(516.000000, 360.000000, "KM/h:---");
TextDrawBackgroundColor(Tacho[i], 255);
TextDrawFont(Tacho[i], 2);
TextDrawLetterSize(Tacho[i], 0.320000, 1.000000);
TextDrawColor(Tacho[i], -1);
TextDrawSetOutline(Tacho[i], 1);
TextDrawSetProportional(Tacho[i], 1);
}
SetTimer("TachoTimer", TACHOUPDATE, true);
Lg