Die Variable alter, die du unter OnDialogResponse erstellen lässt wird nirgends gesetzt - und ist somit gleich Null. Damit es nicht zu Fehlern kommt, müsstest du diese Variable direkt bei der Erstellung setzen:
new alter=strval(inputtext);
oder nach der Erstellung der Variable:
new alter;
alter=strval(inputtext)
Dazu kommt, wie bereits erwähnt wurde musst du bei der Enumerator 'Spieler' Variablen Setzung von 'Alter' die Funktion strval (String to Value, Text zu Zahl) verwenden.
Spieler[playerid][Alter]=strval(inputtext);
Um abzufragen, ob die Eingabe eine Zahl ist - empfehle ich dazu die Funktion IsNumeric:
stock IsNumeric(const Text[])
{
new Laenge=strlen(Text);
if(Laenge==0)return false;
for(new X=0;X<Laenge;X++)
{
if((Text[X]>'9'||Text[X]<'0'&& Text[X]!='-'&& Text[X]!='+')||(Text[X]=='-'&& X!=0)||(Text[X]=='+'&& X!=0))
return false;
}
if(Laenge==1&&(Text[0]=='-'||Text[0]=='+'))return false;
return true;
}
Alles in einem zusammengefasst inkl. der Funktion IsNumeric, die du in dein Script außerhalb einer Funktion/eines Public's einfügen müsstest.
if(dialogid==DIALOG_ALTER)
{
new alter=strval(inputtext);
if(response==0)return SendClientMessage(playerid,COLOR_WHITE,"Du hast den Vorgang abgebrochen.");
if(response==1)
{
if(strlen(inputtext)<1||strlen(inputtext)>3||!IsNumeric(strval(inputtext)))return SendClientMessage(playerid,COLOR_WHITE,"Du hast keine gültige Zahl eingegeben!");
if(alter < 10)return SendClientMessage(playerid,COLOR_WHITE,"Unter 10 Jahren kriegst du leider keinen Personalausweis.");
if(alter > 100)return SendClientMessage(playerid,COLOR_WHITE,"Kein Mensch der über 100 Jahre ist, spielt noch am Computer.");
if(!strval(inputtext))return SendClientMessage(playerid,COLOR_WHITE,"Du hast kein Alter angegeben - Vorgang abgebrochen.");
else
{
Spieler[playerid][Alter]=strval(inputtext);
ShowPlayerDialog(playerid,DIALOG_SEX,DIALOG_STYLE_LIST,"Geschlecht auswählen","Männlich\nWeiblich","Auswählen","Abbrechen");
}
}
}