Guten Tag alle miteinander,
Ich werde euch heute eine Form der Spawnprotection näher bringen, die natürlich auch abwandelbar,
umbaubar und auf mehrere Situationen anwendbar ist.
Aus diesem Grund ist das Tutorial auch ein bischen komplex und sollte nur mit umfassenden Kenntnissen im In-/Out-put System umgesetzt werden.

Hier findet ihr ein Video, wie das dann Ingame aussieht (in dieser Version habe ich ohne ein point_servercommand wie unten erklärt gearbeitet)




Was brauchen wir dafür?
Pro Spawn:
2x trigger_multiple:
**1x trigger_multiple (Nummer eins/alle gleich)
**1x trigger_multiple (Nummer zwei/alle gleich)

Insgesamt:
2x filter_damage_type
1x logic_auto
1x func_movelinear

Also als erstes brauchen wir für jeden Spawn mindestens einen Brush mit der TriggerTextur. Diesen Brush machen wir zu einem trigger_multiple und nennen ihn "protection". Ein Brush wird unter jedem Spawnpunkt gesetzt (Spawn in einer gewissen Höhe anbringen, damit die Spieler in denTrigger fallen).
Wahlweise kann man auch vor jedem Spawn noch eine Wand aus diesen Triggern aufstellen, falls es passieren sollte, dass ein Spieler nicht erfasst wird.

Nun brauchen wir einen "filter_damage_type".
Diesem geben wir den Namen "damage_off"
und stellen ihn folgendermaßen ein:

Name: damage_off
filter_mode: Allow entities that match criteria
Damage Type: BULLET

Danach nehmen wir uns alle vorher erstellten "protection" Trigger vor und geben ihnen folgende Outputs:

OnTrigger | !activator | Setdamagefilter | damage_off | 0.0

Und wenn man den Schaden in diesem Raum nach einer gewissen Zeit wieder anmachen möchte (Dieser Punkt fällt bei einem komplett geschützen Raum mit Teleportern weg):

OnEndTouch | protection | Disable | 14.0 (Wert dem Ausschalten der Spawnprotection anpassen)



(Wenn sich einer der Spieler nun aus seinem Trigger bewegt werden alle abgeschalten und somit wird falls man später die Protection aufhebt aber jemand anderes wieder in den Trigger tritt niemand mehr unsterblich)

Dann bastelt ihr noch ein logic_auto, damit am Beginn der Runde alle Trigger wieder aktiviert werden.
Output des selbigen:

OnMapSpawn | protection | Enable | 0.0

Damit wäre das Schützen der Spieler erledigt.

Nun fragt ihr euch sicher, wie ihr es am besten wieder hinbekommt, dass die Spieler wieder angreifbar sind.

Dazu benötigt ihr an einer Seite der Map soviele 1 Unit dicke trigger_multiples wie Spielerspawns.
Diese müssen am Anfang in ihren Flags auf disabled stehen.



Diese trigger_multiples nennt ihr am besten "damage_enabler" und gebt ihnen die folgenden Outputs:

OnStartTouch | !activator | Setdamagefilter | damage_on | 0.0

Richtig, ihr erkennt nun oben im Output, dass dafür ein weiteres filter_damage_type mit dem Namen "damage_on" gebraucht wird,
ein solches erstellen wir auch gleich:

Name: damage_on
Filter mode: Disallow entities that match criteria
Damage Type: BULLET

Diese am Rand erstellten Trigger müssen nun ja auch noch irgendwie aktiviert werden und den Spieler berühren.
Dazu erstellt ihr in den triggern einfach ein "func_movelinear" Entity.

(siehe Oberes Bild)

Dieses nennt ihr "rush" und gebt ihm bei
Speed einen möglichst hohen Wert (z.B. 9999),
tragt bei
Movedirection den Weg zum anderen Ende der Map (in Units) ein
und bei
Move Distance die Distanz, die zurückzulegen ist

Dann gebt ihr ihm folgende Outputs:

OnFullyClosed | rush | open | 0.0
OnFullyOpen | rush | close | 0.0

Tragt nun bei Parent den Namen eurer 1 Unit trigger_multiples (hier: damage_enabler) ein.

Zum Schluss, um zu gewährleisten, wann und ob der Schaden wieder abgestellt wird braucht ihr euer logic_auto wieder.

Tragt dort in die Outputs folgendes ein:

OnMapSpawn | damage_enabler | Disable | 0.0
OnMapSpawn | damage_enabler | Enable | 15.0 (Wann soll die Spawnprotection aufgehoben werden? + Freezetime)
OnMapSpawn | rush | Open | 15.0 (selbe Zeit wie oben)

Hier nochmal ein Gesamtüberblick:




Und nochmal alle wichtigen Outputs im Überblick:



Dasselbe geht natürlich auch ohne das func_movelinear wenn ihr z.B. einen Bereich wollt, indem man immer geschützt ist.
Beispiele dafür die denkbar wären, wäre eventuell ein Spawn für Deathmatch (Am Ausgang einen/mehrere Trigger mit
OnStartTouch | !activator | Setdamagefilter | damage_on | 0.0 hinstellen)
oder ein Raum mit Teleportern (um das info_teleport_destination denselbigen Trigger).

Download Beispielmap.

Natürlich könnt ihr das Ganze auch mit point_servercommands ansagen lassen.

Platziert hierfür ein point_servercommand und gebt ihm einen Namen.
Danach gebt ihr dem logic_auto die Outputs:

OnMapSpawn | Name des point_servercommand | command | say Spawnprotection enabled | 0.0

OnMapSpawn | Name des point_servercommand | command | say Spawnprotection disabled | 15 (selbe Zeit wie wann die Spawnprotection ausgeschalten wird).

Ich hoffe es funktioniert alles bei euch (bei mir gings ) und ich konnte einigen von euch helfen. Fragen, Anregungen, Verbesserungsvorschläge und Wünsche an mich.