Alter abfragen Format TT.MM.JJJJ

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 liebe Brotfische!
    Ich möchte gerne mein Alter Dialog ändern, aktuell ist in diesem Format: 18
    das ganze gefällt mir aber gar nicht mehr!
    Deswegen möchte ich es ganz gerne ändern in diesem Format. Tag.Monat.Jahr
    Wie mache ich es am besten? So das ich es auch in der Datenbank dann Speichern kann und das Alter dann auslesen kann. (z.B. 07.10.1997 = 18 Jahren )

    Mit freundlichen Grüßen, BlvckAir :thumbup:

  • Ich finden den Post gerade nicht, aber Jeffry hatte mal so eine Funktion gepostet:


    stock GetPlayerAge(input[])//(c) Jeffry
    {
    new date[12];
    strcat(date, input);
    if(date[1] == '.') strins(date, "0", 0, 12);
    if(date[4] == '.') strins(date, "0", 3, 12);
    if(!date[9] || date[10]) return -1;
    new day = 10*(date[0]-48)+(date[1]-48);
    new month = 10*(date[3]-48)+(date[4]-48);
    new year = 1000*(date[6]-48)+100*(date[7]-48)+10*(date[8]-48)+(date[9]-48);
    if(year < 1000 || year > 9999 || month < 1 || month > 12 || day < 1) return -1;
    if(month == 2)
    {
    if(day > 28 && (year % 4 != 0 || (year % 100 == 0 && year % 400 != 0))) return -1;
    }
    else if(day > g_days_m[month-1]) return -1;
    new d, m, y;
    getdate(y, m, d);
    new age = y - year;
    if(m < month) age--;
    else if(m == month && d < day) age--;
    return (age < 0) ? (-1) : (age);
    }

  • Ich habe es derzeit so:



    Funktion zum Auslesen des Alters:


    GetPlayerAlter(d,m,y)
    {
    new tag, monat, jahr; getdate(jahr, monat, tag);
    if((m > monat) || (m >= monat && d > tag)) return (jahr-y-1);
    else return (jahr-y);


    }


    Zwieschenspeicherung:


    new datum[3];sscanf(inputtext,"iii",datum[0],datum[1],datum[2]);//wandelt die Inputtext in 3 einzelne Ints um > tag,monat,jahrnew alter=GetPlayerAlter(datum[0],datum[1],datum[2]);
    printf("Du bist %i Jahre alt!",alter);


    Speicherung:
    format(Spieler[playerid][BDay],36,"%s",inputtext);


    Leider speichert er ( wenn ich das Datum: 07.10.1997 -> 18 Jahren ) immer 48 ab.

    Mit freundlichen Grüßen, BlvckAir :thumbup:

  • Deine sscanf-Abfrage ist falsch.


    Diese müsste so aussehen:



    //Beim alten sscanf Code
    "p.iii"



    //Beim sscanf Plugin
    "p<.>iii"


    Da du ja nicht die Leerzeichen splitten willst, sondern die Punkte :)

    ast2ufdyxkb1.png


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

  • Beitrag von BlvckAir ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Problem gelöst, danke an Kaliber! ().