OnPlayerDialog geht nicht!

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
  • Hey, seid einigen Tagen geht mein OnDialogResponse nicht mehr ...


    Wenn ich bei meinem Spawnchange Dialog Ingame ein Listitem anklicke, passiert nichts...


    Bei meinem showme und login usw Dialog funzt alles...


    Code:


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])


    {
    if(dialogid==DIALOG_Farben)
    {
    if(listitem == 0)
    {
    SetPlayerColor(playerid,Rot);
    }
    if(listitem ==1)
    {
    SetPlayerColor(playerid,Blau);
    }
    if(listitem ==2)
    {
    SetPlayerColor(playerid,Gelb);
    }
    if(listitem ==3)
    {
    SetPlayerColor(playerid,Orange);
    }
    if(listitem ==4)
    {
    SetPlayerColor(playerid,HGruen);
    }
    if(listitem ==5)
    {
    SetPlayerColor(playerid,HBlau);
    }
    if(listitem ==6)
    {
    SetPlayerColor(playerid,DBlau);
    }
    if(listitem ==7)
    {
    SetPlayerColor(playerid,Schwarz);
    }
    if(listitem ==8)
    {
    SetPlayerColor(playerid,Weiss);
    }
    if(listitem ==9)
    {
    if(!isPlayerAnAdmin(playerid,4))return SendClientMessage(playerid,Rot,"Du bist kein 4*Admin!");
    SetPlayerColor(playerid,Gold);
    }



    if(dialogid ==DIALOG_Spawnchange)
    {
    if(response)
    {
    if(listitem == 0)
    {
    SetPVarInt(playerid,"Spawnpunkt",0);
    SendClientMessage(playerid,Blau,"Du spawnst nun am Noob-Spawn.");
    return 1;
    }
    if(listitem == 1)
    {
    SendClientMessage(playerid,Rot,"Der Spawnpunkt ist noch in bearbeitung!");
    return 1;
    }
    if(listitem == 2)
    {
    SetPVarInt(playerid,"Spawnpunkt",2);
    SendClientMessage(playerid,Blau,"Du spawnst nun an deiner Fraktion.");
    return 1;
    }
    }
    }
    return 1;
    }


    //------------------


    if(dialogid==DIALOG_LOGIN) //Wenn der Dialog-Login aufgerufen wird


    {


    if(response==0) //Falls er auf Abbrechen drückt, dann


    {


    SendClientMessage(playerid,Rot,"Du hast den Login Vorgang abgebrochen und wirst deshalb vom Server gekickt!"); //Nachricht an ihn


    Kick(playerid); //Er wird gekickt


    return 1;


    }


    if(response==1) //Falls er aber auf Login drückt, dann...


    {


    if(!strlen(inputtext)) //Hier prüft man ob er überhaupt was eingegeben hat, sonst müsste er ja nichts eingeben und würde sich einloggen koennen...


    {


    SendClientMessage(playerid,Rot,"Dein angegebenes Passwort war nicht lang genug!"); //Nachricht


    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login Vorgang","Dein Account wurde in unserer Datenbank gefunden!\nBitte gib nun dein Passwort ein! ","Login", "Abbrechen"); //Dialog erneut zeigen


    return 1;


    }


    else


    {


    Login(playerid,MD5_Hash(inputtext)); //Falls es aber was eingegeben wurde wird der Stock Login aufgerufen und ausgeführt.. MD5_Hash bedeutet dass das Passwort nicht wortwürtlich in die Spielerdatei gesetzt wird sondern als String und dann wieder ins richtige umformatiert wird. So schützt man eueren Server vor Hackern, weil Sie dann das PW von diesen nicht wissen...


    return 1;


    }


    }


    }


    if(dialogid==DIALOG_REGISTER) //Falls der DIALOG_REGISTER aufgerufen wird


    {


    if(response==0) //Falls er auf abrrechen drückt..


    {


    SendClientMessage(playerid,Rot,"Du hast den Registrierungs Vorgang abgebrochen und wirst deshalb vom Server gekickt!"); //Nachricht


    Kick(playerid); //WIrd gekickt


    return 1;


    }


    if(response==1)


    {


    if(!strlen(inputtext)) //überprüft ob was eingegeben wird...


    {


    SendClientMessage(playerid,HGruen,"Dein eingegebenes Passwort war nicht lang genug!"); //Wenn er wieder nichts eingibt


    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrierung","Willkommen auf [GSL]GermanSpeedLife!\n bitte gib nun dein gewünschtes Passwort ein","Register","Abbrechen"); //Dann Dialog erneut anzeigen....


    return 1;


    }


    else //Falls aber was eingegeben wurde , dann....


    {


    Register(playerid,MD5_Hash(inputtext)); //Wir die Funktion Register von Vorhin aufgerufen und ausgeführt und das PW wird erneut gehasht...


    return 1;


    }


    }


    }


    return 1;


    }

  • Irgendwie hast du die ganzen { und } total durcheinander gebracht.
    Ich versuch das mal zu entwurzeln.


    ##edit


    Versuchs mal hiermit:
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid==DIALOG_Farben)
    {
    if(listitem == 0)
    {
    SetPlayerColor(playerid,Rot);
    }
    if(listitem ==1)
    {
    SetPlayerColor(playerid,Blau);
    }
    if(listitem ==2)
    {
    SetPlayerColor(playerid,Gelb);
    }
    if(listitem ==3)
    {
    SetPlayerColor(playerid,Orange);
    }
    if(listitem ==4)
    {
    SetPlayerColor(playerid,HGruen);
    }
    if(listitem ==5)
    {
    SetPlayerColor(playerid,HBlau);
    }
    if(listitem ==6)
    {
    SetPlayerColor(playerid,DBlau);
    }
    if(listitem ==7)
    {
    SetPlayerColor(playerid,Schwarz);
    }
    if(listitem ==8)
    {
    SetPlayerColor(playerid,Weiss);
    }
    if(listitem ==9)
    {
    if(!isPlayerAnAdmin(playerid,4))return SendClientMessage(playerid,Rot,"Du bist kein 4*Admin!");
    SetPlayerColor(playerid,Gold);
    }
    }

    if(dialogid ==DIALOG_Spawnchange)
    {
    if(response)
    {
    if(listitem == 0)
    {
    SetPVarInt(playerid,"Spawnpunkt",0);
    SendClientMessage(playerid,Blau,"Du spawnst nun am Noob-Spawn.");
    return 1;
    }
    if(listitem == 1)
    {
    SendClientMessage(playerid,Rot,"Der Spawnpunkt ist noch in bearbeitung!");
    return 1;
    }
    if(listitem == 2)
    {
    SetPVarInt(playerid,"Spawnpunkt",2);
    SendClientMessage(playerid,Blau,"Du spawnst nun an deiner Fraktion.");
    return 1;
    }
    }
    }


    //------------------


    if(dialogid==DIALOG_LOGIN) //Wenn der Dialog-Login aufgerufen wird
    {


    if(response==0) //Falls er auf Abbrechen drückt, dann
    {
    SendClientMessage(playerid,Rot,"Du hast den Login Vorgang abgebrochen und wirst deshalb vom Server gekickt!"); //Nachricht an ihn
    Kick(playerid); //Er wird gekickt
    return 1;
    }
    if(response==1) //Falls er aber auf Login drückt, dann...
    {
    if(!strlen(inputtext)) //Hier prüft man ob er überhaupt was eingegeben hat, sonst müsste er ja nichts eingeben und würde sich einloggen koennen...
    {
    SendClientMessage(playerid,Rot,"Dein angegebenes Passwort war nicht lang genug!"); //Nachricht
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login Vorgang","Dein Account wurde in unserer Datenbank gefunden!\nBitte gib nun dein Passwort ein! ","Login", "Abbrechen"); //Dialog erneut zeigen
    return 1;
    }
    else
    {
    Login(playerid,MD5_Hash(inputtext)); //Falls es aber was eingegeben wurde wird der Stock Login aufgerufen und ausgeführt.. MD5_Hash bedeutet dass das Passwort nicht wortwürtlich in die Spielerdatei gesetzt wird sondern als String und dann wieder ins richtige umformatiert wird. So schützt man eueren Server vor Hackern, weil Sie dann das PW von diesen nicht wissen...
    return 1;
    }
    }
    }
    if(dialogid==DIALOG_REGISTER) //Falls der DIALOG_REGISTER aufgerufen wird
    {
    if(response==0) //Falls er auf abrrechen drückt..
    {
    SendClientMessage(playerid,Rot,"Du hast den Registrierungs Vorgang abgebrochen und wirst deshalb vom Server gekickt!"); //Nachricht
    Kick(playerid); //WIrd gekickt
    return 1;
    }
    if(response==1)
    {
    if(!strlen(inputtext)) //überprüft ob was eingegeben wird...
    {
    SendClientMessage(playerid,HGruen,"Dein eingegebenes Passwort war nicht lang genug!"); //Wenn er wieder nichts eingibt
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrierung","Willkommen auf [GSL]GermanSpeedLife!\n bitte gib nun dein gewünschtes Passwort ein","Register","Abbrechen"); //Dann Dialog erneut anzeigen....
    return 1;


    }
    else //Falls aber was eingegeben wurde , dann....
    {
    Register(playerid,MD5_Hash(inputtext)); //Wir die Funktion Register von Vorhin aufgerufen und ausgeführt und das PW wird erneut gehasht...
    return 1;
    }
    }
    }
    return 1;
    }


    Hoffentlich hab ich nix übersehen.


  • Funzt iwi auch nicht...


    Wenn ich /spawnchange eingebe und dann ein Item klicke, kommt keine Message.

  • Wie zeigst du dem Spieler den Dialog ? Zeig ma den ShowPlayerDialog pls.


    Joo, danke, habe Fehler gefunden ...


    Hatte bei dem:
    ocmd:spawnchange(playerid,params[])
    {
    ShowPlayerDialog(playerid,DIALOG_Spawnchange/*<<*/, DIALOG_STYLE_LIST, "Spawnchange", "Noob-Spawn\nHaus(in bearbeitung)\nFraktion", "Auswählen", "Abbrechen");
    return 1;
    }


    hatte ich so:
    ocmd:spawnchange(playerid,params[])
    {
    ShowPlayerDialog(playerid,3/*<<*/, DIALOG_STYLE_LIST, "Spawnchange", "Noob-Spawn\nHaus(in bearbeitung)\nFraktion", "Auswählen", "Abbrechen");
    return 1;
    }



    habe das vergessen zu ändern...


    Danke!