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 |
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 |
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.


