Rundenübergreifende Änderungen in CS:S

Als Beispiel nahm ich ein Licht welches anfangs aus ist und dann Rundenübergreifend eingeschaltet werden kann. Jedoch läßt sich der Mechanismus auch einsetzen, um z.B. Türen zu öffnen oder zu schließen, oder was sonst Deine Fantasie hergibt....

Benötigte Entity's:

  • 2x trigger_multiple
  • 1x func_physbox (oder _multiplayer)
  • 1x func_brush
  • 1x logic_auto

Beispiel spezifische Entity's:

  • 1x light (Statusanzeigeelement)
  • 2x func_button (Speichern an/aus)

Aufbau:

Alle Entity's werden wie auf dem Bild angeordnet aufgebaut. Das logic_auto befindet sich irgendwo in der Map. Meist reicht ein logic_auto für die ganze Map und aktiviert mehere Sachen, so dass ich es auf dem Bild nicht zeige.

Klicke auf die Grafik für eine größere Ansicht 

Name:	tut_1.jpg 
Hits:	59 
Größe:	83,0 KB 
ID:	423

Beim Aufbau ist dadrauf zu Achten, dass die Konstruktion auf dem Boden steht, da sonst u.U. die Box zu schnell durch den Trigger fallen kann.

Name:  tut_2.jpg
Hits: 156
Größe:  91,5 KB

Einstellungen der Hauptentity's:

  • trigger_multiple (obere):
    • Name: trigger_save_1
    • Start Disabled: Yes
    • Output "OnTrigger | licht_1 | TurnOff | | 0.0 | no "
    • Output "OnTrigger | !self | Disable | | 0.0 | no "
    • Flags: [ ] Clients
    • Flags: [x] Physics Objects

  • trigger_multiple (untere):
    • Name: <wird nicht benötigt>
    • Start Disabled: No
    • Output "OnTrigger | licht_1 | TurnOn | | 0.0 | no "
    • Output "OnTrigger | !self | Disable | | 0.0 | no "
    • Flags: [ ] Clients
    • Flags: [x] Physics Objects

  • func_physics:
    • <benötigt keine Einstellungen>

  • func_brush:
    • Name: brush_save_1

  • logic_auto:
    • Output "OnMapSpawn | trigger_save_* | enable | | 1.0 | no "


Einstellungen der Beispielentity's:

  • light:
    • Name: licht_1
    • Flags: [x] Initially dark

  • func_button (rundenübergreifendes Auschalten):
    • Flags: [x] Don't move
    • Flags: [x] Toggle
    • Output "OnPressed | brush_save_1 | Enable | | 0.0 | no "
    • Output "OnPressed | brush_save_1 | TurnOff | | 0.0 | no "

  • func_button (rundenübergreifendes Einschalten):
    • Flags: [x] Don't move
    • Flags: [x] Toggle
    • Output "OnPressed | brush_save_1 | Disable | | 0.0 | no "
    • Output "OnPressed | licht_1 | TurnOn | | 0.0 | no "


Wie funktoniert's ?:

Das Entity func_brush ist eines der seltenen Entity's welches nach dem Roundend-Event in CS:S nicht zurückgesetzt wird.

Ausgangssituation: func_brush->enabled, Rundenstart.
Die Physbox fällt auf den func_brush und bleibt liegen. Nach 1er Sekunde (nach Rundenstart) wird der obere Trigger aktiviert und löst so gleich, da die Physboxs in ihrem Bereich liegt, seine Events aus. -> Licht Aus.
Wird der Button zum Einschalten gedrückt, wird das Licht eingeschaltet und der func_brush deaktiviert. Beim nächsten Rundenstart ist der obere Trigger zurückgesetzt (deaktiviert) und der func_brush immernoch deaktivert, sodass die Physbox auf dem Boden fällt, noch bevor der obere Trigger aktiviert wird (1 Sek. nach Rundenstart). Da jetzt die Physbox im unteren Trigger liegt, werden dessen Events ausgelöst und das Licht geht an.
Erst nach dem der Button zum Ausschalten betätigt wird, wird auch der func_brush wieder aktiviert, sodass die Physbox wieder auf bem Brush liegt und das Licht auch ausbleibt.

Hinweis: Wenn das Flag [x] initially dark (beim licht_1) entfernt wird, lässt sich der Vorgang gut beobachten.

Vollständige Liste aller nicht zurückgesetzten Entity's in CS:S:


Beispielmap: sdk_css_roundsave.zip

Viel Spaß beim nachbauen!

dere