Zum Hauptinhalt springen

BetonQuest-Integration

QuestsTracker integriert sich tief in BetonQuest. Diese Seite erklärt, wie Sie Ihre Quests konfigurieren, damit sie im Menü und im Tracking erscheinen.

Funktionsprinzip​

  1. Eine Quest muss das Template trackedQuest verwenden, um im Menü zu erscheinen
  2. Der Status (gesperrt/aktiv/abgeschlossen) wird über benutzerdefinierte Events gesteuert
  3. Der Fortschritt wird über die Events nextStep und kgcomplete verfolgt

Template trackedQuest​

Damit eine Quest im QuestsTracker-Menü erscheint, muss ihr BetonQuest-Paket das Template trackedQuest verwenden.

Das Template definieren​

In der Datei package.yml Ihrer Quest:

templates:
- trackedQuest

questParameters:
questCategory: story # Muss dem configKey einer Kategorie aus config.yml entsprechen
Template erforderlich

Ohne das Template trackedQuest ist die Quest im Menü unsichtbar, selbst wenn alle Events korrekt konfiguriert sind.

BetonQuest-Tags​

Der Status jeder Quest wird durch interne Tags bestimmt, die automatisch von den Events des Plugins verwaltet werden:

TagRolle
{questId}.questTrackableDie Quest ist freigeschaltet (im Menü sichtbar)
{questId}.trackedDie Quest läuft gerade (Status Aktiv)
{questId}.finishedDie Quest ist abgeschlossen (Status Abgeschlossen)
Interne Tags

Diese Tags werden automatisch von den Events des Plugins verwaltet. Sie müssen sie niemals manuell bearbeiten. Verwenden Sie stattdessen die Events activeQuest, finishQuest und lockQuest.

Lebenszyklus einer Quest​

Gesperrt  →  Aktiv  →  Abgeschlossen
(kein Tag) (.questTrackable + .tracked) (.questTrackable + .finished)
  1. Die Quest ist standardmäßig gesperrt (kein Tag)
  2. Das Event activeQuest fügt die Tags .questTrackable und .tracked hinzu → die Quest wird aktiv
  3. Der Spieler kann sie dann im Scoreboard verfolgen (bis zu 3 gleichzeitige Quests)
  4. Das Event finishQuest entfernt .tracked und fügt .finished hinzu → die Quest ist abgeschlossen
  5. Das Event lockQuest entfernt alle Tags → die Quest wird wieder gesperrt

Benutzerdefinierte Events​

QuestsTracker registriert 5 Events in BetonQuest:

activeQuest​

Aktiviert eine Quest — macht sie im Menü sichtbar und verfügbar.

events:
activer_quete: "activeQuest ma_quete"

Auswirkungen:

  • Fügt die Tags ma_quete.questTrackable und ma_quete.tracked hinzu
  • Die Quest wechselt in den Status Aktiv
  • Sie erscheint im Menü des Spielers
  • Wenn die Kategorie autoTrack: true hat, wird die Quest automatisch im Scoreboard verfolgt (bis zu 3 Slots). Sind alle 3 Slots belegt, wird bevorzugt eine Nicht-autoTrack-Quest ersetzt.

lockQuest​

Sperrt eine Quest — macht sie im Menü nicht verfügbar.

events:
verrouiller_quete: "lockQuest ma_quete"

Auswirkungen:

  • Entfernt die Tags ma_quete.questTrackable, ma_quete.tracked und ma_quete.finished
  • Die Quest wechselt in den Status Gesperrt
  • Sie erscheint im Menü als gesperrt (oder wird je nach Spielereinstellungen ausgeblendet)

finishQuest​

Schließt eine Quest ab.

events:
terminer_quete: "finishQuest ma_quete"

Auswirkungen:

  • Entfernt den Tag ma_quete.tracked und fügt ma_quete.finished hinzu
  • Die Quest wechselt in den Status Abgeschlossen
  • Sie bleibt im Menü sichtbar, wenn der Spieler abgeschlossene Quests anzeigt
  • Sie wird aus dem Scoreboard-Tracking entfernt und der Fortschritt wird gelöscht

nextStep​

Geht zur nächsten Etappe einer Quest über.

events:
etape_suivante: "nextStep ma_quete"

Auswirkungen:

  • Erhöht die Etappennummer der Quest
  • Aktualisiert das Scoreboard in Echtzeit mit den neuen Zielen
  • Setzt die abgeschlossenen Ziele der vorherigen Etappe zurück

kgcomplete​

Markiert ein bestimmtes Ziel in der aktuellen Etappe als abgeschlossen.

events:
objectif_fait: "kgcomplete ma_quete mon_objectif"
Zwei Parameter erforderlich

Das Event kgcomplete benötigt zwei Parameter: die Paket-ID und die Ziel-ID. Die Ziel-ID muss dem Feld id im Abschnitt objectives der quests_config.yml entsprechen.

Auswirkungen:

  • Markiert das Ziel mon_objectif als abgeschlossen
  • Aktualisiert die Anzeige im Scoreboard (Text inprogress → Text completed)
  • Nützlich für Etappen mit mehreren unabhängigen Zielen

Quest-Parameter (questParameters)​

Der Block questParameters in der package.yml legt fest, wie die Quest im Menü erscheint:

questParameters:
questCategory: story
questReward:
fr-FR: "100 pieces d'or\nEpee en diamant"
en-US: "100 gold coins\nDiamond sword"
ParameterErforderlichBeschreibung
questCategoryNeinMenükategorie (Standard: defaultCategory aus config.yml)
questRewardNeinBelohnungstext, der im Lore des Menüs angezeigt wird (mehrsprachig, \n für Zeilenumbrüche)

