Inputtext NUR Zahlen maximal 2

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
    }


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • 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 :-/

    ehm. Administration StateV ~ Domi

  • 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

    versteh ich jz nicht? 8|

    ehm. Administration StateV ~ Domi


  • //Beim Login oder So machst du ShowPlayerDialog(playerid,DIALOG_ALTER


    case 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)

  • 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;
    }