Zum Hauptinhalt springen

Quests erstellen

webapp_banner.jpg

Beispiel-Quest

EliteMobs wird mit einer vorgefertigten test_quest.yml ausgeliefert, die hier als einfaches Quest-Format zum Nachvollziehen analysiert wird.

Benutzerdefinierte Quests befinden sich im Ordner ~plugins/EliteMobs/customquests!

test_quest.yml

isEnabled: true
customObjectives:
Objective1:
amount: '1'
filename: test_boss.yml
objectiveType: KILL_CUSTOM
customRewards:
- filename=magmaguys_toothpick.yml:amount=1:chance=1
name: "&aKill the Test Boss"
questLore:
- "&cEnd the test boss'' reign of terror!"

create_quest_quest.jpg

Falls deine Quest-Oberfläche nicht so aussieht, kannst du sie mit /em alt entsprechend anpassen.

Diese Beispiel-Quest gibt Spielern die Aufgabe, 1 test_boss.yml zu erlegen. (Der tatsächliche Name des Bosses, der im Quest-Tracker angezeigt wird, ist der in test_boss.yml festgelegte name:.) Und als Belohnung für das Abschließen der Quest erhalten sie 1 Magmaguy's Toothpick.

Benutzerdefinierte Quests erstellen

isEnabled

Legt fest, ob die Quest aktiviert ist.

KeyWerteStandard
isEnabledBooleantrue
Beispiel
isEnabled: true

customObjectives

Legt die Quest-Ziele fest.

KeyWerteStandard
customObjectivesSpeziell [1]keiner

Hinweis: Wenn du einen Mehrphasen-Boss als Ziel verwendest, sollte das Ziel die erste Phase als Zielvorgabe nutzen.

Beispiele

KILL_CUSTOM:

customObjectives:
Objective1:
amount: '1'
filename: my_cool_boss.yml
objectiveType: KILL_CUSTOM

DIALOG:

customObjectives:
Objective1:
dialog:
- "&a[Dialog NPC] &fCome here often?"
- "&7&oI should eat more apples."
filename: dialog_npc.yml
npcName: Dialog NPC
location: at dialog location.
objectiveType: DIALOG

FETCH_ITEM:

customObjectives:
Objective1:
amount: '99'
itemName: Red Apples
filename: my_quest_item_red_apples.yml
objectiveType: FETCH_ITEM

ARENA:

customObjectives:
Objective1:
objectiveType: ARENA
filename: my_arena.yml
name: "Complete the Arena"

create_quest_objective.jpg

Speziell [1]

Tabelle aufklappen

Benutzerdefinierte Ziele werden aus den folgenden Werten zusammengesetzt:

KeyBeschreibung
KILL_CUSTOM / FETCH_ITEM / DIALOG / ARENALegt den Typ des Ziels fest, das dies darstellt. KILL_CUSTOM bedeutet, dass die Quest das Töten eines bestimmten Custom Bosses beinhaltet, FETCH_ITEM bedeutet, dass die Quest das Beschaffen eines bestimmten Custom Items beinhaltet, DIALOG bedeutet, dass die Quest das Sprechen mit einem NPC beinhaltet, und ARENA bedeutet, dass die Quest das Abschließen einer bestimmten Arena beinhaltet.
filenameLegt den Dateinamen des Custom Bosses, des Custom Items, das der Spieler töten / beschaffen muss, des NPCs, mit dem er sprechen muss, oder der Arena, die er abschließen muss, fest.
amountLegt die Anzahl der Custom Bosses fest, die getötet werden müssen, oder der Items, die beschafft werden müssen. Standardwert ist 1, falls nicht angegeben.
dialogLegt den Dialog des NPCs fest, mit dem der Spieler spricht.
nameLegt den Namen des Quest-Ziels fest, sei es ein NPC, ein Custom Item oder eine Arena. Nur zu Anzeigezwecken.
itemNameNur mit FETCH_ITEM verwendet – Diese Einstellung ändert, wie der Name des Items im Quest-Tracker erscheint. Sie ermöglicht es, einen benutzerdefinierten Namen anzuzeigen, der sich vom tatsächlichen Ingame-Namen des Items unterscheidet.

Bitte beachte, dass jedes Feld eines benutzerdefinierten Ziels mit einem : getrennt wird!


customRewards

Legt die Quest-Belohnungen fest.

KeyWerteStandard
customRewardsUniverselles EliteMobs-Loot-Formatkeine
Beispiel
customRewards:
- currencyAmount=50:amount=1:chance=0.05
- material=COOKED_COD:amount=3:chance=1.0
- filename=magmaguys_toothpick.yml:amount=1:chance=1.0

create_quest_rewards.jpg

Hinweis: Wenn du keine customRewards angibst, generiert das Quest-System automatisch Belohnungen basierend auf dem Quest-Level. Die Qualität der Belohnungen skaliert mit der Schwierigkeit der Quest und umfasst sowohl Währung als auch Items. Für präzise Kontrolle über die Belohnungen solltest du customRewards immer explizit angeben.


questAcceptPermission

