Moin,
Wie kann ich es so erarbeiten, das er bei diesem DIALOG_STYLE_INPUT, Nur Zahlen reinschreiben kann bzw. maximal 2 Zahlen.
Inputtext NUR Zahlen maximal 2
- Dominik
- 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
-
-
if (!strval(inputtext) (strval(inputtext) < 0 strval(inputtext) > 99)) {
// zahl liegt nicht zwischen 0 und 99
} -
case DIALOG_ALTER:
{
if(response)
{
if (!strval(inputtext) || (strval(inputtext) < 0 || strval(inputtext) > 99)) {
ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Bitte gib dein Alter an","Bitte tippe dein Alter in das,\nuntere Feld ein.","Absenden","Abbrechen");
}
new string[124],spieler[MAX_PLAYER_NAME];
GetPlayerName(playerid,spieler,MAX_PLAYER_NAME);
format(string,sizeof(string),"Du hast angegeben das du {41FF00}%d Jahre alt bist.",inputtext);
SendClientMessage(playerid,REGIFARBE,string);
format(SpielerInfo[playerid][pAlter], 64, "%d", inputtext);
}
else return ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Bitte gib dein Alter an","Bitte tippe dein Alter in das,\nuntere Feld ein.","Absenden","Abbrechen");
}Will nicht so ganz :-/
Außerdem zeigt er mir net den richtigen Inputtext an :-/ -
Isnummeric und ob die zwischen 0 und 99 ist.
Wenn du in der Schule aufgepasst hättest weist du wie < und > eingesetzt werden müssen -
Ich habe es so eingefügt wie LeijaT es mir geschrieben hat???
-
Mit dem Unterschied, dass wenn der Inputtext zwischen 0 und 99 ist, der Dialog gezeigt wird.
Allerdings willst du doch direkt das alter bestimmen oder?
Dann müsstest du den Dialog irgendwo anders einsetzen und alle Aktionen in dieser Abfrage starten -
%s statt %d
-
Mit dem Unterschied, dass wenn der Inputtext zwischen 0 und 99 ist, der Dialog gezeigt wird.
Allerdings willst du doch direkt das alter bestimmen oder?
Dann müsstest du den Dialog irgendwo anders einsetzen und alle Aktionen in dieser Abfrage startenversteh ich jz nicht?
-
//Beim Login oder So machst du ShowPlayerDialog(playerid,DIALOG_ALTERcase DIALOG_ALTER:
{
if(response)
{
if (strval(inputtext) || (strval(inputtext) < 0 || strval(inputtext) > 99)) {
new string[124],spieler[MAX_PLAYER_NAME];
GetPlayerName(playerid,spieler,MAX_PLAYER_NAME);
format(string,sizeof(string),"Du hast angegeben das du {41FF00}%d Jahre alt bist.",inputtext);
SendClientMessage(playerid,REGIFARBE,string);
format(SpielerInfo[playerid][pAlter], 64, "%d", inputtext);
}
}
else return ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Bitte gib dein Alter an","Bitte tippe dein Alter in das,\nuntere Feld ein.","Absenden","Abbrechen");
} -
%s statt %d
Dann hat er aber falsche Datentypen genutzt.
Warum also eine Zahl als String speichern, der im Falle einer zweistelligen Zahl bereits 16 Bytes belegt, wo der Int-Wert grade mal mit 4 Byte doch besser passt. (Als Größe der Datentypen habe ich in dem Fall Java als Vergleich herangezogen. Solange PAWN nicht für alle Datentypen gleiche Größen allokiert sollte das so seine Richtigkeit haben) -
Im Format macht man %s
Speichern natürlich normal alt int -
Alles vorherige ist falsch, da keines davon die "0" als Eingabe akzeptiert. Mag sein, dass niemand 0 Jahre alt ist, aber jemand mag dies vielleicht für etwas anderes benötigen, wo eine 0 logisch ist.
So ist es korrekt und funktionsfähig:
case DIALOG_ALTER:
{
if(response)
{
if (!IsNumeric(inputtext) || (strval(inputtext) < 0 || strval(inputtext) > 99))
{
ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Bitte gib dein Alter an","Bitte tippe dein Alter in das,\nuntere Feld ein.","Absenden","Abbrechen");
return 1;
}
new string[124],spieler[MAX_PLAYER_NAME];
GetPlayerName(playerid,spieler,MAX_PLAYER_NAME);
format(string,sizeof(string),"Du hast angegeben das du {41FF00}%d Jahre alt bist.",strval(inputtext));
SendClientMessage(playerid,REGIFARBE,string);
SpielerInfo[playerid][pAlter] = strval(inputtext); //pAlter ist sicher ein Integer, alles andere wäre sinnlos.
}
else return ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Bitte gib dein Alter an","Bitte tippe dein Alter in das,\nuntere Feld ein.","Absenden","Abbrechen");
}
stock IsNumeric(string[])
{
for (new i = 0, j = strlen(string); i < j; i++)
{
if ((string[i] > '9' || string[i] < '0')) return 0;
}
return 1;
} -
breadfish.de
Hat das Thema geschlossen.