Funktionen
Aus EnigmaWiki
Verfügbare Sprachen: Deutsch, English, Русский
Hier sind die Lua-Funktionen zur Objektmanipulation alphabetisch sortiert und erklärt. Einige sind als DEPRECATED gekennzeichnet und sollen nicht mehr verwendet werden! Sie sind nur der vollständigkeit halber hier und weil sie in alten Leveln noch vorkommen könnten.
Zu allen Funktionen wird auch eine sogenannte Signatur angegeben, um die Werttypen eindeutig fest zu legen.
Liste der Funktionen
CreateWorld(width, height)
Signatur: nil = CreateWorld(int, int)
Beschreibung:
Erstellt eine Welt mit Breite width und Höhe height. Die Funktion besitzt folgendes Alias:
create_world(width, height).
Beispiel:
Ein Ein-raum-level
CreateWorld(20, 13)
Alias:
create_world(...)
display.SetFollowMode(mode)
Signatur: nil = display.SetFollowMode(mode)
Beschreibung:
Setzt den Scrollmodus auf einen anderen Wert.
Werte für mode können sein:
-
display.FOLLOW_NONE: Kein Scrollen (scheint nicht zu funktionieren) -
display.FOLLOW_SCROLLING: Scrollt nach jedem halben Bildschirm. -
display.FOLLOW_SCREEN: Erreicht der Actor den Bildschirmrand, wird der nächste Bildschirm angezeigt. Dies ist die Standardeinstellung. -
display.FOLLOW_SCREENSCROLLING: Gelangt die Kugel an den Bildschirmrand, bewegt sich die Kamera zum nächsten Bildschirm. -
display.FOLLOW_SMOOTH: Die Kugel befindet sich immer in der Mitte des Bildschirms.
Beispiel:
Setzt den Displaymode auf Smooth:
display.SetFollowMode(display.FOLLOW_SMOOTH)
draw_border(objektname [, x [, y [, w [, h]]]])
Signatur: nil = draw_border(objektname, int, int, int, int)
Beschreibung:
Zeichnet einen Rand mit dem Stein vom Typ objektname. Optional können die Koordinaten der oberen linken Ecke x und y, sowie Breite w und Höhe h angegeben werden. Wird auf die optionalen Argumente verzichtet, wird ein Rand um das ganze Level gezeichnet.
Beispiel:
draw_border("st-marble") draw_border("st-greenbrown", 0,5,3,3)
draw_checkerboard_floor(objektname1, objektname2 [, x [, y [, w [, h [, attribute]]]]])
Signatur: nil = draw_checkerboard_floor(objektname, objektname, int, int, int, int, attributliste)
Beschreibung:
Legt einen Schachbrettboden mit den Bodenplatten objektname1 und objektname2 mit linker oberer Ecke x, y von der Breite w und der Höhe h.
Wird auf diese Grössenangaben verzichtet, wird der Boden des ganzen Levels gefüllt.
In der linken oberen Ecke hat der Boden den Typ objektname1.
Beispiel:
draw_checkerboard_floor("fl-abyss", "fl-rough", 2, 2, 23, 11) draw_checkerboard_floor("fl-normal", "fl-inverse", 0, 0, levelw, levelh)
draw_floor(objektname, {x, y}, {xstep, ystep}, n [, attribute])
Signatur: nil = draw_floor(objektname, koordinaten, table, int, attributliste)
Beschreibung:
Zeichnet eine Bodenplattenlinie mit Startpunkt x,y und Neigung xstep,ystep mit der Länge n Bodenplatten.
Beispiel:
draw_floor("fl-abyss", {3,0}, {0,1}, level_height) draw_floor("fl-gradient", {15, 5}, {1,0}, 4, {type=1}) draw_floor("fl-water", {level_width-4,3}, {0,1}, level_height-6)
draw_items(objektname, {x, y}, {xstep, ystep}, n [, attribute])
Signatur: nil = draw_items(objektname, koordinaten, table, int, attributliste)
Beschreibung:
Zeichnet eine Itemlinie mit Startpunkt x,y und Neigung xstep,ystep von der Länge n Items.
Beispiel:
draw_items("it-trigger", {3,3}, {2,0}, 8) draw_items("it-tinyhill", {5,3}, {2,0}, 7)
draw_stones(objektname, {x, y}, {xstep, ystep}, n [, attribute])
Signatur: nil = draw_stones(objektname, koordinaten, [[table]], int, attributliste)
Beschreibnug:
Zeichnet eine Steinlinie mit Startpunkt x,y und Neigung xstep,ystep von der Länge n.
Beispiel:
draw_stones("st-grate1", {9,1},{0,1}, 5) draw_stones("st-stone_break", {21,1}, {1,0}, 10) function draw_border(stonename, x0, y0, w, h) draw_stones(stonename, {x0,y0}, {1,0}, w) draw_stones(stonename, {x0,y0+h-1},{1,0}, w) draw_stones(stonename, {x0,y0}, {0,1}, h) draw_stones(stonename, {x0+w-1,y0},{0,1}, h) end
enigma.AddConstantForce(force_x, force_y)
Signatur: nil = enigma.AddConstantForce(float, float)
Beschreibung:
Fügt eine globale Kraft in Richtung force_x, force_y zum Level hinzu.
Kräfte nach links, bzw. oben sind negativ, nach rechts bzw. unten positiv.
Beispiel:
Eine Levelweite Kraft nach unten links:
enigma.AddConstantForce(-10, 10)
enigma.AddRubberBand(actor, object [, strength [, length [, minlength]]])
Signatur: nil = enigma.AddRubberBand(objektname, objektname, int, int, int)
Beschreibung:
Verbindet actor und object mit einem Gummiband. Optionale Attribute: strength: Gibt die Stärke des Gummibandes an, also die Kraft, die benötigt wird, um das Band zu dehnen; default: 10. length: Die Länge des Gummibandes in entspanntem Zustand; default: 2. minlength: minimale Länge des Gummibandes; default: 0.
Beispiel:
local ac=set_actor("ac-blackball", 1.5,7.5) local st=set_stone("st-brownie", 10,6) enigma.AddRubberBand(ac, st, 50, 10)
enigma.AddScramble(x, y, d)
Signatur: nil = enigma.AddScramble(int, int, string)
Beschreibung:
Fügt ein Scramble an Position (x; y) und in Richtung {"n","e","s","w"} hinzu.
enigma.date("Datumformatierungsstring")
Signatur: string = enigma.date(string)
Beschreibung:
Gibt das aktuelle Datum zurück. Diese Funktion ist nur der Vollständigkeit halber erwähnt und soll in Levels nicht gebraucht werden!
enigma.EmitSound(?,?)
DEPRECATED
Enigma-interne System-Funktion
Beschreibung:
Spielt einen Sound ab. Genaues Verhalten hier nicht dokumentiert.
enigma.GetAttrib(objektreferenz, attributname)
Signatur: string|nil = enigma.GetAttrib(objektreferenz, string)
Beschreibung:
Gibt den Attributwert des Attributes attributname von Objekt, auf das objektreferenz zeigt, zurück.
Beispiel:
local bolder1 = set_stone("st-bolder", 1, 1) local bolder_dir = enigma.GetAttrib(bolder1, "direction")
enigma.GetNamedObject(name)
Signatur: objektreferenz|nil = enigma.GetNamedObject(name)
Beschreibung:
Gibt eine Referenz zum Objekt mit dem Namen name zurück. Gibt nil zurück, wenn kein entsprechendes Objekt existiert.
Beispiel:
set_stone("st-wood", 7, 11, {name="woodie"}) ... local wood_block = enigma.GetNamedObject("woodie")
enigma.GetFloor(x, y)
Signatur: objektreferenz|nil = enigma.GetFloor(int, int)
Beschreibung:
Gibt eine Referenz auf die Bodenplatte an Position (x; y) zurück.
Beispiel:
set_floor("fl-black", 2, 2) local tile = enigma.GetFloor(2, 2)
enigma.GetItem(x, y)
Signatur: objektreferenz|nil = enigma.GetItem(int, int)
Beschreibung:
Gibt eine Referenz auf das Item an Position (x; y) zurück.
Beispiel:
set_item("it-rubberband", 2, 2) local tool = enigma.GetItem(2, 2)
enigma.GetKind(objektreferenz)
Signatur: objektname|nil = enigma.GetKind(objektreferenz)
Beschreibung:
Gibt die Art des Objekts auf das objektreferenz zeigt zurück.
Beispiel:
local block = set_stone("st-block", 5, 3) local kind = enigma.GetKind(block)
kind wird den Wert "st-block" haben.
enigma.GetObjectTemplate(objektname)
DEPRECATED
Enigma-interne System-Funktion
Beschreibung:
Genaues Verhalten hier nicht dokumentiert.
enigma.GetPos(objektreferenz)
Signatur: int, int = enigma.GetPos(objektreferenz)
Beschreibung:
Gibt die Position des Objekts auf das objektreferenz zeigt zurück.
Die Position ist immer auf ganzzahlige Gitterkoordinaten gerundet.
Beispiel:
local block = set_stone("st-block", 5, 3) local pos_x, pos_y = enigma.GetPos(block)
Mit etwas raffinierterem Lua kann man die beiden Rückgabewerte auch gleich in eine Tabelle (koordinaten) packen:
local block = set_stone("st-block", 5, 3) local pos = {enigma.GetPos(block)}
enigma.GetStone(x, y)
Signatur: objektreferenz|nil = enigma.GetStone(int, int)
Beschreibung:
Gibt eine Referenz auf den Stein an Position (x; y) zurück.
Beispiel:
set_stone("st-actorimpulse", 3, 6) local ai = enigma.GetStone(3, 6)
enigma.isSolved(filename)
DEPRECATED
Beschreibung:
Prüft, ob das Level filename bereits gelöst wurde.
Diese Funktion darf nicht mehr verwendet werden!
enigma.KillFloor(x, y)
Signatur: nil = enigma.KillFloor(int, int)
Beschreibung:
Löscht den Boden auf Position (x; y).
Warnung: diese Funktion ist momentan ausser Betrieb ;-)
Beispiel:
fill_floor("fl-water", 10, 7, 3, 3) enigma.KillFloor(11, 8)
enigma.KillItem(x, y)
Signatur: nil = enigma.KillItem(int, int)
Beschreibung:
Löscht das Item auf Position (x; y).
Beispiel:
draw_items("it-weight", {5,5}, {1,1}, 5) enigma.KillItem(7, 7)
enigma.KillStone(x, y)
Signatur: nil = enigma.KillStone(int, int)
Beschreibung:
Löscht den Stein auf Position (x; y).
Beispiel:
Raumtrennwand mit Loch:
draw_stones("st-glass", {10,1}, {0,1}, 11) enigma.KillStone(10, 6)
enigma.LoadLib(libraryId)
Lädt die Bibliothek mit der Id libraryId.
Warnung: Wann immer möglich soll man die Biblithek im XML-Header laden!
Genaueres findet sich hier: XML-Metadaten
enigma.NameObject(objektreferenz, name)
Signatur: nil = enigma.NameObject(objektreferenz, string)
Beschreibung:
Gibt dem Objekt auf das objektreferenz zeigt den Namen name
Beispiel:
local metal = set_stone("st-metal", 2, 2) enigma.NameObject(metal, "the_metal")
enigma.SetAttrib(objektreferenz, attributname, wert)
Signatur: nil = enigma.SetAttrib(objektreferenz, string, string)
Beschreibung:
Weist dem Attribut attributname des Objekts auf das objektreferenz zeigt den Wert wert zu.
Beispiel:
Einen Namen geben: (Man sollte aber besser enigma.NameObject(...) benutzen)
local las = set_stone("st-laser", 1, 4, {on=FALSE, dir=NORTH}) enigma.SetAttrib(las, "name", "laser")
Dieses Beispiel funktioniert hingegen nicht:
function toggle_on() enigma.SetAttrib(lightsource, "on", TRUE) end set_stone("st-switch", 1, 1, {action="callback", target="toggle_on"}) lightsource = set_stone("st-laser", 2, 2, {name="the_laser"})
SetAttribs(objekt, attribute)
Signatur: nil = SetAttribs(objektreferenz|objektname, attributliste)
Beschreibung:
Weist dem Objekt objekt die Attribute attribute zu. object kann entweder die Referenz auf das Objekt, oder dessen Name sein. Warnung: diese Funktion ist momentan ausser Betrieb :-)
Beispiel:
local las = set_stone("st-laser", 1, 4, {on=FALSE, dir=NORTH}) SetAttribs(las, {on=TRUE, dir=WEST})
enigma.SetDefaultAttribs(objektname, attribute)
Signatur: nil = enigma.SetDefaultAttribs(objektname, attributliste)
Beschreibung:
Legt Defaultwerte für gewisse Attribute fest, so dass man später diese Attribute nicht mehr setzten muss.
Warnung: diese Funktion ist momentan ausser Betrieb :-)
Beispiel:
enigma.SetDefaultAttribs("it-wormhole", {range=1.0, strength=10}) set_item("it-wormhole", 11, 6, {targetx="48.5",targety="56.5"})
enigma.SetCompatibility(compatibility)
DEPRECEATED
Soll nicht mehr verwendet werden und wird in zukünftigen Versionen auch nicht mehr vorhanden sein.
Die Compatibilty kann dafür im XML-Teil gesetzt werden, genaueres findet sich hier: el:compatibility
enigma.SetScrambleIntensity(integer)
Signatur: nil = enigma.SetScrambleIntensity(int)
Beschreibung:
Legt die Scrambleintensität fest.
fill_floor(objektname, x, y, w, h)
Signatur: nil = fill_floor(objektname, int, int, int, int)
Beschreibung:
Füllt ein Rechteck mit oberer linker Ecke x,y und Grösse w,h mit dem Boden objektname.
Beispiel:
fill_floor("fl-space", 0,0, level_width,level_height) -- diese zwei Zeilen fill_floor("fl-space") -- machen dasselbe fill_floor("fl-gray", 1, 1, level_width-2, level_height-2) fill_floor("fl-water", 24,47, 11,1)
fill_items(objektname, x, y, w, h)
Signatur: nil = fill_items(objektname, int, int, int, int)
Beschreibung:
Füllt ein Rechteck mit oberer linker Ecke x,y und Grösse w,h mit dem Item objektname.
Beispiel:
fill_items("it-wormhole", 1, 1, 3, 3) -- Feld bestehend aus 3x3 Wurmlöchern
fill_stones(objektname, x, y, w, h)
Signatur: nil = fill_stones(objektname, int, int, int, int)
Beschreibung:
Füllt ein Rechteck mit oberer linker Ecke x,y und Grösse w,h mit dem Stein objektname.
Beispiel:
fill_stones("st-chameleon", 1, 1, 18, 11) fill_stones("st-grate1", 1, 5, 5, 7) fill_stones("st-death", 9, 5, 2, 2)
MakeObject(objektname, attribute)
Signatur: objektreferenz = MakeObject(objektname, attributliste)
Beschreibung:
Enigma-interne System-Funktion
Zitat aus dem Enigma-Referenz-Manual:
"To my best knowledge, no one uses this function in their levels. You should rather use set_floor/stone/item functions for creating particular enigma objects. If you need this function, you are probably guru and you don’t need this manual either."
oxyd_closeall()
Signatur: nil = oxyd_closeall()
Beschreibung:
Schliesst alle Oxyd-Steine.
Beispiel:
Wer über den Trigger läuft, schliesst alle Oxydsteine:
set_item("it-trigger", 3, 5, {action="callback", target="oxyd_closeall"})
oxyd_shuffle()
Signatur: nil = oxyd_shuffle()
Beschreibung:
Mischt die Oxyd-Steine, sodass die Farben zufällig verteilt sind.
Sollte in jedem Level benutzt werden, es sei denn, man will eine bestimmte Farbkombination.
Beispiel:
Der Trigger verteilt die Farben der noch geschlossenen Oxydsteine neu:
set_item("it-trigger", 3, 5, {action="callback", target="oxyd_shuffle"})
SendMessage(name|objektreferenz, message [,daten])
Signatur: nil = SendMessage(name|objektreferenz, string, ?|nil)
Beschreibung:
Sendet die Message message an das Objekt objektreferenz. Objekt kann per Namen (gesetzte mit dem Attribut name) oder per Objektreferenz gewählt werden. Optional können daten übergeben werden.
Beispiel:
set_item("it-hollow", 5, 10, {name="meine Mulde"}) SendMessage("meine Mulde","trigger")
Im Beispiel wird eine Mulde mit dem Namen "meine Mulde" erzeugt. Dann wird der Mulde mit SendMessage(mulde,"trigger") die Nachricht trigger gesendet, was bewirkt, dass sie Zum Hügel wird.
set_actor(objektname, x, y [, attribute])
Signatur: objektreferenz = set_actor(objektname, float, float, attributliste)
Beschreibung:
Setzt einen Actor objektname auf die Position x,y (Koordinaten der Kugelmitte). Optional können dem Actor Attribute attribute zugewiesen werden. Die Attribute sind als eine Liste {attribut1=wert1, attribut2=wert2, ...} zu übergeben. Die Funktion besitzt das Alias SetActor(objektname, x, y [, attribute]).
Beispiel:
set_actor("ac-bug", 5, 10) set_actor("ac-blackball", 1, 1, {player=0, mouseforce=1.5})
set_floor(objektname, x, y [,attribute])
Signatur: objektreferenz = set_floor(objektname, int, int, attributliste)
Beschreibung:
Diese Funktion setzt einen Boden objektname auf die Position x,y. Optional können dem Boden Attribute attribute zugewiesen werden. Die Attribute sind als eine Liste {attribut1=wert1, attribut2=wert2, ...} zu übergeben.
Beispiel:
set_floor("fl-tigris", 5, 10) set_floor("fl-bluegray", 1, 1, {name="blaugrau"}) function setup_gradient_rose<code>'''(x; y)'''</code> set_floor("fl-gradient", x, y+1, {type=1}) set_floor("fl-gradient", x, y-1, {type=2}) set_floor("fl-gradient", x+1, y, {type=3}) set_floor("fl-gradient", x-1, y, {type=4}) end
set_item(objektname, x, y [, attribute])
Signatur: objektreferenz = set_item(objektname, int, int, attributliste)
Beschreibung:
Diese Funktion setzt ein Item objektname auf die Position x,y. Optional können ihm Attribute attribute zugewiesen werden.
Die Attribute sind als eine Liste {attribut1=wert1, attribut2=wert2, ...} zu übergeben.
Beispiel:
set_item("it-trigger", 34, 3, {action="openclose", target="bridge1"})
Alias:
SetItem(objektname, x, y [, attribute])
set_stone(objektname, x, y [, attribute])
Signatur: objektreferenz = set_stone(objektname, int, int, attributliste)
Beschreibung:
Diese Funktion setzt einen Stein objektname auf die Position x,y. Optional können dem Stein Attribute attribute zugewiesen werden. Die Attribute sind als eine Liste {attribut1=wert1, attribut2=wert2, ...} zu übergeben.
Beispiel:
set_stone("st-yellow", 5, 10) set_stone("st-glass", 1, 1, {name="glasstein"}) set_stone("st-door", 18, 6, {name="door01", type="h"}) set_stone("st-bolder", 2, 11, {name="bolder01", direction=NORTH})
set_stones(objektname, positionsliste [, attribute])
Signatur: nil = set_stones(objektname, table mit koordinaten, attributliste)
Beschreibung:
positionsliste ist eine Liste, die wiederum Listen mit x- und y-Koordinaten enthält. Diese Methode eignet sich zum Setzen einer grossen Anzahl gleicher Steine an willkürlich angeordneten Orten. Optional können dem Stein Attribute attribute zugewiesen werden. Die Attribute sind als eine Liste {attribut1=wert1, attribut2=wert2, ...} zu übergeben.
Beispiel:
set_stones("st-glass", {{1,6},{1,12},{34,1},{34,2},{35,2},{36,1},{36,2}}) set_stones(bordertile, {{34, 1}, {34, 5}, {34, 7}, {34, 11}}) ... set_stones("st-invisible", {{7,9}}) -- diese zwei Zeilen set_stone("st-invisible", 7, 9) -- machen dasselbe

