QuestPlus
Überblick
QuestPlus erweitert die TypeWriter-Erweiterung Quest um ein Eskort-Objective, eine tägliche Rotation von Quests und einen Kampfstatus-Fact. Bei einer Eskorte läuft ein NPC entlang eines Wegenetzes von Checkpoint zu Checkpoint, und der Spieler muss ihn am Leben halten und in der Nähe bleiben. Eine temporäre Quest-Definition entscheidet, wann eine Gruppe von Quests verfügbar ist und welche Quests für den Tag ausgewählt werden.
Eskorten verwenden die Erweiterungen Quest, Basic, RoadNetwork und Entity: Die Route stammt aus einem Wegenetz, der NPC ist eine Entity-Instanz, und der Kompass oder Pfadstrom für den Spieler kommt vom Quest-Kompass von QuestCodex, weil das Eskort-Objective auffindbar ist.
Quest-Statusanzeigen über NPC-Köpfen (npc_status_override) sind nicht Teil von QuestPlus. Sie werden von UiCore und seinen Nameplates bereitgestellt.
Funktionen
- Eskort-Objective — ein NPC folgt einer Route aus Wegknoten, pausiert an jedem Checkpoint und muss das Ziel erreichen.
- Regeln für Fehlschlag und Zurücksetzen — der Spieler muss innerhalb eines Schutzradius bleiben, der NPC kann von Mobs verletzt werden, und ein Zeitlimit kann gelten.
- Checkpoint-Trigger — Trigger für Start, Checkpoint, verloren, wiedergefunden, Zurücksetzen, Abschluss und Fehlschlag sowie Hinterhalt-Trigger pro Checkpoint.
- Eskort-Anzeige — optionales Scoreboard und optionale Bossbar mit Checkpoint, Zeit und Leben.
- Eskort-Aktionen — eine Eskorte aus jeder Sequence starten, vorrücken lassen, zurücksetzen und stoppen.
- Temporäre Quests — ein rotierender Pool: Verfügbarkeit nach Wochentag, Uhrzeit und Cron, eine Anzahl täglich ausgewählter Quests und ein Abschlusslimit.
- Kampfstatus — ein Fact, der einige Sekunden lang
1ist, nachdem der Spieler getroffen hat oder getroffen wurde. - Ausblendbare Objectives — ein Objective ausblenden, bis seine Quest verfolgt wird.
- Platzhalter — Eskort-Fortschritt, -Leben und -Zeit sowie die Quests des Tages mit einem Countdown bis zur nächsten Rotation.
Installation
- Installiere die TypeWriter-Erweiterungen Quest, Basic, RoadNetwork und Entity, die QuestPlus als Abhängigkeiten deklariert.
- Optional: Installiere QuestCodex, um dem Spieler Eskort-Waypoints anzuzeigen.
- Lege die QuestPlus-JAR in
plugins/Typewriter/extensions/ab und starte den Server neu. - Baue mit der RoadNetwork-Erweiterung ein Wegenetz für deine Eskortroute, siehe Erste Schritte.
Erste Schritte
Erstelle eine Eskort-Mission:
- Erstelle im TypeWriter-Web-Panel mit der RoadNetwork-Erweiterung ein Wegenetz und platziere die Knoten, die dein NPC passieren muss. Halte die Kanten aktuell: Kann der Pfad nicht berechnet werden, erreicht der NPC seinen Knoten nicht.
- Füge einen Path Escort Activity-Entry hinzu. Setze
roadNetwork, liste die Knoten-IDs innodesin Laufreihenfolge auf und setzeidleActivityauf das, was der NPC tut, sobald die Route beendet ist. - Erstelle eine Entity-Instanz für deinen Eskort-NPC und setze ihre
activityauf diese Path Escort Activity. Die Instanz muss zu einer aktiven Audience gehören, da QuestPlus das Display verwendet, das TypeWriter bereits dafür ausführt. - Füge einen Escort Objective-Entry hinzu. Setze
quest,npc(deine Entity-Instanz) unddisplay. PassemaxHealth,guardRadius,loseToleranceSec,spawnRadiusundstartRadiussowie optionalglobalTimeLimitSecan. - Verknüpfe die Trigger:
onEscortCompletemit dem, was bei Erfolg geschehen soll (zum Beispiel eine Aktion, die einen Fact für den nächsten Quest-Schritt setzt), undonEscortFailmit der Fehlerbehandlung. - Lass den Spieler die Eskorte erreichen. Die Eskorte startet von selbst, wenn ein Spieler in der Audience des Objectives in den
startRadiusdes ersten Knotens kommt. Um sie stattdessen aus einem Dialog oder Event zu starten, verwende Escort Start mitobjective. - Verwende jedes Mal, wenn der NPC an einem Checkpoint anhält, Escort Next (zum Beispiel nach einer Dialogzeile oder einem abgewehrten Hinterhalt), damit er zum nächsten läuft.
- Veröffentliche und teste: Der NPC erscheint in der Nähe des ersten Knotens, und die Eskorte beginnt, wenn du in seinen
startRadiuskommst.
Verwende /escort debug resolve <objective>, um zu prüfen, dass der erste Knoten und die Radien aufgelöst werden.
Fülle ambushes mit einem checkpointIndex und triggers. Erreicht die Eskorte diesen Checkpoint, werden die Trigger einmal ausgelöst, zum Beispiel um mit einer anderen Erweiterung Mobs zu spawnen.
Funktionsweise
Wenn eine Eskorte startet, erstellt QuestPlus für den NPC einen unsichtbaren Lebenshalter, den nur der eskortierte Spieler sehen kann. Mobs im guardRadius in der Nähe nehmen ihn ins Visier. Der NPC verliert durch Mob-Treffer Leben (mobHitDamage) und kann sich regenerieren (regenPerSec). Spieler können ihn nicht verletzen. Bei aktiviertem invulnerable ist er vollständig geschützt.
Der NPC läuft zum nächsten Wegknoten, der als erreicht gilt, sobald der NPC innerhalb von nodeReachRadius um ihn ist, und wartet dann, bis eine Escort Next-Aktion ihn freigibt. Das Erreichen eines Checkpoints löst onCheckpoint und die passenden Hinterhalt-Trigger aus. Nach dem letzten Knoten wird onEscortComplete ausgelöst.
Zurücksetzen. Die Eskorte geht mit vollem NPC-Leben zu ihrem letzten Checkpoint zurück, wenn der NPC oder der Spieler stirbt oder wenn der Spieler loseToleranceSec Sekunden lang weiter als guardRadius entfernt bleibt. onEscortLost wird ausgelöst, wenn der Spieler außer Reichweite geht, und onEscortRecovered, wenn er zurückkommt. onEscortReset wird beim Zurücksetzen ausgelöst.
Fehlschlag. Die Eskorte schlägt fehl, wenn globalTimeLimitSec abläuft, wenn der Spieler den Server verlässt, wenn der NPC verschwindet oder bei Escort Stop. onEscortFail wird ausgelöst.
Eine Escort Reset-Aktion bricht die Eskorte ohne Fehlschlag-Trigger ab.
Temporäre Quests
Eine Temporary Quest Definition ist ein Audience-Filter. Ihre children werden Spielern nur angezeigt, solange sie aktiv ist:
- Verfügbarkeit. Sie ist an den aufgeführten
daysOfWeekaktiv, zwischenstartTimeundendTime(HH:mm), falls gesetzt, und wenncronExpressionzutrifft, falls gesetzt. - Tägliche Auswahl. Jeden Tag werden
questsPerDayQuests zufällig ausquestsausgewählt. Die Auswahl ist für einen bestimmten Tag und Entry deterministisch, wechselt beiresetTimeund wird in einem überartifactreferenzierten Temporary Quest Artifact gespeichert. - Abschlusslimit. Bei
maxCompletedüber0sehen Spieler, die so viele der Tagesquests abgeschlossen haben, die Children nicht mehr. Der Zähler wird im Artifact gespeichert und mit dem Tag zurückgesetzt.
Die tägliche Auswahl wird über Platzhalter und die Abschlusszählung bereitgestellt. Der Filter selbst blendet die nicht ausgewählten Quests nicht aus: Verwende die Platzhalter in deinen Menüs oder gestalte die Verfügbarkeit deiner Quests so, dass nur die Quests erreichbar sind, die du anzeigst.
Kampfstatus
Der Combat Status Fact ist 1, solange der Spieler innerhalb der letzten thresholdSeconds (standardmäßig 10) eine Entity getroffen hat oder von einer getroffen wurde, sonst 0. Verwende ihn in Criteria, um Schnellreisen, Dialoge oder Logout-Belohnungen während eines Kampfes zu blockieren. Er erfasst nur Kämpfe, an denen ein Spieler beteiligt ist.
Platzhalter
MiniPlaceholders-Tags für MiniMessage-Text.
Eskorte, für den eskortierten Spieler. Ist keine Eskorte aktiv, sind die Werte neutral.
| Platzhalter | Gibt zurück |
|---|---|
<escort_checkpoint> | Aktueller Checkpoint als n/total, 0/0, wenn inaktiv. |
<escort_time> | Verstrichene Sekunden oder verbleibende Sekunden, wenn das Objective ein Zeitlimit hat. |
<escort_health>, <escort_health_max> | Leben des Eskort-NPCs und sein Maximum, 0, wenn inaktiv. |
<escort_is> | 1, wenn eine Eskorte aktiv ist. |
<escort_is_max> | 1, wenn der letzte Checkpoint erreicht ist. |
Temporäre Quests, wobei id die ID des Temporary-Quest-Definition-Entries ist.
| Platzhalter | Gibt zurück |
|---|---|
<tempquest_active_quests:id> | IDs der heutigen Quests, durch Komma getrennt. |
<tempquest_time_remaining:id> | Zeit bis zur nächsten Rotation als HH:MM:SS. |
<tempquest_quests_per_day:id> | Anzahl der pro Tag ausgewählten Quests. |
<tempquest_quest_name:id:n> | Anzeigename der n-ten Quest des Tages, ab 1. |
<tempquest_quest_desc:id:n> | Anzeigetext der n-ten Quest. |
Befehle
| Befehl | Beschreibung |
|---|---|
/escort debug start <objective> | Startet eine Eskorte für dich selbst (nur Spieler). |
/escort debug stop | Stoppt deine Eskorte. |
/escort debug skipnode | Lässt deine Eskorte zum nächsten Checkpoint vorrücken. |
/escort debug scan | Führt den automatischen Start-Scan jetzt aus. |
/escort debug resolve <objective> | Gibt den ersten Knoten und die Radien eines Objectives aus. |
<objective> ist die ID oder der Name eines Escort Objective. Der Befehl benötigt questplus.escort.debug.
Berechtigungen
| Berechtigung | Gewährt |
|---|---|
questplus.escort.debug | /escort debug. Sie hat keinen Standardwert, daher haben sie nur Operatoren, sofern du sie nicht vergibst. |
Entries
9 Einträge, aus dem Quellcode der Erweiterung generiert.
Aktionen4
- Escort NextAdvance escort to next checkpoint
- Escort ResetReset escort objective
- Escort StartStart an escort objective
- Escort StopStop the current escort objective
Ziele1
- Escort ObjectiveEscort an NPC along a route
Fakten1
- Combat Status FactCombat Status Fact
Zielgruppen1
- Temporary Quest DefinitionActivates a rotating subset of quests each day
Aktivitäten1
- Path Escort ActivityMoving along a path for escort
Artefakte1
- Temporary Quest ArtifactStores today's quests and reset time
Fehlerbehebung
Der NPC erscheint nie. Das Log meldet „npc instance missing“ oder „has no display registered in the AudienceManager“. Der npc des Objectives muss eine Entity-Instanz sein, die zu einer aktiven Audience gehört. Führe /escort debug resolve <objective> aus und prüfe, ob die Instanz existiert.
Das Log meldet „is missing a path_escort_activity“. Die als npc verwendete Entity-Instanz muss eine Path Escort Activity als activity haben.
„node ... not found“ oder „has no nodes“. Die nodes der Activity listen IDs auf, die nicht im ausgewählten roadNetwork stehen, oder die Liste ist leer. Wähle die Knoten nach dem Bearbeiten des Netzes erneut aus.
„navigation ... ended N blocks away from the node. The road network could not produce a walkable path; recalculate its edges.“ Der NPC kann nicht zum Knoten laufen. Berechne die Kanten des Wegenetzes neu und prüfe das Gelände zwischen den Knoten.
Die Eskorte startet nicht von selbst. Der Spieler muss in der Audience des Objectives sein (Quest aktiv und criteria des Objectives wahr), in derselben Welt wie der erste Knoten und im startRadius davon. Andernfalls starte sie mit Escort Start. Der NPC spawnt nur, wenn sich der Spieler im spawnRadius des ersten Knotens befindet.
Die Eskorte wird sofort zurückgesetzt. Der Spieler ist länger als loseToleranceSec weiter als guardRadius entfernt, oder der NPC stirbt an Mob-Treffern. Erhöhe den Radius oder die Toleranz, senke mobHitDamage oder aktiviere invulnerable.
Der NPC hält an jedem Knoten an und läuft nicht weiter. Das ist so gewollt: Er wartet an jedem Checkpoint auf Escort Next.
Temporäre Quests sind alle verborgen. Die Definition ist nur an ihren daysOfWeek, zwischen startTime und endTime und wenn cronExpression zutrifft aktiv. Prüfe diese sowie das Limit maxCompleted.
Verwandte Erweiterungen
- QuestCodex — Kompass und Pfad zu den Eskort-Waypoints.
- UiCore — Quest-Statusanzeigen über NPCs (
npc_status_override).