Zum Hauptinhalt springen

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

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

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
Template erforderlich

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:

TagRolle
{questId}.questTrackableQuest freigeschaltet (im Menue sichtbar)
{questId}.trackedQuest in Bearbeitung (Status Aktiv)
{questId}.finishedQuest abgeschlossen (Status Abgeschlossen)
Interne Tags

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)
  1. Die Quest ist standardmaessig gesperrt (kein Tag)
  2. Das Event activeQuest fuegt die Tags .questTrackable und .tracked hinzu → die Quest wird aktiv
  3. Der Spieler kann sie dann im Scoreboard verfolgen (bis zu 3 Quests gleichzeitig)
  4. Das Event finishQuest entfernt .tracked und fuegt .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 Menue sichtbar und verfuegbar.

events:
activer_quete: "activeQuest ma_quete"

Auswirkungen:

  • Fuegt die Tags ma_quete.questTrackable und ma_quete.tracked hinzu
  • Die Quest wechselt in den Status Aktiv
  • Sie erscheint im Menue des Spielers
  • Wenn die Kategorie autoTrack: true hat, 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.tracked und ma_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.tracked und fuegt ma_quete.finished hinzu
  • 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"
Zwei Parameter erforderlich

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_objectif als abgeschlossen
  • Aktualisiert die Anzeige im Scoreboard (Text inprogress → Text completed)
  • 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"
ParameterErforderlichBeschreibung
questCategoryNeinKategorie des Menues (Standard: defaultCategory aus config.yml)
questRewardNeinBelohnungstext 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"
Gross-/Kleinschreibung und Akzente beachten

"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

  1. Erstellen Sie das BetonQuest-Paket mit dem Template trackedQuest
  2. Definieren Sie die Kategorie mit questCategory (muss mit dem displayName uebereinstimmen)
  3. Fuegen Sie die Events hinzu (activeQuest, nextStep, kgcomplete, finishQuest)
  4. Konfigurieren Sie die Texte und Schritte in quests_config.yml
  5. Neu laden: /bq reload dann /questsreload
  6. 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