Objektaliase

Aus EnigmaWiki

Wechseln zu: Navigation, Suche
Verfügbare Sprachen: Deutsch, English, Русский

Manchmal, wenn auch sehr selten, trifft man in Enigma Objekte, die nicht das sind, wonach sie aussehen. Sie haben ein anderes Verhalten, als man sich von gleich aussehenden Objekten gewohnt ist.

Prominentes Beispiel sind die Steine im Level ".c.R.e.A.z.Y.w.O.r.L.d" im Pack "Enigma IV". Hier hat es offensichtlich Steine, die tödlich aussehen, es aber nicht sind. Und dann gibt es sie gleich noch in 2 Versionen (verschiebbar und ortsfest).

Vorweg eine Warnung an Levelautoren:
Die Funktionen auf dieser Seite sind eigentlich für die Enigma-interne Verwendung gedacht. Manchmal können sie aber in Levels nützlich sein. Doch das ist eher selten. Die Funktionen sollen also SEHR sparsam verwendet werden! Und in Zukunft gar nicht mehr. Alle Informationen auf dieser Seite sind als DEPRECATED zu betrachten und die beschriebenen Features werden in Zukunft verschwinden!

Inhaltsverzeichnis

Neue Steine

Es gibt in Enigma eine Funktion um neue Steine zu erzeugen. Sie ist zwar nicht sehr mächtig, und komplexe Steine lassen sich damit auch nicht erzeugen, aber manchmal doch ganz nützlich.

Die Funktion lautet:

world.DefineSimpleStone("st-neuername","sound",hohl,glas)

Die Funktion verarbeitet einige Parameter.

  • "st-neuername": ein String, der den Namen des neuen Stones enthält.
  • "sound": ein String, der den Sound bezeichnet, der beim Berühren ausgegeben wird.
  • hohl: Ein int-Wert (0 oder 1), der angibt, ob der Stein hohl ist.
  • glas: ein int-Wert (0 oder 1), der angibt, ob der Stein durchsichtig (z.B. für Laser) ist.

Wie macht man aber einen beweglichen Stein? Auch hierfür gibt es eine Funktion.

world.DefineSimpleStoneMovable("st-neuername","sound",glas)

Die Funktion übernimmt nur 3 Parameter.

  • "st-neuername": ein String, der den Namen des neuen Stones enthält.
  • "sound": ein String, der den Sound bezeichnet, der beim Berühren ausgegeben wird.
  • glas: ein int-Wert (0 oder 1), der angibt, ob der Stein durchsichtig (z.B. für Laser) ist.

Beispiel

Wie wendet man aber diese Funktionen an? Hier die Definitionen aus dem oben genannten Level:

world.DefineSimpleStone("fake_stone", "shatter", 0, 0)
world.DefineSimpleStoneMovable("fake_stone_move", "shatter", 0)

Neue Böden

Was mit Steinen funktioniert, funktioniert auch mit Böden. Die Funktion dazu lautet:

world.DefineSimpleFloor("fl-neuername", Reibung, Mausfaktor, brennbar, feuertransformation)

Die Funktion verarbeitet einige Parameter.

  • "fl-neuername": ein String, der den Namen des neuen Bodens enthält.
  • Reibung: die Reibung des Bodens. Wertetyp: double.
  • Mausfaktor: der Mausfaktor des Bodens. Wertetyp: double.
  • brennbar: Ist der Boden brennbar? Wertetyp boolean.
  • feuertransformation: Ein Bodenname, in den sich der Boden verwandeln soll, falls es nebenan brennt. Wertetyp: String.

Es gibt bisher genau 1 Level, dass diese Funktion anwendet. Es ist das Level "A-way" im Pack "Enigma VI"

Dort wird Wasser definiert, das man betreten kann. Es ist ja auch nicht möglich, einen "speziellen" Boden zu definieren. Alle so definierten Böden lassen sich betreten, man versinkt nicht, keine Diebe etc ...

world.DefineSimpleFloor("fl-water-1", 6.4, 2.0, false, "")

Aliase

Nun zum Thema, das der Seite den Namen gibt. Die neuen Steine und Böden, die wir oben erzeugt haben, haben noch kein Aussehen. Bisher erscheint nur ein Dummy-Image. Das lässt sich mit einem Alias ändern.

Die Funktion dazu lautet:

display.DefineAlias(name,anderer_name)

Parameter:

  • name: neuer Name
  • anderer_name: alter Name

Damit kann man nun den neuen Objekten Bilder zuweisen.

Beispiele

Im folgenden Beispiel wir ein nicht hohler, nicht transparenter Stein erschaffen, der wie ein st-grate1 aussieht, sich aber grundlegend anders verhält.

-- ein neuer Stein wird erschaffen:
world.DefineSimpleStone("st-X","metal",0,0)
-- Ein Alias wird ihm zugewiesen:
display.DefineAlias("st-X", "st-grate1")
-- Seine  erste Verwendung:
set_stone("st-X",3,3)

Man kann auch verschiebbare Grates herstellen:

-- ein neuer Stein wird erschaffen:
world.DefineSimpleStoneMoveable("st-X","metal",0)
-- Ein Alias wird ihm zugewiesen:
display.DefineAlias("st-X", "st-grate1")
-- Seine  erste Verwendung:
set_stone("st-X",3,3)

Oder gar ein Boden, der wie ein Fartstone aussieht:

-- Ein neuer Boden wird erschaffen:
world.DefineSimpleFloor("st-X",1,2,false,"")
-- Ein Alias wird ihm zugewiesen:
display.DefineAlias("st-X", "st-fart")
-- Seine erste Verwendung:
set_floor("st-X",3,3)

Zusammenfassung

Es lassen sich keine Steine oder Böden mit neuen Eigenschaften erzeugen. Man kann aber für ganz spezielle Zwecke den Spieler optisch in die Irre führen. In den wenigsten Fällen macht das aber wirklich Sinn. Alles in allem also eher ein Spielerei.

Persönliche Werkzeuge