Dialog in Dialog (Beispiel am Shop)

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,


    In diesem Tut zeige ich euch wie ihr ein Dialog in Dialog macht.
    Für die meisten sicherlich einfach aber für andere nicht.
    Ich verweise hiermit darauf hin das Fehler die ich gemacht habe mir bitte gesagt werden.

    Kommen wir hiermit zum Tutorial.


    1.
    Wir definieren als erstes die Dialoge die wir erstellen wollen.

    //Ganz oben im Script
    #define DIALOG_SHOP 0
    #define DIALOG_PAKET1 1
    #define DIALOG_PAKET2 2


    2.
    Jetzt gehen wir unter..
    public OnPlayerCommandText(playerid, cmdtext[])
    Und schreiben:
    dcmd(shop,4,cmdtext);
    dcmd ist ein schneller Commandstil, Shop der Command,
    4 die Buchstaben(shop also 4),

    und cmdtext ist unser Text.
    Dann wieder schliessen und darunter:

    dcmd_shop(playerid,params[])
    {
    #pragma unused params
    ShowPlayerDialog(playerid,DIALOG_SHOP,DIALOG_STYLE_LIST, "Weapon Shop", "Paket 1\n2. Paket 2", "Ok", "Cancel");
    return 1;
    }
    Wir nutzen keine Parameter daher: Unused params,
    DIALOG_STYLE_LIST ist eine Liste,
    WEAPONSHOP ist oben die Bezeichnung,
    danach kommen
    eure Kategorien!


    3.
    Dann gehen wir unter:
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    Und schreiben als Beispiel:


    if(dialogid == DIALOG_SHOP)
    {
    if (response)
    {
    if(listitem == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_PAKET1,DIALOG_STYLE_LIST, "Paket 1", "cool(siehe unten)", "Ok", "Cancel");
    }
    if(listitem == 1)
    {
    ShowPlayerDialog(playerid,DIALOG_DIALOG2,DIALOG_STYLE_LIST, "Paket 2", "\nCountry Rifle - 5000$", "Ok", "Cancel");
    }
    }
    }


    if(dialogid == DIALOG_PAKET1)
    {
    if (response)
    {
    if(listitem == 0)
    {
    if(GetPlayerMoney(playerid) < 2000) return SendClientMessage(playerid,ROT,"Not enough Money!");
    GivePlayerWeapon(playerid, 28,500);
    GivePlayerMoney(playerid, -2000);
    }
    }
    }


    if(dialogid == DIALOG_PAKET2)
    {
    if (response)
    {
    if(listitem == 0)
    {
    if(GetPlayerMoney(playerid) < 5000) return SendClientMessage(playerid,ROT,"Not enough Money!");
    GivePlayerWeapon(playerid, 33,200);
    GivePlayerMoney(playerid, -5000);
    }
    }
    }


    Also bei "if(dialogid == DIALOG_PAKET1)" ist das euer Paket 1
    d.h. Wenn ihr nun /shop eingibt kommt Paket1 und Paket 2 die könnt ihr jetzt individuell gestalten!
    Das heisst ihr könnt schreiben SendClientMessage(playerid,ROT,"Du bist cool :thumbup: ");
    Und wenn er dann auf den Shop auf Paket 1 klickt
    dann geht ein neuer Dialog auf mit dem Namen "Cool(siehe oben)"
    Dann klickt er auf "cool" und bei ihm erscheint dann der Text.

    Soweit verstanden? Ich hoffe ja. Ihr könnt nattürlich auch schreiben GivePlayWeapon(playerid, 38, 500); // Minigun


    //edit: Danke für die Schnelle Freischaltung, 19.06Uhr.
    //edit2: Fehler korrigiert ;)


    MFG.


    2 Mal editiert, zuletzt von CompleXx95 ()

  • Sehr schön, 10/10, ohne Warnings ohne Erros, gar nichts!


    Perfekt!

  • Sehr schön, 10/10, ohne Warnings ohne Erros, gar nichts!

    Sehr schön so sollte es sein ;),
    Falls jemand noch Verbesserungsvorschläge haben sollte oder Erweiterrungen, bitte sie posten.


    //edit: Das kann man nattürlich mit beliebigen vielen Dialogen machen!
    Nattürlich ist in 0.3B höchstens 1000 Erlaubt aber vielleicht ändert sich das ja :P

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Muss mich leider Hustler anschließen. In meinen Augen ist das kein richtiges Tutorial. Versuch einige Sachen genau zu deklarieren wie z.B. "#pragma unused params" - was soviel heißt wie das es keine Parameter im Kommando gibt. (Sollte klar sein :p) War jetzt aber nur ein beispiel(!)
    Aber sonst nett gemacht, viel Spaß beim posten anderer Tutorials :)

  • Ok, ich habe doch "pragma" erklärt! (siehe ein wenig oben :huh: ) Wir nutzen keine Parameter daher: "unused params.."


    MFG.


    //edit: Systemfehler: Ja da ich es nun kapiert habe wollte ich es auch reintsllen da ich der Meinung war das macnhe es brauchten/oder gebrauchen können/Da ich es mit anderen teilen wollte :P


    MFG.