- Level: Anfänger
- Tools: Texteditor
- Zeitaufwand: ca 30 min
Hello World!
Zu fast allen Programmiersprachen existieren “Hello World!” Beispiele. Sie dienen dazu, die Syntax und den grundlegenden Aufbau einer Programmiersprache kennenzulernen. In diesem Beispiel erstellen wir ein einfaches “Hello World!” Addon für WoW, das wenn es geladen wird den Text “Hello World!” in dem Standardchatfenster ausgibt. Auch in unserem Beispiel dient dieses einfache Addon dazu, den grundlegen Aufbau und grundlegende Abläufe eines Addons kennen zu lernen. Dazu gehen wir zunächst auf die benötigte Ordnerstruktur ein. In dem zweiten Teil des Beispiels werden die verschiedenen Dateitypen vorgestellt, und die grundlegenden Abläufe beim Laden eines Addons diskutiert.Um dieses Beispiel durchzuarbeiten benötigt Ihr und etwa 30 Minuten Zeit und einen beliebigen Texteditor.
Ordnerstruktur
Zunächst erzeugen wir in unserem WoW Installationsverzeichnis die benötigte Ordnerstruktur. Dazu erstellt Ihr ein Unterverzeichnis mit dem Namen “Interface/Addons”. Wenn Ihr bereits Addons benutzt habt, sollte das Verzeichnis bereits existieren.In dem Unterverzeichnis “Interface/Addons” erstellen wir nun ein Verzeichnis für unser AddOn. Hier sind bereits einige Konventionen einzuhalten. Das Verzeichnis, das die Dateien des AddOns enthält, muss genauso wie die TOC Datei heißen. Ansonsten erkennt WoW das AddOn nicht korrekt , und das Addon wird beim Starten von WoW nicht geladen. In unserem Fall soll das AddOn “HelloWorld” heißen. Wir erzeugen daher in dem Verzeichnis “Interface/Addons” ein neues Verzeichnis mit dem Namen “HelloWorld”.
Dateien
Für unser AddOn benötigen wir drei unterschiedliche Dateien:- HelloWorld.toc
- HelloWorld.xml
- HelloWorld.lua
Bereits an der Dateiendung – TOC ist eine Abkürzung für “Table
Of Contents”, was im Deutschen so viel wie Inhaltsverzeichnis
bedeutet – lässt sich erahnen, daß diese Datei allgemeine
Informationen zu dem Addon enthält.
Dazu öffnen wir den Texteditor und erzeugen eine leere Datei.
In diese fügen wir folgenden Inhalt ein (die Zeilennummern sind nur
zur besseren Orientierung und dürfen nicht mit in die Datei
eingefügt werden).
-
## Interface: 10900
-
## Title: HelloWorld
-
## Notes: Das HelloWorld Addon ist ein einfaches AddOn, das den grundlegenden Aufbau von Addons zeigen soll.
-
## Version: 1.0
-
HelloWorld.xml
Zeilen, die Informationen zu einem AddOn enthalten, haben einen speziellen Aufbau. Diese Zeilen werden zunächst durch ein doppeltes Rautenzeichen (##) eingeleitet. Nach diesen Zeichen wird der Schlüssel angegeben, getrennt vom Wert des Schlüssels durch einen Doppelpunkt. Die Schlüssel dienen dazu, die Angabe der Informationen zu sortieren und zu trennen.
Im obigen Listing wird in Zeile 1 dem Schlüssel “Interface” der Wert 10900 zugewiesen. Diese Information teilt WoW mit, daß das AddOn für die WoW-Version 1.9.x erstellt wurde, und mit diesen Versionen kompatibel ist. Ausserdem geben wir den Titel, sowie eine kurze Beschreibung zum AddOn an.
In der letzen Zeile der TOC-Datei geben wir an, welche Dateien für das AddOn geladen werden sollen. Hier können entweder XML oder auch direkt LUA-Dateien referenziert werden. In unserem speziellen Fall wird WoW die Datei “HelloWorld.xml” aus dem selben Verzeichnis laden.
Welche weiteren Informationen Ihr in der TOC Datei angeben könnt, könnt Ihr in dem Artikel “Die TOC-Datei” nachlesen.
XML DateiWeiterhin benötigen wir für unser AddOn eine XML-Datei. XML ist eine einfache Sprache zur Beschreibung von Daten. HTML-Dateien sind den XML-Dateien sehr ähnlich mit dem Unterschied, das in XML die Elemente frei definierbar sind. Elemente bestehen in XML aus ein oder zwei Tags (Start- und EndTag oder nur einem SingleTag, das am Ende explizit geschlossen wird). Tags können Attribute haben, denen ein Wert zugewiesen wird, z.B a href=”http://www.worldofwar.de” um bei HTML zu bleiben. Das Tag a hat also das Attribut href dem der Wert http://www.worldofwar.de zugewiesen wurde.
In den XML Dateien werden Elemente des Addons definiert, sowie die Reaktionen der Elemente auf bestimme Ereignisse festgelegt. Die Elemente haben unterschiedliche Aufgaben und sind daher meist nur für bestimmte Zwecke zu verwenden. Wer mehr darüber erfahren will, kann sich hier umschauen.
Wir erzeugen also mit dem Texteditor eine neue Datei und fügen den folgenden Inhalt in die Datei ein. Abschliessend speichern wir die Datei unter dem Name “HelloWorld.xml”.
-
<Ui xmlns= “http://www.blizzard.com/wow/ui/” xmlns:xsi= “http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation= “http://www.blizzard.com/wow/ui/” >
-
<Frame name= “HelloWorldFrame” >
-
<Scripts >
-
<OnLoad >
-
DEFAULT_CHAT_FRAME:AddMessage(“Hello World!”, 1.0, 1.0, 1.0, 1.0)
-
</OnLoad >
-
</Scripts >
-
</Frame >
-
</Ui >
Nun ist es Zeit etwas genauer in die XML Datei zu schauen.
Zunächst einmal haben wir das die komplette XML Datei umschliesende
Ui Element. Das Ui Element ist das einzige Element das nicht
optional ist, also immer vorhanden sein muss in der XML-Datei. Hier
sei nur soviel gesagt, daß mit den Attributen des Elementes
festgelegt wird, welche XML Elemente, in welcher Reihenfolge, mit
welchen Attributen, etc. in die XML Datei eingefügt werden können.
Sprich, wie die Struktur in der XML-Datei aussehen darf.
In Zeile 2 der XML-Datei erzeugen wir das erste wirkliche
AddOn Element. Hierbei handelt es sich um das einfachste Element,
um einen Frame. Mit dem Attribut
“name” weisen wir dem Frame einen Namen zu. In unserem Fall
trägt er den bezeichnenden Namen “HelloWorldFrame”. Grundsätzlich
muss gesagt werden, daß die Namensattribute von Elementen immer
eindeutig und einmalig sein sollten. Ist der Name in anderen AddOns
bereits vorhanden oder nochmals in der selben Datei wird WoW nicht
wissen, welches Element gemeint ist.
Innerhalb des Script Elementes des Frame-Element (Zeilen 3-7)
werden die Reaktionen des Frames auf verschiedene Ereignisse
festgelegt. Mit dem Element OnLoad wird die Aktion festgelegt, die
ausgeführt werden soll, wenn der Frame geladen wird.
In diesem Beispiel wird der Text “Hello World!” in dem Standard-Chatfenster von WoW ausgegeben. Der Text wird ausschließlich dem Spieler angezeigt, wird also nicht in einem Chatchannel ausgegeben. Dazu rufen wir die Funktion AddMessage von dem globalen Objekt DEFAULT_CHAT_FRAME auf. Als Parameter übergeben wir den Text “Hello World!”, der im Chatfenster angezeigt werden soll. Bei den folgenden drei Zahlen handelt es sich um die Farbe in RGB (Rot, Gruen, Blau) Werten, in der der Text erscheinen soll. In unserem Fall ist die Schrift weiß Die letzte Zahl legt die Zeitspanne fest, nach der der Text aus dem Chatfenster wieder ausgeblendet wird. In unserem Fall nach 1 Sekunde.
LUA DateiBereits jetzt ist das Addon lauffähig. Wenn Ihr Wow startet und euch einloggt, wird im Chatfenster der Text “Hello World!” ausgegeben. Für dieses einfache Beispiel brauchen wir keine LUA Datei, da wir den auszuführenden LUA Code direkt in die XML Datei geschrieben haben. Normalerweise ist es aber ratsam, den LUA Code und die XML Datei zu trennen bzw. in der XML Datei nur Funktionen aufzurufen, die ausserhalb der XML Datei definiert sind. Ansonsten kann es bei normalen Projekten schon recht unübersichtlich werden.
Dazu verändern wir nochmal die XML Datei:
-
<Ui xmlns= “http://www.blizzard.com/wow/ui/” xmlns:xsi= “http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation= “http://www.blizzard.com/wow/ui/” >
-
<Script file= “HelloWorld.lua” />
-
<Frame name= “HelloWorldFrame” >
-
<Scripts >
-
<OnLoad >
-
HelloWorld_OnLoad();
-
</OnLoad >
-
</Scripts >
-
</Frame >
-
</Ui >
Neu ist die Anweisung in Zeile 2: “Script file=”HelloWorld.lua”/”. Damit geben wir an, dass die Datei “HelloWorld.lua” in die XML Datei eingebunden werden soll. Ausserdem rufen wir nun die Funktion “HelloWorld_OnLoad()” in dem OnLoad Tag (Zeile 6) des Frames auf. Diese Funktion definieren wir nun in der Datei HelloWorld.lua.
-
function HelloWorld_OnLoad ( )
-
DEFAULT_CHAT_FRAME:AddMessage ( “HelloWorld!”, 1.0, 1.0, 1.0, 1.0 ) ;
-
end
Hierbei handelt es sich um eine einfache Funktion, die wiederum den Text “HelloWorld” in dem Standardchatfenster ausgibt.
Fazit
- Zunächst muss die Ordnerstruktur für das Addon im WoW Installationsverzeichnis erstellt werden. (Bitte denkt daran, dass der Order des Addons genauso wie die dazugehörende TOC Datei heissen muss).
- Für ein Addon benötigt man drei unterschiedliche Dateitypen; die TOC Datei, eine XML und (optional) eine LUA Datei.
- Die TOC Datei enthält allgemeine Informationen zu Eurem Addon; ausserdem wird hier festgelegt welche Dateien des Addons zuerst geladen werden.
- In der XML Datei werden Elemente des Addons definiert. Weiterhin werden hier Reaktionen der Elemente auf bestimmte Ereignisse festgelegt. LUA Code kann direkt in die XML Datei geschrieben werden. Oft ist es aber ratsam, die XML Datei und den LUA Code zu trennen.
- Die LUA Datei enthält den auszuführenden (Programm)Code.
Ich hoffe, dass Euch dieses Beispiel gefallen hat und dass Ihr etwas über den grundlegenden Aufbau von Addons lernen konntet. Bei Anregungen, Fragen oder Kritik könnt Ihr mir gerne eine Mail oder eine PM schicken.
Abschließend habt Ihr die Möglichkeit die beiden Versionen des
Addons herunterzuladen:
Version
1
Version
2
zurück zur
HowTo-Übersicht
zurück zur Übersicht der
Skript-Sektion









