Dialog Input wird als 0 ausgegeben

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
  • Hallo,
    ich erstelle momentan eine Liste bei OnPlayerClickPlayer wenn ein Teamitglied ein Spieler anklickt kriegt er ein Dialog indem er den Spieler bestrafen kann etc. Wenn man das Adminlevel 4 hat kriegt man die Auswahlmöglichkeit "Räng ändern" hinzu, diese funktioniert aber nicht, weil die in der Textbox eingegebene Zahl als 0 ausgegeben wird egal was man reinschreibt.


    OnPlayerClickPlayer:

    if(Player[playerid][Level] == 4)
    {
    ShowPlayerDialog(playerid, 1337, DIALOG_STYLE_LIST, "{FFFF00}Admin Menü", "{FFFF00}Spieler kicken\n{15ff00}Spieler muten\n{FF0000}Spieler bannen\n{ff7400}Spieler IP bannen\n{FFCC00}Rang ändern", "Auswählen", "Abbrechen");
    ClickedPlayer[playerid] = clickedplayerid;
    }


    OnDialogResponse:

    if(dialogid == 1337)
    {
    if(!response) return SendClientMessage(playerid, 0xFF0C29FF,"Auswahl abgebrochen.");
    else
    {
    if(listitem == 0) return ShowPlayerDialog(playerid, 1338, DIALOG_STYLE_INPUT, "Spieler kicken", "Gib den Kickgrund ein", "Kicken", "Abbrechen");
    if(listitem == 1) return ShowPlayerDialog(playerid, 1339, DIALOG_STYLE_INPUT, "Spieler muten", "Gib den Mutegrund ein", "Muten", "Abbrechen");
    if(listitem == 2) return ShowPlayerDialog(playerid, 1340, DIALOG_STYLE_INPUT, "Spieler bannen", "Gib den Banngrund ein", "Bannen", "Abbrechen");
    if(listitem == 3) return ShowPlayerDialog(playerid, 1341, DIALOG_STYLE_INPUT, "Spieler IP bannen", "Gib den IP Banngrund ein", "IP bannen", "Abbrechen");
    if(listitem == 4) return ShowPlayerDialog(playerid, 1342, DIALOG_STYLE_INPUT, "Rang ändern", "Gib den gewünschten Rang ein", "Rang setzen", "Abbrechen");
    }
    }


    if(dialogid == 1342)
    {
    new string[128], target, level;
    ClickedPlayer[playerid] = target;
    inputtext[playerid] = level;
    if(!response) return SendClientMessage(playerid, 0xff0c29ff,"Auswahl abgebrochen.");
    if(isnull(inputtext) || !IsNumeric(inputtext) || level > 4) return ShowPlayerDialog(playerid, 1342, DIALOG_STYLE_INPUT, "Rang ändern", "Gib den gewünschten Rang ein", "Rang setzen", "Abbrechen");
    else
    {
    Player[target][Level] = level;
    SavePlayer(target);
    format(string,sizeof(string),"%s hat %s's Rang geändert zu: %s",GetName(playerid),GetName(target),GetRang(target));
    SendAdminMessage(1,string);
    printf("[warning] %s ändert das Adminlevel von %s auf %s(%d)",GetName(playerid),GetName(target),GetRang(target),level);
    return 1;
    }
    }

    Wo ist der Fehler?

  • Abgesehen von deinen kleinen drehern in der Zuweisung, solltest du beim auslesen bzw. prüfen von Zahleneingaben, vor allem wenn du sie noch weiterverwenden möchtest sscanf nutzen.
    Das dürfte so allerdings funktionieren


    if(dialogid == 1342)
    {
    new string[128], target, level;
    target = ClickedPlayer[playerid];
    if(!response) return SendClientMessage(playerid, 0xff0c29ff,"Auswahl abgebrochen.");
    if(sscanf(inputtext, "d", level)) return ShowPlayerDialog(playerid, 1342, DIALOG_STYLE_INPUT, "Rang ändern", "Gib den gewünschten Rang ein", "Rang setzen", "Abbrechen");
    else
    {
    Player[target][Level] = level;
    SavePlayer(target);
    format(string,sizeof(string),"%s hat %s's Rang geändert zu: %s",GetName(playerid),GetName(target),GetRang(target));
    SendAdminMessage(1,string);
    printf("[warning] %s ändert das Adminlevel von %s auf %s(%d)",GetName(playerid),GetName(target),GetRang(target),level);
    return 1;
    }
    }

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski