Wie rechne ich es aus? 24 Stunden in eine Stunde

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
  • ich würde gerne mit Timern arbeiten doch ich zerbreche mir seit einer Stunde den Kopf wie ich es am besten mache also es soll so ablaufen


    1 Tag soll im Script 1 Stunde sein das heißt ich setzte jede Sekunde eine 3600 hoch bis es bei 3,600,000 Mio ist dann mache ich die Worldtime auf 22 Uhr das es dunkel wird
    dann ist es eine Stunde Dunkel wenn diese 3600 wieder bei 3,600,000 Mio ist wird es Hell also 12 Uhr


    nun wollte ich eine Uhr dazu bauen das 60 Minuten 1 Tag sind also müsste es bei 22 Uhr Dunkel werden und bei 12 Uhr Mittags wieder Hell doch wie Time ich das Perfekt?


    also meine Jetzige Rechnung wie der Tag / Nacht Sprung sein soll:


    3,300,000 Mio: 21 Uhr dann 5 Minuten Später
    3,600,000 Mio: 24 Uhr dann:


    3,300,000 Mio: 06 Uhr dann 5 Minuten Später:
    3,600,000 Mio: 12 Uhr


    Sagen wir es so würde es euch stören wenn ein Tag 24 Minuten hat? so wie im LVDM? dann mache ich es so so erspare ich mir das Kopf zerbrechen und zichtausende Timer
    es soll in ein DayZ Script kommen.


    //EDIT 1: Rechnung hinzugefügt
    //EDIT 2: EDIT hinzugefügt

    2 Mal editiert, zuletzt von Quini ()

  • Deine Beschreibung verstehe ich nicht wirklich. Du schreibst immer von Uhrzeiten, es wird aber mir z.B. nicht klar, ob du die Echte Uhrzeit meinst oder die Virtuelle im Spiel.


    Zitat

    1 Tag soll im Script 1 Stunde sein


    60 Echte Minuten = 24 Virtuelle Stunden
    60 * 60 / 24 = 150
    Alle 150 Sekunden fängt also eine neue Virtuelle Stunde an.


    Zitat

    [...] und zichtausende Timer [...]


    Einer reicht doch.


  • Ich rede von Virtuellen Zeiten also ich möchte das in einer Stunde (Echtzeit) 24 im (Spiel vergehen)
    dazu brauch ich eben eine Uhr das das Script z.B 6 Uhr morgens Main Zeit hat bei 21 Uhr wird es leicht dunkel und bei 24 Uhr ganz Dunkel also müsste ich eben so eine Uhr haben die Perfekt
    zum Tag / Nacht passt

  • Wo ist denn jetzt dein Problem?
    Goldkiller hat dir doch sogar direkt die Lösung genannt:
    new LastTime = 6;
    forward ZeitTimer();


    SetTimer("ZeitTimer",150000,true);


    public ZeitTimer()
    {
    if(LastTime == 24){
    LastTime = 0;
    SetWorldTime(0);
    }
    else {
    LastTime += 1;
    SetWorldTime(LastTime);
    }
    return 1;
    }


    Beim Starten des Gamemodes natürlich noch die Zeit setzen ;)


  • richtig so weit war ich fast auch nicht ganz soweit aber mein großes Problem ist die Uhr wie time ich es da?

  • Du meinst ne Uhr-Anzeige in nem TextDraw?
    Falls ja brauchst Du nichts weiter als eine 2te Variable und ne Rechnung:


    new LastTime = 6;
    new LastTimeChange;
    forward ZeitTimer();


    SetTimer("ZeitTimer",150000,true);


    public ZeitTimer()
    {
    if(LastTime == 24){
    LastTime = 0;
    LastTimeChange = gettime();
    SetWorldTime(0);
    }
    else {
    LastTime += 1;
    LastTimeChange = gettime();
    SetWorldTime(LastTime);
    }
    return 1;
    }


    new Stunde = LastTime;
    new Minute = floatround((gettime()-LastTimeChange)/0.042,floatround_floor);


    Müsste eigl. so hinhauen.
    Wenn ich mich grade irre bitte berichtigen.
    Die 0.042 habe ich errechnet:


    1h Ingame-Zeit -> 2,5m | /60
    ~0.04166 Sekunden entsprechen einer Minute Ingame Zeit


    //EDIT: Sollte Ich mich der Rechnung grade falsch liegen so berichtigt mich doch bitte ;)

  • Von der Minute auf die Sekunde schließen würde ich so über einen Timer nicht machen.
    Selbst wenn ich einen Timer auf 15.000 Millisekunden stelle, wird es nie exakt 15.000 Millisekunden dauer, bis die Funktion aufgerufen wird.
    Siehe: http://forum.sa-mp.com/showpost.php?p=1456673&postcount=1
    Es könnte also Sprünge auftreten, da exakt gerechnet über die unixtime die Stunde bereits vorbei ist,der Timer allerdings einige Sekunden nach hängt oder schneller ist.


    Wenn du wirklich Virtuelle Minute und Stunde immer exakt in gleichen Abständen erhöhen möchtest, lass den Timer auf der Ebene der Virtuellen Minute laufen. Dann wären es:
    2,5 Echte Sekunden = 1 Virtuelle Minute


    Dann immer schön die virtuelle Minute hoch zählen bis 60. 60 Erreicht -> virtuelle Stunde +=1 und Virtuelle Minute = 0

  • Alles klar danke euch 2 wenn noch probleme auftreten melde ich mich zurück