Moin / Nabend liebe Community,
ich benutze auf Empfehlung das KM Include:
https://forum.sa-mp.com/showthread.php?t=404367
Meine Codeschnipsel:
Hier wird der Timer zum Aktualisieren Gestartet beim Anschalten und gekillt beim abschalten.
Code
ocmd:motor(playerid, params[]){
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)return SCM(playerid,COLOR_RED, "[FEHLER] {FFFFFF}Du bist kein Fahrer eines Fahrzeugs");
new vID = getCarID(playerid), KMTimer[MAX_PLAYERS],
tmp_lights,
tmp_alarm,
tmp_doors,
tmp_bonnet,
tmp_boot,
tmp_objective;
if(vID == INVALID_VEHICLE_ID) vID = GetPlayerVehicleID(playerid);
GetVehicleParamsEx(vID, motor[vID], tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
if(motor[vID] == 0 || motor[vID] == -1){
if(tank[vID] <= 0){
tank[vID] = 0;
SCM(playerid, COLOR_BLUE, "[INFO] {FFFFFF}Dieses Fahrzeug hat kein Kraftstoff mehr");
}else{
PlayerTextDrawHide(playerid, Tacho_TD[playerid][4]);
PlayerTextDrawColor(playerid, Tacho_TD[playerid][4], COLOR_GREEN);
PlayerTextDrawShow(playerid, Tacho_TD[playerid][4]);
KMTimer[playerid] = SetTimerEx("setKiloMeter", 1000, true, "d", playerid);
motor[vID] = 1;
}
}else{
if(getVehicleSpeed(playerid) >= 30)return SCM(playerid, COLOR_BLUE, "[INFO] {FFFFFF}Du kannst den Motor nicht während der Fahrt aus machen");
motor[vID] = 0;
PlayerTextDrawHide(playerid, Tacho_TD[playerid][4]);
PlayerTextDrawColor(playerid, Tacho_TD[playerid][4], COLOR_RED);
PlayerTextDrawShow(playerid, Tacho_TD[playerid][4]);
KillTimer(KMTimer[playerid]);
}
SetVehicleParamsEx(vID, motor[vID], tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
return 1;
}
Alles anzeigen
Code
public setKiloMeter(playerid){
for(new i = 0; i < MAX_PLAYERS; i++){
if(!IsPlayerConnected(i) || !pInfo[i][pLoggedIn])continue;
new vID = GetPlayerVehicleID(i);
if(!IsPlayerInVehicle(i, vID)) continue;
if(GetKilometers(vID) > 0){
printf("%i, %0.2f", vID, kmstand[vID]);
kmstand[vID] += GetKilometers(vID);
setVehicleKM(playerid, vID);
ResetMetersTraveled(vID);
}
}
return 1;
}
Alles anzeigen
Problem ist jetzt folgendes:
Wenn ich als einziger Spieler (Playerid 0) auf dem Server bin und fahre läuft alles super, doch sobald ein zweiter Spieler (Sandbox) drauf ist, in einem Fahrzeug sitzt MOTOR ist allerdings AUS und ich fahre mit playerid 0 weiter zählt er mehr km als normal ist... Zumal wenn ich mit PlayerID 0 stehen bleibe (egal ob Motor an oder aus), der KM Stand geht immer weiter ...
Ich hoffe es war einigermaßen verständlich
MfG
XonarZ