@Jeffry, ich benötige einen kleinen anstupser bezüglich der Altersabfrage...
Code:
new stock g_days_m[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
stock GetPlayerAge(input[]) //©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);
}
Alles anzeigen
if(dialogid == DIALOG_ALTERANGABE)
{
if(response)
{
if(!response) return 1;
new age = GetPlayerAge(inputtext);
if(age == -1) return ShowPlayerDialog(playerid, DIALOG_ALTERANGABE, DIALOG_STYLE_INPUT, "Geburtsdatum", "Bitte gebe Dein Geburtsdatum hier ein: (Format: TT.MM.JJJJ)", "Ok", "Abbrechen");
if(age > 18 && age < 30)
{
PlayerInfo[playerid][pAge] = age;
new str[145];
format(str, sizeof(str), "Du hast am %s Geburtstag, damit bist Du %d Jahre alt! Sehr schön :)", inputtext, PlayerInfo[playerid][pAge]);
SendClientMessage(playerid, 0xFF0000FF, str);
}
else SendClientMessage(playerid, COLOR_WHITE, "Ungültige Altersangabe!");
return 1;
}
}
Alles anzeigen
Das Problem ist bei der Abfrage beim Dialogfenster und zwar wird nicht richtig geprüft ob der Spieler mindestens 18 - 30Jahre alt ...
Und eins habe ich beim stock nicht verstanden, was ist das für ein stock bzw für was ist das?
new stock g_days_m[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};