Fals wer fehler findet kanners gerne sagen bin ne besonders gut in tuts schreiben :P und das hier hab ich ma eben aufgeschrieben wies mir grade eingefallen is :sMehr kommt noch.
1. Allgemeines
1.1 Kommentare2. Typen und Werte
1.2 Nachrichten Ausgeben
1.3 lokal
2.1 String3. Anweisungen
2.2 Number
2.3 Boolean
3.1 if then else4. Tabellen
3.2 Schleifen
4.1 Tabelle erstellen5. Functionen
4.2 for k,v in pairs() do
5.1 Einfache Function6. WoW API
5.2 Function mit Parameter
5.3 Function mit Rückgabe
5.4 Function vorzeitig abbrechen
6.1 Wie verwenden
1. Allgemeines
Um in WoW eine lua function auszuführen gibt es 2 möglichkeiten, entweder /run oder /script1.1 Kommentare
Kommentare kann man wie folgt in seine lua schreiben (Kommentare dienen nur der übersicht und haben keine Auswirkungen auf das Addon)1.2 Nachrichten Ausgeben
PHP Code:
-- Ein einzeiliger Kommentar
--[[ Ein Kommenter
über mehrere
Zeilen ]]--
Um etwas ingame auszugeben (was man nur selbst siht!) kann man folgendes nutzen1.3 lokal
Alle 3 Befehle bewirken das selbe, nämlich das der Text Hi im chatfenster1 ausgegeben wird.PHP Code:
ChatFrame1:AddMessage("Hi")
DEFAULT_CHAT_FRAME:AddMessage("Hi")
print("Hi")
lokale Variablen sind ziemlich wichtig und es sollte vor alle Variablen geschrieben werden. Wird etwas lokal kann es nur innerhalb dieser Datei/Schleife/function verwendet werden.2. Typen und Werte
PHP Code:
lokal Test = "lol"
lokal Num = 1
local t = {}
In lua gibt es verschiedene Grundtypen ich werde hier mal die wichtigsten nennen. Um das am leichtesten verständlich zu machen schaut man sich das ganze am besten mal ingame an indem man die einfache function type() benutzt. Eine genauere erklärung zu allem folgt unten.2.1 String
Alle 3 Befehle bewirken das selbe, nämlich das der Text Hi im chatfenster1 ausgegeben wird.PHP Code:
/run print(type("Hi")) --> Gibt "string" zurück. Ein string ist an den "" oder '' zu erkennen
/run print(type(123)) --> Gibt "number" zurück. Number ist wie der name schon sagt nur eine Zahl.
/run print(type(true)) --> Gibt "boolean" zurück. Boolean sind true/false
Strings sind eigentlich nichts anderes als eine Folge von Zeichen die innerhalb von "" oder '' stehn.2.1 Number
Um strings zusammenzufügen braucht man immer die 2 Punkte hintereinenader ..PHP Code:
a = "Ich bin ein string"
b = "Ein string mit zahlen 12345"
print(a) --> gibt Ich bin ein string aus
print(b) --> gibt Ein string mit zahlen 12345 aus
print("12345") --> gibt 12345 aus
Strings können auch eingefärbt werden und zwar mit |caarrggbb|rPHP Code:
a = "Ich bin "
b = "ein string."
print(a..b) --> gibt Ich bin ein string. aus
print(a.."ein string.") --> gibt Ich bin ein string. aus
Strings können auch verschieden bearbeitet werden hier mal ne kleine übersicht wer mehr erfahren will Das alles zu erklären währe keine kleine übersicht mehr^^PHP Code:
RoterString = "|cffff0000RoterString|r"
BlauerString = "|cff0070ddBlauerString|r"
GrünerString = "|cff1eff00GrünerString|r"
Um das am besten zu verstehen kann mas ja mal ingame Testen
PHP Code:
/run print("Erste Zeile\nZweite Zeile") --> Gibt Erste Zeile aus und in der nächsten Zeile Zweite Zeile
/run print("Die \"Anführungszeichen\" bleiben") --> Gibt die Anführungszeichen mit also: Die "Anführungszeichen" bleiben ohne die "\" würde es zu einem fehler kommen.
/run print(string.lower("CAPS INC")) --> Wandelt alles in kleinbuchstaben um also: caps inc
Numbers wie der Name schon sagt sind zahlen. Die zahlen werden eig verwendet wenn man z.B. mit den Zahlen was rechnen will. Die zahlen dürfen nicht innerhalb der "" oder '' stehen.2.3 Boolean
Als Rechenzeichen verwendet man:PHP Code:
a = 1
b = 2
print(a) --> gibt 1 aus
print(b) --> gibt 2 aus
print(a+b) --> gibt 3 aus
print(1+2) --> gibt 3 aus
+ um etwas zu Addieren (2+2 = 4)
- um etwas zu Subtrahieren (4-2 = 2)
/ um etwas zu Dividieren (4/2 = 2)
* um etwas zu Multiplizieren (2*4 = 8)
Solltet ihr mit Zahlen rechnen wollen diese allerdings als String festgelegt/zurückgegeben werden gibt es die funktion tonumber()
PHP Code:
print("1"+"2") --> nicht möglich
print(1+"2") --> Auch nicht möglich
print(1+2) --> Funktioniert
a = "1"
b = 2
print(a+b)-- Funktioniert nicht da a ja ein string ist. Das lässt sich einfach mit tonumber() lösen das den string in eine number umwandelt.
a = tonumber(a) -- a wird zu einer number
print(a+b) -- gibt nun 3 aus
Boolean ist wie vorher schon einmal erwähnt true oder false.3. Anweisungen
3.1 if then else
Das wohl wichtigste um if then else erstmal zu benutzen sind wohl die Vergelichsoperatoren.3.2 Schleifen
if then else überprüft die gegebene Bedinung und führt je nachdem ob diese gegeben ist oder nicht den if oder else Teil aus.PHP Code:
< --> kleiner
> --> größer
<= --> kleiner oder gleich
>= --> größer oder gleich
== --> gleich
~= --> ungleich
Hier n paar beispiele
Man kann damit auch überprüfen ob etwas exestiert oder nicht das macht man dann soPHP Code:
vergleich1 = true
vergleich2 = false
if vergleich1 == true then --> das "== true" ist nicht unbedingt nötig es würde auch reichen "if vergleich1 then"
print("if wird ausgeführt") --> wird ausgegeben weil vergleich1 ja true ist.
else
print("else wird ausgeführt")
end
if vergleich2 == true then
print("if wird ausgeführt")
else
print("else wird ausgeführt") --> wird ausgegeben weil vergleich2 ja false ist.
end
if vergleich2 ~= true then --> Hier währe auch möglich zu schreiben "if not vergleich2 then"
print("if wird ausgeführt") --> wird ausgegeben weil vergleich2 ja ungleich true ist also false.
else
print("else wird ausgeführt")
end
PHP Code:
if vergleich then
print("if wird ausgeführt")
else
print("else wird ausgeführt") --> wird ausgegeben weil vergleich ja nicht exestiert.
end
if not vergleich then
print("if wird ausgeführt") --> wird ausgegeben weil vergleich nicht exestiert (Das "not" ist hierbei wichtig).
else
print("else wird ausgeführt")
end
Es giebt verschiedene schleifen alle haben gemeinsam das sie solange durchlaufen bis die bedinung erfüllt is.4. Tabellen
Die for Schleife
Die for schleife kann in 2 arten geschrieben werden
for i=1,5 do
- i: "i" steht für die aktuelle Zahl die gerade ausgeführt wird, bei dem beispiel wird bei i in jedem durchlauf 1 dazugezählt
- i: Bestimmt den anfangswert von "i" in dem fall also 1 kann aber auch 0 oder -5 sein.
- 5: steht für die Zahl die "i" erreichen muss um die schleife zu beenden
for i=1,5,0.5 do
- i: "i" steht für die aktuelle Zahl die gerade ausgeführt wird
- i: Bestimmt den anfangswert von "i" in dem fall also 1 kann aber auch 0 oder -5 sein.
- 5: steht für die Zahl die "i" erreichen muss um die schleife zu beenden
- 0.5: gibt eine Zahl an wieviel pro durchlauf zu "i" hinzugezählt wird
Die while SchleifePHP Code:
for i=1,5 do
print(i) --> gibt bei jedem durchlauf i aus am schluss hat man also 5 ausgaben mit den zahlen von 1-5
end
for i=1,5,0.5 do
print(i) --> gibt bei jedem durchlauf i aus am schluss hat man also 10 ausgaben mit den zahlen von 1-10
end
Die while schleife wird so lange ausgeführt bis die bedinung false ist.
Schleifen vorzeitig beendenPHP Code:
i = 1
schleife = true
while schleife do --> wiederholt sich solange "schleife" true
i=i+1 --> Bei jedem durchgang wird zu "i" eins dazugezählt
if i == 5 then --> wenn "i" 5 ist dann
schleife = false --> schleife wird auf false gesetzt.
end
end
Um eine Schleife vorzeitig zu beenden gibt es break das macht nichts anderes als die schleife an der stelle zu beenden.
4.1 Tabelle erstellen
Tabelle erstellen und danach füllen4.2 for k,v in pairs() do
Es ist aber auch möglich die Tabelle gleich am anfang zu füllenPHP Code:
t = {} --> Tabelle wird erstellt
t["a"] = "stringa" --> Tabelle wird gefüllt
print(t["a"]) --> gibt nun "stringa" aus
Es können beliebig viele Tabellen in 1 Tabelle erstellt werdenPHP Code:
t = { --> Tabelle wird erstellt
["a"] = "stringa", --> Tabelle wird gefüllt, hier ist das "," wichtig sonst gibts nen fehler
}
print(t["a"]) --> gibt auch "stringa" aus
Sollte eine Tabelle nur mit einzelnen strings gefüllt werden ist es wichtig zu beachten das lua ab [1] anfängt zu zählenPHP Code:
t = { --> Tabelle wird erstellt
["a"] = {
["b"] = "stringa", --> Tabelle wird gefüllt, hier ist das "," wichtig sonst gibts nen fehler
}
}
print(t["a"]["b"]) --> gibt auch "stringa" aus
PHP Code:
t = {"stringa","stringb","stringc","stringd"} --> Die strings werden hier durchnummerriert
print(t[1]) --> gibt auch "stringa" aus
Dies ist eig auch nichts anderes als eine schleife um Tabellen auszulesen5. Functionen
PHP Code:
t= {
["k1"] = "v1",
["k2"] = "v2",
["k3"] = "v3",
}
for k,v in pairs(t) do
print(k.." = "..v) --> gibt nun bei jedem durchlauf den key und die value dazu aus also beim ersten ma "k1 = v1" zweiten ma "k2 = v2" dritten ma "k3 = v3" dann beedet sich schleife automatisch
end
5.1 Einfache Function
Eine function wird immer mit "function FunktionName()" erstellt wichtig sind die () danach mehr dazu später5.2 Function mit Parameter
PHP Code:
function ErsteTestFunction()
print("Hi ich bin eine Function")
end
--> Beim ausführen dieser Function wird nur das "Hi ich bin eine Function" ausgegeben mehr nicht
Eine function kann auch so erstellt werden, dass benötigtest erst mit aufrufend er function dazugegeben wird. Dazu werden die () am ende der function gefüllt.5.3 Function mit Rückgabe
Wichtig dabei ist nur später vlt kontrollen einzubaun fals etwas nicht mitgegeben wird, das aber gebraucht wird innerhalb der function.
PHP Code:
function ErsteTestFunction(bla1,bla2)
print(bla1..bla2)
end
--> ErsteTestFunction("Hi ich bin ","eine Function") --> Gibt "Hi ich bin eine Function" aus.
Um eine function mit einer rückgabe zu versehn wird "return" benutzt5.4 Function vorzeitig abbrechen
PHP Code:
function ErsteTestFunction(zahl1)
local zahl = zahl1 + 2
return zahl
end
print(ErsteTestFunction(5)) --> Würde nun "7" ausgeben
Um eine function vorzeitig zu beenden wird "break" benutzt.6. WoW API
Das wird eig erst bei späteren functionen wichtiger, die einen wert unbedingt brauchen weil sie sonst nen lua fehler verursachen würden.
PHP Code:
function ErsteTestFunction(string)
if not string then --> Wenn kein string vorhanden ist wird return ausgeführt und dadurch die function beendet
return
end
print(string) --> gibt es string wird dieser ausgegeben
end
ErsteTestFunction("string") --> Gibt string aus
ErsteTestFunction() --> Gibt nichts aus und verursacht auch keinen lua fehler
Eine übersicht alle WoW API functionen findet ihr hier.6.1 Wie verwenden
So ne seite ist wie folgt aufgebaut
Function mit rückgabewerten und erlaubten Parametern. Danach die Rückgabewerte und die erlaubten Parameter mit infos dazu. Miestens auch beispiele dazu.
Bei den Parametern siht man oft sachen die in [] geschrieben sind das sind werte die optional sind. Also bei unsrem beispiel
SendChatMessage("msg" [,"chatType" [,"language" [,"channel"]]]) ()
- msg: Die nachricht muss eingegeben werden. Das ist hier die Chatausgabe
- chatType: nicht benötigt. Genau beschreibung findet sich auf der wowwikiseite
- language: nicht benötigt. Genau beschreibung findet sich auf der wowwikiseite
- channel: nicht benötigt. Genau beschreibung findet sich auf der wowwikiseite
link = GetSpellLink(spellId or spellName) ()PHP Code:
SendChatMessage("Test") --> gibt "Test" im Sagenchat aus
SendChatMessage("Test","PARTY") --> gibt "Test" im Gruppenchat aus
SendChatMessage("Test","PARTY","DRAENEI") --> gibt "Test" im Gruppenchat aus allerdings in der sprache die nur Draenai haben
SendChatMessage("Test","WHISPER",nil,"WhisperName") --> flüstert "Test" and WhisperName
SendChatMessage("Test","CHANNEL",nil,"1") --> gibt "Test" im Channel Nr 1 aus
- link: Der link für den spell
- spellId: SpellId für einen spell dessen link man will
- spellName: SpellName für für einen spell dessen link man will (es ist aber zu empfehlen immer die ID zu benutzen)
PHP Code:
link = GetSpellLink(52610) --> 52610 = Wildes Brüllen
print(link) --> Gibt einen link für den spell von Wildes Brüllen aus
print(GetSpellLink(52610)) --> Gibt einen link für den spell von Wildes Brüllen aus