Problem mit sehr kompliziertem Adminmenü mit einem Kick, dessen Input nicht angegeben wird, sondern Returnt wird

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 leute, wie der Titel schon sagt, habe ich ein Kleines Problem.


    Es geht um mein Adminmenü:



    #define ADMINSTRING "{FFFF00}Autos Respawnen\n{FFFF00}Zeit Setzen\n{FFFF00}Wetter Setzen\n{FFFF00}Zu Spieler Teleportieren\n{FFFF00}Spieler Herteleportieren\n{FFFF00}Zu Punkt Teleportieren\n{FFFF00}Spieler Kicken\n{FFFF00}Spieler Bannen\n{FFFF00}Leader machen\n{FFFF00}Rank geben"
    #define ADMINTITEL "[Colex] Adminmenü"


    Hauptsächlich um die Abteilung "Spieler Kicken,Bannen, Leader machen und Rank" geben.


    Hier sind vorerst meine DIALOG_IDS
    #define DIALOG_ADMINMENUE 16
    #define DIALOG_ARESPAWNEN 17
    #define DIALOG_AZEITSETZEN 18
    #define DIALOG_AWETTERSETZEN 19
    #define DIALOG_AZUSPIELERPORTEN 20
    #define DIALOG_ASPIELERHERPORTEN 21
    #define DIALOG_ARESPAWNAUSWAHL 22
    #define DIALOG_HILFEAUSWAHL 23
    #define DIALOG_REPORT 24
    #define DIALOG_AKICKENGRUND 25
    #define DIALOG_AKICKENID 26
    #define DIALOG_ABANNENGRUND 27
    #define DIALOG_ABANNENID 28
    #define DIALOG_ALEADERMACHEN 29
    #define DIALOG_ALEADERMACHENID 30
    #define DIALOG_ARANKGEBEN 31
    #define DIALOG_ARANKGEBENID 32



    hier ist mein Adminmenü:

    case DIALOG_ADMINMENUE:
    {
    if(!response)
    {
    return 1;
    }
    switch(listitem)
    {
    case 0: // Respawnen
    {
    ShowPlayerDialog(playerid,DIALOG_ARESPAWNAUSWAHL,DIALOG_STYLE_LIST,"[Colex] AutoRespawn","{FF7D00}SAPD Cars\n{FF7D00}FBI Cars\n{FF7D00}Army Cars\n{FF7D00}Terror Cars\n{FF7D00}Noobroller\n{FF7D00}Grove Cars","Auswählen","Zurück");
    }
    case 1: //Zeit Setzen
    {
    ShowPlayerDialog(playerid,DIALOG_AZEITSETZEN,DIALOG_STYLE_INPUT,"[Colex] Zeit Setzen","{FFFFFF}Tippe die Stunde unten ein, um die Zeit zu ändern.","Setzen","Zurück");
    }
    case 2: // Wetter Setzen
    {
    ShowPlayerDialog(playerid,DIALOG_AWETTERSETZEN,DIALOG_STYLE_INPUT,"[Colex] Wetter Setzen","{FFFFFF}Tippe die WetterID unten ein, um das Wetter zu ändern.","Setzen","Zurück");
    }
    case 3: // zu Spieler TPN
    {
    ShowPlayerDialog(playerid,DIALOG_AZUSPIELERPORTEN,DIALOG_STYLE_INPUT,"[Colex] Zu Spieler Porten","{FFFFFF}Tippe die ID ein, zu der du dich Porten willst:","Porten","Zurück");
    }
    case 4: // Spieler Herporten
    {
    ShowPlayerDialog(playerid,DIALOG_ASPIELERHERPORTEN,DIALOG_STYLE_INPUT,"[Colex] Spieler Herporten","{FFFFFF}Tippe die ID ein, die du Porten willst:","Porten","Zurück");
    }
    case 5: // zu Punkt Porten
    {
    ShowPlayerDialog(playerid,DIALOG_TELEPORTS,DIALOG_STYLE_LIST,"[Colex]Adminteleport","{00A8FF}Noobspawn\n{00A8FF}SAPD\n{00A8FF}BSN\n{00A8FF}Terrorbase\n{00A8FF}Armybase\n{00A8FF}Adminbase\n{00A8FF}Bank\n{00A8FF}FBI Base\n{00A8FF}Grove Street","Teleporten!","Zurück");
    }
    case 6: // Spieler Kickn
    {
    ShowPlayerDialog(playerid,DIALOG_AKICKENGRUND,DIALOG_STYLE_INPUT,"[Colex]Kicken","{ffffff}Tipp den Grund ein, weswegen du den Spieler Kicken willst!","Nächste","Zurück");
    }
    case 7: // Spieler Bannen
    {
    ShowPlayerDialog(playerid,DIALOG_ABANNENGRUND,DIALOG_STYLE_INPUT,"[Colex]Bannen","{ffffff}Tipp den Grund ein, weswegen du den Spieler Bannen willst!","Nächste","Zurück");
    }
    case 8: // Leader machen
    {
    ShowPlayerDialog(playerid,DIALOG_ALEADERMACHEN,DIALOG_STYLE_INPUT,"[Colex]Leader","{ffffff}Tipp die FraktionsID ein, die der User bekommen soll:\n1 = SAPD | 2 = FBI | 3 = ARMY | 4 = GROVE | 7 = TERRORS","Nächste","Zurück");
    }
    case 9: // Rank geben
    {
    ShowPlayerDialog(playerid,DIALOG_ARANKGEBEN,DIALOG_STYLE_LIST,"[Colex]Rank","{ffffff}Tipp den Rank ein, die der User bekommen soll:\n Rank 1 - 6","Nächste","Zurück");
    }
    }

    }


    Halt, wenn man in der Liste oben drauf klickt,
    Die taten:


    case DIALOG_AKICKENGRUND:
    {
    if(!response) return ShowPlayerDialog(playerid,DIALOG_ADMINMENUE,DIALOG_STYLE_LIST,ADMINTITEL,ADMINSTRING,"Auswählen","Abbrechen");
    if(SpielerInfo[playerid][Adminlevel] <= 1) return MSG(playerid,COLOR_RED,"Du bist nicht befugt, diesen Command zu benutzen!");
    if(strlen(inputtext) < 0) return MSG(playerid,COLOR_RED,"Die Eingabe ist zu kurz.");
    format(grundstring,sizeof(grundstring),"%s",inputtext);
    ShowPlayerDialog(playerid,DIALOG_AKICKENID,DIALOG_STYLE_INPUT,"[Colex]Kicken","{ffffff}Tipp nun die ID ein, die der Spieler besitzt.\n(Nachzusehen unter TAB)","Kicken","Abbrechen");

    }
    case DIALOG_AKICKENID:
    {
    if(!response) return ShowPlayerDialog(playerid,DIALOG_ADMINMENUE,DIALOG_STYLE_LIST,ADMINTITEL,ADMINSTRING,"Auswählen","Abbrechen");
    if(strlen(inputtext) < 0) return MSG(playerid,COLOR_RED,"Die Eingabe ist zu kurz.");
    new idx, ID = strval(strtok(inputtext,idx));
    new yostring[256];
    format(yostring,sizeof(yostring),"Admin %s hat %s gekickt. Grund: %s",PlayerName(playerid),PlayerName(ID),grundstring);
    MSGToAll(COLOR_MULTIRED,yostring);
    Kick(ID);
    MSG(playerid,COLOR_GREEN,"Spieler Gekickt!");
    }


    Doch beim Kicken, Leader Machen, Bannen, und Rank geben kommt das:
    "Admin (Name) hat (name) Gekickt. Grund: "
    Es wird kein Grund gespeichert.
    und beim Leader ist das so, dass die LeaderID immer 0 beträgt.



    Script ist ein Selfmade.



    bitte um Hilfe.


    mfg


    //edit: den grundstring hab ich unter OnDialogResponse eingefügt. String 256.

    526C4Hj.png Mit freundlichen Grüßen,
    Noneatme

  • Du hast grundstring unter OnDialogResponse:
    Was folgt daraus? Jedes mal, wenn dieses Public aufgerufen wird, erstellt er diese Variable. Die zurovige Zuweisung wird demnach gelöscht, da ja der String nach der Eingabe des Inputtextes wieder neu erstellt wird.

  • Ich geh mal davon aus, das du den Grundstring in OnPlayerDialogResponse definierst.


    Schmeiß das mal raus und pack das oben new grundstring[MAX_PLAYERS][DEINE_GRÖßE]; rein
    so speicherst du den Grund zwar für jeden spieler verhinderst aber, dass du den string durch das wiederaufrufen des Callbacks OnPlayerDialogResponse löscht und wieder neu definierst.


    //EDIT: falsche Varibalen deklaration

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

    Margarete Stokowski

  • udn wie muss ich dann erklären?


    format(grundstring[playerid],sizeof(grundstring[playerid]),"%s",inputtext);


    so? dann zeigt der mir:


    NPP_EXEC: "PAWN Compiler"
    CD: E:\Festplatte Daten von Jonas\SA MP Server!\Colex Reallife\Server\gamemodes
    Current directory: E:\Festplatte Daten von Jonas\SA MP Server!\Colex Reallife\Server\gamemodes
    "C:\Dokumente und Einstellungen\Multivan\Desktop\SA MP Server!\0.3C\Multistunt neu\pawno\pawncc.exe" "colex.pwn" -; -(
    Process started >>>
    colex.pwn(4159) : error 001: expected token: "]", but found "-identifier-"
    colex.pwn(4159) : warning 215: expression has no effect
    colex.pwn(4159) : error 001: expected token: ";", but found "]"
    colex.pwn(4159) : error 029: invalid expression, assumed zero
    colex.pwn(4159) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.
    <<< Process finished.
    ================ READY ================


    an

    526C4Hj.png Mit freundlichen Grüßen,
    Noneatme

  • format(grundstring[playerid],/*größe deines strings*/,"%s",inputtext);
    so

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

    Margarete Stokowski