Die perfekte Uhr

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 bin gerade am überlegen, wie man die perfekte Uhr scripted.
    Beim Godfather-Script ist es ja so, dass ein Timer jede Minute die Uhrzeit mit gettime aktualisiert.
    Leider führt das zu Bugs, da Timer nicht genau sind. Das führt dann dazu,
    dass manchmal Minuten "übersprungen" werden.


    Was ist dazu die beste Alternative, v.a. im Hinblick auf Performance und Sicherheit, dass keine Fehler auftreten?
    - jede Sekunde mit gettime synchronisieren
    - jede Sekunde mit UNIX_TIMESTAMP synchronisieren
    - jede Sekunde eine Variable hochzählen und jede Nacht mit gettime synchronisieren
    - jede Minute eine Variable hochzählen und jede Nacht mit gettime synchronisieren
    - Anderer Vorschlag?


    Danke für die Antworten :)

  • Zitat

    - jede Sekunde mit gettime synchronisieren


    Beste Lösung mMn. Den Timer einfach so einstellen, dass er mindestens 1x pro Sekunde eine Funktion aufruft. Wenn die Timer exakt wären, dann ein Wert unter 1000ms. Sonst hast du eventuell das Pech und überspringst eine Sekunde in der Anzeige.

    Zitat

    jede Sekunde mit UNIX_TIMESTAMP synchronisieren


    Wo bekommst du denn den UNIX_TIMESTAMP her ? Meinst du gettickcount ? Ist im Endeffekt die gleiche Lösung wie mit gettime.

    Zitat

    - jede Sekunde eine Variable hochzählen und jede Nacht mit gettime synchronisieren
    jede Minute eine Variable hochzählen und jede Nacht mit gettime synchronisieren


    Beides ist Mist. Angenommen du machst eine Aktualisierung immer um Mitternacht und lässt dann immer 1000ms (und/oder 60000ms) Timer laufen für die Minute und Sekunden, wird es von der Zeit absolut nicht passen.
    http://forum.sa-mp.com/showthread.php?t=289675

    Zitat

    ... As you can see, the timer is roughly 25% off! ...


    Mit einer Ungenauigkeit wie dieser kann man keine ordentliche Uhr basteln.

  • Die Funktion gettime gibt den Timestamp zurück ^^


    Also das mit der Variable hochzählen halte ich eigentlich auch für keine gute Idee, da die Timer sehr ungenau sind.
    Timerfix will ich aber eher nicht benutzen, weil ich nicht verstehe, wie das funktioniert und auch sonst
    relativ unabhängig von fremden Plugins und Includes sein will.


    Bei mir im Script werden die Sekunden nicht angezeigt, deswegen ist die Synchronisierung mit gettime 1x pro Sekunde
    eine gute Idee, denn so weicht die Anzeige um maximal einer Sekunde ab.


    Mit einer Ungenauigkeit wie dieser kann man keine ordentliche Uhr basteln.


    Meinst du, dass mit der oben beschriebenen Methode (1x pro Sekunde mit gettime abgleichen) es trotzdem sehr ungenau sein kann?

  • Die erste angesprochene Variante, gettime abzugleichen, ist die einzig sinnvolle Methode, vor allem weil es dir ja dir Zeit über die Parameter zurückgibt. Ich habe es bei mir so eingestellt, dass es alle 15 Sekunden das Textdraw aktualisiert, das reicht völlig aus, keiner merkt eine Verzögerung von 15 Sekunden. Wenn du es genauer willst, musst es öfters aktualisieren.



    Die anderen Methoden sind, wie Goldkiller schon sagte, nicht zu empfehlen.