Fahrstühle

Hier sind ein paar Methoden beschrieben, wie man Fahrstühle machen kann.

Methode 1 (func_train)

Um einen Fahrstuhl zu bauen bedarf es einem Block der einem Fahrstuhl oder einer einfachen Plattform, die hoch und runter fahren soll entsprechen. Diesem Block groupt man falls er aus mehreren Teilen besteht und macht ihn zum Entity func_train.

In den Einstellungen müsst ihr den Namen vergeben (z.B. aufzug) und den ersten Haltepunkt angeben (z.B. stopbottom). Der Aufzug wird sich dann beim starten der map an dem path_corner mit namen „stopbottom“ befinden. (Die Name sind nur ein Beispiel, es können auch andere Namen genutzt werden)
Aber moment, welches path_corner?

func_train:

Key Value
Name aufzug
First stop target stopbottom


lift2.jpg

Die, welche wir jetzt setzen. Erstellt dazu path_corner Entity im Mittelpunkt des Originbrushes eures func_trains. Gebt diesem nun folgende Einstellungen:

1. path_corner:

Key Value
Name stopbottom
next stop target stoptop
Flags: wait for retrigger


Dieser path_corner stellt nun den Startpunkt dar, da wir ihn vorher im func_train angegeben haben. Das Flag wait for retrigger gibt an, das der Zug sich nur weiterbewegen soll, wenn er getriggert wurde. Das nächste Ziel eures Aufzugs gebt ihr bei next stop target an. Dieses Ziel ist ein weiterer path_corner, welchen ihr an der Stelle positioniert, wo der Aufzug hinfahren soll. Also erstellt ihr einen path_corner mit den folgenden Einstellungen:

2. path_corner:

Key Value
Name stoptop
next stop target stopbottom
Flags: wait for retrigger


lift.jpg

Durch diese Einstellung fährt der func_train 'aufzug' vom path_corner 'stopbottom' zum path_corner 'stoptop' und zurück. Das macht er nur dann, wenn er vorher mit einem func_button oder einen beliebigen Trigger getriggert wurde.

Methode 2 (func_door)

Es gibt noch eine zweite Möglichkeit einen Fahrstuhl zu erstellen, und manchmal ist sie besser manchmal schlechter als die von beschriebene Methode

Man kann auch eine Türe machen deren lip, also der Wert der besagt wie weit die Türe offenstehen soll auf einen negativen Wert setzt, bewegt sich die Türe weiter als ihre eigene Länge.

Also:

  • Eine 128 Einheiten hohe Tür die sich nach oben bewegen soll bewegt sich 128 Einheiten nach oben.
  • Wenn man nun einen lip Wert von 16 angibt, bewegt sie sich nur 112 Einheiten nach oben.
  • Wenn man ihr einen lip Wert von -512 gibt bewegt sie sich 640 Einheiten nach oben.

Ganz einfach, oder ?

Man muss diesem func_door also nur noch das aussehen einer Platform oder auch eines komplexeren Fahrstuhls geben

Ich liste noch einmal auf für was diese Methode geeignet ist und für was nicht:

  • Gut für einefache Fahrstühle die nur 2 Stationen haben
  • Gut für Fahstühle die sich nur nach oben, unten, Norden, Süden, Westen oder Osten bewegen müssen
  • Schlecht für Fahrstühle die mehr als 2 Stationen haben
  • Schlecht für Fahstühle die auch schräg nach oben/unten bzw. einen nicht linearen Verlauf haben (z.B. um die Ecke o.ä.)

Methode 3, Lift mit beweglichem Schalter

Zuerst Baue einfach den Fahrstuhl und den Schalter über den später der Lift ausgelöst werden soll. Danach markiere beide und mache daraus ein func_train. Gib als Namen lift1 ein und unter first_stop_target p1a.

Unter Move Sound und Stop Sound kannst Du einen Dir passenden Sound aussuchen. Erstelle nun zwei path_corner für den Lift, einer unten, einer oben. Markiere einen nach dem anderen und gib ihnen folgende Merkmale:

Unterer path_corner:

Key Value
Name p1a
Next_stop_target p1b
Flags: wait for retrigger


Oberer path_corner:

Key Value
Name p1b
Next_stop_target p1a
Flags: wait for retrigger


Nun mußt Du die richtigen Schalter bauen! Der eine auf dem Lift ist nämlich nur Attrappe! Wie sie aussehen ist letztlich egal weil Du sie später eh nicht sehen wirst. Erstelle also an den stellen, an denen sich der Schalter später einmal befinden wird einen kleinen Block und mache aus ihnen func_rot_buttons (func_buttons eignen sich nicht). Selektiere die Schalter nacheinander und gib ihnen folgende Einstellungen:

func_rot_buttons:

Key Value
Targed Lift1
Distance 0
Render Mode Texture
Flags: not solid


So weit so gut. Im Grunde würde der Lift schon funktionieren. Die unsichtbaren Schalter sind aber ohne Einschränkungen nutzbar. Das heißt im Klartext, daß wenn sich der Lift mit dem Schalter oben befindet, man den unsichtbaren unteren Schalter drücken kann, wodurch der Lift nach unten gafahren käme. Um dieses Problem zu lösen erstelle irgendwo in der nähe der Schalter jeweils ein multi_manager, env_global und ein multisource mit folgende Einstellungen:

Für den unteren Schalter

env_global:

Key Value
Name g_lowbutton
Global state to set glowbutton
Trigger Mode Toggle
Initial state on
Flags: Set initial state


multisource:

Key Value
Name m_lowbutton
Global state Master glowbutton


multi_manager:

Key Value
Name lowbutton
g_lowbutton 0
Lift 10


Für den oberen Schalter

env_global:

Key Value
Name g_highbutton
Global state to set ghighbutton
Trigger Mode Toggle
Initial state off
Flags: Set initial state


multisource:

Key Value
Name m_highbutton
Global state Master ghighbutton


multi_manager:

Key Value
Name highbutton
g_highbutton 0
Lift1 0


Letzte Einstellungen

Selektiere nun noch mal die path_corner und trage beim unteren unter Fire on pass g_lowbutton und beim oberen g_higbutton ein. Zu guter letzt ein paar neue Einstellungen für die Schalter:

Unterer Schalter:

Key Value
Targed lowbutton
Master m_lowbutton


Oberer Schalter:

Key Value
Targed highbutton
Master m_highbutton


Das wärs. Da der ganze Vorgang doch recht kompliziert ist hier eine kleine Beschreibung: Sobald der (unsichtbare) Schalter gedrückt wird, aktiviert er den unteren multimanager, der zum ersten den eben gedrückten Schalter deaktiviert und zum zweiten den Lift startet. Sobald der den oberen path_corner erreicht hat, aktiviert der Mithilfe des oberen env_global den oberen Schalter. Beim herunterfahren ist es dasselbe. Außerdem möchte ich darauf hinweisen, das alle Einträge solange sie zweckmäßig übereinstimmen Variabel sind.

Methode 4, Fahrstuhl mit mehreren Stockwerken

Die Verwendung aller Dokumente einschließlich der Abbildungen ausschließlich zu nichtkommerziellen Zwecken. Verbreitung des Dokuments auf Speichermedien, (insbesondere auf CD-ROMs als Beilage zu Zeitschriften und Magazinen oder sog. "Mission-Packs" etc.) ist untersagt.
 
half-life/tutorials/fahrstuehle.txt · Zuletzt geändert: 2006/03/08 12:22 von Richman