Legt die Berechtigung fest, die der Spieler besitzen muss, um die Quest annehmen zu können.

KeyWerteStandard
questAcceptPermissionStringkeine
Beispiel
questAcceptPermission: elitequest.my_permission

questAcceptPermissions

Legt die Berechtigungen fest, die der Spieler besitzen muss, um die Quest annehmen zu können.

KeyWerteStandard
questAcceptPermissionsString-Listekeine
Beispiel
questAcceptPermissions: 
- elitequest.my_previous_quest_one.yml
- elitequest.my_previous_quest_two.yml

questLockoutPermission

Legt die Berechtigung fest, die der Spieler nach Abschluss der Quest erhält und die ihn davon abhält, die Quest erneut zu absolvieren. Wird sie nicht angegeben, wird die Quest-Sperrberechtigung automatisch als elitequest.[filename] generiert.

KeyWerteStandard
questLockoutPermissionStringelitequest.[filename]
Beispiel
questLockoutPermission: elitequest.my_quest.yml

questLockoutMinutes

Legt fest, wie lange (in Minuten) der Spieler warten muss, bevor er die Quest erneut absolvieren kann (funktioniert durch das Entfernen der Quest-Sperrberechtigung).

KeyWerteStandard
questLockoutMinutesInteger-1 (wird nie wiederholt)
Beispiel
questLockoutMinutes: 60

name

Legt den Quest-Namen fest. Akzeptiert Color Codes.

KeyWerteStandard
nameString[filename]
Beispiel
name: "&aMy Great Quest Name"

questLore

Legt die Lore der Quest fest, die im Ingame-Quest-Menü erscheint.

KeyWerteStandard
questLoreString-Listekeine
Beispiel
questLore:
- "Interesting lore sentence."
- "Yet another interesting lore sentence."

create_quest_lore.jpg


temporaryPermissions

Legt die Berechtigungen fest, die dem Spieler zugewiesen werden, bis er die Quest abgibt.

Wenn du diese Einstellung verwendest, um sicherzustellen, dass ein Item nur dann droppt, wenn Spieler eine bestimmte Quest aktiv haben, musst du außerdem die Same Permission in der Konfigurationsdatei des Items einrichten.

KeyWerteStandard
temporaryPermissionsString-Listekeine
Beispiel
temporaryPermissions:
- elitequest.item_that_should_drop_only_during_quest.yml

questAcceptDialog

Legt den Dialog fest, der beim Annehmen der Quest im Chat erscheint.

KeyWerteStandard
questAcceptDialogString-Listekeiner
Beispiel
questAcceptDialog:
- "My hero! You are so helpful!"
- "I wish you the best of luck!"

create_quest_accept.jpg


questCompleteMessage

Legt den Dialog fest, der beim Abschließen der Quest im Chat erscheint.

KeyWerteStandard
questCompleteMessageString-Listekeiner
Beispiel
questCompleteMessage:
- "My hero! You have completed my difficult quest!"
- "As a reward you can have this loaf of bread!"

create_quest_complete.jpg


questCompleteCommands

Legt die Befehle fest, die beim Abschließen der Quest ausgeführt werden. Unterstützt Platzhalter: $player für den Namen des Spielers und $getX, $getY, $getZ für die Standortkoordinaten des Spielers.

KeyWerteStandard
questCompleteCommandsString-Listekeine
Beispiel
questCompleteCommands:
- say $player has finished a quest at $getX, $getY, $getZ!
- give $player diamond 1

create_quest_commands.jpg


turnInNPC

Legt den Dateinamen des NPCs fest, mit dem die Spieler sprechen / interagieren müssen, um die Quest abzuschließen. Dies muss nicht derselbe NPC sein, der die Quest vergeben hat.

KeyWerteStandard
turnInNPCDateinamekeiner
Beispiel
turnInNPC: my_cool_quest_npc.yml

Quest-Geber

Um einem NPC eine Quest zuzuweisen, die er an Spieler vergibt, musst du die NPC-Datei konfigurieren, nicht die Quest-Datei.

Füge in deiner NPC-Konfigurationsdatei (~/plugins/EliteMobs/npcs/) Folgendes hinzu:

questFileName: my_quest.yml

Für NPCs, die mehrere Quests vergeben:

questFileName:
- quest_one.yml
- quest_two.yml

Weitere Informationen zur Konfiguration von NPCs findest du in der Dokumentation zur NPC-Erstellung.


trackable

Legt fest, ob die Quest den Quest-Tracker verwendet.

KeyWerteStandard
trackableBooleantrue
Beispiel
trackable: true

questLevel

Legt das Level der Quest fest. Dies ist lediglich eine optische Orientierungshilfe, damit Spieler einschätzen können, wie anspruchsvoll die Quest sein wird. Dies verändert in keiner Weise die Level von Bossen, Items oder anderen Werten.

KeyWerteStandard
questLevelInteger0
Beispiel
questLevel: 10

create_quest_level.jpg


questAcceptSound

Legt den Sound fest, der beim Annehmen einer Quest abgespielt wird. Es ist möglich, sowohl Minecraft-Sounds als auch Sounds aus einem Ressourcenpaket abzuspielen.

