DE/Lua Tutorial: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 34: Line 34:
Standardmäßig wird die Sprache Lua automatisch an der Dateiendung .lua erkannt, solltest Du eine andere Endung verwenden und trotzdem das Lua Syntax-Highlighting verwenden wollen, kannst Du es oben im Menü „Sprachen“ einstellen.
Standardmäßig wird die Sprache Lua automatisch an der Dateiendung .lua erkannt, solltest Du eine andere Endung verwenden und trotzdem das Lua Syntax-Highlighting verwenden wollen, kannst Du es oben im Menü „Sprachen“ einstellen.


To be continued... --[[User:NeonBlack|NeonBlack]] 22:28, 8 August 2008 (CEST)
Wer ohne MTA seine kleinen Lua Skripte testen oder ausführen möchte, kann sich [http://luabinaries.luaforge.net/download.html hier] einen kostenlosen standalone Interpreter herunterladen. Fälschlicherweise steht auf dieser Seite hinter der Executable für die Windows 32Bit Edition „Windows x86 Executables“. Lass Dich davon nicht täuschen. Wenn Du Dir nicht sicher bist, welche Windows Edition Du hast, dann hast Du wahrscheinlich eine 32 Bit Version. Die aktuelle Version (Win 32 Bit) dafür gibt es bei einem Klick auf [http://luaforge.net/frs/download.php/3134/lua5_1_3_Win32_bin.zip lua5_1_3_Win32_bin.zip].<br>
Nach dem Download kann der Standalone Interpreter mit einem Doppelklick auf die „lua5.1.exe“ gestartet werden. Dort kann man dann direkt Lua Befehle eingeben oder ein Script laden. Dies geht wie folgt:
<syntaxhighlight lang="lua">dofile("dateiname.lua")</syntaxhighlight>
 
==Variablen==
===Einführung===
Eine Variable kann man sich wie eine kleine Kiste vorstellen, auf der außen ein Bezeichner (oder Name) steht und die einen Wert enthält. Während der Bezeichner immer gleich ist, kann der Inhalt variieren.
Jede Variable hat einen Variablentypen, der bei Programmiersprachen normalerweise zu Beginn des Programmes fest definiert wird und sich nicht ändern kann. Da Lua aber ja keine Programmiersprache ist, muss der Variablentyp zu Beginn und auch sonst nie festgelegt werden und kann sich beliebig oft verändern. Der Interpreter erkennt Variablentypen automatisch und nimmt dem Skripter somit eine Menge Arbeit (vor allem bzgl. der Planung) ab.
 
===Variablentypen===
Im Folgenden will ich die wichtigsten Variablentypen auflisten und kurz beschreiben.
;Integer (ganze Zahlen)
:Umfasst alle Ganzzahlen, sowohl negative als auch positive.
:Beispiele: -8, 0, 12, 2
;Float (Komma- bzw. gebrochene Zahlen)
:Umfasst alle Fließkommazahlen, sowohl negative als auch positive. Wichtig dabei ist, dass anstelle des Kommas (,) ein Dezimalpunkt (.) zum Trennen des ganzen vom gebrochenen Teil verwendet werden muss.
:Beispiele: -77.2, 0.0, 3.14159, 9.81
;String (Zeichenkette)
:Kann jedes beliebige Zeichen enthalten. Eine maximale Länge ist mir nicht bekannt. Strings müssen immer in Anführungszeichen(" oder ') eingschlossen werden.
:Beispiele: "hallo", 'Lua ist toll!', "", " :D "
;Boolean (Schalter)
:Kann zwei verschiedene Werte enthalten: ''true'' (dt. wahr bzw. an) oder ''false'' (dt. falsch bzw. aus). True entspricht dabei nicht dem Wert 1 und false nicht dem Wert 0.
:Beispiele: true, false
;Nil (Leer oder Nichts)
:Nil ist sowohl ein Wert als auch ein Typ. Eine Variable vom Typ nil enthält automatisch den Wert nil. Nil bedeutet ganz einfach nichts. Wenn eine Variable nil ist, existiert sie nicht. Nil entspricht weder dem Wert 0 noch dem Wert false noch dem Wert ""!
:Beispiele: nil

Revision as of 20:21, 9 August 2008

Vorwort

Da es bis auf einige knappe und teils unprofessionelle Tutorials kein deutsches Lua Tutorial gibt, habe ich beschlossen, nun ein eigenes zu schreiben, welches alle für MTA notwendigen Grundlagen einfach und übersichtlich erklärt. Weiterführende Möglichkeiten und Funktionen können der Offiziellen Lua Dokumentation entnommen werden, die es jedoch nicht auf Deutsch gibt.

Ein weiterer Grund ist, dass ich schon von einigen gehört habe und auch so schon den Verdacht hatte, dass MTA einfach so wenige deutsche Spieler und vor allem Server hat (gibt es überhaupt einen deutschen?), weil die meisten Probleme mit den englischen Dokumentationen haben oder der Meinung sind, dass für MTA ja sowieso kein deutscher Support vorhanden ist.

Soviel nun dazu, wie es zu der Idee des deutschen Lua Tutorials kam. Fangen wir an mit dem Erlernen einer neuen Sprache!

Grundlagen

Lua, eine Skriptsprache

Lua (portugiesisch für Mond) ist eine Skriptsprache zum Einbinden in Programme, um diese leichter weiterentwickeln und warten zu können. Insbesondere die geringe Größe des Interpreters von 120 KB und die hohe Geschwindigkeit verglichen mit anderen Skriptsprachen überzeugen viele Entwickler davon, Lua einzusetzen.

Die Syntax lehnt sich an die von Pascal an, was besonders Anfängern den Einstieg in Lua erleichtert. Im Gegensatz zu von Pascal abgeleiteten Sprachen nutzt Lua jedoch „==“ und nicht „=“ als Vergleichsoperator.

(Quelle: Wikipedia)

Einige werden sich bei dieser Einführung vielleicht gefragt haben, was der Unterschied zwischen Skript- und Programmiersprache ist und was ein Interpreter sein soll. Im folgenden will ich diese beiden Fragen so kurz und einfach wie möglich klären.

Eine Programmiersprache (z.B. C, C++, Pascal, Delphi) wird - wie der Name schon sagt - verwendet, um Programme zu schreiben. Ein Programm liegt bekannterweise in Form einer Executable (*.exe) vor. Diese kann weitgehend unabhängig von irgendwelchen Betriebssystemen oder der Umgebung selbstständig ausgeführt werden (z.B. durch Doppelklick). Weitgehend deswegen, da einige Programme aufgrund von Speicherersparnissen sogenannte Programmbibliotheken (original Dynamic Link Library, kurz dll) benötigen, um zu funktionieren. Erklärungen dazu findet ihr hier.
Um einen Programmquellcode, d.h. einen Text, der in einer Programmiersprache geschrieben wurde, aus dem Textdokumentformat in eine Anwendung (original Executable, kurz exe) umzuwandeln, benötigt man nun einen Compiler (zu Deutsch Kompilierer oder Übersetzer), der die Programmiersprache aus der menschenlesbaren Form in die maschinenlesbare Form umwandelt. Neben dieser Hauptaufgabe übernimmt der Compiler natürlich noch weitere Aufgaben, auf die ich jetzt aber nicht genauer eingehen werde. Infos dazu findet ihr hier.
Die maschinenlesbare Form ist für Menschen unlesbar.

Eine Skriptsprache (z.B. JavaScript, DOS-Batch(Win) bzw. Shell-Scripts(UNIX)) hingegen liegt standardmäßig in der menschenlesbaren Form vor. Skriptsprachen werden - wie im ersten Satz bereits erwähnt - vor allem von Programmen benutzt, um benutzerdefinierte Abläufe verwenden zu können. Zur Ausführung von Scripts wird ein sogenannter Interpreter benötigt, der das Skript liest und es Schritt für Schritt in die Maschinensprache umwandelt und ausführt. Manche Skriptsprachen kann man mit einem Precompiler (zu Deutsch Vorkompilierer oder Vorübersetzer) vorkompilieren. Diesen könnte man auch den Vorkauer vom Interpreter nennen, da er das Script schon zum Teil in die Maschinensprache umwandelt, jedoch nicht so extrem wie der Compiler der Programmiersprachen. Das Ergebnis davon ist logischerweise die schnellere Ausführung des Skripts.

Genug der langweiligen Definitionen. Klären wir lieber, was man denn alles braucht, um ein Lua Script zu schreiben.

Materialien

Lua Skripte werden üblicherweise als Textdateien mit der Endung .lua gespeichert. Die Endung ist jedoch nicht von belang. Es kann jede beliebige Endung gewählt werden.

Wie jede normale Textdatei kann man also auch Lua Skripte mit dem standard Texteditor des vorhandenen Betriebssystems schreiben, editieren und lesen. Ich persönlich empfehle jedoch das Programm Notepad++, welches hier heruntergeladen werden kann. Das Programm ist Freeware und wird regelmäßig aktualisiert und erweitert. Der Vorteil daran ist, dass es ein professionelles Syntax-Highlighting eingebaut hat, welches Schlagwörter und Standardfunktionen farblich oder anderweitig hervorhebt und somit die Übersichtlichkeit erheblich verbessert.
Standardmäßig wird die Sprache Lua automatisch an der Dateiendung .lua erkannt, solltest Du eine andere Endung verwenden und trotzdem das Lua Syntax-Highlighting verwenden wollen, kannst Du es oben im Menü „Sprachen“ einstellen.

Wer ohne MTA seine kleinen Lua Skripte testen oder ausführen möchte, kann sich hier einen kostenlosen standalone Interpreter herunterladen. Fälschlicherweise steht auf dieser Seite hinter der Executable für die Windows 32Bit Edition „Windows x86 Executables“. Lass Dich davon nicht täuschen. Wenn Du Dir nicht sicher bist, welche Windows Edition Du hast, dann hast Du wahrscheinlich eine 32 Bit Version. Die aktuelle Version (Win 32 Bit) dafür gibt es bei einem Klick auf lua5_1_3_Win32_bin.zip.
Nach dem Download kann der Standalone Interpreter mit einem Doppelklick auf die „lua5.1.exe“ gestartet werden. Dort kann man dann direkt Lua Befehle eingeben oder ein Script laden. Dies geht wie folgt:

dofile("dateiname.lua")

Variablen

Einführung

Eine Variable kann man sich wie eine kleine Kiste vorstellen, auf der außen ein Bezeichner (oder Name) steht und die einen Wert enthält. Während der Bezeichner immer gleich ist, kann der Inhalt variieren. Jede Variable hat einen Variablentypen, der bei Programmiersprachen normalerweise zu Beginn des Programmes fest definiert wird und sich nicht ändern kann. Da Lua aber ja keine Programmiersprache ist, muss der Variablentyp zu Beginn und auch sonst nie festgelegt werden und kann sich beliebig oft verändern. Der Interpreter erkennt Variablentypen automatisch und nimmt dem Skripter somit eine Menge Arbeit (vor allem bzgl. der Planung) ab.

Variablentypen

Im Folgenden will ich die wichtigsten Variablentypen auflisten und kurz beschreiben.

Integer (ganze Zahlen)
Umfasst alle Ganzzahlen, sowohl negative als auch positive.
Beispiele: -8, 0, 12, 2
Float (Komma- bzw. gebrochene Zahlen)
Umfasst alle Fließkommazahlen, sowohl negative als auch positive. Wichtig dabei ist, dass anstelle des Kommas (,) ein Dezimalpunkt (.) zum Trennen des ganzen vom gebrochenen Teil verwendet werden muss.
Beispiele: -77.2, 0.0, 3.14159, 9.81
String (Zeichenkette)
Kann jedes beliebige Zeichen enthalten. Eine maximale Länge ist mir nicht bekannt. Strings müssen immer in Anführungszeichen(" oder ') eingschlossen werden.
Beispiele: "hallo", 'Lua ist toll!', "", " :D "
Boolean (Schalter)
Kann zwei verschiedene Werte enthalten: true (dt. wahr bzw. an) oder false (dt. falsch bzw. aus). True entspricht dabei nicht dem Wert 1 und false nicht dem Wert 0.
Beispiele: true, false
Nil (Leer oder Nichts)
Nil ist sowohl ein Wert als auch ein Typ. Eine Variable vom Typ nil enthält automatisch den Wert nil. Nil bedeutet ganz einfach nichts. Wenn eine Variable nil ist, existiert sie nicht. Nil entspricht weder dem Wert 0 noch dem Wert false noch dem Wert ""!
Beispiele: nil