Hallo liebe Elitepvpers Community,
Da die AddOn Sektion ziemlich tod ist was LUA-Coding angebelangt. Wollte ich einen kleinen LUA Guide schreiben. Vielleicht lassen sich ja manche dafür begeistern
INHALTSVERZEICHNIS
1. Vorwort |
2. LUA - Was ist das?- 2.1 Definition
- 2.2 Vorraussetzungen
- 2.3 Der richtige Editor
- 2.4 Andere Scriptsprachen in World of Warcraft?
|
3. LUA anwenden- 3.1 Kommentare
- 3.2 local
- 3.3 Strings und Werte
- 3.4 Bedingungen
- 3.5 Funktionen
- 3.6 Tabellen
- 3.7 Schleifen
- 3.8 Farben
- 3.9 Pfade
|
4. WoW API |
5. Frames- 5.1 Definition
- 5.2 Frames anwenden
- 5.3 Texte einfügen
- 5.4 Textur hinzuweisen
|
6. TOC Datei- 6.1 Definition
- 6.2 Aufbau
- 6.3 Alternativen
|
7. Selbststudium |
8. AddOns selber herstellen (fortgeschritten)- 8.1 Inspiration suchen
- 8.2 Blizzard UI
|
9. LUA Fehler erkennen- 9.1 LUA Fehler
- 9.2 Taint Fehler
|
10. Regeln |
11. Hilfreiche Links (Anhang) |
__________________________________________________ ____________
1. Vorwort
Da der LUA Guide von Los ziemlich veraltet ist und auch nicht weitergeführt wird, wollt ich es besser machen. Ich schreibe in diesem Guide nur über mein Wissen. Das heißt: Dinge die ich nicht weiß bzw. noch nie benutzt habe werd ich nicht hier erwähnen! Und zwischendurch werdet ihr ein paar Spoiler finden, öffnet sie dort sind ein paar Tipps zum lesen
__________________________________________________ ____________
2. LUA - Was ist das?
2.1 Definition
Lua (auf portugiesisch: Mond) ist eine Scriptsprache. Lua wurde 1993 von der Computer Graphics Technology Group der Päpstlichen Katholischen Universität von Rio de Janeiro in Brasilien entwickelt. In Wow wird sie benutzt um die AddOns zu schreiben. Alles was sich in eurem Interface\\AddOns\\... befindet sind
AddOns. Es ist eine sehr einfache
Scriptsprache, die man leicht verstehen kann. Natürlich sieht das fortgeschrittene Scripten ganz anders aus als bei Anfängern.
2.2 Vorraussetzungen
Ihr solltet nicht schnell aufgeben falls ihr nicht weiterkommt. Und wenn ihr diesen Satz liest und in
20 Minuten mit Freunden rausgeht, dann solltet ihr ab
hier aufhören zu lesen. Nehmt euch Zeit und liest euch alles in Ruhe durch.
Englisch- und Mathekenntnisse sind auch vorrausgesetzt. Falls ihr nicht weißt was Width,Height oder SetPoint bedeutet, dann besucht lieber einen Englischkurs.
Mathematik braucht man nicht unbedingt, aber das Koordinatensystem sollte man in der Schule gelernt haben sollen. Der Groß- und Kleinschreibung sollte man auch mächtig sein.
2.3 Der richtige Editor
Auf jeden Fall ist ein guter Editor wichtig. Der 0815 Editor den ihr kriegt bei der Windows Installation ist nicht geeignet um zu scripten. Ich empfehle dringend
Notepad++ zu benutzen. Er ist einfach zu bedienen und der Text ist farbig. Ich meine auch
Notepad++ und NICHT
Notepad!
Man kann auch Scite benutzen, aber da ich mich an den farbigen Text von Notepad++ gewöhnt habe, benutze ich den nicht. Scite punktet aber auf jeden Fall mit seiner Script Hilfe! Dennoch hält sich das mit der Script Hilfe in Grenzen. Ist also nichts besonderes.
Notepad++:
2.4 Andere Scriptsprachen in World of Warcraft?
Es existiert noch außer LUA in WoW
XML. XML muss man nicht lernen, alles was man in XML niederschreibt ist zu 99% mit
LUA genauso machbar. Ich werd auch nur ganz kurz über XML was schreiben, aber näher werde ich auch nicht darauf eingehen!
__________________________________________________ ______________
3. LUA anwenden
So nun kommen wir zum spannenden Teil. Es gibt verschiedene Scripts. Die wichtigsten sind
hier aufgelistet! Lest euch alles
Aufmerksam durch.
3.1 Kommentare
Ein Kommentar ist nichts besonderes. Es dient nur als Notiz für den Author oder dem Benutzer eines AddOns.
So könnte ein Kommentar aussehen im Editor.
3.2 local
Local wird euch dauernd begegnen in Scripts. Es sollte vor jeder Variable geschrieben werden.
mingxie ist nun lokalisiert und kann
NUR in der LUA Datei benutzt werden. Das heißt: Es kann nicht in anderen LUA Dateien genutzt werden, so zicken sich dann die AddOns nicht mehr gegenseitig an.
Jedoch -
local vergrößert nur die Datei und das Laden dauert länger, deswegen solltet ihr es nur dann benutzen, wenn ihr es auch
wirklich benötigt.
3.3 Strings und (booleanische) Werte
Ein String ist nichts anderes als ein Text der zwischen "" oder '' steht.
TIPP:
Es ist ziemlich egal ob ihr nun "text hier" oder 'text hier' benutzt. Es ändert nichts am LUA Script.
Code:
local mingxieguide = "Lolig" -- Das ist ein String
Nun könnt ihr
mingxieguide für den späteren Gebrauch anwenden. Das gleiche könnt ihr auch mit Werten machen!
Falls ihr 2 Strings gleichzeitig verwenden wollt so muss ein ".." stehen.
Code:
local a = "Lolig" -- Das ist ein String
local b = "Lol"
print(a..b)
Falls ihr mit Werten arbeiten wollt schaut die Addition/.../... so aus:
+ (addieren)
- (subtrahieren)
* (multiplizieren)
/ (dividieren)
Booleanische Werte sind nichts anderes als
true und
false. Kann man aber auch als
Ja und
Nein gelten lassen.
Beispiel:
Code:
Frame:SetMovable(true)
Frame:SetMovable(ja) [frame mobil machen]
3.4 Bedingungen
Eine Bedingung kann verschieden aussehen. Doch jede Bedingung fängt mit
if an und hört wieder mit
end auf! Ein Beispiel:
Code:
if login then
print("Du hast dich eingeloggt)
end
Dieser Code ist nur ein Beispiel! Ingame wird er zu einem LUA Fehler führen!
Hinweis:
print(...) gibt eine Nachricht nur in eurem Chatfenster aus!
Es geht auch so:
if not ... then ... end
Wenn nicht ... dann ... ende
if ... then ... else ... end
Wenn ... dann ... andernfalls ... ende
Diesmal ein funktionierendes Beispiel:
Code:
if not IsAddOnLoaded("Grid") then return end
TIPP:
Diesen Code immer am Anfang reinschreiben, dann wird euer restlicher Code erst garnicht geladen
Falls "Grid" nicht aktiv ist, dann hört der Script ab hier auf zu laden.
TIPP:
Falls ihr 2 Bedingungen hintereinander schreibt, dann könnt ihr diese Schreibweise benutzen um einen schöneren Syntax zu haben:
Code:
if ... then ... end
if ... then ... end
So sieht es schöner aus:
Code:
if ... then ... elseif ... end
3.5 Funktionen
Eine Funktion hat viele schreibweisen. Wir konzentrieren uns aber auf die einfachste
Code:
[B]local function FunktionName()[/B]
die
() sind wichtig. ohne die wird es zu einem LUA Fehler kommen! Eine solch einfache Funktion wird so nichts tun. Um sie auszuführen muss man den Funktionsnamen wiederholen.
Code:
local function Mingxie()
print("Mingxie")
end
Mingxie() -- Funktion wird nun ausgeführt
Es gibt aber auch Funktionen mit Parametern. Das heißt: Man kann Funktionen
ausfüllen damit sie erst arbeiten.
Code:
local function Mingxie(irgendwas)
print(irgendwas)
end
Mingxie("Lol")
Lol ist nun
irgendwas. Man kann aber natürlich mehrere Parameter einfügen, aber das ist als Anfänger garnicht nötig.
Um eine Funktion mit Rückgabe zu erstellen, reicht ein einfaches
return
(Ist von Los 1:1 kopiert)
Code:
local function ErsteTestFunction(zahl1)
local zahl = zahl1 + 2
return zahl
end
print(ErsteTestFunction(5)) --> Würde nun "7" ausgeben
3.6 Tabellen
Um eine Tabelle zu erstellen tut man als erstes:
Es kommt
kein local davor! So nun ist unsere Tabelle erstellt um sie auszufüllen machen wir anschließend:
Code:
mingxie = {
["lol"] = lol,
}
Bloß nicht das Komma vergessen!! Nun man schreibt bestimmt nicht die ganze Klammern etc mit. Mit Punkten gehts einfacher:
Gibt nun aus der Tabelle
["lol"] aus.
3.7 Schleifen
Eine Schleife wird häufig benutzt um mehrere Sachen gleichzeitig auszuführen, ohne für jeden Code das selbe 5-Mal hinzuschreiben. Eine Schleife beginnt immer mit
for i = 1, WERT_HIER do und endet mit einem
end.
So könnt eine
Schleife aussehen:
Code:
for i = 1, 5 do
if i [b]==[/b] 1 then
print("Erste Schleife")
i = i + 1 -- Wir erhöhen sie auf 2
elseif i [b]==[/b] 2 then
print("Zweite Schleife")
i = i + 1 -- Wir erhöhen sie auf 3
...
...
end
end
Anstatt der
5 kann auch natürlich ein anderer Wert stehen.
3.8 Farben
Natürlich kann man auch die Farben eines jeweiligen Objektes bestimmen. Es gibt Ausnahmen, wann man welche Farbmethode benutzt!
Frames (Objekt, dazu später noch mehr ...)
färben:
Ein Frame wird normalerweise durch ein
Backdrop (Hintergrund) sichtbar und gefärbt.
Code:
Frame:SetBackdrop(...) -- dazu später mehr
Frame:SetBackdropColor(ROT, GRÜN, BLAU, [ALPHA])
Frame:SetBackdropBorderColor(ROT, GRÜN, BLAU, [ALPHA])
Alpha (Sichtbarkeit) ist
optional. Normalerweise wird es via Dezimalstelle gefärbt, heißt also:
Code:
Frame:SetBackdrop(...) -- dazu später mehr
Frame:SetBackdropColor(0.58, 0.87, 0.91, 0.6)
Frame:SetBackdropBorderColor(0, 0, 0, 1)
0 = Schwarz
...
...
1 = Weiß
Falls ihr ohne Dezimalstellen färbt, dann müsst ihr es so machen:
Code:
Frame:SetBackdrop(...) -- dazu später mehr
Frame:SetBackdropColor(44/255, 78/255, 255/255, 0.6)
Frame:SetBackdropBorderColor(32/255, 68/255, 23/255, 1)
Eine Zahl die höher ist als 1 muss dann durch 255 dividiert werden.
Wert/255. 255 ist das Maximum.
Text (Fontstring):
Fontstrings (Schriftzüge, dazu aber später mehr) werden so gefärbt:
Code:
Frame.text:SetTextColor(ROT, GRÜN, BLAU, [ALPHA])
Texturen:
Texturen auf Objekten werden mit
SetTexture(ROT, GRÜN, BLAU, [ALPHA])
oder SetVertexColor(ROT, GRÜN, BLAU, [ALPHA]) gefärbt.
Code:
Frame.texture:SetTexture(ROT, GRÜN, BLAU, [ALPHA])
Frame.texture:SetVertexColor(ROT, GRÜN, BLAU, [ALPHA])
Statusbar: (zb: HP Leiste)
Statusbars hingegen werden mit
SetStatusBarColor(...) gefärbt.
Code:
Frame:SetStatusBarColor(ROT, GRÜN, BLAU, [ALPHA])
Text:
Texte hingegen die nicht mit
SetTextColor(...) gefärbt werden können, werden mit
|caarrggbb
|r bearbeitet. Funktioniert auch mit Strings!
print("|cff888888Dieser Text wird grau|r")
local a = "|cff888888Dieser Text wird grau|r"
Die Farbtabellen werd ich unten auflisten.
3.9 Pfade
Ein Pfad ist unbedingt von Nöten falls ihr eure Texturen oder Schriften verwenden wollt in WoW.
So könnte ein Pfad aussehen:
Code:
"Interface\\AddOns\\MeinOrdner\\MeineSchrift.ttf"
Der Pfad beginnt immer mit
Interface\\AddOns... danach folgt der Name eures Ordners und dann der Name euer Schrift! Nicht vergessen:
Die Endung muss immer dabei stehen sonst erkennt Wow die Schrift nicht!
Ein Pfad kann auch in Verbindung mit Strings angewendet werden:
Code:
local mingxie = "Interface\\AddOns\\MeinOrdner\\MeineSchrift.ttf"
Die Endungen für Texturen sind
.tga und
.blp.
Und auch nur diese werden angenommen!
.jpg und so weiter geht nicht.
Verschiedene Schreibweisen:
Code:
local mingxie = "Interface\\AddOns\\MeinOrdner\\MeineSchrift.ttf"
local mingx = [[Interface\AddOns\MeinOrdner\MeineTextur.tga]]
local mingz = [=[Interface\AddOns\MeinOrdner\MeineTexture2.blp]=]
Bei den eckigen Klammern kommt nur
ein Backslash.
__________________________________________________ ____________
4. WoW API
Eine ausführliche und gute Auflistung der WoW API findet ihr hier:
Siehe Anhang bitte...
Vergesst nicht die
Groß- und Kleinschreibung, Kommas, die (
geschweiften {}) Klammern
().
Die Seite ist auf
Englisch!
__________________________________________________ ____________
5. Frames
5.1 Definition
Nun erstellen wir Frames anstatt den 08/15 "Hello World" Müll. Erstellt zunächst eine .LUA Datei die ihr
mingxie bennent.
Was ist eigentlich ein
Frame? Nun es ist einfach
alles. Guckt auf euer Blizzard Interface etc. Alles was ihr sieht sind
Frames.
Frames bedeutet laut dict.cc:
Rahmen
Gerüst
Spant
Doch ich nenne es einfach ein
Objekt.
5.2 Frames anwenden
Ein Frame wird eingeleitet mit einer Variable
Nun ergänzen wir es mit der WoW API CreateFrame
Code:
local mingxie = CreateFrame("Frame", "FRAME_NAME", PARENT)
Nun ist unser Frame erstellt jedoch ist es nicht sichtbar, aber erstmal zur Erklärung.
CreateFrame("Frame", "FRAME_NAME", PARENT)
--
"Frame"
Die Eigentschaft unseres Frames ist "Frame" es gibt noch "Button", "Editbox" und "Statusbar", jedoch ist das nicht nötig als Anfänger.
-- "FRAME_NAME"
Hier kommt einfach nur ein Namen für das Frame. Zum Beispiel: "Mingxie". Jedoch benennt es nicht so: "Lolrolflicksdeh___imamkewl". Ein
einfach und
kurzer Name ist ein
guter Name.
-- "PARENT"
Ist der
Ursprung, sozusagen wo es verankert werden soll. Benutzt
UIParent.
So könnte es aussehen:
Code:
local mingxie = CreateFrame("Frame", "Mingxie", UIParent)
Wir bestimmen nun die Höhe und Breite des Frames.
Code:
local mingxie = CreateFrame("Frame", "Mingxie", UIParent)
mingxie:SetWidth(WERT)
mingxie:SetHeight(WERT)
Wir machen beginnen in der neuen Zeile mit unserer
Variable und machen einen Doppelpunkt. Nun kommt unser Script.
WERT ersetzt ihr nun mit einer Zahl.
SetWidth(WERT) -> Breite
SetHeight(WERT) -> Höhe
Code:
local mingxie = CreateFrame("Frame", "Mingxie", UIParent)
mingxie:SetWidth(50)
mingxie:SetHeight(70)
Jetzt verankern wir es:
Code:
local mingxie = CreateFrame("Frame", "Mingxie", UIParent)
mingxie:SetWidth(50)
mingxie:SetHeight(70)
mingxie:SetPoint(ANKERPUNKT1, PARENT, ANKERPUNKT2, X-Achse, Y-Achse)
Wer schon in der Schule das Koordinatensystem gerlernt hat, dem wird das sicherlich leicht fallen.
ANKERPUNKT1:
"CENTER", "TOPLEFT", "TOPRIGHT", "BOTTOMLEFT", "BOTTOMRIGHT", "LEFT", "RIGHT"
Zur Vereinfachung ein Bild:
PARENT: Am besten nehmt ihr
UIParent
ANKERPUNKT2: Siehe
ANKERPUNKT1. Die Ankerpunkte können gleich sein (empfehle ich für Anfänger).
X-Achse:
Wert eingeben.
Y-Achse:
Wert eingeben.
Code:
local mingxie = CreateFrame("Frame", "Mingxie", UIParent)
mingxie:SetWidth(50)
mingxie:SetHeight(70)
mingxie:SetPoint("CENTER", UIParent, "CENTER", 10, -10)
Jetzt wollen wir es sichtbar machen. Dies tun wir am besten mit einem
Backdrop (
Hintergrund)!
Code:
local mingxie = CreateFrame("Frame", "Mingxie", UIParent)
mingxie:SetWidth(50)
mingxie:SetHeight(70)
mingxie:SetPoint("CENTER", UIParent, "CENTER", 10, -10)
mingxie:SetBackdrop({
bgFile = Texturpfad,
edgeFile = Texturpfad,
edgeSize = WERT,
})
mingxie:SetBackdropColor(ROT, GRÜN, BLAU, [ALPHA])
mingxie:SetBackdropBorderColor(ROT, GRÜN, BLAU, [ALPHA])
Kommas nicht vergessen!
Ihr braucht Texturen für euren Hintergrund. Doch keine Angst - ihr könnt die von World of Warcraft benutzen. Ich erkläre aber fix die Begriffe:
bgFile:
Back
groundFile =
Hintergrundtextur
edgeFile:
Rahmentextur
edgeSize =
Rahmengröße (Der Wert: 1 eignet sich am besten)
Code:
local mingxie = CreateFrame("Frame", "Mingxie", UIParent)
mingxie:SetWidth(50)
mingxie:SetHeight(70)
mingxie:SetPoint("CENTER", UIParent, "CENTER", 10, -10)
mingxie:SetBackdrop({
bgFile = "Interface\\Buttons\\WHITE8x8",
edgeFile = "Interface\\Buttons\\WHITE8x8",
edgeSize = 1
})
mingxie:SetBackdropColor(0.27, 0.27, 0.27, 1)
mingxie:SetBackdropBorderColor(0.21, 0.21, 0.21, 1)
So sollte es im Spiel aussehen:
5.3 Texte einfügen
Als nächstes fügen wir einen Text hinzu. Dies ist ganz einfach:
Zunächst erstellen wir wieder eine Variable am besten sollte die mit der vorherigen Variable anfangen.
Code:
mingxie.text = [b]Variable[/b]:CreateFontString("FRAME_NAME", "EBENE") -- local ist nicht nötig
Kurze Erklärung:
Variable: Natürlich die Variable unseres Frames: mingxie.
"FRAME_NAME": Der Name des Fontstrings (Schriftzug) ist nicht nötig, also schreiben wir ein
nil.
nil ist nichts, sozusagen wir geben kein Namen für den Fontstring.
"EBENE": Die Ebene auf welche sie sich befinden soll. Soll sie überdeckt werden oder immer im Vodergrund stehen? Mehr Informationen über
Layer findet ihr im Anhang.
So könnte unser Fontstring aussehen:
Code:
mingxie.text = mingxie:CreateFontString(nil, "ARTWORK") -- local ist nicht nötig
Jetzt brauchen wir eine Schrift die wir benutzen können. Ihr könnt eure eigene oder die von World of Warcraft nehmen.
Code:
mingxie.text = mingxie:CreateFontString(nil, "ARTWORK")
mingxie.text:SetFont(PFAD_DER_SCHRIFT, SCHRIFTGRÖßE, [KONTUR])
PFAD_DER_SCHRIFT = Siehe im Kapitel LUA Anwenden.
SCHRIFTGRÖßE = Ein Wert muss hier eingegeben werden. Für Pixelschriften solltet ihr 8/10 nehmen. Für normale wie diese, die ihr grad liest, eignet sich 12/14.
KONTUR =
optional. Ein schwarzer Umriss wird geziert um die Schrift. Für normale Schriften nehmt ihr "OUTLINE" oder "THINOUTLINE, bei Schriftgröße über 20
solltet ihr "THICKOUTLINE" nehmen. Falls ihr Pixelfonts habt dann müsst ihr "OUTLINEMONOCHROME" nehmen.
Code:
mingxie.text = mingxie:CreateFontString(nil, "ARTWORK")
mingxie.text:SetFont("Fonts\\ARIALN.ttf", 12, "OUTLINE")
Als nächstes verankert ihr den Schriftzug.
Code:
mingxie.text = mingxie:CreateFontString(nil, "ARTWORK")
mingxie.text:SetFont("Fonts\\ARIALN.ttf", 12, "OUTLINE")
mingxie.text:SetPoint("CENTER", mingxie)
Ihr fragt euch sicherlich wieso ab mingxie aufgehört wird. Ganz einfach, man kann Teile eines Codes weglassen.
Zum Beispiel:
So würde es aussehen wenn ich alles ausfüllen würde
Code:
mingxie.text:SetPoint("CENTER", mingxie, "CENTER", 0, 0)
Das ist garnicht nötig. Ihr verschwendet nur eure Zeit. Der Fontstring ist schon in der Mitte und die X/Y-Achsen muss man dann auch nicht bestimmen, soll ja auch in der Mitte bleiben.
Zum Schluss fügen wir einen Text hinzu.
Code:
mingxie.text = mingxie:CreateFontString(nil, "ARTWORK")
mingxie.text:SetFont("Fonts\\ARIALN.ttf", 12, "OUTLINE")
mingxie.text:SetPoint("CENTER", mingxie)
mingxie.text:SetText("Mingxie war hier")
So sollte es aussehen:
5.4 Textur hinzuweisen
Eine Textur einzufügen ist ein Kinderspiel. Der Aufbau und Code ähnelt dem
Fontstring.
Code:
mingxie.textur = mingxie:CreateTexture("NAME", "EBENE")
Erklärung:
"NAME": Nicht nötig.
"EBENE": Siehe nach unter
5.3 Texte einfügen
Code:
mingxie.textur = mingxie:CreateTexture(nil, "ARTWORK")
Natürlich müssen wir nun einen Texturenpfad hinzuweisen. Es muss aber keine Textur sein, ihr könnt auch Farben eintragen. Jedoch sieht dann die Textur "platt" aus.
Code:
mingxie.textur = mingxie:CreateTexture(nil, "ARTWORK")
mingxie.textur:SetTexture(PFAD_DER_TEXTUR/ROT, GRÜN, BLAU, [ALPHA])
Falls ihr eine eigene Textur wollt und es noch färben wollt, dann tut dies:
Code:
mingxie.textur = mingxie:CreateTexture(nil, "ARTWORK")
mingxie.textur:SetTexture(PFAD_DER_TEXTUR)
mingxie.textur:SetVertexColor(ROT, GRÜN, BLAU, [ALPHA])
Nicht vergessen die Textur zu verankern!
Code:
mingxie.textur = mingxie:CreateTexture(nil, "ARTWORK")
mingxie.textur:SetTexture("Interface\\Buttons\\WHITE8x8")
mingxie.textur:SetVertexColor(0.27, 0.27, 0.27, 1)
mingxie.textur:SetAllPoints(mingxie)
Hinweis:
Die Textur die ich gewählt hab als Pfad ist aus World of Warcraft, das heißt ihr müsst sie nicht downloaden oder ähnliches!
Ihr habt sicherlich bemerkt das ich diesmal
SetAllPoints() benutzt habe. Sowie der Name schon verrät, verankere ich die ganze Texture auf das Frame.
So sieht es im Spiel aus:
Ja, kein großer Unterschied. Liegt auch daran das CreateTexture nur wenig/selten angewendet wird. Ist eben leicht ersetzbar.
Im Grunde genommen sieht das Frame noch sehr
öde aus. Es war nur ein Beispiel um euch zu zeigen was ihr damit anstellen könnt. Fantasie ist hier halt gefragt.
__________________________________________________ ____________
6. TOC Datei
6.1 Definition
Jetzt mal hinter den Kulissen! Die .TOC (
Table
of
Contents) Datei erkennt euren Ordner und lädt eure LUA Dateien. Das heißt ohne die .TOC Datei funktiniert kein AddOn!
Ihr sollte einen Ordner erstellen den ihr nach Wunsch bennent. Aber Achtung die .TOC Datei
muss den gleichen Namen haben wie der Ordner sonst geht es nicht. Und stellt sicher, dass eure .LUA Datei im Ordner ist.
Der Aufbau ist recht simpel und erfordert keinerlei LUA Kenntnisse.
6.2 Aufbau
Als erstes erstellt ihr eine .TOC Datei. Nun füllt ihr sie aus:
Code:
## Interface:
## Title:
## Notes:
## Author:
LUA_DATEI_NAME.lua
Vor jedem Wort sollte ein "##" stehen. Außnahme: LUA Dateienname. Bloß nicht die Endungen vergessen!
So könnte es aussehen:
6.3 Alternativen
Eine
richtige Alternative zu der .TOC Datei gibt es nicht, wenn nur falls man LUA Dateien laden will, aber das ist als Anfänger nicht nötig und was ändern tut sich nichts.
So könnte alles aussehen, falls ihr alles befolgt habt im Guide:
__________________________________________________ ____________
7. Selbststudium
Auf dem weiteren Weg. Geht auf diverse Seiten wo man AddOns runterladen kann (Links im Anhang). Nehmt AddOns die nicht so groß sind. Deren Aufbau sollten leicht sein und verständlich.
Verändert sie nach euren Wünschen. Nach und nach wird euch alles leichter fallen. Ich helfe euch auch gern, falls ihr mal nicht weiterkommen solltet.
Hört aber nicht nach 3 Tagen auf und fängt nach einer Woche wieder an. Das nützt nichts.
Entweder beschäftigt ihr euch
intensiv damit oder ihr lasst es.
LUA ist wirklich ganz einfach, das meiste ist nur Auswendig lernen und Englisch/Mathe mal hier und da.
Wenn ihr meint ihr seid fortgeschritten genug, dann holt euch
Tukui (Link im Anhang). Tukui ist ein UI-Pack das auf
LUA basiert. Es besitzt ein In Game Menü. Ich kann es nur empfehlen!
Ich selber benutze sogar Tukui. Natürlich editiert
__________________________________________________ ____________
8. AddOns selber herstellen
8.1 Inspiration suchen
Das wichtigste ist natürlich die Inspiration. Ohne Inspiration, keine AddOns. Schaut doch mal in den "Zeigt euer Interface" Thread nach oder sonst wo. Ihr werdet sicherlich eine Inspiration finden.
Euer AddOn muss nicht immer was neues sein. Man kann es ja schließlich besser machen als andere. Falls ihr wirklich ideenlos seid, dann spielt andere Videospiele. Es gibt sogar UI (
User
Interface = Benutzerinterface) Packs die das Diablo, Aion, ... Theme haben.
8.2 Blizzard UI
Meine meisten Inspirationen kommen vom
Blizzard UI. Ich hab hier eine Skala einfügt plus Bild an was ihr euch so ranmachen könnt.
1 =
Leicht
2 =
Mittel
3 =
Fortgeschritten
__________________________________________________ ____________
9. Fehler erkennen
9.1 LUA Fehler
Ihr habt eine Fehlermeldung bekommen? Kein Problem! Meistens sind es Tippfehler oder der Script ist falsch. Hier die meisten LUA Fehler die euch passieren können.
Falls ihr keine LUA Fehlermeldung an habt, dann könnt ihr die schnell anzeigen lassen.
Der Pfad eurer Schrift ist falsch. Überprüft nochmal ob der Pfad auch wirklich richtig ist!
Tippfehler bzw diese Variable existiert garnicht.
Ihr habt ein end vergessen
Klammer fehlt.
( ) <-
Richtig
{ } <-
Richtig
( } <-
Falsch
9.2 Taint Fehler
Taints blockieren das Script eines AddOns. Treten aber selten auf. Die meisten Taints entstehen wenn man Aktionen wie bewegen, verstecken, ... während dem Kampf macht.
Im Chat steht dann auch eine Nachricht in gelb. Falls ihr die richtige Ursache herausfinden wollt dann geht unter
World of Warcraft/Logs/Taints.log
Dort sollte stehen was ihr falsch gemacht habt.
Lua Fehler sollten auf garkeinen Fall ignoriert oder abgeschaltet werden! Sie wird/kann eure FPS in den Keller sinken lassen!
__________________________________________________ ____________
10. Regeln
Es gibt auch sogar Regeln an denen man sich halten muss. Falls ihr das nicht tut dann wird sich
Blizzard um euch kümmern.
__________________________________________________ ____________
11. Hilfreiche Links (Anhang)
Ich hab doch das Einverständnis von
lowfyr bekommen (
Vielen Dank!).
Hilfreiche Links:
Hier könnt ihr eure AddOns runterladen/hochladen
Eins der besten UI Packs: Tukui
RGB Tabelle
RGB Tabelle
Ähnlich wie Wikipedia extra für Lua (WoW)
Ähnlich wie Wikipedia extra für Lua (WoW)
Hier könnt ihr eure AddOns runterladen/hochladen
Hier könnt ihr eure AddOns runterladen/hochladen
Farbentabelle: (Für
3.9)
PHP Code:
GREY "|cff888888"
WHITE "|cffffffff"
SUBWHITE "|cffbbbbbb"
MAGENTA "|cffff00ff"
YELLOW "|cffffff00"
CYAN "|cff00ffff"
LIGHTRED "|cffff6060"
LIGHTBLUE "|cff00ccff"
BLUE "|cff0000ff"
GREEN "|cff00ff00"
RED "|cffff0000"
GOLD "|cffffcc00"
ALICEBLUE"|cFFF0F8FF"
ANTIQUEWHITE"|cFFFAEBD7"
AQUA "|cFF00FFFF"
AQUAMARINE "|cFF7FFFD4"
AZURE "|cFFF0FFFF"
BEIGE "|cFFF5F5DC"
BISQUE"|cFFFFE4C4"
BLACK "|cFF000000"
BLANCHEDALMOND "|cFFFFEBCD"
BLUE "|cFF0000FF"
BLUEVIOLET "|cFF8A2BE2"
BROWN "|cFFA52A2A"
BURLYWOOD"|cFFDEB887"
CADETBLUE"|cFF5F9EA0"
CHARTREUSE "|cFF7FFF00"
CHOCOLATE"|cFFD2691E"
***** "|cFFFF7F50"
CORNFLOWERBLUE "|cFF6495ED"
CORNSILK "|cFFFFF8DC"
CRIMSON "|cFFDC143C"
CYAN "|cFF00FFFF"
DARKBLUE "|cFF00008B"
DARKCYAN "|cFF008B8B"
DARKGOLDENROD "|cFFB8860B"
DARKGRAY "|cFFA9A9A9"
DARKGREEN"|cFF006400"
DARKKHAKI"|cFFBDB76B"
DARKMAGENTA "|cFF8B008B"
DARKOLIVEGREEN "|cFF556B2F"
DARKORANGE "|cFFFF8C00"
DARKORCHID "|cFF9932CC"
DARKRED "|cFF8B0000"
DARKSALMON "|cFFE9967A"
DARKSEAGREEN"|cFF8FBC8B"
DARKSLATEBLUE "|cFF483D8B"
DARKSLATEGRAY "|cFF2F4F4F"
DARKTURQUOISE "|cFF00CED1"
DARKVIOLET "|cFF9400D3"
DEEPPINK "|cFFFF1493"
DEEPSKYBLUE "|cFF00BFFF"
DIMGRAY "|cFF696969"
DODGERBLUE "|cFF1E90FF"
FIREBRICK"|cFFB22222"
FLORALWHITE "|cFFFFFAF0"
FORESTGREEN "|cFF228B22"
FUCHSIA "|cFFFF00FF"
GAINSBORO"|cFFDCDCDC"
GHOSTWHITE "|cFFF8F8FF"
GOLD "|cFFFFD700"
GOLDENROD"|cFFDAA520"
GRAY "|cFF808080"
GREEN "|cFF008000"
GREENYELLOW "|cFFADFF2F"
HONEYDEW "|cFFF0FFF0"
HOTPINK "|cFFFF69B4"
INDIANRED"|cFFCD5C5C"
INDIGO"|cFF4B0082"
IVORY "|cFFFFFFF0"
KHAKI "|cFFF0E68C"
LAVENDER "|cFFE6E6FA"
LAVENDERBLUSH "|cFFFFF0F5"
LAWNGREEN"|cFF7CFC00"
LEMONCHIFFON"|cFFFFFACD"
LIGHTBLUE"|cFFADD8E6"
LIGHT***** "|cFFF08080"
LIGHTCYAN"|cFFE0FFFF"
LIGHTGRAY"|cFFD3D3D3"
LIGHTGREEN "|cFF90EE90"
LIGHTPINK"|cFFFFB6C1"
LIGHTRED "|cFFFF6060"
LIGHTSALMON "|cFFFFA07A"
LIGHTSEAGREEN "|cFF20B2AA"
LIGHTSKYBLUE"|cFF87CEFA"
LIGHTSLATEGRAY "|cFF778899"
LIGHTSTEELBLUE "|cFFB0C4DE"
LIGHTYELLOW "|cFFFFFFE0"
LIME "|cFF00FF00"
LIMEGREEN"|cFF32CD32"
LINEN "|cFFFAF0E6"
MAGENTA "|cFFFF00FF"
MAROON"|cFF800000"
MEDIUMAQUAMARINE "|cFF66CDAA"
MEDIUMBLUE "|cFF0000CD"
MEDIUMORCHID"|cFFBA55D3"
MEDIUMPURPLE"|cFF9370DB"
MEDIUMSEAGREEN "|cFF3CB371"
MEDIUMSLATEBLUE"|cFF7B68EE"
MEDIUMSPRINGGREEN "|cFF00FA9A"
MEDIUMTURQUOISE"|cFF48D1CC"
MEDIUMVIOLETRED"|cFFC71585"
MIDNIGHTBLUE"|cFF191970"
MINTCREAM"|cFFF5FFFA"
MISTYROSE"|cFFFFE4E1"
MOCCASIN "|cFFFFE4B5"
NAVAJOWHITE "|cFFFFDEAD"
NAVY "|cFF000080"
OLDLACE "|cFFFDF5E6"
OLIVE "|cFF808000"
OLIVEDRAB"|cFF6B8E23"
ORANGE"|cFFFFA500"
ORANGERED"|cFFFF4500"
ORCHID"|cFFDA70D6"
PALEGOLDENROD "|cFFEEE8AA"
PALEGREEN"|cFF98FB98"
PALETURQUOISE "|cFFAFEEEE"
PALEVIOLETRED "|cFFDB7093"
PAPAYAWHIP "|cFFFFEFD5"
PEACHPUFF"|cFFFFDAB9"
PERU "|cFFCD853F"
PINK "|cFFFFC0CB"
PLUM "|cFFDDA0DD"
POWDERBLUE "|cFFB0E0E6"
PURPLE"|cFF800080"
RED"|cFFFF0000"
ROSYBROWN"|cFFBC8F8F"
ROYALBLUE"|cFF4169E1"
SADDLEBROWN "|cFF8B4513"
SALMON"|cFFFA8072"
SANDYBROWN "|cFFF4A460"
SEAGREEN "|cFF2E8B57"
SEASHELL "|cFFFFF5EE"
SIENNA"|cFFA0522D"
SILVER"|cFFC0C0C0"
SKYBLUE "|cFF87CEEB"
SLATEBLUE"|cFF6A5ACD"
SLATEGRAY"|cFF708090"
SNOW "|cFFFFFAFA"
SPRINGGREEN "|cFF00FF7F"
STEELBLUE"|cFF4682B4"
TAN"|cFFD2B48C"
TEAL "|cFF008080"
THISTLE "|cFFD8BFD8"
TOMATO"|cFFFF6347"
TRANSPARENT "|c00FFFFFF"
TURQUOISE"|cFF40E0D0"
VIOLET"|cFFEE82EE"
WHEAT "|cFFF5DEB3"
WHITE "|cFFFFFFFF"
WHITESMOKE "|cFFF5F5F5"
YELLOW"|cFFFFFF00"
YELLOWGREEN "|cFF9ACD32"
__________________________________________________ ____________
Ich hoffe der Guide hat euer Interesse geweckt oder geholfen
Falls ihr grammatikalische-, lexikalische-, inhaltliche- oder Rechtschreibfehler findet oder noch Sachen unklar sind, dann macht mich bitte darauf aufmerksam! Natürlich über eine
private Nachricht
Credits:
Los - Inspiration und bisschen abgeguckt
Mit freundlichen Grüßen
Mingxie~