OnDialogResponse ohne 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
  • Hallo,
    ich habe vor einigen Minuten einer meiner Dialoge erweitert (vorher war der case 2 zwar vorhanden, aber noch mit einem return 1; versehen), und seitdem reagiert der Dialog auf keine meiner Antwortmöglichkeiten mehr. Es ist zur Info ein DIALOG_STYLE_LIST mit drei Auswahlmöglichkeiten und folgendem Code. Nachdem ich die Änderung rückgängig gemacht habe, gab es noch das gleiche Problem. Andere Dialoge funktionieren, also liegt es wohl am Code.


    if(dialogid == changefrak && response)
    {
    new home[20];
    GetPVarString(playerid,"heimat",home,20);
    IsATC[playerid] = false;
    atcbelegt[ATCPos[playerid]] = false;
    ATCPos[playerid] = -1;
    switch(listitem)
    {
    case 0:
    {
    if(!strcmp(home,"ls"))
    {
    SetPlayerPos(playerid,1887.5907,-2393.4739,13.5391);
    SetPlayerFacingAngle(playerid,281.8907);
    SetPlayerSkin(playerid, 61);
    }
    else if(!strcmp(home,"lv"))
    {
    SetPlayerPos(playerid,1595.2727,1448.6219,10.8282);
    SetPlayerFacingAngle(playerid,86.6821);
    SetPlayerSkin(playerid, 61);
    }
    else if(!strcmp(home,"sf"))
    {
    SetPlayerPos(playerid,-1264.0547,23.0747,14.1484);
    SetPlayerFacingAngle(playerid,133.7686);
    SetPlayerSkin(playerid, 61);
    }
    }
    case 1:
    {
    if(!strcmp(home,"ls"))
    {
    SetPlayerPos(playerid,2019.4186,-2443.2949,13.5469);
    SetPlayerFacingAngle(playerid,87.9982);
    SetPlayerSkin(playerid, 16);
    }
    else if(!strcmp(home,"lv"))
    {
    SetPlayerPos(playerid,1318.7860,1256.9487,10.8203);
    SetPlayerFacingAngle(playerid,0.8514);
    SetPlayerSkin(playerid, 16);
    }
    else if(!strcmp(home,"sf"))
    {
    SetPlayerPos(playerid,-1225.8724,49.1484,14.1346);
    SetPlayerFacingAngle(playerid,226.0345);
    SetPlayerSkin(playerid, 16);
    }
    }
    case 2:
    {
    ShowPlayerDialog(playerid, atcpos, DIALOG_STYLE_LIST, "Position auswählen.", "Tower\r\nDelivery","Auswählen","Abbrechen");
    printf("%s: ATC selected.", playerid); // War zur Überprüfung ob der Case ausgelöst wird. Wird er nicht, die anderen aber auch nicht.
    SendClientMessage(playerid, COLOR_LIMEGREEN, "ATC selected."); // Ebenfalls Überprüfung
    }
    }
    return 1;
    }
    Ich hoffe ihr könnt den Fehler finden.


    mit freundlichen Grüßen
    Padarom


    edit: Gerade geschaut ob die nachfolgenden Dialoge gehen. Tun sie leider nicht... Müsste also an dem Code hier liegen.

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

    Einmal editiert, zuletzt von Padarom () aus folgendem Grund: Codesnippet um 2 Kommentare erweitert

  • ich glaub er hat die Dialog mit new ... gemacht nicht mit #define so siehts zumindests aus^^


    mit \r\n bewirkst du nur einen Zeilen umbruch in dateien. In listdialogen reicht ein \n vollkommen aus

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

    Margarete Stokowski

  • Opa_Schlumpf: Ich schreibe einen Luftfahrtserver (der inzwischen schon fast fertig ist, siehe u.A. meine Signatur - Um keine Werbung zu machen *hust*), atcpos steht für Air Traffic Controller Position, kurz atcpos. \r\n ist ein Zeilenumbruch im Dialog oder allgemein in Pawn.


    @BlackAce: Ich habe 30 Dialoge in meinem Script, die sind ALLE über #define name fortlaufende zahl definiert. keiner über new.


    edit: Der Dialog ging ja vorher schon, allerdings hatte case 2 noch keine Funktion und deswegen hab ich den jetzt implementiert.

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

    Einmal editiert, zuletzt von Padarom ()

  • Bloody: Hätte ich jetzt überhaupt Filterscripts geladen :(
    An die anderen: Danke, werde in Zukunft das \r weglassen, steht nur so auch in der Wiki deswegen habe ich es immer übernommen.
    Findet trotzdem niemand den Ursprung des Problems? Die nachfolgenden Callbacks gehen inzwischen wieder, war deshalb vll nur ein Lag, wenn ich bei dem Callback etwas auswähle, kommt trotzdem keine Antwort.


    edit:
    Scheinbar lag es an diesem Code:
    IsATC[playerid] = false;
    atcbelegt[ATCPos[playerid]] = false;
    ATCPos[playerid] = -1;
    Aber was ist daran falsch?
    Vielleicht, dass ATCPos auf -1 gesetzt wird? Und wenn ja, wieso wird dann die Funktion beendet?

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

    Einmal editiert, zuletzt von Padarom ()

  • Ich glaube, dass ich das Problem jetzt gefunden habe.
    Vor den Dialogen wird folgendes aufgerufen:
    IsATC[playerid] = false;
    atcbelegt[ATCPos[playerid]] = false;
    ATCPos[playerid] = -1;
    Die ATCPos des Spielers ist allerdings von Anfang an auf -1 definiert, und da atcbelegt ein Array ist, der mit 0 beginnt, hat er keinen -1 Wert, und irgendwas crasht, bzw. die Funktion wird beendet. Jetzt habe ich ATCPos auf 0 gesetzt und atcbelegt um eins erhöht, sodass überall im Script jetzt ein um 1 gesteigerter Wert genutzt wird.

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen