Construction Set "Doppelte Tür"

Fellan

Freund des Hauses
Ich möchte eine "doppelte Tür" erstellen, das heißt:

Tür A ist standardmäßig zu, die sieht der Spieler als erstes. Tür B ist standardmäßig auf, wenn der Spieler Tür A aktiviert, aktiviert er gleichzeitig Tür B, die dann zu geht. Will er nun Tür B aktivieren, erscheint eine MessageBox, dass die Tür an anderer Stelle geöffnet wird - er muss zurück zu Tür A gehen und diese wieder zu machen - Tür B geht auf.

Wenn ich jetzt in den Scripts die zweite Tür via "TürRef.activate" schließe, funktioniert das nicht - denn wenn sie aktiviert wird, öffnet sie sich ja wieder. Obwohl ich "if IsActionRef Player == 1" gesetzt habe, funktioniert es nicht.

Gibt es einen anderen Befehl wie "TürRef.open" bzw. "TürRef.close", um Türen zu öffnen oder zu schließen ("open" und "close" funktionieren nicht!)? Ist bei Türen auch ein normales "playgroup forward 1" bzw. "playgroup backward 1" möglich?
 
jaja klar geht das.. also die Türen... sollen die Unmöglich verschlossen sein, oder einfach ohne schloss?

weil sonst köntest du es mit "Türref.unlock /lock 100 versuchen
 
Sie werden schlicht nicht aktiviert. Das ganze funktioniert noch nicht perfekt, aber in jedem Raum gibt es gut versteckt einen "Nothebel" falls man sich mal selbst einschließt. Vielleicht lasse ich das ganze am Ende ganz weg, so wie es jetzt ist gefällt es mir aber gut.
 
Code:
scn doorAsc
short open

begin onactivate
if getopenstate <= 2
set open to 1
elseif getopenstate >= 3
set open to 0
endif
end

Code:
scn doorBsc

begin onactivate
if isactionref == player
Message "Die Tür wird anderswo geöffnet"
endif
if doorAref.open == 1
setopenstate 0
elseif doorAref.open == 0
setopenstate 1
endif
end

schau, ob das klappt... ich hab das noch nie gemacht^^
kl. anmerkung: doorAref sollte die reference-ID von tür A sein.

und im editor gibts glaub ich noch einstellungen, ob eine tür standartmäßig offen oder zu ist. das musst du dann natürlich erst noch anhäkeln, damit tür B dann von anfang an offen ist.
 
Die Scripts sehen jetzt folgendermaßen aus:

Code:
scn 0LISQGhostShipDoubleDoorAnimScript01

short done

begin onActivate Player

if IsActionRef Player == 1

        if "0LISQShipDoorState" == 2
            MessageBox "Die Tür ist fest verriegelt und lässt sich nicht öffnen."
        endif

        if "0LISQShipDoorState" == 1
            Activate
            "0LISQGhostShipDoubleDoorAnimRef02".activate "0LIDummyDoorGhostShipMainDeckRef"
            set 0LISQShipDoorState to 2
        endif

        if "0LISQShipDoorState" == 0
            Activate
            "0LISQGhostShipDoubleDoorAnimRef02".activate "0LIDummyDoorGhostShipMainDeckRef"
            set 0LISQShipDoorState to 1
        endif

endif

end
Code:
scn 0LISQGhostShipDoubleDoorAnimScript02

short done

begin onActivate Player

if IsActionRef Player == 1

        if "0LISQShipDoorState" == 1
            MessageBox "Die Tür ist fest verriegelt und lässt sich nicht öffnen."
        endif

        if "0LISQShipDoorState" == 0
            Activate
            "0LISQGhostShipDoubleDoorAnimRef01".activate "0LIDummyDoorGhostShipMainDeckRef"
            set 0LISQShipDoorState to 1
        endif

        if "0LISQShipDoorState" == 2
            Activate
            "0LISQGhostShipDoubleDoorAnimRef01".activate "0LIDummyDoorGhostShipMainDeckRef"
            set 0LISQShipDoorState to 0
        endif
        
endif

end

Dabei ist "0LISQShipDoorState" eine Global Variable, die angibt, wie die Türen momentan zueinander stehen, also 0 == Tür A zu, Tür B auf, 1 == Tür A auf, Tür B zu, Tür B MessageBox, 2 == Tür B auf, Tür A zu, Tür A aber MessageBox.

Das ist aber sehr fehleranfällig, man kann sich z.B. einschließen. Dafür gibt es in jedem Raum einen versteckten Schalter, mit dem man sich zur Not befreien kann.