KeyWerteStandard
questAcceptSoundStringkeiner
Beispiel
questAcceptSound: entity.experience_orb.pickup

create_quest_level.jpg


questCompleteSound

Legt den Sound fest, der beim Abschließen (Abgeben) einer Quest abgespielt wird. Es ist möglich, sowohl Minecraft-Sounds als auch Sounds aus einem Ressourcenpaket abzuspielen.

KeyWerteStandard
questCompleteSoundStringkeiner
Beispiel
questCompleteSound: entity.player.levelup

create_quest_level.jpg


Lokalisierungsunterstützung

Die folgenden Felder unterstützen Lokalisierung für mehrsprachige Server:

  • name
  • questLore
  • questAcceptDialog
  • questCompleteMessage

Dies ermöglicht es dir, Übersetzungen für verschiedene Sprachen auf deinem Server bereitzustellen.


Berechtigungen

Wie in den obigen Tabellen erwähnt, sind Berechtigungen üblicherweise Strings oder String-Listen. Aber gehen wir genauer darauf ein, wie du diese verwendest, um Quests zu sperren und freizuschalten.

Nehmen wir an, du erstellst quest_3 in einer von dir geplanten Quest-Reihe und möchtest nicht, dass Spieler quest_3 annehmen können, bevor sie quest_2 abgeschlossen haben. Wir würden die Quest-Datei so konfigurieren:

questAcceptPermission: elitequest.quest_2.yml
questLockoutPermission: elitequest.quest_3.yml

Indem wir die questAcceptPermissions auf elitequest.quest_2.yml setzen, haben wir nun verhindert, dass Spieler quest_3.yml annehmen, bevor sie quest_2.yml abgeschlossen haben.
Indem wir questLockoutPermission auf elitequest.quest_3.yml setzen, haben wir verhindert, dass Spieler diese Quest erhalten können, solange sie sie bereits in ihrem Tracker haben oder bereits abgeschlossen haben. Dies hält Spieler davon ab, die Quest zu wiederholen.

Solltest du eine Quest erstellen wollen, die erst verfügbar wird, nachdem die Spieler eine Reihe von Quests abgeschlossen haben, würdest du die Quest-Datei so konfigurieren:

questAcceptPermissions: 
- elitequest.quest_2.yml
- elitequest.quest_3.yml
- elitequest.quest_4.yml

Wenn du möchtest, dass Spieler bestimmte Items nur dann erbeuten können, wenn sie die richtige Quest aktiv haben, können wir das mit temporaryPermissions erreichen. Wir würden eine Berechtigung in der Quest-Datei mittels temporaryPermissions erstellen und dann eine passende permission in der Item-Datei mittels permission erstellen.

Wir würden zum Beispiel unsere Quest-Datei öffnen und Folgendes hinzufügen:

temporaryPermissions: 
- elitequest.my_cool_item.yml

Dann würden wir die Item-Datei öffnen, in unserem Fall my_cool_item.yml, und Folgendes hinzufügen:

permission: elitequest.my_cool_item.yml

Beide Dateien haben nun übereinstimmende Berechtigungen, wodurch unser Item nun nur noch droppen sollte, wenn die Spieler die richtige Quest aktiv haben.

Dynamische Quests

Dynamische Quests sind prozedural generierte Quests, die von EliteMobs automatisch erstellt und aktualisiert werden. Anders als die in Konfigurationsdateien definierten benutzerdefinierten Quests erfordern dynamische Quests keinerlei manuelle Einrichtung und passen sich an den Fortschritt jedes Spielers an.

Wie sie funktionieren

  • Quest-Stufe: Die dynamische Quest-Stufe eines Spielers wird aus seinem Kampflevel abgeleitet: tier = combatLevel / 5, begrenzt auf einen Bereich von 1 bis 20. Ein Spieler mit Kampflevel 45 erhält zum Beispiel dynamische Quests der Stufe 9. Die Quests selbst (und ihre Belohnungen) werden auf das tatsächliche Kampflevel des Spielers skaliert, das auf einen Bereich von 1 bis 100 begrenzt ist.
  • 3 Quests pro Stufe: Für jede der 20 Quest-Stufen generiert das System gleichzeitig genau 3 zufällige Quest-Ziele. Spielern werden die 3 Quests angeboten, die ihrer aktuellen Stufe entsprechen.
  • Automatischer Aktualisierungszyklus: Der Pool dynamischer Quest-Ziele wird alle 60 Sekunden (alle 1200 Ticks) neu generiert. Wenn sich der Pool aktualisiert, ersetzen neue Ziele die alten, was den Spielern eine rotierende Auswahl an Aufgaben bietet.
  • Anpassung an dynamische Dungeons: Wenn ein Spieler einen dynamischen Dungeon mit einer bestimmten Levelauswahl betritt, passen sich alle seine aktiven dynamischen Quests an das Mob-Level des Dungeons an. Quest-Level, Ziele und Anzeigename werden entsprechend aktualisiert, sodass die Quests für den Dungeon-Inhalt relevant bleiben.