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 )
Alter abfragen Format TT.MM.JJJJ
- BlvckAir
- 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
-
-
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.
-
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
-
Beitrag von BlvckAir ()
Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Problem gelöst, danke an Kaliber! (). -
breadfish.de
Hat das Thema geschlossen.