Na gut, zum mitdenken...
Erstens brauchst Du einen Aktivator- den Rufknopf, Du brauchst eigentlich zwei aber wir können zweimal den gleichen nehmen.
Dann brauchst Du natürlich die Kabine oder eine grosse Steinplatte- ich glaub die quadratische Alt-Gramfeste-Platte
in_OM_Plat512 (aus Tribunal) wäre geeignet, ist aber ein Static, müsstest Du also von der Tribunal-CD raussuchen und als Modell für den Aufzug einsetzen.
an die Aufzug-Platte ein Script, ich setze vorraus das die Platte im Editor an der untersten Position aufgestellt wurde. Die Hubhöhe beträgt im Script 512 Bildchirmeinheiten, die musst Du anpassen. Die Hub-Geschwindigkeit justierst Du indem Du den Wert für Richtung anpasst, ich würde sagen statt 1 und -1 nimm erstmal 16 und -16, probier dann 24 und 32 aus um die optimale Geschwindigkeit herauszufinden, im Beispielscript hab ich der Übersicht wegen 1 und -1 verwendet.
Ausserdem muss die Platte als persistent markiert, einmalig sein und eine eigene ID haben damit sie sich von aussen steuern lässt, ich nenn sie ab hier mal "Liftplatte".
an die Liftplatte kommt dann das Script
begin LiftPlatScript
short Richtung
; die Richtung in die die Liftplatte unterwegs ist
; positiv=aufwärts, negativ=abwärts, 0=Stillstand
short verlassen
; hat der Spieler die Liftplatte verlassen ( damit sie nicht ununterbrochen rauf und runter fährt)
float ganzOben
float ganzUnten
if ( GanzOben == GanzUnten )
; kann nur im allerersten Script-Durchlauf so sein...
; drum legen wir hier die Werte für die Hubhöhe fest
set GanzUnten to Getpos Z
set GanzOben to GanzUnten + 512
endif
if ( GetStandingPC == 0 )
; steht der Spieler nicht auf der Platte dann hat er sie also verlassen:
set verlassen to 1
else
; steht er wohl drauf,
; die Platte soll entweder durch Betreten oder einen Rufknopf
; ausgelösst werden können, das durch betreten ausgelöste passiert hier:
if ( Richtung == 0 )
; die Platte steht noch oder wieder still
if ( verlassen == 0 )
; wenn die Liftplatte grade oben oder unten angekommen ist soll sie warten
; bis der Spieler sie verlassen hat und nicht sofort wieder umkehren
; also raus hier:
return
endif
;hier steht die Platte also immer noch still...
if ( GetPos Z < GanzOben )
; und die Platte ist nicht oben, also setzen wir die Richtung aufwärts:
set Richtung to 1
elseif ( GetPos Z > GanzUnten )
; umgedreht- ist die Platte nicht unten dann soll sie nun runterfahren
set Richtung to -1
endif
endif
;platte in Bewegung und Spieler steht auch drauf, also merken wir uns das:
set verlassen to 0
endif
if ( Richtung == 0 )
; die Platte soll sich nicht bewegen, also wird das Script hier verlassen:
return
endif
; die Platte soll sich also bewegen:
moveworld Z Richtung
if ( Richtung > 0 )
; hier aufwärts
if ( Getpos Z >= GanzOben )
; hat die Platte den obersten Punkt erreicht halten wir an
set Richtung to 0
; und um sicher zu gehen stellen wir sie an die "richtige" Stelle
Setpos Z GanzOben
endif
elseif ( Richtung < 0 )
; hier abwärts das gleiche
if ( GetPos Z <= GanzUnten )
set Richtung to 0
Setpos Z GanzUnten
endif
endif
end
die Schalter, natürlich Aktivator sollten in der selben Zelle oder im gleichen Exterior-Bereich aufgebaut sein- um an beiden Rufknöpfen das gleiche Script und somit den gleichen Rufknopf für oben und unten verwenden zu können musst Du dir "merken" an welcher Z-Position Du den oberen Knopf aufstellst. Dabei unbedingt SnapToGrid verwenden oder die Z-Position manuell setzen damit es eine glatte Zahl für die Z-Position des oberen Knopfes wird.
Und dann ( erst nachdem die Liftplatte bereits aufgestellt, als persistent markiert ist und ihr Script trägt kannst Du das Rufknopf-Script speichern ) etwa so
begin RufknopfScript
short WelcherKnopf
; der Knopf mit der -1 ist der untere, der Knopf mit der 1 der obere
if ( WelcherKnopf == 0 )
; passiert nur beim ersten Durchlauf
if ( Getpos Z ==
hier gemerkteZ-Position des oberen Rufknopfes einsetzen)
; dann bin ich der obere Knopf und rufe die Platte nach oben
set WelcherKnopf to 1
else
; bin ich der untere Knopf...
set WelcherKnopf to -1
; für 1 und -1 musst Du dann wie im anderen Script den Wert der Hubgeschwindigkeit verwenden
endif
endif
if ( OnActivate )
set Liftplatte.Richtung to WelcherKnopf
endif
end
So, jetzt verdau das mal
PS: Natürlich kannst Du auch zwei verschiedene Rufknöpfe mit jeweils einem eigenem Script machen das sähe dann so aus:
begin ObererKnopf
if ( OnActivate )
set Liftplatte.Richtung to 1
endif
end
begin UntererKnopf
if ( OnActivate )
set Liftplatte.Richtung to -1
endif
end