BetonQuest-Integration
QuestsTracker ist tief in BetonQuest integriert. Diese Seite erklaert, wie Sie Ihre Quests konfigurieren, damit sie im Menue und im Tracking erscheinen.
Funktionsweise
- Eine Quest muss das Template
trackedQuestverwenden, um im Menue zu erscheinen - Der Status (gesperrt/aktiv/abgeschlossen) wird durch benutzerdefinierte Events gesteuert
- Der Fortschritt wird ueber die Events
nextStepundkgcompleteverfolgt
Template trackedQuest
Damit eine Quest im QuestsTracker-Menue erscheint, muss ihr BetonQuest-Paket das Template trackedQuest verwenden.
Template definieren
In der package.yml-Datei Ihrer Quest:
templates:
- trackedQuest
questParameters:
questCategory: "Story" # Muss mit dem displayName einer Kategorie uebereinstimmen
Ohne das Template trackedQuest ist die Quest im Menue 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:
| Tag | Rolle |
|---|---|
{questId}.questTrackable | Quest freigeschaltet (im Menue sichtbar) |
{questId}.tracked | Quest in Bearbeitung (Status Aktiv) |
{questId}.finished | Quest abgeschlossen (Status Abgeschlossen) |
Diese Tags werden automatisch von den Events des Plugins verwaltet. Sie muessen sie niemals manuell manipulieren. Verwenden Sie stattdessen die Events activeQuest, finishQuest und lockQuest.
Lebenszyklus einer Quest
Gesperrt → Aktiv → Abgeschlossen
(kein Tag) (.questTrackable + .tracked) (.questTrackable + .finished)
- Die Quest ist standardmaessig gesperrt (kein Tag)
- Das Event
activeQuestfuegt die Tags.questTrackableund.trackedhinzu → die Quest wird aktiv - Der Spieler kann sie dann im Scoreboard verfolgen (bis zu 3 Quests gleichzeitig)
- Das Event
finishQuestentfernt.trackedund fuegt.finishedhinzu → die Quest ist abgeschlossen - Das Event
lockQuestentfernt alle Tags → die Quest wird wieder gesperrt
Benutzerdefinierte Events
QuestsTracker registriert 5 Events in BetonQuest:
activeQuest
Aktiviert eine Quest — macht sie im Menue sichtbar und verfuegbar.
events:
activer_quete: "activeQuest ma_quete"
Auswirkungen:
- Fuegt die Tags
ma_quete.questTrackableundma_quete.trackedhinzu - Die Quest wechselt in den Status Aktiv
- Sie erscheint im Menue des Spielers
- Wenn die Kategorie
autoTrack: truehat, wird die Quest automatisch im Scoreboard verfolgt (bis zu 3 Slots). Wenn alle 3 Slots belegt sind, wird bevorzugt eine nicht-autoTrack Quest ersetzt.
lockQuest
Sperrt eine Quest — macht sie im Menue nicht verfuegbar.
events:
verrouiller_quete: "lockQuest ma_quete"
Auswirkungen:
- Entfernt die Tags
ma_quete.questTrackable,ma_quete.trackedundma_quete.finished - Die Quest wechselt in den Status Gesperrt
- Sie erscheint im Menue als gesperrt (oder wird ausgeblendet, je nach Spielereinstellungen)
finishQuest
Schliesst eine Quest ab.
events:
terminer_quete: "finishQuest ma_quete"
Auswirkungen:
- Entfernt den Tag
ma_quete.trackedund fuegtma_quete.finishedhinzu - Die Quest wechselt in den Status Abgeschlossen
- Sie bleibt im Menue sichtbar, wenn der Spieler abgeschlossene Quests anzeigt
- Sie wird aus dem Scoreboard-Tracking entfernt und die Fortschrittsdaten werden geloescht
nextStep
Geht zum naechsten Schritt einer Quest ueber.
events:
etape_suivante: "nextStep ma_quete"
Auswirkungen:
- Erhoeht die Schrittnummer der Quest
- Aktualisiert das Scoreboard in Echtzeit mit den neuen Zielen
- Setzt die abgeschlossenen Ziele des vorherigen Schritts zurueck
kgcomplete
Markiert ein bestimmtes Ziel im aktuellen Schritt als abgeschlossen.
events:
objectif_fait: "kgcomplete ma_quete mon_objectif"
Das Event kgcomplete benoetigt zwei Parameter: die Paket-ID und die Ziel-ID. Die Ziel-ID muss dem id-Feld im objectives-Abschnitt der quests_config.yml entsprechen.
Auswirkungen:
- Markiert das Ziel
mon_objectifals abgeschlossen - Aktualisiert die Anzeige im Scoreboard (Text
inprogress→ Textcompleted) - Nuetzlich fuer Schritte mit mehreren unabhaengigen Zielen
Quest-Parameter (questParameters)
Der Block questParameters in der package.yml konfiguriert, wie die Quest im Menue erscheint:
questParameters:
questCategory: "Story"
questReward:
fr-FR: "100 pieces d'or\nEpee en diamant"
en-US: "100 gold coins\nDiamond sword"
de-DE: "100 Goldmuenzen\nDiamantschwert"
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
questCategory | Nein | Kategorie des Menues (Standard: defaultCategory aus config.yml) |
questReward | Nein | Belohnungstext im Menue-Lore (mehrsprachig, \n fuer Zeilenumbrueche) |
Kategorie
Der Wert von questCategory muss exakt mit dem displayName einer in config.yml definierten Kategorie uebereinstimmen.
Kategoriezuordnung
| config.yml (Schluessel) | config.yml (displayName) | BetonQuest (questCategory) |
|---|---|---|
story | "Story" | questCategory: "Story" |
secondary | "Secondary" | questCategory: "Secondary" |
dailyQuests | "Daily" | questCategory: "Daily" |
"Story" ≠ "story" ≠ "STORY". Verwenden Sie exakt denselben Text wie den displayName Ihrer Kategorie.
Unterkategorien
Um eine Quest in eine Unterkategorie einzuordnen, verwenden Sie das Format mit Punkt:
questParameters:
questCategory: "Daily.Monsters"
Das Format ist: displayName_Kategorie.displayName_Unterkategorie
Standardkategorie
Wenn questCategory nicht angegeben ist, wird die Quest in die durch defaultCategory in config.yml definierte Kategorie eingeordnet.
Vollstaendiges Beispiel
BetonQuest-Datei (package.yml)
templates:
- trackedQuest
questParameters:
questCategory: "Story"
conversations:
guide_intro:
quester: "Guide"
first: "start"
NPC_options:
start:
text: "Bienvenue ! Etes-vous pret pour votre premiere quete ?"
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 Schritt 2 uebergehen
etape2: "nextStep premiere_quete"
# Ein Ziel als abgeschlossen markieren
objectif_forge: "kgcomplete premiere_quete visiter_forge"
# Quest abschliessen
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
Zugehoerige quests_config.yml-Datei
quests:
premiere_quete:
title: "<gold>Le Reveil du Heros</gold>"
locked_description: "Parlez au guide du village pour commencer."
finished_text: "Vous avez fait vos premiers pas !"
steps:
'1':
- "Parlez au guide du village"
- "Acceptez la quete"
'2':
text:
- "Visitez la forge"
objectives:
- id: "visiter_forge"
inprogress: "Se rendre a la forge"
completed: "<st>Forge visitee</st>"
'3':
objectives:
- id: "battre_mannequins"
inprogress: "Battre des mannequins (%betonquest_premiere_quete:objective.battre_mannequins.amount%/3)"
completed: "<st>Mannequins battus (3/3)</st>"
Workflow zur Quest-Erstellung
- Erstellen Sie das BetonQuest-Paket mit dem Template
trackedQuest - Definieren Sie die Kategorie mit
questCategory(muss mit demdisplayNameuebereinstimmen) - Fuegen Sie die Events hinzu (
activeQuest,nextStep,kgcomplete,finishQuest) - Konfigurieren Sie die Texte und Schritte in
quests_config.yml - Neu laden:
/bq reloaddann/questsreload - Testen Sie im Spiel
Interaktion mit /bq reload
Wenn Sie /bq reload ausfuehren, erkennt QuestsTracker automatisch das Neuladen und:
- Indiziert die Quests nach Kategorie neu
- Invalidiert den Cache
- Aktualisiert das Scoreboard
Sie muessen nach einem /bq reload kein /questsreload fuer Aenderungen an BetonQuest-Paketen ausfuehren.
Siehe auch
- Konfiguration — Kategorien, Unterkategorien und quests_config.yml
- Befehle — Befehle zum Neuladen
- Fehlerbehebung — BetonQuest-bezogene Probleme