Kategorie​

Der Wert von questCategory muss exakt dem configKey (dem YAML-Schlüssel) einer in config.yml definierten Kategorie entsprechen.

Zuordnung der Kategorien​

config.yml (configKey)config.yml (displayName)BetonQuest (questCategory)
story"Histoire" / "Story"questCategory: story
secondary"Secondaires" / "Secondary"questCategory: secondary
dailyQuests"Journalieres" / "Daily"questCategory: dailyQuests
other"Autres" / "Other"questCategory: other
Warum der configKey?

Der configKey ist der stabile Bezeichner der Kategorie. Er ändert sich nicht, wenn Sie den displayName übersetzen oder ändern. Ihre BetonQuest-Pakete bleiben funktionsfähig, auch wenn sich die Anzeige des Menüs weiterentwickelt.

Migration von einer alten Version

Vor dieser Version musste questCategory dem displayName entsprechen (z. B. "Story"). Wenn Sie aktualisieren, passen Sie Ihre Pakete an:

  • questCategory: "Story" → questCategory: story
  • questCategory: "Daily" → questCategory: dailyQuests

Ohne diese Migration fallen alle Ihre Quests in die Standardkategorie (meist other).

Unterkategorien​

Um eine Quest in eine Unterkategorie einzuordnen, verwenden Sie das Punkt-Format, indem Sie die configKey-Werte kombinieren:

questParameters:
questCategory: dailyQuests.monsters

Das Format lautet: configKey_Kategorie.configKey_Unterkategorie

Standardkategorie​

Wenn questCategory nicht angegeben ist, wird die Quest in die durch defaultCategory in config.yml definierte Kategorie eingeordnet.

Vollständiges Beispiel​

BetonQuest-Datei (package.yml)​

templates:
- trackedQuest

questParameters:
questCategory: story

conversations:
guide_intro:
quester: "Guide"
first: "start"
NPC_options:
start:
text: "Willkommen! Bist du bereit für deine erste Quest?"
pointer: accepter,refuser
player_options:
accepter:
text: "Oui, je suis pret !"
events: activer_quete
refuser:
text: "Pas encore..."

events:
# Quest aktivieren
activer_quete: "activeQuest premiere_quete"

# Zu Etappe 2 wechseln
etape2: "nextStep premiere_quete"

# Ziel als abgeschlossen markieren (2 Parameter: Paket + Ziel)
objectif_forge: "kgcomplete premiere_quete visiter_forge"

# Quest abschließen
fin_quete: "finishQuest premiere_quete"

objectives:
visiter_forge:
type: location
location: "100;64;200;world;5"
events: objectif_forge,etape2

battre_mannequins:
type: mobkill
mob: ZOMBIE
amount: 3
events: fin_quete

Zugehörige Datei quests_config.yml​

Die Datei unterstützt das mehrsprachige Format (empfohlen) und das alte einfache Format. Die Sprache wird durch den Parameter language in der BetonQuest-Konfiguration bestimmt.

quests:
premiere_quete:
title:
fr-FR: "<gold>Le Reveil du Heros</gold>"
en-US: "<gold>The Hero's Awakening</gold>"
locked_description:
fr-FR: "Parlez au guide du village pour commencer."
en-US: "Talk to the village guide to begin."
finished_text:
fr-FR: "Vous avez fait vos premiers pas !"
en-US: "You took your first steps!"
steps:
'1':
text:
fr-FR:
- "Parlez au guide du village"
- "Acceptez la quete"
en-US:
- "Talk to the village guide"
- "Accept the quest"
'2':
text:
fr-FR:
- "Visitez la forge"
en-US:
- "Visit the forge"
objectives:
- id: "visiter_forge"
inprogress:
fr-FR: "Se rendre a la forge"
en-US: "Go to the forge"
completed:
fr-FR: "<green>- Forge visitee <white>✔"
en-US: "<green>- Forge visited <white>✔"
'3':
objectives:
- id: "battre_mannequins"
inprogress:
fr-FR: "Battre des mannequins (%betonquest_premiere_quete:objective.battre_mannequins.amount%/3)"
en-US: "Beat training dummies (%betonquest_premiere_quete:objective.battre_mannequins.amount%/3)"
completed:
fr-FR: "Battre <green>3/3 Mannequins <white>✔"
en-US: "Beat <green>3/3 Dummies <white>✔"
info

Das alte Format (einfacher Text ohne Sprachschlüssel) bleibt funktionsfähig. Siehe die Dokumentation zu quests_config.yml für alle Details zum mehrsprachigen Format.

Workflow zur Erstellung einer Quest​

  1. Erstellen Sie das BetonQuest-Paket mit dem Template trackedQuest
  2. Definieren Sie die Kategorie mit questCategory (muss dem configKey einer Kategorie aus config.yml entsprechen)
  3. Fügen Sie die Events hinzu (activeQuest, nextStep, kgcomplete, finishQuest)
  4. Konfigurieren Sie die Texte und Etappen in quests_config.yml
  5. Neu laden: /bq reload dann /questsreload
  6. Testen Sie im Spiel

Zusammenspiel mit /bq reload​

Wenn Sie /bq reload ausführen, erkennt QuestsTracker das Neuladen automatisch und:

  • Indiziert die Quests nach Kategorie neu
  • Invalidiert den Cache
  • Aktualisiert das Scoreboard

Sie brauchen kein /questsreload nach einem /bq reload für Änderungen an BetonQuest-Paketen auszuführen.

Siehe auch​