Dialog "läuft" nicht weiter

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
  • Abend,


    kleines Problem, bin gerade relativ ratlos.
    Ich denke selber schauen ist einfacher, als wenn ich das kompliziert erkläre ;)


    case DIALOG_IMMIGRATION_GESCHLECHT:
    {
    switch (listitem)
    {
    case 0:
    {
    new INI:File = INI_Open(UserPath(playerid));
    INI_WriteInt(File,"Geschlecht",1); // 1 = Männlich
    INI_Close(File);
    ShowPlayerDialog(playerid, DIALOG_IMMIGRATION_ALTER, DIALOG_STYLE_INPUT , "Ausweis Beantragung", "Wie alt sind Sie?", "Weiter", "");
    }
    case 1:
    {
    new INI:File = INI_Open(UserPath(playerid));
    INI_WriteInt(File,"Geschlecht",2); // 2 = Weiblich
    INI_Close(File);
    ShowPlayerDialog(playerid, DIALOG_IMMIGRATION_ALTER, DIALOG_STYLE_INPUT , "Ausweis Beantragung", "Wie alt sind Sie?", "Weiter", "");
    }
    case DIALOG_IMMIGRATION_ALTER:
    {
    new INI:File = INI_Open(UserPath(playerid));
    INI_WriteInt(File,"Alter",strval(inputtext));
    INI_Close(File);
    ShowPlayerDialog(playerid,DIALOG_IMMIGRATION_GEBURTSORT, DIALOG_STYLE_INPUT, "Ausweis Beantragung", "Aus welchem Land stammen Sie?", "Weiter", "");
    }



    Das Problem ist nun, den Dialog "DIALOG_IMMIGRATION_ALTER" zeigt es mir noch an, aber wenn ich dann auf "Weiter" klicke, zack weg ist der Dialog.
    Vielleicht hat jemand eine Ahnung, was daran falsch sein könnte.
    Danke bereit's im Vorraus ;)

  • Denk mal an die Klammern :D



    so sieht es bei dir aus auf welches switch bezieht sich hier dein case DIALOG_IMMIGRATION_ALTER:
    wenn du das erkennst weißt du auch warum der weitere dialog nicht aufgerufen wird

    switch(dialogid){
    case DIALOG_IMMIGRATION_GESCHLECHT:
    switch(listitem){
    case 0:
    case 1:
    case DIALOG_IMMIGRATION_ALTER:
    }
    }
    }


  • Hä? O.o
    Versteh ich nicht ganz, kannst du mir das evtl. etwas genauer erklären?

  • Er meint, dass du die switch()s und cases falsch verschachtelst. Dir fehlen geschweifte Klammern nach "case 1:".

  • Aber nur Eine! um das innere switch (switch(listitem)) nach dem case 1: abzuschließen brauchst du noch eine geschwungene geschlossene klammer nach case 1.

    Programmierung: C/C++, Java, BASIC, SQL, HTML, CSS, JavaScript, PHP


    Einfach eine mega-große Schrift, die meine obige Nachricht nicht von meiner Signatur unterscheiden lässt, weil meine Signatur einfach nur gigantisch ist - Aber das ist mir egal...

  • Aber nur Eine! um das innere switch (switch(listitem)) nach dem case 1: abzuschließen brauchst du noch eine geschwungene geschlossene klammer nach case 1.


    Versteh ich nicht, einge geschwungene geschlossene Klammer nach Case 1? O.o
    Ich glaub ich steh gerade voll auf der Leitung...


    Wenn ich das so mache:



    case 1:
    {
    new INI:File = INI_Open(UserPath(playerid));
    INI_WriteInt(File,"Geschlecht",2); // 2 = Weiblich
    INI_Close(File);
    ShowPlayerDialog(playerid, DIALOG_IMMIGRATION_ALTER, DIALOG_STYLE_INPUT , "Ausweis Beantragung", "Wie alt sind Sie?", "Weiter", "");
    }
    }
    }


    Bekomm ich Errors...

    Einmal editiert, zuletzt von DHDesign ()

  • case DIALOG_IMMIGRATION_GESCHLECHT:
    {
    switch (listitem)
    {
    case 0:
    {
    new INI:File = INI_Open(UserPath(playerid));
    INI_WriteInt(File,"Geschlecht",1); // 1 = Männlich
    INI_Close(File);
    ShowPlayerDialog(playerid, DIALOG_IMMIGRATION_ALTER, DIALOG_STYLE_INPUT , "Ausweis Beantragung", "Wie alt sind Sie?", "Weiter", "");
    }
    case 1:
    {
    new INI:File = INI_Open(UserPath(playerid));
    INI_WriteInt(File,"Geschlecht",2); // 2 = Weiblich
    INI_Close(File);
    ShowPlayerDialog(playerid, DIALOG_IMMIGRATION_ALTER, DIALOG_STYLE_INPUT , "Ausweis Beantragung", "Wie alt sind Sie?", "Weiter", "");
    }
    case DIALOG_IMMIGRATION_ALTER:
    {
    new INI:File = INI_Open(UserPath(playerid));
    INI_WriteInt(File,"Alter",strval(inputtext));
    INI_Close(File);
    ShowPlayerDialog(playerid,DIALOG_IMMIGRATION_GEBURTSORT, DIALOG_STYLE_INPUT, "Ausweis Beantragung", "Aus welchem Land stammen Sie?", "Weiter", "");
    }


    Das oben ist dein Code (formatiert). Wie du siehst, steht das case DIALOG_IMMIGRATION_ALTER: in der switch (listitem) "Abfrage". Dieser Fall kann aber nie eintreten, da mit case 0: und case 1: schon beide Möglichkeiten, den Dialog zu beantworten abgegeben wurden. Dein Code muss also wie folgt aussehen:
    case DIALOG_IMMIGRATION_GESCHLECHT:
    {
    switch (listitem)
    {
    case 0:
    {
    new INI:File = INI_Open(UserPath(playerid));
    INI_WriteInt(File,"Geschlecht",1); // 1 = Männlich
    INI_Close(File);
    ShowPlayerDialog(playerid, DIALOG_IMMIGRATION_ALTER, DIALOG_STYLE_INPUT , "Ausweis Beantragung", "Wie alt sind Sie?", "Weiter", "");
    }
    case 1:
    {
    new INI:File = INI_Open(UserPath(playerid));
    INI_WriteInt(File,"Geschlecht",2); // 2 = Weiblich
    INI_Close(File);
    ShowPlayerDialog(playerid, DIALOG_IMMIGRATION_ALTER, DIALOG_STYLE_INPUT , "Ausweis Beantragung", "Wie alt sind Sie?", "Weiter", "");
    }
    }
    }
    case DIALOG_IMMIGRATION_ALTER:
    {
    new INI:File = INI_Open(UserPath(playerid));
    INI_WriteInt(File,"Alter",strval(inputtext));
    INI_Close(File);
    ShowPlayerDialog(playerid,DIALOG_IMMIGRATION_GEBURTSORT, DIALOG_STYLE_INPUT, "Ausweis Beantragung", "Aus welchem Land stammen Sie?", "Weiter", "");
    }


    So steht es im switch, der DIALOG_IMMIGRATION_GESCHLECHT und DIALOG_IMMIGRATION_ALTER unterscheidet.

    Programmierung: C/C++, Java, BASIC, SQL, HTML, CSS, JavaScript, PHP


    Einfach eine mega-große Schrift, die meine obige Nachricht nicht von meiner Signatur unterscheiden lässt, weil meine Signatur einfach nur gigantisch ist - Aber das ist mir egal...