Community-Tutorials (Source)

Zufalls Generator für Hl2

So, in diesem Tutorial werde ich erklären, wie man einen Zufallsgenerator im Hammer Editor für HL2, CSS usw macht.

Zuerst zur Theorie:

Man braucht:
-ein env_beam
-mindestens 3x info_targets (je nach dem zwischen wie vielen Möglichkeiten ausgewählt werden soll)
-und einen func_butten weniger wie vorhandene info_targets

Das ganze funktioniert so:
Der Strahl wählt zufällig zwischen den info_targets und genau hier setzen wir an. Auf dem Weg der Stähle fügen wir ein func_butten ein, dass sobald es vom Strahl getroffen wird etwas triggert.

Hier ist es jetzt natürlich euch überlassen was das sein soll, ich verdeutliche das hier für eine fun Map. (so unglaublich das auch klingen mag, ich kenne viele spieler die die spawnpoint Reihenfolge von fun maps auswendig kennen und wissen wo der Gegner spawnen wird was in Liegen zu unfairen situationen führt ;) )

Also zuerst setzten wir ein env_beam und die beiden info_targets:

tedy001.jpg

Der mittlere info_target stellt den Anfang des Strahles dar. Die anderen beide sind potentielle Ziele. An dieser Stelle sollte klar sein, dass man davon beliebig viele setzten kann.
Entsprechend ihrer Funktion benennen wir nun die Targets auch:
Der mittlere wird "start_beam" und die beiden andern "end_beam" getauft.

Nun zum env_beam:

tedy002.jpg

Bei Start Enity wird nun logischer weise start_beam und bei Ending Enity end_beam eingetragen. Das ganze Objeckt nennen wir mal schlichtweg "beam". Nachdem start und ending Enity eingetragen sind, wird eine Verbindung vom mittleren Target zu einem der anderen gezeigt, was aber ignoriert werden kann, letztendlich wird zufällig zwischen beiden gewählt.
tedy003.jpg

In die zukünftigen Linien die die Strähle nehmen werden erstellen wir jetzt die func_buttens.

tedy004.jpg

Nun zum eigentlichen Spawnvorgang:
Der Spieler Spawnt über 2 trigger_teleportern und 1nem trigger_once. Am Anfang sind beide Teleporter disabeld also aus. Allerdings wird einer von einem der func_buttens eingeschaltet. Der trigger_once dient zum Abschalten des env_beams wobei er nicht zwingend notwendig ist.

Der Spieler Spawnt und fällt in die teleporter. Während er fällt trifft ein Strahl einen Butten und aktiviert einen Teleporter. Der spieler fällt in die Trigger Zone, deaktiviert das env_beam mit dem tigger_once und wird wegteleportiert.

Also, wir erstellen einen info_player_terrorist/counterterrorist. Unter ihm stellen wir zwei trigger_teleport und einen trigger_once. Desweiteren erstellen wir gleich 2 info_teleporter_destinations

tedy005.jpg

Einen der trigger_teleporter nennen wir teleporter1 den anderen teleporter2.
(ACHTUNG!: wenn mann mehrere solcher spawnings machen will sollte man auf eine stickte numerierung der Namen achten. Sonst wird das alles zu unübersichtlich.)
Einstellungen der Teleporter:
Bei Start Disabeld tragen wir "yes" ein und bei Remote Destination tragen wir beim ersten desti_1 und beim zweiten desti2 ein. Dementsprechend werden die beiden info_teleporter_destinations auch benannt.

So, jetzt fehlen nur noch die in und outputs:
Zuerst die der func buttens:
Diese aktivieren wir über schaden, desshalb nochmal kurz zum env_steam:
Hier tragen wir bei Damage / second einen Wert über 0 ein.
Und jetzt endlich zu den func_buttens ;) .
Wir gehen auf den Reiter Outputs und tragen folgendes ein:

tedy006.jpg

Bei dem anderem func_butten machen wir das selbe nur, dass wir bei Targets Enities Named teleporter2 eintragen

Jetzt noch zum trigger_once:

tedy007.jpg

Diesem geben wir diese 3 outputs: er schaltet den env_beam und die beiden Teleporter von denen 1ner aktiviert ist aus.

Jetzt müssen wir nur noch die trigger ineinander schieben da sonst einige gar nicht oder sehr spät getriggert würden und fertig :) :

tedy008.jpg

Das ganze funktioniert in HL1 übrigens auch :)
Anwendung war damals noch um Sounds zufällig abspielen zu lassen und natürlich das zufällige spawnen von Spielern.
In HL² könnte man damit zum Beispiel eine befahrene Staße basteln in der man animierte Automodels in zufälligen delays über die Staße fahren lässt.