Ich habe mir die Include grade mal angeschaut. Der Fehler liegt dort. Selbstverständlich werde ich auf diese auch nicht mehr verweisen.
Die Include funktioniert nur mit einem Fahrzeug. Ich spare mir, diese umzuschreiben, da dein Timer das meiste schon von sich erledigen kann:
Wirf bitte die Include aus deinem Code und versuche folgendes:
Unter den Includes:
new Float:v_oldPos[MAX_VEHICLES][3];
Timer:
forward setKiloMeter();
public setKiloMeter()
{
printf("Call: %d", gettime());
new Float:km;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) || !pInfo[i][pLoggedIn])continue;
if(GetPlayerState(i) != PLAYER_STATE_DRIVER) continue;
new vID = GetPlayerVehicleID(i);
if(!vID) continue;
printf("vID: %d, Motor: %d", vID, motor[vID]);
if(motor[vID] == 0 || motor[vID] == -1) continue;
if(GetKilometers(vID) > 0)
{
km = GetVehicleDistanceFromPoint(vID, v_oldPos[vID][0], v_oldPos[vID][1], v_oldPos[vID][2]) * 0.001;
kmstand[vID] += km;
printf("vID: %i, Total: %0.2f, Add: %0.2f, i: %i", vID, kmstand[vID], km, i);
setVehicleKM(i, vID);
GetVehiclePos(vID, v_oldPos[vID][0], v_oldPos[vID][1], v_oldPos[vID][2]);
}
}
return 1;
}
OnPlayerStateChange:
if(newstate == PLAYER_STATE_DRIVER)
{
new vID = GetPlayerVehicleID(playerid);
if(vID) GetVehiclePos(vID, v_oldPos[vID][0], v_oldPos[vID][1], v_oldPos[vID][2]);
}