Gettime richtig auslesen

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
  • Hey,
    ich wollte gerade eine Scheinsperre scripten, die die zeit abspeichert und +2 Stunden setzt.
    So habe ich das die Zeit gespeichert:


    dini_IntSet(Sperrdatei,"Zeit",gettime()+(60*60*2));//2h


    So wird die Zeit allerdings in der Datei angezeigt:
    Zeit=1341153639


    Und in bei SendClientMessage: format(string,sizeof(string),"Dein Schein wurde dir entzogen. Um %i Uhr bekomms du ihn wieder.",anzahl,dini_Int(datei,"Zeit"));
    SendClientMessage(playerid, COLOR_GELB,string);
    wird ebenfall 1341153639 angezeigt...


    Was ist falsch?


    Hifle wäre wirklich super nett. :S


    MFG

    Mein Selfmade:

    1.Haussytem [99/100%]
    2.Handysystem [95/100%]
    3.Payday [95/100%]
    4.Autosystem [100/100%]
    5. kleinigkeiten, wo ich noch bugs habe^^ [75/100%]
    Wer mir helfen möchte und vorallem Lust oder Zeit hat, darf sich natürlich bei mir melden. :D


    >> ¡Einfach PN an mich! <<

    Marco

    Einmal editiert, zuletzt von [MM]Marco () aus folgendem Grund: Rechtschreibung


  • stock mktime(hour,minute,second,day,month,year)
    {
    new timestamp2;


    timestamp2 = second + (minute * 60) + (hour * 3600);


    new days_of_month[12];


    if ( ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) ) {
    days_of_month = {31,29,31,30,31,30,31,31,30,31,30,31}; // Schaltjahr
    } else {
    days_of_month = {31,28,31,30,31,30,31,31,30,31,30,31}; // keins
    }
    new days_this_year = 0;
    days_this_year = day;
    if(month > 1) { // No January Calculation, because its always the 0 past months
    for(new i=0; i<month-1;i++) {
    days_this_year += days_of_month[i];
    }
    }
    timestamp2 += days_this_year * 86400;


    for(new j=1970;j<year;j++) {
    timestamp2 += 31536000;
    if ( ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) ) timestamp2 += 86400; // Schaltjahr + 1 Tag
    }


    return timestamp2;
    }


    stock ConvertUnix(unix, &hour, &minute, &second, &day, &month, &year)
    {
    new h = 0, m = 0, s = 0, da = 1, mo = 1, ye = 1970;
    for(;;) { ye++; if(((zeitpunkt) - (mktime(h, m, s, da, mo, ye))) < 0) { ye--; break; } }
    for(;;) { mo++; if(((zeitpunkt) - (mktime(h, m, s, da, mo, ye))) < 0) { mo--; break; } }
    for(;;) { da++; if(((zeitpunkt) - (mktime(h, m, s, da, mo, ye))) < 0) { da--; break; } }
    for(;;) { h++; if(((zeitpunkt) - (mktime(h, m, s, da, mo, ye))) < 0) { h--; break; } }
    for(;;) { m++; if(((zeitpunkt) - (mktime(h, m, s, da, mo, ye))) < 0) { m--; break; } }
    for(;;) { s++; if(((zeitpunkt) - (mktime(h, m, s, da, mo, ye))) < 0) { s--; break; } }
    hour = h; minute = m; second = s; day = da; month = mo; year = ye; return 1;
    }


    //Verwendung
    new Stunde, Minute, Sekunde, Tag, Monat, Jahr;
    ConvertUnix(dini_Int(datei, "Zeit"), Stunde, Minute, Sekunde, Tag, Monat, Jahr);


    Viel Spaß. :)
    (edit):
    Du brauchst natürlich noch die mktime-Funktion, welche ich dir noch hinzugefügt habe. Die ist für dich aber so gesehen => Unwichtig! ;)

  • gettime() gibt dir den Unix-Timestamp an, das heißt die Zeit in Sekunden seit dem 1.1.1970. Falls du dir die Zeit ausgeben möchtest, wie lange der Schein noch gesperrt ist, musst du dir den Wert im Moment des Speicherns merken, und damit die Sperre kalkulieren.



    dini_IntSet(Sperrdatei, "Zeit", gettime());


    // --------------


    format(string, sizeof(string), "Dein Schein wurde dir entzogen. In %i Sekunden bekomms du ihn wieder.", anzahl, (2*60*60)-dini_Int(Sperrdatei, "Zeit"));
    SendClientMessage(playerid, COLOR_GELB, string);