Timer stoppen mit einen Befehl (Totensystem)

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo
    Ich möchte gerne eine Erweiterung in mein Totensystem machen.
    Ich habe jetzt gemacht, wenn der Spieler stirbt, dann liegt er da rum Tod.
    Dann möchte ich einen Timer erstellen.
    Wenn er nicht wiederbelebt wird, dann soll er in 15 Minuten respawnt werden und muss in ein Licht laufen.
    Dazu starte ich einen Timer
    SetTimer("lichtlaufen",15 MInuten,false,playerid);
    So wenn der Timer abläuft dann ist es klar SetPlayerPos dann Portet er mich ja dahin.
    Das ist ja noch ganz einfach.


    So wenn er /revive
    Wenn er revivet wird soll lebt er wieder aber der Timer läuft dann ja noch weiter oder ?
    Und wenn der Timer weiterläuft dann werde ich ja im Himmel gespawnt.
    So ich möchte aber wenn ich wiederbelebt wurde das der Timer dann aufhört zu laufen.
    Ich weiss nicht ob es die Funktion gibt.
    StopTimer.
    Auf jedenfall möchte ich das der Timer gestoppt wird.
    Bitte um hilfe und aufklärung


    Scripter von LoE

  • erstens heißt es SetTimerEx und du kannst Timer mit KillTimer(id); abbrechen lassen.


    dazu musst du jedoch erst die id des timers speichern in einer variabel.


    oben im skript
    new DeathTimer[MAX_PLAYERS char],
    bool:player_is_death[MAX_PLAYERS char];
    forward lichtlaufen(playerid);


    Nach dem setzen der position nach dem er gestorben ist
    DeathTimer{playerid} = SetTimerEx("lichtlaufen",15*60*1000,false,"i",playerid);
    player_is_death{playerid} = true;



    public lichtlaufen(playerid)
    {
    ....


    }


    beim Befehl
    new i, Pos[3];
    GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
    for(; i < MAX_PLAYERS; ++i){
    if(IsPlayerInRangeOfPoint(i,5.0,Pos[0],Pos[1],Pos[2]) && player_is_death(i)){
    ...
    KillTimer(DeathTimer{i});
    break;
    }
    }