Hey, wie kann ich abfragen ob der Spieler das Alter in einen Dialog so eingibt?
29.5.1995
Und wie kann ich darauf das Alter ausrechnen? Wäre toll, wenn mir jemand den Code vorschreiben könnte.
Frage zu Alter
- [DT]Midoman
- Geschlossen
- Erledigt
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;
} -
Das Problem ich weis ja nicht ob die Person er mit Punkten eingibt, bzw das er keine Buchstaben oder so
-
Das Problem ich weis ja nicht ob die Person er mit Punkten eingibt, bzw das er keine Buchstaben oder so
Bei meiner Variante ist es so das der string nur gesplittet wird wenn die punkte vorhanden sind sollte das nicht zutreffen wird 0 zurück gegeben
dafür sorgt der specifer p<.> -
IPrototypeI
Danke habe ich übersehen, wie kann ich dann aber machen das der Dialog erneut angezeigt wird? also, falls es nicht stimmt. -
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
-
IPrototypeI Habe die erste Methode versucht, aber es taucht der Dialog immer wieder auf...
-
IPrototypeI Habe die erste Methode versucht, aber es taucht der Dialog immer wieder auf...
Poste mal dein Code normal sollte das gehen
-
breadfish.de
Hat das Thema geschlossen.