Hey,
ich wollte mal fragen, wie kann ich, wenn man sich registriert und und sein Geburtsdatum im Format 00.00.0000 in einen dialog eingibt, das alter ausrechnen lassen?
LG
Marco
Hey,
ich wollte mal fragen, wie kann ich, wenn man sich registriert und und sein Geburtsdatum im Format 00.00.0000 in einen dialog eingibt, das alter ausrechnen lassen?
LG
Marco
Hab ich schnell aus einem LoH kopiert. Müsste alles Drin stehen.
if(dialogid == DIALOG_ALTER)
{
new year, month,day;
getdate(year, month, day);
new DateInfo[3][20];
split(inputtext, DateInfo, '.');
if(response == 1)
if (strlen(inputtext) > 10) {
ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Geburtsdatum","ANGABEFEHLER:Bitte Gib dein Alter ein.\n\nBeispiel: 05.12.1995\n","Weiter","");
return 0;
}
if (!IsValidDate(strval(DateInfo[0]),strval(DateInfo[1]),strval(DateInfo[2]))) {
ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Geburtsdatum","ANGABEFEHLER:Bitte Gib dein Alter ein.\n\nBeispiel: 05.12.1995\n","Weiter","");
return 0;
}
if(year - strval(DateInfo[2]) > 100 || strval(DateInfo[2]) < 1 || strval(DateInfo[2]) >= year)
{
ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Geburtsdatum","ANGABEFEHLER:Bitte Gib dein Alter ein.\n\nBeispiel: 05.12.1995\n","Weiter","");
}
new check = year - strval(DateInfo[2]);
if(check == year)
{
ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Geburtsdatum","ANGABEFEHLER:Bitte Gib dein Alter ein.\n\nBeispiel: 05.12.1995\n","Weiter","");
return 0;
}
if(strval(DateInfo[1]) > month)
{
check -= 1;
}
else if(strval(DateInfo[1]) == month && strval(DateInfo[0]) > day)
{
check -= 1;
}
new string[256];
PlayerInfo[playerid][pAge] = check;
format(string, sizeof(string), "%d Jahre alt.",PlayerInfo[playerid][pAge]);
GameTextForPlayer(playerid,string, 3000, 1);
RegistrationStep[playerid] = 3;
ShowPlayerDialog(playerid,DIALOG_HERKUNFT,DIALOG_STYLE_LIST,"Woher kommst du?","Deutschland\n�sterreich\nSchweiz","Weiter"," ");
if(response == 0){
ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Geburtsdatum","ANGABEFEHLER:Wann bist du geboren?\nAngabe bitte in TT.MM.JJJJ","Weiter"," ");
}
return 1;
}
Bei Fragen: PN to me
Gruss: Sonic
Hallo ist zwar schon ein Bissen her mit dem Thema aber hätte einer die
IsValidDate Abfrage da ?
Bräuchte mal den Stock
Schau dir mal diesen stock an:
http://pastebin.com/MGJ30HmV
Danke dir
Bräuchte mal den Stock
Hier noch eine etwas kompaktere Variante, die ich mal erstellt habe (Geburtsdatum aus String Speichern) :
new stock g_days_m[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
stock IsValidDate(input[], &day, &month, &year) //©Jeffry
{
new date[12];
strcat(date, input);
if(!date[9] || date[10]) return 0;
for(new i=0; i<10; i++) if(!(date[i] >= '0' && date[i] <= '9' || date[i] == '.')) return 0;
day = 10*(date[0]-48)+(date[1]-48);
month = 10*(date[3]-48)+(date[4]-48);
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 0;
if(month == 2)
{
if(day > 28 && (year % 4 != 0 || (year % 100 == 0 && year % 400 != 0))) return 0;
}
else if(day > g_days_m[month-1]) return 0;
return 1;
}