AddOn Ereignisse
Aus morphosi.net wiki
Inhaltsverzeichnis |
Ereignisse
AddOns für den WoW-Client sind entweder zeitgesteuert oder eventgesteuert. Das bedeutet ein AddOn wird tätig nach Ablauf einer gewissen Zeit oder bei eintreten eines bestimmten Ereignisses. Jeder Vorgang in WoW erzeugt wenigstens ein Ereignis. Um darauf zu reagieren zu können muss man sich für ein Ereignis registrieren und wird bei eintreten informiert.
Ordner Ereignisse
Auch hier brauchen wir wieder einen Ordner, der passender Weise Ereignisse heissen soll.
Datei Ereignisse.toc
Unsere TOC-Datei weicht auch nicht von der im ersten Beispiel ab
## Interface: 30300 ## Title: Ereignisse ## Notes: Events in World of Warcraft. ## Notes-deDE: Ereignisse in World of Warcraft. ## Author: Rilgamon ## Version: 1 Ereignisse.lua
Datei Ereignisse.lua
local frame = CreateFrame("Frame") local function Ereignisse_OnEvent(self, event, arg1) print(format("Das Event %s wurde mit dem Argument %s aufgerufen",tostring(event),tostring(arg1))) end frame:RegisterEvent("MAIL_SHOW") frame:SetScript("OnEvent", Ereignisse_OnEvent)
Zeilenweise Erklärung
local frame = CreateFrame("Frame")
Ereignisse werden für einem Frame registriert. Hier erstellen wir eine lokale Variable vom Typ Frame. Dabei bedienen wir uns des Befehls CreateFrame.
Als nächstes erzeugen wir eine Funktion, die aus den folgenden drei Zeilen besteht.
local function Ereignisse_OnEvent(self, event, arg1)
Wir erstellen eine Funktion mit dem Namen Ereignisse_OnEvent und legen fest, dass sie mit drei Argumenten aufgerufen werden kann. Diese (bis zu) drei Argumente ergeben sich aus der Art wie diese Funktion durch den WoW-Client aufgerufen wird wenn ein Ereignis eintritt. Der Client teilt uns mit welcher Frame ein Ereignis erhalten hat (self), welches Ereignis eingetreten ist (event) und eventuell liefert er noch zusätzliche Informationen (arg1).
print(format("Das Event %s wurde mit dem Argument %s aufgerufen",tostring(event),tostring(arg1)))
Mit dem print-Befehl geben wir wie schon im ersten Beispiel einen Text in die Konsole aus. Über den format-Befehl fügen wir die Variablen event und arg1 in eine Zeichenkette ein. Mit dem tostring-Befehl stellen wir sicher, dass auch wenn die Variable arg1 keinen Wert (nil) hat es nicht zu einem Fehler kommt.
endend beendet den Funktionsblock.
Jetzt fehlen uns nur noch zwei Dinge.
frame:RegisterEvent("MAIL_SHOW")
Mit dem RegisterEvent-Befehl teilen wir dem WoW-Client mit, dass unser Frame frame informiert werden will wenn das Ereigniss "MAIL_SHOW" eintritt.
frame:SetScript("OnEvent", Ereignisse_OnEvent)
Und zusätzlich müssen wir angeben welche Funktion ausgeführt werden soll wenn ein Vorgang vom Typ Ereignis eintritt. Dazu dient der Befehl SetScript. Hier geben wir unsere Funktion an, die wir oben definiert haben.
Nun sollte unser AddOn bei jedem Öffnen des Briefkastens einen Text ausgeben.
Datei Ereignisse.zip
Und hier das Ergebnis als Download: Ereignisse.zip
AddOn-Beispiele: Hallo Welt, Ereignisse, Zeitsteuerung, Lade-Prozess
