Zwischenzeit berechnen

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
  • Guten morgen breadfish,


    ich möchte heute herausfinden, wie lange ein user von "Start" bis "Ziel" brauchte z.B.


    Start 02:34:55 -------------------------------------- Ziel: 3:33:42


    dabei ist der start nicht immer punkt 0.

  • Benutze doch nen Timestamp:
    new start = gettime(); // Startzeit speichern
    new ziel = gettime(); // Zielzeit speichern
    new zeitgebraucht = ziel-start; // Zeit in Sekunden zwischen dem Start und den Ziel


    Die Sekunden kannst du dann in Minuten, Stunden, Tage, Wochen, Monate, Jahre etc. umrechnen.

  • Das passiert aber dann bei 500 Leuten zu jeder zeit ich möchte das berechnen.


    StartSek, StartMin, StartH und ZielSek, ZielMin, ZielH = ZwischenZeitSek, ZwischenZeitMin, ZwischenZeitH
    und diese zwischenvariablen muss cih berechnen da eintimer in diesem sinne zu auslastent ist.#


    Das subtrahieren ist einfach gesagt aber das ziel kann ich nicht mit gettime herausfinden, das ziel ist schon vorgegeben um das zu verstehen ich mach ein Zug timer.


    Ich weis wann der Spieler auf den Bildschirm schaut und ich weis (gespeichert in 3 variablen) wie viel uhr der nächste zug kommt, nun möcht ich zeigen "Noch 3min" oder so.


    //EDIT: Ich habe die Zeit des Spielers in 3 Variablen für stunde minute und sekunde und ich weis in 3 variablen wann der nächste zug fährt.

  • haha wenn es so einfach wäre dann hätte ich das so gemacht.


    Beispiel: Start 01:22:43 Ziel: 02:10:20


    02:10:20
    -01:22:43
    ---------------
    01:-12:-23


    Wie du siehst muss ich bei -zahlen ein übertrag machen das ist das problem.

  • new racestart;



    Da wo er anfangen soll zu zählen


    racestart = GetTickCount();


    Letzter Checkpoint



    new name[24];
    GetPlayerName(playerid,name,24);
    new string3[64];
    new timeMs = ( GetTickCount() - racestart );
    new minuten = (timeMs/60000);
    timeMs -= (minuten * 60000);
    new sekunden = (timeMs/1000);
    format(string3, sizeof string3," %s (Zeit:d:d)",name,minuten,sekunden);
    SendClientMessageToAll(grün,string3);
    /e1
    mfg

    KleineHilfe 2.0



  • Weiteres habe ich nicht gelesen.


    Dann verknüpf deine Uhrzeit mit dem Start und addiere dann gettime auf die alte Uhrzeit drauf und lass es ausgeben.
    Oder Frag einfach ab um wie viel Uhr dies das geschieht, dann wann er am Ziel ist und wie gesagt subtrahieren.
    Die Funktion ist da, ein bisschen anpassen sollte man aber können :)

    KleineHilfe 2.0

  • Ich habe ges geschafft


    tempS = ZugZeiten[UpdateNumber][0] - playerSek;
    tempM = ZugZeiten[UpdateNumber][1] - playerMin;
    tempH = ZugZeiten[UpdateNumber][2] - playerHour;
    if(tempS < 0)
    {
    tempS+=60;
    tempM--;
    }
    if(tempM < 0)
    {
    tempM += 60;
    tempH--;
    }
    if(tempH < 0)
    {
    tempH = 0;
    }
    printf("%d, %d, %d zeit des Zuges",ZugZeiten[UpdateNumber][2],ZugZeiten[UpdateNumber][1],ZugZeiten[UpdateNumber][0]);
    printf("%d, %d, %d zeit Spielerzeit",playerHour,playerMin,playerSek);
    printf("%d, %d, %d zeit Zwischenzeit",tempH,tempM,tempS);
    falls es einer braucht muss ers nurnoch nachvollziehen können und variablen erstellen.