Hi,
ich habe ein Problem mit einem Timer, und zwar wenn der Spieler in den Wagen einsteigt, startet ein Timer mit Intervall 1 Sekunden der Carhealth überprüft. Wenn die dann unter 300 ist soll der Spieler eingeklemmt sein, also TogglePlayerControllable(playerid, 0). Das Funktioniert soweit auch, nur habe ich folgendes Problem:
Wenn ich in ein Fahrzeug einsteige, danach wieder raus gehe und ein anderer User steigt ein, dann kommt bei mir die Meldung das ich eingeklemmt wäre, das passiert auch umgekehrt.
Ich hab alles versucht den TImer zu löschen sobald ich aus dem Fahrzeug austeige:
Bei OnPlayerStateChange(playerid):
if(newstate == 2)
{
if(CarInfo[carid][tankaktuell] == 0)
{
SendClientMessage(playerid, ORANGE, "Der Tank ist leer! Du musst den Pannendienst rufen.");
SendClientMessage(playerid, ORANGE, "Tippe /exit um wieder auszusteigen!");
TogglePlayerControllable(playerid, 0);
}
else
{
Tanktimer = SetTimer("Tankanzeigetimer", 1000, true);
TextDrawShowForPlayer(playerid, Tankanzeige);
Tankfunktionstimer = SetTimer("Tankfunktion", 100000, true);
//Geschwindigkeitstimer = SetTimer("Geschwindigkeitstimer2", 1000, true);
//TextDrawShowForPlayer(playerid, Geschwindigkeit);
}
if(CarInfo[carid][carshealth] <= 300)
{
SendClientMessage(playerid, ORANGE, "Dein Wagen hat einen Motorschaden! Du musst den Pannendienst rufen.");
SendClientMessage(playerid, ORANGE, "Tippe /exit um wieder auszusteigen!");
TogglePlayerControllable(playerid, 0);
return 1;
}
else
{
Tachotimer = SetTimer("Tacho", 1000, true);
TextDrawShowForPlayer(playerid, Tachoanzeige);
}
}
Dann beim Aussteigen:
if(newstate == 1)
{
TextDrawHideForPlayer(playerid, Tachoanzeige);
TextDrawHideForPlayer(playerid, Tankanzeige);
KillTimer(Tachotimer);
KillTimer(Tanktimer);
KillTimer(Tankfunktionstimer);;
}
Zur Sicherheit habe ich bei OnPlayerExitVehicle das "KillTimer(Tachotimer)" nochmal rein aber das problem tritt immer wieder auf
Hoffe mir kann jemand helfen!
Gruß samu