Frage zu Alter

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
  • Dazu gibt es schon zwei codeschnipsel einmal mein variante und die von Hauke:


    http://forum.sa-mp.de/san-andr…Ctzliche-codeschnipsel-40
    sscanf plugin wird benötigt
    stock GetAge(string[])
    {
    new var[4], Date[3];
    sscanf(string, "p<.>iii", var[0], var[1], var[2]);
    if(var[0] > 31 || var[0] <= 0)return 0;
    if(var[1] > 12 || var[1] <= 0)return 0;
    getdate(Date[0],Date[1],Date[2]);
    if(var[2] > Date[0] || var[2] < 1900)return 0;
    var[3] = Date[0] - var[2] - ((Date[1] < var[1])? 1 : ((Date[1] == var[1] && Date[2] < var[0])? 1 : 0));
    return var[3];
    }




    Hauke:
    http://forum.sa-mp.de/san-andr…Ctzliche-codeschnipsel-39
    stock GetAge(Birthday[16])
    {
    new D,M,Y,Age;
    getdate(Y,M,D);
    for(new i = strlen(Birthday); i > -1; i--)
    {
    if(Birthday[i] == '.')
    {
    new Tmp[32];
    for(new o = i-1; o > -1; o--)
    {
    if(Birthday[o] == '.')
    {
    strmid(Tmp,Birthday,o+1,i);
    if(strval(Tmp)>=M)
    {
    strmid(Tmp,Birthday,0,o);
    if(strval(Tmp)>D)
    {
    strmid(Tmp,Birthday,i+1,strlen(Birthday));
    Age = Y-strval(Tmp)-1;
    break;
    }
    }
    strmid(Tmp,Birthday,i+1,strlen(Birthday));
    Age = Y-strval(Tmp);
    break;
    }
    }
    }
    }
    return Age;
    }

  • IPrototypeI
    Danke habe ich übersehen, wie kann ich dann aber machen das der Dialog erneut angezeigt wird? also, falls es nicht stimmt.


    Du kannst das mit dem rückgabe wert abprüfen
    SpielerInfo[playerid][pAlter] = GetAge(inputext);
    if(SpielerInfo[playerid][pAlter] == 0)return ShowPlayerDialog(playerid,...);


    oder


    das direkt über die Funktion


    stock GetAge(playerid,string[])
    {
    new var[4], Date[3];
    sscanf(string, "p<.>iii", var[0], var[1], var[2]);
    if(var[0] > 31 || var[0] <= 0)return ShowPlayerDialog(playerid,...);
    if(var[1] > 12 || var[1] <= 0)return ShowPlayerDialog(playerid,...);
    getdate(Date[0],Date[1],Date[2]);
    if(var[2] > Date[0] || var[2] < 1900)return ShowPlayerDialog(playerid,...);
    var[3] = Date[0] - var[2] - ((Date[1] < var[1])? 1 : ((Date[1] == var[1] && Date[2] < var[0])? 1 : 0));
    return var[3];
    }


    das ist dir jedoch überlassen welche variante du verwenden willst