Input Dialog: Überprüfung

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Input Dialog: Überprüfung

    Heyho :)

    Wie der Titel es schon sagt habe ich einen Input Dialog.
    Bei OnPlayerDialogResponse möchte ich nun abfragen, ob
    die Eingabe Buchstaben enthält, falls ja soll eine Fehlermeldung
    ausgegeben werden. Nur kenne ich keine Methode um diese
    Überprüfung zu vollziehen. Ich habe den String (inputtext) bereits
    in einen Integer umgewandelt, aber anscheinend kann man auch
    Buchstaben in Zahlen umwandeln :S

    Ich habe keine Ahnung, wie man mit dem "Inputtext" umgehen soll,
    auf diesem Gebiet bin ich absolut neu und das ärgert mich wirklich.
    Das Speichern des inputtextes unter einer neuen Variable mit HIlfe
    von strval war die einzige Möglichkeit die mir eingefallen ist, wie
    ich es vllt schaffen könnte aber es geht nicht. Wenn ich in das
    Dialog Feld "abc" eingebe, funktioniert es trotzdem...

    Bitte helft mir :(

    Hier mein jetziges Script:
    [pwn]public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){ if(dialogid == DIALOG_FISCH_EXTRAHIEREN) { if(!response) return SendClientMessage(playerid, 0xFFFFFFFF, "Wer nicht will der hat schon"); new text = strval(inputtext); if(text>GFische[playerid]) return SendClientMessage(playerid, 0xFFFFFFFF, "Du hast nicht soviele Fische!"); for(new i=0;i<text;i++) { new chance = random(10); new string2[256]; format(string2,256,"%i",chance); SendClientMessage(playerid,0xFFFFFFFF,string2); if(chance!=1) { text--; } } new string[256]; format(string,sizeof(string),"Du konntest %iml TTX extrahieren!",text); SendClientMessage(playerid, 0xFFFFFFFF, string); return 1; }}[/pwn]
  • strval überprüft die Eingabe vorher nicht, sondern versucht alles in eine Zahl umzuwandeln. Bei Buchstaben oder Sonderzeichen kommt dann eben meistens 0 zurück.
    Man kann sich hierfür aber sehr gut eine Hilfsfunktion schreiben. ;)

    [pwn]IsNumeric(const string[])
    {
    for (new i = 0, s = strlen(string); i < s; i++)
    {
    if (string > '9' || string[i] < '0') return 0;
    }
    return 1;
    }[/pwn]
    Das macht nichts anderes als den Text Buchstabe für Buchstabe durchzugehen und dabei zu schauen, ob ein Buchstabe außerhalb des Bereichs von 0-9 liegt (für besseres Verständnis siehe ASCII Zeichencode).
    Wenn IsNumeric 0 zurückgibt, dann eben die Fehlermeldung ausgeben. :)
    Ansonsten mit strval die Zeichenkette in eine Zahl umwandeln und damit weiterarbeiten.

    MfG,
    Piranha.