4. Auf das Spiel zugreifen
Auf das Spiel zugreifen

Alles, was du im Editor anlegst, ist für Lua ein Objekt: Kulissen, Personen, Gegenstände, Bedingungen, Werte, Interfaces. Gleichartige Objekte liegen in Tabellen, die immer verfügbar sind.
| Tabelle | Enthält | Beispiel |
|---|---|---|
Scenes | Kulissen | Scenes["keller"] |
Characters | Personen | Characters["pia"] |
Conditions | Bedingungen | Conditions["gitter_offen"] |
Values | Werte | Values["fehlversuche"] |
Interfaces | Interfaces | Interfaces["inventar"] |
In den eckigen Klammern steht der interne Name aus dem Editor, nicht der Name, den der Spieler im Spiel sieht.
Felder lesen und setzen
-- Bedingung: Feld Value (true oder false)
if Conditions["gitter_offen"].Value then
print("Das Gitter ist offen")
end
Conditions["gitter_offen"].Value = true
-- Wert: Feld Int für die Zahl, Feld String für den Text
local n = Values["fehlversuche"].Int
Values["fehlversuche"].Int = n + 1
-- Das Objekt game ist immer da
print(game.CurrentScene.name) -- interner Name der aktuellen Kulisse
print(game.CurrentCharacter.name) -- interner Name der gesteuerten Person
Nicht jedes Feld darf per Skript geändert werden. Welche Felder es gibt und welche beschreibbar sind, steht im Wiki unter Datenstrukturen.
Wenn ein Name doppelt vorkommt
Haben zwei Personen einen Wert namens muenzen, ist Values["muenzen"] nicht eindeutig. Dann gehst du über den Objektpfad:
local m = Characters["pia"].Values["muenzen"].Int
Den Pfad musst du nicht abtippen: In den Objektlisten des Editors gibt es den Menüpunkt „Lua Pfad kopieren“ (englisch „Copy Lua Path“).
Regel zum Mitnehmen
Vergib eindeutige interne Namen in Kleinbuchstaben. Dann bleibt jeder Zugriff kurz und lesbar.
Deine Aufgabe
Gib mit