Extended am Sonntag #8
Spielereignisse
Heute soll es um einen Mechanismus gehen, mit dem das Spiel dem Interface (also auch Addons wie Extended) mitteilt, was gerade auf dem Bildschirm passiert: Spielereignisse oder Events. Wer beim Wort „Event“ an ein Rockfestival denkt, den muss ich enttäuschen. Auch simple Dinge wie ein Mausklick sind Ereignisse, und das Spiel wird uns über jeden Mausklick informieren, wenn wir das wollen.
Ereignisse "abhören"
Technisch gesehen ist ein Ereignis einfach nur eine Nachricht, die jedem Addon übermittelt wird, das danach fragt. Wenn ich z.B. informiert werden möchte, sobald meine Spielfigur das Gebiet wechselt, muss sich ein Addon für das Ereignis ZONE_CHANGED
registrieren. Extended übernimmt hierbei die Registrierungsarbeit für uns und wir müssen lediglich einen Arbeitsablauf festlegen, der bei einem bestimmten Ereignis starten soll.
Die Auswahl an Ereignissen ist reichlich. Probiere es aus:
/eventtrace
öffnet ein Fenster, das alle Ereignisse in Echtzeit auflistet. Selbst, wenn nichts besonderes auf dem Bildschirm passiert, können Ereignisse im Sekundentakt eintreten. Wenn du kämpfst oder in einer belebten Stadt bist, explodiert das Log förmlich.
Wo kann man Ereignisse einsetzen?
Grundsätzlich können nur Kampagnen auf Ereignisse „hören“, bei Items geht das nicht.
Innerhalb von Kampagnen kannst du Ereignisverknüpfungen auf Kampagnen-, Quest- sowie auf Questschrittebene einstellen.
- Kampagnenereignisse bleiben solange aktiv, wie die Kampagne aktiv ist. Wird die Kampagne pausiert, wird kein Ereignis verarbeitet.
- Questereignisse werden verarbeitet, solange die Quest sichtbar und nicht erfüllt ist.
- Questschrittereignisse werden verarbeitet, solange die zugehörige Quest sich im betreffenden Schritt befindet und nicht erfüllt wurde. Es ist also nicht sinnvoll, einem Endschritt Ereignisse zuzuweisen.
Bedingte Ereignisse
Unter „Ereignisverknüpfungen“ kannst du jedem Ereignis mit STRG
+Klick eine Bedingung zuweisen. Diese sorgt dafür, dass das Ereignis nur dann weiterverarbeitet wird, wenn die Bedingung erfüllt ist.
Das ist hilfreich, denn die meisten Ereignisse sind allgemein gehalten. Bspw. informiert das oben erwähnte Ereignis ZONE_CHANGED
nur, dass man das Gebiet gewechselt hat, aber nicht, in welches. Die Quest „Reise nach Eisenschmiede“ könnte man also erfolgreich abschließen, wenn das Ereignis ZONE_CHANGED
eintritt und der Gebietsname „Eisenschmiede“ lautet.
Ereignisparameter
Manche Ereignisse übermitteln zusätzliche Informationen. Z.B. liefert das Mausklickereignis GLOBAL_MOUSE_UP
mit, ob die linke (leftButton
) oder rechte (rightButton
) Maustaste betätigt wurde.
Der Operand „Experte > Ereignisparameter (Text/Zahl)“ ist sowohl in der Ereignisbedingung als auch im aufgerufenen Arbeitsablauf abrufbar.
Alternativ kannst du das Variablen-Tag ${event.X}
benutzen, wobei X
für den Argument-Index steht.
Beachte, dass die Argumente nur in unmittelbar aufgerufenen Arbeitsabläufen verfügbar sind.
Spezielle Extended-Ereignisse
Fünf Ereignisse werden nicht vom Spiel generiert, sondern von Extended selbst. Um es ganz genau zu nehmen, reagiert Extended auf ein anderes Spielereignis und erzeugt daraus ein angepasstes Ereignis.
Sie werden genauso behandelt wie die anderen Ereignisse, tauchen aber nicht im /eventtrace
-Log auf.
-
TRP3_EMOTE
, wenn jemand ein vorgefertigtes Emote wie/hallo
verwendet -
TRP3_ITEM_USED
, wenn der Spieler ein TRP-Item benutzt -
TRP3_KILL
, wenn der Spieler oder ein Gruppenmitglied eine Einheit tötet -
TRP3_ROLL
, wenn der „Würfeln“-Effekt verwendet wurde -
TRP3_SIGNAL
, wenn der „Signal senden“-Effekt verwendet wurde
Wie man Ereignisse findet
Wenn du ein neues Ereignis einstellst, hast du die Möglichkeit, den Ereigniskatalog zu durchsuchen. Dort sind viele (aber nicht alle) Ereignisse nach Kategorie aufgelistet, zusammen mit ihren Parametern, d.h. den Informationen, die mitgeliefert werden. Wenn du schon ungefähr weißt, in welche Kategorie dein Ereignis gehören könnte, kann dieser Katalog eine Hilfe sein.
Die „Probiermethode“ kann auch zum Ziel führen. Öffne dazu das /eventtrace
-Tool. Dann tust du, was in deiner Quest bzw. Kampagne getan werden soll. Beobachte dabei, welche Ereignisse eintreten. Wenn ein Ereignis immer eintritt, wenn du die Questaufgabe erledigt, hast du einen guten Kandidaten gefunden.
Sei präzise
Bedenke, dass Ereignisse nicht nur für Extended entwickelt wurden. Meistens werden Ereignisse öfter ausgelöst als benötigt. Du kannst Bedingungen einsetzen, um das „richtige“ Ereignis herauszufischen.
Es kann auch vorkommen, dass mehrere Ereignisse bei einer bestimmten Aktion auslösen. Das Aufsteigen auf ein Reittier löst z.B. eine Reihe von Ereignissen aus, darunter UNIT_SPELLCAST_STOP
(weil aufmountern als Zauber zählt) und COMPANION_UPDATE
. Wenn die Questaufgabe darin besteht, auf ein Mount zu steigen, solltest du COMPANION_UPDATE
verwenden, wenn es darum geht, einen Zauber zu wirken, kann UNIT_SPELLCAST_STOP
helfen. Versuche also, ein möglichst passendes Ereignis zu wählen.
Viel Spaß beim Experimentieren und
bis zum nächsten Sonntag…