Hello World!





  • 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
TOC Datei

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).


  1. ## Interface: 10900
  2. ## Title: HelloWorld
  3. ## Notes: Das HelloWorld Addon ist ein einfaches AddOn, das den grundlegenden Aufbau von Addons zeigen soll.
  4. ## Version: 1.0
  5. 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 Datei

Weiterhin 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”.


  1. <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/” >
  2. <Frame name= “HelloWorldFrame” >
  3. <Scripts >
  4. <OnLoad >
  5. DEFAULT_CHAT_FRAME:AddMessage(“Hello World!”, 1.0, 1.0, 1.0, 1.0)
  6. </OnLoad >
  7. </Scripts >
  8. </Frame >
  9. </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 Datei

Bereits 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:


  1. <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/” >
  2. <Script file= “HelloWorld.lua” />
  3. <Frame name= “HelloWorldFrame” >
  4. <Scripts >
  5. <OnLoad >
  6. HelloWorld_OnLoad();
  7. </OnLoad >
  8. </Scripts >
  9. </Frame >
  10. </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.


  1. function HelloWorld_OnLoad ( )
  2. DEFAULT_CHAT_FRAME:AddMessage ( “HelloWorld!”, 1.0, 1.0, 1.0, 1.0 ) ;
  3. 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

MoP Vorbestellung
Umfrage

Offenbar wird es leerer auf den WoW Realms. Ist das auch für euch spürbar?

Ergebnis anzeigen »

Loading ... Loading ...
Klassenguides
ContentAd
Patch 4.3 Vorschau
SW:TOR Teaser
 
... der ICC Endgegner Arthas im Hard Mode trotz 30% Bonus-Buff noch immer nicht von weltweit mehr als 1% aller 25er Raids gelegt werden konnte? Halion Hard Mode sogar noch seltener? (Stand: September 2010)
Rectangle
mySigs
mySigs.de
Shakes Fidget
Facebook
Interessantes und Ungewöhnliches rund um World of Warcraft