Timerzeit abfragen

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
  • new gTimer;


    stock CreateTimer(func[], interv, repeat) {
    gTimer = GetTickCount();
    return SetTimer(func, interv, repeat);
    }


    stock GetTime() {
    return (GetTickCount() - gTimer);
    }


    Funktioniert nur bei einem Timer, Abweichung von der echten Zeit sind immer da.

  • new gJailTime[MAX_PLAYERS] = 0;


    stock PutPlayerInJail(playerid) {
    // Überprüfe, ob Spieler nicht bereits im Knast ist
    // Stecke Spieler in Knast
    // gJailTime[playerid] = GetTickCount();
    return 1;
    }


    stock GetPlayerJailTime(playerid) return (GetTickCount() - gJailTime[playerid]);


    Du musst es nur an deinen Code anpassen.

  • Eleganter wäre es, wenn du Zeit darin speicherst, wann der Spieler aus dem Knast kommt.
    gJailTime[playerid] = GetTickCount() + (Zeit in Sekunden * 1000);[pwn]


    Dann musst du nur noch die Rückgabe bei GetPlayerJailTime ändern
    [pwn]stock GetPlayerJailTime(playerid) {
    new __tick = GetTickCount();
    return ((__tick > gJailTime[playerid]) ? (0) : (gJailTime[playerid] - __tick));
    }


    Der Nachteil ist, dass du bei dieser Methode nicht die Gesamte Zeit speicherst, sondern dann nur noch die verbliebene Zeit bis zu Freiheit.

  • Du solltest die Funktion aber nicht nutzen, wenn dein Server länger als 24-Tage am Stück Online bleibt (bzw. bleiben soll).
    Nach ca. 24 Tagen haste nämlich nen Overflow an Variablen. Sprich die Zeit kann nicht richtig gespeichert werden.


    Ansonsten einfach ne Variable für die Sekunden und dann verringern:
    public Knasttimer(playerid)
    {
    if(knastzeit[playerid]-1 <= 0)
    {
    //freilassen
    }
    else
    {
    //Zeit noch nicht abgelaufen
    }
    }


    Kannste dann mit Sekunden oder Minuten machen ;)