Quests wie bei "Pokemon®"

Dieses Thema im Forum "Technischer Support" wurde erstellt von Rocki, 22. Februar 2015.

  1. Rocki
    Offline

    Rocki

    Registriert seit:
    14. Dezember 2014
    Beiträge:
    35
    Ort:
    MineCraftien
    Minecraft:
    TheSkySquid
    Hallo,
    ich möchte einen MMORPG Server betreiben und benötige dabei folgende Hilfe:

    1.Wie ihr sicherlich wisst gibt es die Plugins "Citizens(2)" & "Quests" .
    Im Normalfall gibt es bei Quests eine Frage -> man kann "yes" oder "no" antworten und die Quest startet.
    Ich würde aber gerne einen längeren Text einbauen, welcher wie auch bei "Wynncraft (MC Server)" oder "Pokemon ( Nintendo Spiel )"über mehrere
    Zeilen geht und mit einem Rechts- oder Linksklick weiter "gespult" wird.

    2.Ist es möglich Quests zu erstellen, bei denen keine yes/no Abfrage stattfindet ? Wenn ja, wie ?

    3.Es gibt in 1.8 "Barriers"
    Gibt es eine möglichkeit diese Spielerspezifisch & nach Questabschluss zu entfernen ?


    *Bei diesen Fragen möchte ich nur Plugins & Configurationen verwenden, jedoch keine Commandblocks.
     
    #1
  2. SilberRegen
    Online

    SilberRegen

    Registriert seit:
    23. März 2012
    Beiträge:
    579
    Minecraft:
    SilberRegen
    Möglich ist das mit Denizen.
    Dieses bietet dir aber keine fertigen Vorlagen, in die du nur deine Texte einsetzen musst, sondern verlangt, dass du alles selber schreibst. Die Dokumentation ist nur Englisch (zumindest der brauchbare Teil).
    Die Quests die wir bei uns haben, sind alle mit Denizen umgesetzt, dass im Prinzip noch viel mehr kann als Quests. Wenn man das drauf hat, kann man damit ziemlich abgefahrene Sachen machen, ist aber nicht silbsterklärend.

    Ob du die vanillabarriers Spielerspezifisch entfernen kannst, weiß ich nicht, man könnte aber definitiv mit World-Guardzonen arbeiten und Spieler einzeln eintragen, man kann in Denizenscripts sämtliche Serverbefehle ausführen lassen.

    Ein Denizenscript kann zum Beispiel am Ende so aussehen:
    Code (Text):
    1. 'Quest_Nahrung_1': #Questgeber ist Frida, die Bäckerin
    2.   Type: Interact
    3.   Requirements:
    4.    Mode: All
    5.    List:
    6.    - -INGROUP Gast
    7.    - -INGROUP Abgelehnt
    8.    - -INGROUP Neuling
    9.    - -SCRIPT finished script:Quest_Nahrung_1
    10.   Steps:
    11.    1:
    12.     Proximity Trigger:
    13.          Entry:
    14.             Script:
    15.             - CHAT "§eHallo, Ihr da. Ja genau Ihr!§f"
    16.             - WAIT 1
    17.             - NARRATE "§bEin NPC ruft Euch heran. Rechtsklickt Ihn, um zu erfahren, was er von Euch möchte.§f"
    18.     Click Trigger:
    19.         Script:
    20.         - ENGAGE
    21.         - CHAT "§eHey, Ihr seid doch gerade eben erst hier angekommen, oder? Nungut, ich bin Frida, Bäckerin und Geschäftsfrau.§f"
    22.         - WAIT 2
    23.         - CHAT "§eWie ist denn Euer Name, wenn ich so fragen darf? Ich meine, ich habe Euch doch schon ziemlich überrumpelt.§f"
    24.         - WAIT 2
    25.         - CHAT "§e...§f""
    26.         - WAIT 2
    27.         - CHAT "§eAh, so ist das also. Wie schaut es aus <player.name>, hättet Ihr da vielleicht Lust, Euch ein kleines, feines Zubrot zu verdienen? Ich meine richtiges, leckeres Brot aus meiner Bäckerei!§f"
    28.         - WAIT 1
    29.         - NARRATE "Schreibt - 'Ja' oder 'Nein'"
    30.         - DISENGAGE
    31.         - ZAP 3
    32. [...]
    33.    3:
    34.     Click Trigger:
    35.         Script:
    36.         - NARRATE "Schreibt - 'Ja' oder 'Nein'"
    37.     Chat Trigger:
    38.      1:
    39.         Trigger: "§7/Ja/ klar, Brot kann ich doch immer gebrauchen!§f"
    40.         Script:
    41.         - ENGAGE
    42.         - CHAT "§ePrima! Für Lau gibt es natürlich nichts, rein gar nichts, damit wir uns verstehen.§f"
    43.         - WAIT 2
    44.         - CHAT "§eAber die Aufgabe ist eigentlich nicht so schwer und sollte Euch daher auch schnell von der Hand gehen.§f"
    45.         - WAIT 2
    46.         - CHAT "§eFür gewöhnlich trage ich jeden Tag frische Brote und auch anderes Gebäck an meine Kunden aus. Heute morgen aber, ist eine große Sonderbestellung eingegangen und jetzt ... hänge ich etwas hinterher...§f"
    47.         - WAIT 6
    48.         - CHAT "§eAber jetzt seid Ihr ja da! Nehmt diesen Korb mit den bestellten Waren und gebt Acht, dass auch §cjeder das bekommt, was er bestellt§e hat.§f"
    49.         - WAIT 3
    50.         - CHAT "§eAuf der Liste hier findet Ihr alles Wichtige notiert. Und jetzt lauft schon los, wir wollen sie doch nicht warten lassen.§f"
    51.         - WAIT 3
    52.         - GIVE 358:7
    53.         - NARRATE "§bIhr erhaltet die §eBestellungsliste§b und einen schweren Korb mit frischen, köstlich duftenden Backwaren.§f"
    54.         - DISENGAGE
    55.         - RUN 'SCRIPT:Run4MoreEquip2' queue:Run4MoreEquip2 DELAY:600
    56.         - FLAG PLAYER 'AktiveQuests:->:DringendeLieferung'
    57.         - NARRATE format:quest_given_format "Dringende Lieferung"
    58.         - ZAP 4
    59.      2:
    60.         Trigger: "§7/Nein/ tut mir Leid, ich bin beschäftigt.§f"
    61.         Script:
    62.         - ENGAGE
    63.         - WAIT 2
    64.         - CHAT "§eNa gut, dann eben nicht! Schade! ...§f"
    65.         - WAIT 2
    66.         - CHAT "§eAber falls Ihr es Euch doch *seufz* ... noch anders überlegt, wisst Ihr jetzt, wo Ihr mich finden könnt!§f"
    67.         - DISENGAGE
    68.         - ZAP 2
    69.      3:
    70.         Trigger: /REGEX:\w+/
    71.         Script:
    72.         - CHAT "§eEntschuldigt, aber ich weiß nicht, was Ihr mit '§7<player.chat_history>§e' meint.§f"
    73.    4:
    74.     Click Trigger: #Frida, nach angenommener Quest
    75.         Script:
    76.         - CHAT "§eWorauf wartet Ihr noch? Meine Kunden warten auf Ihre Brötchen.§f"
    77.         - WAIT 2
    78.         - CHAT "§eIhr wisst doch sicherlich, wen Ihr wo findet, oder etwa nicht?§f"
    79.         - WAIT 1
    80.         - NARRATE "Schreibt - 'Boris', 'Karolus' oder 'Willibald'"
    81.     Chat Trigger:
    82.      1:
    83.         Trigger: "§7Wo finde ich /Boris/?§f"
    84.         Script:
    85.         - CHAT "§cBoris, den Totengräber?§e Den werdet Ihr wohl bei seinem Häuschen am §cFriedhof§e finden können. Lasst Euch nicht von seinem Äußeren oder seiner kauzigen Art schrecken, er ist ein sehr netter Stammkunde von mir und ein drolliger Gesell.§f"
    86.         - WAIT 3
    87.         - CHAT "§eDer Friedhof Iturias liegt übrigens zwischen dem §cNordhafen§e und dem §cMarktviertel§e, falls Ihr das nicht schon wusstet.§f"
    88.      2:
    89.         Trigger: "§7/Karolus/? Ich bin mir nicht mehr ganz sicher, wo ich den schon einmal gesehen habe...§f"
    90.         Script:
    91.         - CHAT "§eAlso, Ihr seid wirklich ganz schön vergesslich. Den Inhaber von §cGeiz&Gier§e kennt doch jedes Kind auf Ituria.§f"
    92.      3:
    93.         Trigger: "§7Könnt Ihr mir sagen, wo ich /Willibald/ antreffe?§f"
    94.         Script:
    95.         - CHAT "§cWillibald§e ist der Direktor des §cSägewerks westlich des Südhafens. Wenn Ihr den §cMarktplatz gen Westen§e verlasst solltet Ihr das Sägewerk ausgeschildert finden.§f"
    96.    5:
    97.     Click Trigger: #Belohnungsscript
    98.         Script:
    99.         - IF <player.flag[Nahrung_1].aslist> !contains 'MoreEquip2FAIL' {
    100.             - QUEUE queue:Run4MoreEquip2 clear
    101.             - ENGAGE
    102.             - CHAT "§e<player.name>! Ihr seid aber schnell unterwegs, das will ich Euch loben!§f"
    103.             - WAIT 3
    104.             - CHAT "§e... Willibald? Achja, macht Euch keine Kopf der kriegt sich schon wieder ein, den kleinen Spaß wird er schon verkraften.§f"
    105.             - WAIT 2
    106.             - CHAT "§eNun denn, wer hart arbeitet muss sich auch gut stärken. Das ist für Euch, lasst es Euch schmecken!§f"
    107.             - GIVE 297 QTY:15
    108.             - GIVE 357 QTY:32
    109.             - GIVE 335
    110.             - NARRATE "§bIhr erhaltet einen kleine Auswahl leckerer §eBackwaren§b und ein Glas frische Milch. Naja, eher einen Eimer...§f"
    111.             - WAIT 4
    112.             - CHAT "§eAuf Euer wohl mein tapferes Helferlein. Wenn ich in Zukunft etwas Hilfe benötige, werde ich mich sicher Eurer entsinnen!§f"
    113.             - WAIT 4
    114.             - CHAT "§eBis die Tage und frohes Schaffen, <player.name>!§f"
    115.             - FLAG PLAYER 'Nahrung_1:!'
    116.             - FLAG PLAYER 'AktiveQuests:<-:DringendeLieferung'
    117.             - FLAG PLAYER 'QuestCounter:++'
    118.             - NARRATE format:quest_complete_format "Dringende Lieferung + BONUS"
    119.             - DISENGAGE
    120.             - FINISH }
    121.           ELSE {
    122.             - ENGAGE
    123.             - CHAT "§eAyayay, Euch kann man ja im Gehen die Schuhe besohlen. Naja, Hauptsache die Lieferungen sind angekommen.§f"
    124.             - WAIT 3
    125.             - CHAT "§e... achje, Ihr habt Willibald doch nicht etwa...? ...ich werde das schon wieder hinbekommen... macht Euch keinen Kopf...§f"
    126.             - WAIT 4
    127.             - CHAT "§eAber ich will ja nicht undankbar erscheinen, die Arbeit wurde ja schließlich erledigt und Ihr seht auch ganz schön fertig aus. Hier bitteschön.§f"
    128.             - NARRATE "§bIhr erhaltet §e15 Brote§b.§f"
    129.             - GIVE 297 QTY:15
    130.             - WAIT 4
    131.             - CHAT "§eArbeitet eine Runde an Eurer Kondition und dann sehen wir mal ob ich in Zukunft vielleicht noch etwas mehr für Euch zu tun habe. Bis bald!§f"
    132.             - FLAG PLAYER 'Nahrung_1:!'
    133.             - FLAG PLAYER 'AktiveQuests:<-:DringendeLieferung'
    134.             - FLAG PLAYER 'QuestCounter:++'
    135.             - NARRATE format:quest_complete_format "Dringende Lieferung"
    136.             - DISENGAGE
    137.             - FINISH }
    138. [...]
    Dieses Script funktioniert so natürlich nicht, da fehlt gut die Hälfte des Scripts der Quest und es ist auch eine alte Version in der ich einige Sachen ausprobiert habe, die nicht funktioniert haben.
    Globale Formatierung der Texte hatte ich auch noch nicht, daher sind überall Farbcodes (mit §) drin.
    Am Anfang wieder typische Ja/Nein abfragen, aber die Wörter sind komplett frei wählbar oder durch andere Trigger ersetzbar (Klicken mit einem bestimmten Gegenstand, Schlagen, Nur Klicken, Bedingungen wie Tageszeit, Wetter... da geht einiges).

    In diesem Script "spult" der Text automatisch, da sind entsprechende Pausen eingebaut (WAIT). Man könnte aber auch einfach in den nächsten Schritt "zappen" und wieder mit Clicktrigger auslösen lassen (finde ich halt nicht besonders elegant und sehr auswändig). Lieber einen guten Pausenabstand finden (in diesem Script sind sie ein bisschen zu kurz geraten). Im Notfall kann man im Chat hochscollen.

    Nur mal um dir eine Idee zu geben, was man alles selber erstellen muss für eine einfache Quest. In diesem Fall muss der Spieler drei imaginäre Dinge zu verschiedenen NPC ausliefern (Könnten auch wirkliche Questgegenstände sein, die man mit Denizen erstellt, aber ich hatte keine Lust auf weinende Neulinge, die Ihren Questgegenstand verloren haben).
     
    #2
    Rocki gefällt das.
  3. Rocki
    Offline

    Rocki

    Registriert seit:
    14. Dezember 2014
    Beiträge:
    35
    Ort:
    MineCraftien
    Minecraft:
    TheSkySquid
    mh. Ok danke sehr.
    Ich werde nur leider nicht sehr viel damit anfangen können, da ich plane sehr viele solche NPCs zu machen.
    Gibt es irgendwo fertige template Quests oder vielleicht ein Plugins welches es einfacher macht ?
     
    #3
  4. SilberRegen
    Online

    SilberRegen

    Registriert seit:
    23. März 2012
    Beiträge:
    579
    Minecraft:
    SilberRegen
    Von den Möglichkeiten her ist Denizen denke ich unschlagbar, vom Aufwand her leider auch.
    Es gibt durchaus eine Scriptrepository, aber die ist nicht gut gepflegt. Wenn du viele ähnliche Quests planst, kann man sich hier natürlich selber templates zurechtlegen, sobald die Prototypen laufen. Ich nutze auch viel Copy&Paste aus meinen älteren Sachen, wenn ich neue Scripts bastel.
    Alternativ hab ich noch http://dev.bukkit.org/bukkit-plugins/epicquest/ gefunden. Sieht einfacher aus, ob das stimmt und dir bietet was du suchst weiß ich nicht. Kannst es dir mal schauen.
     
    #4