Turnstiles und Action/Target

Aus EnigmaWiki

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

Turnstiles können sowohl per Schalter (Lua Code) rotiert werden, als auch selber etwas auslösen, sobald sie rotiert werden. Folgende Ausführungen benutzen als Beispiele zwar die rote Version, aber es ist alles auch mit der grünen möglich.

Rotieren von Turnstiles per Lua Code

Turnstiles (st-turnstile) kann man per Messages rotieren lassen. Und zwar sowohl im Uhrzeigersinn als auch umgekehrt.

-- Rotieren Turnstile per Lua Code
set_stone("st-turnstile", 3, 5, {name="redone"})
set_stone("st-turnstile-n", 3, 4)
 
set_stone("st-switch", 1, 1, {action="callback", target="turn_it_cw"})
set_stone("st-switch", 5, 1, {action="callback", target="turn_it_ccw"})
 
function turn_it_cw()
    enigma.SendMessage(enigma.GetNamedObject("redone"), "signal", 0)
end
 
function turn_it_ccw()
    enigma.SendMessage(enigma.GetNamedObject("redone"), "signal", 1)
end

Action/Target Paar von Turnstiles

Wenn Turnstiles von einem Actor (oder auch von einem Code, siehe oben) rotiert werden, können sie ein Action/Target Paar ausführen. (Im Beispiel wird ein weiteres Turnstile rotiert.) Dabei kann man je nach Drehrichtung eine Andere Aktion ausführen. So ist es z.B. möglich, den Spieler zu zwingen ein Turnstile in einer bestimmten Richtung zu durchlaufen.

-- Action/Target Paar bei Turnstiles
set_stone("st-turnstile", 9, 10, {name="redfull", action="callback", target="rotate_it"})
set_stone("st-turnstile-n", 9, 9)
set_stone("st-turnstile-e", 10, 10)
set_stone("st-turnstile-s", 9, 11)
set_stone("st-turnstile-w", 8, 10)
 
set_stone("st-turnstile", 13, 10, {name="redrotator"})
set_stone("st-turnstile-n", 13, 9)
 
function rotate_it(onoff, sender)
    if onoff == 1 then
        enigma.SendMessage(enigma.GetNamedObject("redrotator"), "signal", 1)
    else
        enigma.SendMessage(enigma.GetNamedObject("redrotator"), "signal", 0)
    end
end
Persönliche Werkzeuge