DE EN FR ES IT CZ

4. Auf das Spiel zugreifen

Auf das Spiel zugreifen

Pia zieht eine Schublade aus einem großen Schrank mit Symbolschildern

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.

TabelleEnthältBeispiel
ScenesKulissenScenes["keller"]
CharactersPersonenCharacters["pia"]
ConditionsBedingungenConditions["gitter_offen"]
ValuesWerteValues["fehlversuche"]
InterfacesInterfacesInterfaces["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 print den Namen der aktuellen Kulisse aus und setz per Skript eine Bedingung, die ein Objekt sichtbar macht.