Level 1–2 – Lua Grundlagen

Lua: Einfuehrung, Regeln und Referenz

Lua ist die Programmiersprache, mit der Luanti-Mods geschrieben werden. Dieser Abschnitt sammelt die wichtigsten Regeln, Schluesselwoerter, Basisbefehle und typische Strukturen (Bedingungen, Schleifen, Funktionen).

Merksatz fuer den Unterricht

Lua ist leichtgewichtig und gut lesbar. Der Code laeuft von oben nach unten, bis eine Funktion aufgerufen wird.

1. Grundregeln (Syntax)

Kommentare und Strings
-- Einzeiliger Kommentar
--[[ Mehrzeiliger
Kommentar ]]

local name = "Luanti"
local text = 'Modding macht Spass'

2. Schluesselwoerter (Keywords)

Diese Woerter sind reserviert und duerfen nicht als Variablennamen verwendet werden.

Keywords
and, break, do, else, elseif, end, false, for, function, if, in, local, nil, not, or, repeat, return, then, true, until, while

3. Variablen und Typen

Lua kennt dynamische Typen. Du musst den Typ nicht angeben. Wichtig: Variablen sind standardmaessig global, wenn du nicht local verwendest.

Local vs. Global
local score = 10    -- lokal, nur in diesem Block sichtbar
player_name = "Alex" -- global, im ganzen Mod sichtbar
Typ Beispiel
Zahl 42, 3.14
String "text"
Boolean true, false
Table {1, 2, 3}, {x = 1, y = 2}
Function function(a) return a * 2 end
Nil nil

4. Operatoren

Operatoren in Aktion
local sum = 2 + 3
local ok = (sum == 5) and true or false
local msg = "Summe: " .. sum

5. Bedingungen (if / elseif / else)

if-elseif-else
local hp = 8

if hp >= 10 then
    core.chat_send_all("Alles okay.")
elseif hp >= 5 then
    core.chat_send_all("Vorsicht.")
else
    core.chat_send_all("Gefahr!")
end

6. Schleifen (alle Varianten)

6.1 Numerische for-Schleife

for i = 1, 10, 1
for i = 1, 10, 1 do
    core.log("action", "i=" .. i)
end

6.2 Generische for-Schleife (pairs / ipairs)

pairs und ipairs
local list = {"a", "b", "c"}
for index, value in ipairs(list) do
    core.log("action", index .. ": " .. value)
end

local map = {x = 10, y = 20}
for key, value in pairs(map) do
    core.log("action", key .. "=" .. value)
end

6.3 while-Schleife

while
local n = 3
while n > 0 do
    core.log("action", "n=" .. n)
    n = n - 1
end

6.4 repeat-until

repeat-until
local tries = 0
repeat
    tries = tries + 1
until tries >= 3

7. Funktionen

Funktionen sind wiederverwendbare Code-Bloecke.

Funktion definieren und aufrufen
local function add(a, b)
    return a + b
end

local result = add(2, 5)

8. Tabellen (Tables)

Tabellen sind Listen, Dictionaries und Objekte in einem.

Tabellen: Liste und Map
local list = {10, 20, 30}
local player = {name = "Mia", hp = 20}

core.log("action", list[1])
core.log("action", player.name)

9. Nützliche Tricks

10. Mini-Aufgaben

  1. Schreibe eine for-Schleife von 1 bis 5 und gib die Zahlen aus.
  2. Baue eine Funktion, die zwei Zahlen multipliziert.
  3. Lege eine Tabelle mit Koordinaten an: {x = 1, y = 2, z = 3}.

11. Weiterfuehrend