Huhu,
ich habe es nun endlich geschafft einen halbwegs guten Kilometerzähler zu bauen beziehungsweise in mein Script einzubinden. Allerdings, habe ich das Problem, dass er immer die Meter/Kilometer hochzählt, auch wenn ich mit dem Auto auf einer Stelle stehe. Als Filterscript hat das ganze wunderbar funktioniert, nur jetzt in meinem Gamemode irgendwie nicht.
Der Stock der aufgerufen wird um die Kilometer/Meter zu berechnen:
stock KMChange(playerid, veh) {
new Float:distanz, Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
distanz=GetDistanceFromPointToPoint(xx[playerid], yy[playerid], zz[playerid], x, y, z);
if(distanz > 100) return 1;
distance[playerid] = distance[playerid]+distanz;
GetPlayerPos(playerid, xx[playerid], yy[playerid], zz[playerid]);
if(distance[playerid] > 100) {
ServerVehicles[veh][Meter]++;
distance[playerid] = distance[playerid]-100;
if(ServerVehicles[veh][Meter] == 100) {
ServerVehicles[veh][KM]++;
ServerVehicles[veh][Meter] = 0;
}
return 1;
}
return 1;
}
Und hier wird er aufgerufen:
public Speedo() {
for(new i=0; i < MAX_PLAYERS; i++) {
if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i) && !IsPlayerNPC(i) && SpielerInfo[i][Eingeloggt] == 1) {
new str[255], kmh, veh = GetPlayerVehicleID(i);
KMChange(i, veh);
kmh = getkmh(i, true);
format(str, 255, "Geschwindigkeit: %d km/h~n~Tankinhalt: 33.5/55.0l~n~Zustand: %s~w~~n~KM-Gesamt: %d.%d km~n~TUEV: %s~w~~n~Motor: %s", kmh, Zustand(veh), ServerVehicles[veh][KM], ServerVehicles[veh][Meter], HatTuev(veh), MotorStatus(veh));
PlayerTextDrawSetString(i, TachoInfo, str);
}
}
return 1;
}
Und hier noch einmal der stock "GetDistance...":
public Float:GetDistanceFromPointToPoint(Float:X,Float:Y,Float:Z,Float:tX,Float:tY,Float:tZ) { return Float:floatsqroot((tX-X)*(tX-X)+(tY-Y)*(tY-Y)+(tZ-Z)*(tZ-Z)); }
Der pbulic Speedo wird mit einem Timer alle 200ms aufgerufen.
Ich hoffe Ihr könnt mir helfen, was ich für einen Denkfehler habe, ist ja auch schon spät.
Grüßee!