Dialog zeigt keine Reaktion

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


    ich bin derzeit etwas am Rand des Abgrunds, da ich nicht weiß, inwiefern hier das Problem besteht.
    Unzwar bin ich gerade bei der Erstellung eines Registrierensystems mit Geschlecht, Alter und Herkunft. Das funktioniert alles auch so weit, aber sobald ich dann bei dem Alter im Dialog auf 'Bestätigen' klicke, sprich auf den Button, passiert nichts.
    Bei der Auswahl des Geschlechts wird problemlos der nächste Dialog angezeigt, aber wie beschrieben funktioniert das beim Alter nicht. Das Dialogfenster schließt sich und die Aktionen bei der if(response == XY) werden nicht ausgeführt.
    Anbei der Code:


    Spoiler anzeigen
    if(dialogid == DIALOG_GESCHLECHT)
    {
    if(response == 1)
    {
    SpielerInfo[playerid][pGeschlecht] = 1;
    SendClientMessage(playerid, weiss, "Du hast angegeben, dass du dem männlichen Geschlecht angehörst.");
    ShowPlayerDialog(playerid, DIALOG_ALTER, DIALOG_STYLE_INPUT, "Alter", "Wann wurdest du geboren? Angabe in TT.MM.JJJJ", "Bestätigen", "Zurück");
    }
    if(response == 0)
    {
    SpielerInfo[playerid][pGeschlecht] = 2;
    SendClientMessage(playerid, weiss, "Du hast angegeben, dass du dem weiblichen Geschlecht angehörst.");
    ShowPlayerDialog(playerid, DIALOG_ALTER, DIALOG_STYLE_INPUT, "Alter", "Wann wurdest du geboren? Angabe in TT.MM.JJJJ", "Bestätigen", "Zurück");
    }
    return 1;
    }
    if(dialogid == DIALOG_ALTER)
    {
    new tag, monat, jahr;
    getdate(tag, monat, jahr);
    new DatumInfo[3][20];
    split(inputtext, DatumInfo, '.');
    if(response == 1)
    {
    if(strlen(inputtext) > 10)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Jahre","ANGABEFEHLER: Wann bist du geboren?\nAngabe bitte in TT.MM.JJJJ","Bestätigen","Zurück");
    }
    if(!IsDatumGueltig(strval(DatumInfo[0]),strval(DatumInfo[1]),strval(DatumInfo[2])))
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Jahre","ANGABEFEHLER: Wann bist du geboren?\nAngabe bitte in TT.MM.JJJJ","Bestätigen","Zurück");
    }
    if(jahr - strval(DatumInfo[2]) > 60 || strval(DatumInfo[2]) < 10 || strval(DatumInfo[2]) >= jahr)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Jahre","ANGABEFEHLER: Wann bist du geboren?\nAngabe bitte in TT.MM.JJJJ","Bestätigen","Zurück");
    }
    new check = jahr - strval(DatumInfo[2]);
    if(check == jahr)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Jahre","ANGABEFEHLER: Wann bist du geboren?\nAngabe bitte in TT.MM.JJJJ","Bestätigen","Zurück");
    }
    if(strval(DatumInfo[1]) > monat)
    {
    check -= 1;
    }
    else if(strval(DatumInfo[1]) == monat && strval(DatumInfo[0]) > tag)
    {
    check -= 1;
    }
    new string[128];
    SpielerInfo[playerid][pAlter] = check;
    format(string, sizeof(string), "Du hast angegeben, dass du %d Jahre alt bist.",SpielerInfo[playerid][pAlter]);
    SendClientMessage(playerid, weiss, string);
    ShowPlayerDialog(playerid, DIALOG_HERKUNFT, DIALOG_STYLE_LIST, "Länderauswahl", "Deutschland\nÖsterreich\nSchweiz\nLiechtenstein\nLuxemburg\nDänemark","Weiter","");
    }
    if(response == 0)
    {
    SendClientMessage(playerid, weiss, "Du hast die Aktion 'Zurück' gewählt und bist im vorherigen Registrierungsvorgang.");
    ShowPlayerDialog(playerid, DIALOG_GESCHLECHT, DIALOG_STYLE_MSGBOX, "Geschlecht", "Welchem Geschlecht gehörst du an?","männlich","weiblich");
    }
    return 1;
    }


    Die Dialoge sind selbstverständlich oben definiert.


    #define DIALOG_GESCHLECHT 2
    #define DIALOG_ALTER 3


    Ich bedanke mich bei euch im Voraus für eure Hilfe. :)


    Mit freundlichen Grüßen,
    MrJokazMan


    Edit 1: Problem näher beschrieben
    Edit 2: Push... das Problem besteht immer noch

    mit freundlichem Gruß,
    MrJokazMan | Robin K.


    2 Mal editiert, zuletzt von MrJokazMan ()

  • Der Dialog wird lediglich in den angegebenen Zeilen angezeigt. Sprich einmal, um von der Geschlechtsauswahl zur Altersauswahl zu kommen und dann dementsprechend für "if(response == 0)".
    Der Testbefehl würde den gleichen Effekt erzielen.

    mit freundlichem Gruß,
    MrJokazMan | Robin K.


  • Der Dialog wird lediglich in den angegebenen Zeilen angezeigt. Sprich einmal, um von der Geschlechtsauswahl zur Altersauswahl zu kommen und dann dementsprechend für "if(response == 0)".
    Der Testbefehl würde den gleichen Effekt erzielen.


    Mach dir mal wie gesagt den Testbefehl rein, ich will wissen ob er überhaupt was tut.


    Mach mal überall wo der Dialog aufgerufen wird ein Printf rein^^


    MfG
    Geronimo

  • Die anderen Vorschläge haben nichts gebracht.
    Ich habe mal jetzt nach jeder Zeile ein print eingefügt und ich komme bis hier:


    Spoiler anzeigen
    new tag, monat, jahr;
    print("DIALOG new tag");
    getdate(tag, monat, jahr);
    print("DIALOG get date");
    new DatumInfo[3][20];
    print("DIALOG DatumInfo"); <----- | Nach dem print passiert nichts mehr
    split(inputtext, DatumInfo, '.');
    print("DIALOG split");

    mit freundlichem Gruß,
    MrJokazMan | Robin K.



  • Geh lieber nochmals über die Bücher. In Pawn macht es keinen Unterschied ob Du folgendes schreibst:



    if(response)
    if(response != 0)


    oder



    if!response)
    if(response == 0)


    @TS Kannst Du erläutern, warum dein Array 20 Zeichen gross ist ? Jahr hat 4 (resp. 5 mit \0) Stellen ?

  • if(check == jahr)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Jahre","ANGABEFEHLER:Wann bist du geboren?\nAngabe bitte in TT.MM.JJJJ","Bestätigen","Zurück");
    return 0;
    }
    versuch das mal.

  • aber bei alle 3!!


    Ja!


    {
    if(strlen(inputtext) > 10)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Jahre","ANGABEFEHLER: Wann bist du geboren?\nAngabe bitte in TT.MM.JJJJ","Bestätigen","Zurück");
    return 0;//<--- Hier
    }
    if(!IsDatumGueltig(strval(DatumInfo[0]),strval(DatumInfo[1]),strval(DatumInfo[2])))
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Jahre","ANGABEFEHLER: Wann bist du geboren?\nAngabe bitte in TT.MM.JJJJ","Bestätigen","Zurück");
    return 0;//<--- Hier
    }
    if(jahr - strval(DatumInfo[2]) > 60 || strval(DatumInfo[2]) < 10 || strval(DatumInfo[2]) >= jahr)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Jahre","ANGABEFEHLER: Wann bist du geboren?\nAngabe bitte in TT.MM.JJJJ","Bestätigen","Zurück");
    return 0;//<--- Hier
    }
    new check = jahr - strval(DatumInfo[2]);
    if(check == jahr)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"Jahre","ANGABEFEHLER: Wann bist du geboren?\nAngabe bitte in TT.MM.JJJJ","Bestätigen","Zurück");
    return 0; //<--- Hier
    }
    if(strval(DatumInfo[1]) > monat)
    {
    check -= 1;
    }
    else if(strval(DatumInfo[1]) == monat && strval(DatumInfo[0]) > tag)
    {
    check -= 1;
    }
    new string[128];
    SpielerInfo[playerid][pAlter] = check;
    format(string, sizeof(string), "Du hast angegeben, dass du %d Jahre alt bist.",SpielerInfo[playerid][pAlter]);
    SendClientMessage(playerid, weiss, string);
    ShowPlayerDialog(playerid, DIALOG_HERKUNFT, DIALOG_STYLE_LIST, "Länderauswahl", "Deutschland\nÖsterreich\nSchweiz\nLiechtenstein\nLuxemburg\nDänemark","Weiter","");
    }


    //edit Verbesserung genau alle 4 Returns 0;