Habt ihr euch auch gefragt wie eine selbst schaltende Ampel àla cs_assault funktioniert? Hier soll nun erklärt werden wie es geht.
Als erstes setzen wir die 2 Ampelmasten per prop_static. Als Model nehmen wir: props/cs_assault/stoplight.mdl
Der Lichteffekt der Ampel wird per env_sprite gemacht. 3 Sprites pro Ampel für Rot, Gelb und Grün, die jeweils passend vor den Ampelmasten positioniert werden.
Die env_sprites bekommen folgende Einstellungen, dabei enden die Namen der Sprites der einen Ampel auf 1 und die der anderen auf 2. Die Einstellugen aller 6 Sprites unterscheiden sich nur in Name und FX Color, allen gemeinsam sind diese Werte:
Hier die Werte, die für jedes Sprite anders sind:
Für die Ansteuerung der einzelnen Ampelphasen wird als erstes für jedes env_sprite ein logic_relay gebraucht, das jeweils ein Sprite einschaltet und die anderen beiden aus. Am besten plaziert man die logic_relays jeweils neben das dazugehörige env_sprites.
| Output | Target Entity | Target Input |
|---|---|---|
| OnTrigger | sprite_red1 | ShowSprite |
| OnTrigger | sprite_yellow1 | HideSprite |
| OnTrigger | sprite_green1 | HideSprite |
| Output | Target Entity | Target Input |
|---|---|---|
| OnTrigger | sprite_red1 | HideSprite |
| OnTrigger | sprite_yellow1 | ShowSprite |
| OnTrigger | sprite_green1 | HideSprite |
| Output | Target Entity | Target Input |
|---|---|---|
| OnTrigger | sprite_red1 | HideSprite |
| OnTrigger | sprite_yellow1 | HideSprite |
| OnTrigger | sprite_green1 | ShowSprite |
| Output | Target Entity | Target Input |
|---|---|---|
| OnTrigger | sprite_red2 | ShowSprite |
| OnTrigger | sprite_yellow2 | HideSprite |
| OnTrigger | sprite_green2 | HideSprite |
| Output | Target Entity | Target Input |
|---|---|---|
| OnTrigger | sprite_red2 | HideSprite |
| OnTrigger | sprite_yellow2 | ShowSprite |
| OnTrigger | sprite_green2 | HideSprite |
| Output | Target Entity | Target Input |
|---|---|---|
| OnTrigger | sprite_red2 | HideSprite |
| OnTrigger | sprite_yellow2 | HideSprite |
| OnTrigger | sprite_green2 | ShowSprite |
Als nächstes setzen wir 3 logic_relays, die die miteinander gekoppelten Phasen der beiden Ampeln schalten, also z.B. Ampel 1: Grün und Ampel 2: Rot usw.
| Output | Target Entity | Target Input |
|---|---|---|
| OnTrigger | set_green1 | Trigger |
| OnTrigger | set_red2 | Trigger |
| Output | Target Entity | Target Input |
|---|---|---|
| OnTrigger | set_red1 | Trigger |
| OnTrigger | set_green2 | Trigger |
| Output | Target Entity | Target Input |
|---|---|---|
| OnTrigger | set_yellow1 | Trigger |
| OnTrigger | set_yellow2 | Trigger |
Um den Ablauf der einzelne Ampelphasen zu steueren brauchen wir ein weiteres logic_relay:
| Output | Target Entity | Target Input | Delay |
|---|---|---|---|
| OnTrigger | set_green1_and_red2 | Trigger | 0 |
| OnTrigger | set_yellow1_and_yellow2 | Trigger | 35 |
| OnTrigger | set_red1_and_green2 | Trigger | 40 |
| OnTrigger | set_yellow1_and_yellow2 | Trigger | 75 |
Damit die einzelne Phasen nicht nur einmal durchlaufen brauchen wir noch einen logic_timer.
^ Output ^ Target Entity ^ Target Input ^
| OnTimer | synch | Trigger |
Zu guter letzt kommt noch ein logic_auto, damit das Ganze auch initial getriggert wird.
| Output | Target Entity | Target Input | Delay |
|---|---|---|---|
| OnMapSpawn | timer | FireTimer | 1 |
Beim Mapspawn wird das logic_auto aktiviert und dann eine Ampeln rot und die andere grün. Nach 35sec werden beide gelb. Nach weiteren 5sec ist dann eine Ampeln rot und die andere grün, aber anderes herum als beim ersten mal. Als letztes werden beide wieder für 5sec gelb beschaltet und der Zyklus beginnt von vorne.
Diese Version der Ansteuerung fehlt noch die Rot-Gelb-Phase.