Umrechnen von Zeiteinheiten.

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
  • Wollte mal fragen wie ich es umrechne bzw wie ich die genaue zeit raus gekomme. habe es bisher so.
    (PlayerInfo[playerid][pDonatorTime]-Now())/24/60/60, (PlayerInfo[playerid][pDonatorTime]-Now()/24/60)%24,(PlayerInfo[playerid][pDonatorTime]-Now()/24/60)%60
    aber das geht nicht richtig.
    wie mache ich es das es in "Tage, Stunden, Minuten" engezeigt wird ?
    weis nicht mehr weiter.


    info: [pDonatorTime] = Sekunden. also da sind die tage in sekunden.


    Danke für eure Hilfe.


    mfg Inside

  • Ist im Ansatz schon ganz richtig. Ich empfehle dir dennoch, solche Rechnung lieber einzelnt durchzuführen. Da behält man leichter den Überblick.
    Hatte dazu mal eine Funktion irgendwo hier im Forum gepostet, ConvertSec. Hab die aber nochmal für dich ausgebuddelt.
    stock ConvertSec(secs,&sec,&min,&hour) {
    new
    rest;
    sec = 0;
    min = 0;
    hour = 0;
    hour = (secs / (60*60));
    rest = (secs % (60*60));
    min = (rest / 60);
    sec = (rest % 60);
    return 1;
    }


    Der Teil für Tage fehlt allerdings.Da sieht du,wie der Ablauf wäre. Man fängt bei der Größten Einheit an ( Stunden ) , rechnet dann immer runter.
    Wenn ich mich nicht vertue, sollte es so korrekt auch auf Tage aufteilen.
    stock ConvertSecEx(secs,&sec,&min,&hour,&day) {
    new
    rest;
    sec = 0;
    min = 0;
    hour = 0;
    day = 0;
    day = (secs / (60*60*24));
    rest = (secs % (60*60*24));
    hour = (rest / (60*60));
    rest = (rest % (60*60));
    min = (rest / 60);
    sec = (rest % 60);
    return 1;
    }


    //Edit:Hab es mal getest:
    new
    _converts[4],
    _secs;
    _secs = ( 4 * 60 * 60 * 24 ) + ( 6 * 60 * 60 ) + (32 * 60 ) + 5;
    ConvertSecEx( _secs , _converts[0] , _converts[1] , _converts[2] , _converts[3]);
    printf("Tage: %d Stunden: %d Minuten: %d Sekunden: %d",_converts[3],_converts[2],_converts[1],_converts[0]);

    Ausgabe ist richtig.

    Einmal editiert, zuletzt von Goldkiller ()

  • Gibts davon auch noch eine Andere Möglichkeit weil ich verstehe von dem da Unten nur bahnhof xD also das schaut mir nicht nach Pawno aus darum iretiert mich das grade ein bissel. aber danke schonmal für deine Hilfe.

  • Pawno ist schon mal nicht PAWN .
    PAWN ist die Sprache, Pawno die IDE. Kannst auch in Notepad schreiben. Dann wäre die Sprache immernoch PAWN, Notepad die IDE.


    Zitat

    Gibts davon auch noch eine Andere Möglichkeit weil ich verstehe von dem da Unten nur bahnhof xD


    Was verstehst du denn nicht ? In dem Code ist mehr Mathe als wirkliches Verständnis von Scripten / Programmierung verlangt.

  • Ich kann ja auch rechnen xD jedoch ist mir das ein bissel Kompliziert gemacht. ich würde das simpler machen das wenn man mal was ändern will das man auch dann noch weis wie, wo, was hin muss. wenn ich das jetzt einbau und ich später mal was ändern möchte weis ich nicht wo ich da was ändern muss. darum geht es mir damit ich nicht wenn ich es mal ändere hier wieder ankommen muss und fragen muss wie das war. ^^


    z.b. so wie hier.
    das ist simple.
    new Sekunden = (BannedPlayer[playerid][BPZeit]+BannedPlayer[playerid][BPLaufzeit])-Time(),
    Minuten = Sekunden/60,
    Stunden = Minuten/60;

  • oha das ist ja schon nicht mehr normal das ist ja das reinste puzzel. da find eich nun mal so garnicht durch.


    hat jemand nicht so eine Lösung ? die einfach und leicht zu verstehen ist. bzw den code ohne extra "stock" oder "public" ect.

  • oha das ist ja schon nicht mehr normal das ist ja das reinste puzzel. da find eich nun mal so garnicht durch.


    hat jemand nicht so eine Lösung ? die einfach und leicht zu verstehen ist. bzw den code ohne extra "stock" oder "public" ect.


    Du bewegst dich in die falsche Richtung. Aber ich komme mal deinem Wunsch nach ;).
    ConvertSecEx(secs,&sec,&min,&hour,&day) {
    new
    rest;
    sec = 0;
    min = 0;
    hour = 0;
    day = 0;
    day = (secs / (60*60*24));
    rest = (secs % (60*60*24));
    hour = (rest / (60*60));
    rest = (rest % (60*60));
    min = (rest / 60);
    sec = (rest % 60);
    return 1;
    }
    Kein stock,kein public. Funktionieren tut es dennoch :)