ZitatAlles anzeigenTutorial:
Aufzugkäfig mit funktionierenden Türen
Am Anfang muß man sicherstellen, dass folgende Scripts geladen sind:
gen.osm
NVScripts
tnHScripts
Überlegungen
Zunächst überlegen wir uns, was unser Aufzug so alles können soll.
In Thief kann ein Lift alles möglich sein, vom klassischen Lift bis zum Vehikel oder sogar ein Vogel.
Ich beschreibe hier einen klassischen Aufzug, bei dem man die Türen entweder selbst auf/zumacht oder
dies automatisch passiert.
Die Grundplattform
Zunächst wählen wir die Plattform. Sie sollte groß genug sein. Ich wähle diesmal 8x0.25x16. Dimensions müssen angepasst werden!
Was ausgewählt wird, ist fast egal, es muß ein Objekt sein, das als Lift tauglich ist. Ein Vator, Lift, Railpost, Stuhl...
Ich nehme einen Stuhl, gebe ihm die Shape adoor3, verpasse eine replacement-Textur (Add--Shape--TxtReplr0: obj/txt16/NamederTextur)
Scripts für die Aufzugplattform: (s-->script)
StdElevator
StopAtWaypoints
Elevatorsounds
Sonstiges für den Lift:
Physic-->Misc
-->
Ai Collides With: True
Collision Type: Bounce
MovingTerrain: False
Object System: Immobile: False
AI--Utility
-->
Path Avoid: Block pathfind
Pathable Object: True
Noch einen Namen vergeben: MeinLift (von nun an ML abgekürzt).
Das sind nun die Grundeinstellungen für den Fahrstuhl.
Zum Betrieb
Bevor wir ihn weiter ausbauen, wollen wir schauen, ob er funktioniert.
An der Stelle, wo der Fahrstuhl später (zuerst) starten soll, kommt ein Terrpt hin. Also in die Mitte des Aufzugs in der Höhe der unteren ML-Plattform.
Erzeuge einen Link ML-->Terrpt: TpathInit.
Dahin, wo der Aufzug fahren soll, kommt ein zweiter Terrpt, der meist höher gelegen ist. Diese Punkte werden über Tpath-Links verbunden (Rücklink nicht vergessen).
Data im Link:
Speed: 3 (oder mehr)
Pause: 500
Path Limit: Sollte bei schnellen Lifts gesetzt werden
Oben und unten werden Aufzugschalter gesetzt, die die TerrPts, sowie die Plattform via Control-Device Links anfunken.
Die Schalter könnte man aber auch in den Aufzug kleben.
Pathfinding berechnen und ausprobieren. Das muß erstmal klappen. Der Aufzug wird nun am unteren Terrpt sein. Man kann ihn von nun an nur noch bewegen, wenn der Terrpt bewegt wird.
Ausbau Fahrstuhl
Nun machen wir uns dran, die Seitenwände dranzupappen.
Wir wählen Objekte, ähnlich wie die Grundplattform aus
4 Seitenwände hinten und vorne von gleicher Größe, etwa 6x0.25x8. Ich empfehle wie zuvor Objekte mit Replacement-Texturen
2 Stirnwände, ca. 8x0.25x8
1 Dach, so groß, wie die untere Plattform
Diese Wände stellen wir erstmal nur dran, um zu schauen, wie es aussieht
Es fehlen noch die Tür(en). Also geschwind was passendes gemacht. Aber obacht!
Es darf auf keinen Fall eine echte Tür sein mit door-Script und Eigenschaften einer Tür. Sie soll nur in die Lücke passen.
Die Türen bekommen FrobInfo--World Action: Script oder eine entsprechende Metaproperty.
Jetzt haben wir zunächst alle Objekte zusammen.
Alle Objekte (bis auf die "Türen") werden nun nun via PhysAttach an die Grundplattform geklebt.
Ein Objekt für die Seitenwand auswählen.
Link PhysAttach-->Aufzugplattform
Data des Links: 3.8,-4.7,4.0
Das ist die Wand für links unten. Analog verfährt man weiter, bis alles dran ist. Das wird ein Weilchen dauern. Nicht aber die "Türen". Die bleiben frei.
Auch per PhysAttach können weitere Objekte im Fahrstuhl platziert werden (Kisten, Schalter, Poster, usw)
Am Ende wird nochmal überprüft, ob der Fahrstuhl mit dem ganzen Zeugs dran richtig fährt.
Die Fahrstuhltüren
Die Fahrstuhltüren sind bislang noch nicht am Fahrstuhl, wie die anderen Teile, sondern nur in der Position, wo sie später am Fahrstuhl dran sein sollen.
Die Türen brauchen erstmal einen Namen, VTuer und HTuer
Sie bekommen die NVScripte
-NVRelayTrap
-NVRelayTrap2
-NVFrobToggle
Design Note (der Vordertür): NVFrobToggleTDest=[Me]; NVFrobToggleTOn="FrobOne"; NVFrobToggleTOff="FrobTwo"; NVRelayTrapTDest="Aufmacher"; NVRelayTrapOn="FrobOne"; NVRelayTrapOff="Null"; NVRelayTrap2TDest="Zumacher"; NVRelayTrap2On="FrobTwo"; NVRelayTrap2Off="Null"
Die Hintertür bekommt dieselbe Design Note, bis auf "Aufmacher, "Zumacher". Diese Marker bekommen andere Namen.
Dann erstellen wir zwei Marker, einer wird "Aufmacher", der andere "Zumacher" genannt
beide bekommen das NVRelayTrap-Script
Design Note für beide Marker: NVRelayTrapRepeat=58;NVRelayTrapRepeatOnly=0;NVRelayTrapDelay=10;
Nun erstellen wir zwei weitere Marker, sie bekommen das tnHScript: TrapMoveRelative
Ein Marker wird "Liftaufmacher" genannt, der andere "Liftzumacher"
Design Note Liftaufmacher: y=-0.0625;dy=0
Design Note Liftzumacher: y=0.0625;dy=0
Nun wird verlinkt (via Control Device)
Aufmacher--Liftaufmacher
Zumacher--Liftzumacher
Liftaufmacher--Vordertür
Liftzumacher--Vordertür
(eine Hintertür wird analog mit entsprechenden Markern angefunkt)
Wenn alles geklappt hat, kann die Schiebetür in der y-Achse gefrobbt, aufgemacht und wieder zugemacht werden. Genauso wird mit einer weiteren Tür verfahren werden, allerdings muß man andere Namen in der Design Note verwenden.
Will man die Tür in einer anderen Achse verschieben, muß man x, bzw. z in der Design Note definieren.
Die Fahrstuhltüren fahren noch nicht mit
Fährt man nun mit dem Fahrstuhl, wird man feststellen, dass die Türen nicht mitgehen. Naja, sie sind halt nicht dran. Das können wir ändern. Oder so tun als ob.
An der Stelle, wo die Vordertüre ist, wird ein Teleporter-Marker via PhysAttach an die Grundplattform hingeklebt (hinten genauso). CD link Teleporter-->"Tür" wird gesetzt.
Ein weiterer Marker wird erstellt.
Script: NVRelaytrap. Design Note: NVRelayTrapRepeat=3800;NVRelaytrapondelay=10;NVRelayTrapRepeatOnly=1;
(Der Wert 3800 muß je nach Höhe angepasst werden, meist sollte es viel weniger sein; er gibt an wie oft die Tür teleportiert wird, um sie in Position zu halten)
Dieser Marker wird vom unteren, wie vom oberen Fahstuhlschalter via CD verbunden und funkt selbst die Teleport-Trap an.
Nun hat man einen Fahrstuhl mit funktionierenden Türen, die bei der Reise mitgehen. Und warum keine echten Türen? Weil die nur Ärger machen würden.
Weitere Gimmicks:
Man kann sich ja überlegen, was man sonst so für seinen Fahrstuhl haben will.
-Sollen die Aufzugtüren während der fahrt nicht zu frobben sein, sollen sie keine FrobInfo haben, sondern eine Metaproperty mit FrobInfo--World Action: Script. Diese kann man dann z. B. durch eine Conversation oder NVMetatrap an/abschalten.
-Sollen die Türen automatisch auf/zugehen, kann man dies über die TerrPts steuern oder schlicht Boundstrigger verwenden. In diesem beispiel müssen die Marker "Aufmacher", bzw. "Zumacher" ein Signal bekommen.
-Bei einem schräg laufenden Aufzug hat man das Problem, dass der Spieler nicht an seinem Platz verweilt, sondern gegen und durch die Wand gedrückt wird, bis er abstürzt oder im Boden versinkt.
Ich habe das so gelöst, dass eine Stim bei Berührung der Aufzugwand dafür sorgt, dass die Spieler etwas zurückgeschupst werden (ein Miniteleport). Bei Bedarf kann ich das noch erläutern.
Anmerkungen:
-Begriffe wie "True" und "False" heißen soviel wie ja oder nein, man muß dann nur ein Häkchen im jeweiligen Minimenü setzen
-Zuweilen muß man in DromEd eine Einstellung treffen, um sie dann wieder zurückzunehmen. Ein typisches Beispiel: "MovingTerrain: false".
-CD=Control Device Link)
-Editor-->Design Note
Tutorial: Aufzugkäfig mit funktionierenden Türen
-
-
Danke!
ZitatIn Thief kann ein Lift alles möglich sein, vom klassischen Lift bis zum Vehikel oder sogar ein Vogel.
..auch als Drone, .. aus einem Buch lesend?, Fiction, SuperCam, CamVator, oder direkt?
Der Winter naht! -
Klingt ja spannend! Danke für das ausführliche Tutorial.
Den will ich mal in Aktion sehen.
Gibt's denn dazu auch ein kleines .cow Demolevel? -
Momentan optimiere ich den Aufzug noch. Wenn ich mal Zeit habe, mache ich eine Demo. Da geht locker gleich eine Stunde drauf