[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • Heute mal nen Test gemacht und er sagte mir das ich mir im Januar nen Account erstellt habe...
    Die Funktion ist für die Tonne


    Also ich habe es getestet, habe es so gemacht:


    new _Q[6];
    date(1366106339, _Q[3], _Q[4], _Q[5], _Q[0], _Q[1], _Q[2]);
    printf("%02d.%02d.%02d - %02d:%02d:%02d",_Q[0],_Q[1],_Q[2],_Q[3],_Q[4],_Q[5]);


    Er gibt mir folgendes aus:


    Code
    26.04.2013 - 09:58:59


    Wo ist dein Problem? :huh:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Wie oft soll ich es noch schreiben das er mir das Falsche Datum ausgibe X(


    Den müll habe ich
    stock date(zeitpunkt, &hour, &minute, &second, &day, &month, &year) // by Martez
    {
    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;
    }


    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};
    }
    else
    {
    days_of_month = {31,28,31,30,31,30,31,31,30,31,30,31};
    }
    new days_this_year = 0;
    days_this_year = day;
    if(month > 1)
    {
    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;
    }
    return timestamp2;
    }

    All in all it's just another brick in the wall

  • Ich lasse das einfach als String speichern und laden und arbeite dann mit sscanf oder strfind und formatiere mir das so hin wie ich gerade möchte.


    wenn ich also es so gespeichert habe: "dd.mm.yyyy-hh:mm" dann mache ich einfach:


    sscanf(string,"p<->s[10]s[5]",datum,uhrzeit);
    und jenachdem wie ich das nun noch formatiert haben möchte teile ich die strigs nochmal auf und formatiere mir das dann so hin.

  • Ich brauch den Timestamp da ich den auch für andere Zwecke nutze darum mach ich es auch so...
    Wenn ich das so mache wie Simon, dann darf ich wieder haufenweise umschreiben worauf ich kein Bock habe
    So les ich das aus
    new Test[6];
    date(PlayerInfo[playerid][RegisterTime], Test[0], Test[1], Test[2], Test[3], Test[4], Test[5]);
    format(string,128,"Registriert: %02d.%02d.%d - %02d:%02d:%02d Uhr", Test[3], Test[4], Test[5], Test[0], Test[1], Test[2]);

    All in all it's just another brick in the wall

  • Schau dir mal das Datum von dir an
    der Timestamp ist von meinen Account


    Der ist aber falsch der Timestamp: 1366106339
    Ist exakt die Zeitangabe: 16.04.2013 um 10:58:59 Uhr.


    Die Funktion die ich da nutze und auch du ist für die Tonne da die die Werte falsch wiedergibt

    All in all it's just another brick in the wall

  • Sehs gerade hast recht :D


    Das einzige was mir einfällt wäre das über die HTTP Funktion auf n PHP Script zuzugreifen und das dann umzuwandeln...aber ich weiß nicht, ich schaue mir mal nach meiner Mittagspause die Funktion an und verbessere diese ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Das geht auch rigendwie mit MySQL
    Nur ich weiß nicht wie man es macht das ist es ja...


    Kaliber:


    Die Funktion tut es jetzt endlich
    GetTimestamp(Timestamp)
    {
    new Wert[50],query[128];
    format(query, 128, "SELECT FROM_UNIXTIME(%d, '%s.%s.%s %s');", Timestamp, "%d","%m","%Y","%T");
    mysql_query(query, (-1), (0), SQL);
    mysql_store_result(SQL);
    mysql_fetch_string(Wert,SQL);
    mysql_free_result(SQL);
    return Wert;
    }
    Passgenau wenn ich den Timestamp eintrage bekomm ich das raus:
    16.04.2013 11:58:59

    All in all it's just another brick in the wall

    Einmal editiert, zuletzt von Beavis ()

  • Weiß jemand wie man aus Zamaroths Textdraweditor den erstellten Textdraw rausfiltert ?
    Habe schon im Filterscript Ordner geguckt aber da finde ich auch nur eine TDE und eine LST Datei.
    Habe sie mir beide angeschaut doch in keiner ist ein Brauchbarer Code ...

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Moin moin!
    Ich fange gerade mit Mysql an und habs glaube soweit verstanden! :)
    Wenn ich eine Tabelle auslese wo z.B. Häuser drinne sind Lade ich das so:


    for(new h=0;h<MAX_HAUSER;h++)
    {
    LoadHaus(h);
    }


    so... wie mache ich das, dass er die ID's die nicht in der Tabelle sind nicht lädt? (oder macht er das automatisch nicht?)
    Benutze das BlueG R5 Plugin.


    Hier der Anfang des Stocks LoadHaus:


    mysql_query("SELECT * FROM `hauser`");
    mysql_store_result();
    if(!mysql_num_rows())
    {
    mysql_free_result();
    return 0;
    }
    new result[66];
    while(mysql_retrieve_row())
    {
    ....


    Edit: btw muss ich da nicht SELECT * FROM `hauser` WHERE ID = '%d',..)

  • Kann mir nochmal jmd. auf die Sprünge helfen?


    Wenn ich jertzt zB habe if(Rang[playerid] <= 3) return SendClientMessage....


    Also Rang ist kleiner als 3, ne Nachricht schicken.


    Gilt das dann für Rang 3,2,1 oder nur wirklich für die die kleiner als 3 sind, also 2,1 und ab 3 kommt die Nachricht nichtmehr?


    - Tom

  • Eine kleine Frage:


    Ich schreibe mein komplettes Script um, da ich das auslesen und speichern aus und in der Datenbank nun optimieren möchte.
    Vorher habe ich mir dieses von einem tutorial abgeschaut:

    variable1 = mysql_GetInt(...);
    variable2 = mysql_GetString(...);

    Nun mache ich:
    sscanf(Query, "p<|>is[50]",variable1,variable2);


    Nun möchte ich das selbe beim Updaten machen.
    Bisher nutze ich:
    mysql_SetInt(..., variable1, ...);
    Mysql_SetString(... , variable2, ...);


    Was wäre hier eine sehr gute methode das einfach zu speichern?
    Gibt es da was besonderes oder soll ich einfach die Query folgendermaßen schrieben:

    SQL
    UPDATE [Tabelle] SET [Spalte] = [Wert], [Spalte] = [Wert], [Spalte] = [Wert] WHERE [Fehld] = [Wert]
  • Ich brauch mal einen der Mathe kann :D


    Bei den rechenweg:
    format(sendstr,sizeof sendstr,"Tank: %d (Prozent)",100/3600*VehicleData[id][Tank]);
    Wird mir immer 0% ausgegeben obwohl die rechnung stimmen sollte

    All in all it's just another brick in the wall

  • Ich brauch mal einen der Mathe kann :D


    Bei den rechenweg:
    format(sendstr,sizeof sendstr,"Tank: %d (Prozent)",100/3600*VehicleData[id][Tank]);
    Wird mir immer 0% ausgegeben obwohl die rechnung stimmen sollte


    Ich kenn das Problem.
    Du musst für jeden Rechenschritt eine Variable machen.
    dh. new eins = 100/3600;
    new zwei = eins*VehicleData..


    Bin am Handy

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen