Eine selbst schaltende Ampel

Habt ihr euch auch gefragt wie eine selbst schaltende Ampel àla cs_assault funktioniert? Hier soll nun erklärt werden wie es geht.

Ampelmast

Als erstes setzen wir die 2 Ampelmasten per prop_static. Als Model nehmen wir: props/cs_assault/stoplight.mdl

Lampen

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:

  • Render mode: World Space Glow
  • FX Amount: 255
  • Framerate: 10.0
  • Spritname: materials/sprites/glow04.vmt
  • Scale: 0.9
  • Size of Glow Proxy Geometry: 2.0


Hier die Werte, die für jedes Sprite anders sind:

Ampel 1

Rot

  • Name: sprite_red1
  • FX Color: 255 0 0 200

Gelb

  • Name: sprite_yellow1
  • FX Color: 255 255 0 200

Grün

  • Name: sprite_green1
  • FX Color: 0 128 0 200

Ampel 2

Rot

  • Name: sprite_red2
  • FX Color: 255 0 0 200

Gelb

  • Name: sprite_yellow2
  • FX Color: 255 255 0 200

Grün

  • Name: sprite_green2
  • FX Color: 0 128 0 200

Steuerung

Lampen

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.

Ampel 1

Rot
  • Name: set_red1
Output Target Entity Target Input
OnTrigger sprite_red1 ShowSprite
OnTrigger sprite_yellow1 HideSprite
OnTrigger sprite_green1 HideSprite


Gelb
  • Name: set_yellow1
Output Target Entity Target Input
OnTrigger sprite_red1 HideSprite
OnTrigger sprite_yellow1 ShowSprite
OnTrigger sprite_green1 HideSprite


Grün
  • Name: set_green1
Output Target Entity Target Input
OnTrigger sprite_red1 HideSprite
OnTrigger sprite_yellow1 HideSprite
OnTrigger sprite_green1 ShowSprite


Ampel 2

Rot
  • Name: set_red2
Output Target Entity Target Input
OnTrigger sprite_red2 ShowSprite
OnTrigger sprite_yellow2 HideSprite
OnTrigger sprite_green2 HideSprite


Gelb
  • Name: set_yellow2
Output Target Entity Target Input
OnTrigger sprite_red2 HideSprite
OnTrigger sprite_yellow2 ShowSprite
OnTrigger sprite_green2 HideSprite


Grün
  • Name: set_green2
Output Target Entity Target Input
OnTrigger sprite_red2 HideSprite
OnTrigger sprite_yellow2 HideSprite
OnTrigger sprite_green2 ShowSprite


Phasen

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.

Ampel 1: Grün - Ampel 2: Rot

  • Name: set_green1_and_red2
Output Target Entity Target Input
OnTrigger set_green1 Trigger
OnTrigger set_red2 Trigger


Ampel 1: Rot - Ampel 2: Grün

  • Name: set_red1_and_green2
Output Target Entity Target Input
OnTrigger set_red1 Trigger
OnTrigger set_green2 Trigger


Ampel 1: Gelb - Ampel 2: Gelb

  • Name: set_yellow1_and_yellow2
Output Target Entity Target Input
OnTrigger set_yellow1 Trigger
OnTrigger set_yellow2 Trigger


Ablauf

Um den Ablauf der einzelne Ampelphasen zu steueren brauchen wir ein weiteres logic_relay:

  • Name: synch
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.

  • Name: timer
  • Refire Interval: 80
  • Use random time: No

^ Output ^ Target Entity ^ Target Input ^

OnTimer synch Trigger


Zu guter letzt kommt noch ein logic_auto, damit das Ganze auch initial getriggert wird.

  • Global State to Read: None
Output Target Entity Target Input Delay
OnMapSpawn timer FireTimer 1


Erklärung

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.

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_2/tutorials/ampel_die_selbst_schaltet.txt · Zuletzt geändert: 2009/11/28 15:41 von Adrian_Broher