Brauche Hilfe bei Dialogen

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
  • Ich habe hier eine einfach Hilfeseite für Admins geschreiben:


    #define Dialog_aHelp1 7
    #define Dialog_aHelp2 8


    ocmd:ahelp(playerid,params[])
    {
    if(pInfo[playerid][Rang] > 1)
    {
    ShowPlayerDialog(playerid,Dialog_aHelp1,DIALOG_STYLE_MSGBOX,"Admin-Befehle","/heal => Heilen / Fahrzeug reparieren\n/kill => Spieler töten\n/kick => Spieler kicken\n/newcar => Fahrzeug spawnen\n/tp => Spieler herteleportieren\n/tph => Zum Spieler teleportieren\n/tpa => Andere Spieler teleporten","Weiter","");
    ShowPlayerDialog(playerid,Dialog_aHelp2,DIALOG_STYLE_MSGBOX,"Admin-Befehle","/setrang => Ränge verändern\n/seth => Energie setzen (0-100)\n/seta => Rüstung setzen(0-100)\n/gw [PlayerID] [WaffenID] (Munition)=> Waffen vergeben\n/cca => Clear Chat All","OK","");
    }
    else
    {
    SCM(playerid,ROT,"Du bist leider kein Admin!");
    SCM(playerid,ROT,"Dein Befehl lautet: /help");
    }
    return 1;
    }


    Wie ihr seht möchte ich gern 2 Seiten anzeigen lassen aber wenn ich das hier so mache wie ich es oben stehen habe dann kommt nur die Letzte Seite
    Auch wenn ich zweimal das dialog: "Dialog_aHelp1" aufrufe kommt nur die 2. seite. ich möchte aber erst die erste seite sehen wo dann unten weiter steht und dann soll die 2. seite kommen


    Wie kann ich das machen?


  • #define Dialog_aHelp 7



    stock ShowAdminHelpPage(playerid,page)
    {
    switch(page)
    {
    case 1: ShowPlayerDialog(playerid,Dialog_aHelp1,DIALOG_STYLE_MSGBOX,"Admin-Befehle","/heal => Heilen / Fahrzeug reparieren\n/kill => Spieler töten\n/kick => Spieler kicken\n/newcar => Fahrzeug spawnen\n/tp => Spieler herteleportieren\n/tph => Zum Spieler teleportieren\n/tpa => Andere Spieler teleporten","Weiter","");
    case 2: ShowPlayerDialog(playerid,Dialog_aHelp2,DIALOG_STYLE_MSGBOX,"Admin-Befehle","/setrang => Ränge verändern\n/seth => Energie setzen (0-100)\n/seta => Rüstung setzen(0-100)\n/gw [PlayerID] [WaffenID] (Munition)=> Waffen vergeben\n/cca => Clear Chat All","OK","");


    // Nächste Seite wäre dann case 3:


    }
    return true;
    }


    ocmd:ahelp(playerid,params[])
    {
    if(pInfo[playerid][Rang] > 1)
    {
    SetPVarInt(playerid, "AHStep", 1);
    ShowAdminHelpPage(playerid,GetPVarInt(playerid,"AHStep"));
    }
    else
    {
    SCM(playerid,ROT,"Du bist leider kein Admin!");
    SCM(playerid,ROT,"Dein Befehl lautet: /help");
    }
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == Dialog_aHelp)
    {
    SetPVarInt(playerid,"AHStep",GetPVarInt(playerid,"AHStep")+1);
    return ShowAdminHelpPage(playerid,GetPVarInt(playerid,"AHStep"));
    }
    return 1;
    }

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • habe nun das hier hinzugefügt:


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    switch(dialogid)
    {
    case Dialog_aHelp1:
    {
    if(response == 1)
    {
    ShowPlayerDialog(playerid,Dialog_aHelp2,DIALOG_STYLE_MSGBOX,"Admin-Befehle","/setrang => Ränge verändern\n/seth => Energie setzen (0-100)\n/seta => Rüstung setzen(0-100)\n/gw => Waffen vergeben\n/cca => Clear Chat All","OK","");
    }
    return 1;
    }
    }
    }


    Natürlich habe ich beim ocmd befehl den dialog rausgenommen welches ich bei response reingeschrieben habe...


    Habe aber trotzdem das gleiche problem...
    Der erste dialog wird nicht angezeit sondern nur das zweite fenster

  • Verwende doch einfach Templers Code? Musst nur Dialog_aHelp1 und Dialog_aHelp2 jeweils mit Dialog_aHelp ersetzen, dann funktioniert er.
    Edit: Musst natürlich noch überprüfen welcher Button gedrückt wurde, so wie es jetzt ist wird bei jeder Aktion die nächste Seite geöffnet

  • nun bin ich langsam am ende...


    habe den code von Templer übernommen 1:1 gleiches problem...


    und nein ich habe kein zweiten befehl der genauso heißt...


    woran kann das noch liegen


    PS: habe aus dem code von Templer nur die beiden aHelp1 und aHelp2 zu aHelp geändert sonst genauso wie oben...

  • habe ich ehrlich ist sogar ncoh der kommentar drin kannst dir es gern ansehen...

  • Sorry habe nun auch das wieder zurückgeändert. -> ohne erfolg nur seite 2 da nichts anderes


    ich benötige doch die 3 dinge hier oder?


    #define Dialog_aHelp 7
    #define Dialog_aHelp1 8
    #define Dialog_aHelp2 9


    wenn ich alle auf "7" stelle gehts auch nicht...


  • #define Dialog_aHelp 7
    #define HELP_PAGES 2


    stock ShowAdminHelpPage(playerid,page)
    {
    switch(page)
    {
    case 0: ShowPlayerDialog(playerid,Dialog_aHelp,DIALOG_STYLE_MSGBOX,"Admin-Befehle - Seite 1","/heal => Heilen / Fahrzeug reparieren\n/kill => Spieler töten\n/kick => Spieler kicken\n/newcar => Fahrzeug spawnen\n/tp => Spieler herteleportieren\n/tph => Zum Spieler teleportieren\n/tpa => Andere Spieler teleporten","Weiter","Abbrechen");
    case 1: ShowPlayerDialog(playerid,Dialog_aHelp,DIALOG_STYLE_MSGBOX,"Admin-Befehle - Seite 2","/setrang => Ränge verändern\n/seth => Energie setzen (0-100)\n/seta => Rüstung setzen(0-100)\n/gw [PlayerID] [WaffenID] (Munition)=> Waffen vergeben\n/cca => Clear Chat All","Weiter","Abbrechen");
    // Nächste Seite wäre dann case 3:
    }
    return true;
    }


    ocdm:ahelp(playerid,params[])
    {
    if(pInfo[playerid][Rang] > 1)
    {
    SetPVarInt(playerid, "AHStep", 0);
    ShowAdminHelpPage(playerid,0);
    }
    else
    {
    SCM(playerid,ROT,"Du bist leider kein Admin!");
    SCM(playerid,ROT,"Dein Befehl lautet: /help");
    }
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == Dialog_aHelp)
    {
    if(response)
    {
    new step = GetPVarInt(playerid,"AHStep");
    step++;
    if(step == HELP_PAGES)step = 0;
    SetPVarInt(playerid,"AHStep",step);
    return ShowAdminHelpPage(playerid,step);
    }
    }
    return 1;
    }


    hab den Code ein wenig umgeschrieben und getestet, funktioniert wie er soll. Du kannst beliebig oft "Weiter" drücken und es wird immer die nächste Seite (bzw. die erste falls du auf der letzten bist) angezeigt. Wenn du mehr Seiten hinzufügen willst einfach MAX_PAGES erhöhen.


    e: pawn-Tag richtig eingefügt :P

  • Danke Haxler


    Ich verstehe das irgendwie nicht. Dein Code funktioniert obwohl er genauso arbeitet wie templer seiner. nur das du bei 0 anfängst zu zählen...


    Trotzdem Danke ich stande gerade kurz vor der verzweiflung



    //Close