Level 1–2 – Lua Grundlagen
Lua ist die Programmiersprache, mit der Luanti-Mods geschrieben werden. Dieser Abschnitt sammelt die wichtigsten Regeln, Schluesselwoerter, Basisbefehle und typische Strukturen (Bedingungen, Schleifen, Funktionen).
Lua ist leichtgewichtig und gut lesbar. Der Code laeuft von oben nach unten, bis eine Funktion aufgerufen wird.
-- einzeilig, --[[ mehrzeilig ]]."..." oder '...'.nil bedeutet „nicht vorhanden“.-- Einzeiliger Kommentar
--[[ Mehrzeiliger
Kommentar ]]
local name = "Luanti"
local text = 'Modding macht Spass'
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
|
Lua kennt dynamische Typen. Du musst den Typ nicht angeben.
Wichtig: Variablen sind standardmaessig global,
wenn du nicht local verwendest.
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 |
+, -, *, /, %==, ~=, <, >, <=, >=and, or, not..local sum = 2 + 3
local ok = (sum == 5) and true or false
local msg = "Summe: " .. sum
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
for i = 1, 10, 1 do
core.log("action", "i=" .. i)
end
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
local n = 3
while n > 0 do
core.log("action", "n=" .. n)
n = n - 1
end
local tries = 0
repeat
tries = tries + 1
until tries >= 3
Funktionen sind wiederverwendbare Code-Bloecke.
local function add(a, b)
return a + b
end
local result = add(2, 5)
Tabellen sind Listen, Dictionaries und Objekte in einem.
local list = {10, 20, 30}
local player = {name = "Mia", hp = 20}
core.log("action", list[1])
core.log("action", player.name)
x = x or 10local ok = (n > 0) and true or false#listcore.log("action", "text")for-Schleife von 1 bis 5 und gib die Zahlen aus.{x = 1, y = 2, z = 3}.