Teleporter mit Zufallsziel (eleganter)
Autor: DrSilence
Downloads: Beispielmap sdk_zufallsteleporter.rar
Beisp. Nr. 1: Oft kommt es vor das zwei oder mehr Spieler, gleichzeitig, in
einen Teleporter geraten -> das Ergebnis ist dann ein ärgerlicher Stuck (beide
Spieler stehen „ineinander“ und können sich nicht mehr bewegen).
Beisp. Nr. 2: Hat ein Portal und die Spieler sollen zufällig (an bestimmten
Positionen) auf der Map erscheinen.
Lösung: Ein Teleporter mit Zufallsziel
Um solch einen Teleporter zu erstellen gehen wir wie folgt vor:
1. Als erstes erstellen wir das erste Teleportziel, setze dazu ein Entity „info_teleport_destination“
in deiner Map (achte darauf das es mind. 1 Unit über dem Fußboden lieg, da sonst
die Player im Boden „feststecken“). Benenne den Teleporter mit einem eindeutigen
Namen wie „tele_ziel_01“


2. Erstelle auf diese weise noch so viele Teleporterziele wie du auf deiner Map
benötigst und benenne sie nach dem Schema „tele_ziel_NN“ (ersetze NN durch eine
Zahl Bsp. 01, 02 , 03 , …).

3. Erstelle nun einen Block mit der Textur „Trigger“ und mach es zu einem Entity
mit der Funktion „trigger_teleport“ und benenne es z.B. mit „DerTeleporter“.
Unter „Remote Destination“ trage das erste Teleporterziel „tele_ziel_01“ ein.

4. Als nächstes brauchen wir ein Entity das der HammerEditor normalerweise für
Counter-Strike:Source nicht kennt, aber sehr nützlich ist. Um es allerdings
trotzdem zu erstellen gehen wir wie folgt vor:
Erstelle ein Entity „Light“,

öffne das Eigenschaften-Fenster und tippe bei „Class:“ „ai_changetarget“ ein,

Klicke auf „Smart Edit“ und lösche alle vorhandenen „Keyvalues“,
Jetzt benennen wir das Entity, dazu erstelle mit „Add“ einen neuen Key „targetname“
mit dem Value „changetarget_01“,

Dem Entity nennen wir jetzt das Entity dessen Ziel geändert werden soll (bei uns
„DerTeleporter“), dazu erstelle wieder mit „Add“ einen neuen Key „target“ mit
dem Value „DerTeleporter“,

Nun sagen wir dem Entity nur noch wie das nächste Ziel heißen wird, dazu wieder
mit „Add“ einen neuen Key „m_iszNewTarget“ mit dem Value „tele_ziel_01“
erstellen.

So, weil das Ganze nun ziemlich komplex war doch mal das gesamt Ergebnis:

Kopiere nun das „neue“ Entity für jedes Teleporterziel und passe die Key’s „targetname“
und „m_iszNewTarget“ dem jeweiligen „tele_ziel_NN“ an (zur Übersicht eine
Tabelle mit den werten).
targetname target m_iszNewTarget
changetarget_01 DerTeleporter tele_ziel_01
changetarget_02 DerTeleporter tele_ziel_02
changetarget_03 DerTeleporter tele_ziel_03
5. Um nun eine Zufallsfunktion zu realisieren erstellen wir ein Entity „logic_case“
und geben ihm als Namen „Zufallsgenerator“,

Nun gehen wir auf die Seite „Outputs“ und fügen mit „Add“ die folgenden Werte
hinzu:
My output named Target entities named Via this input After a delay in seconds of Fire once only
OnCase01 changetarget_01 Activate 0.00 [unchecked]
OnCase02 changetarget_02 Activate 0.00 [unchecked]
OnCase03 changetarget_03 Activate 0.00 [unchecked]

6. So nun müssen wir unserem Teleporter nur noch mitteilen, dass er nach jedem
Teleport das Ziel ändern soll, dazu gehen wir zu unserem „trigger_teleport“ „DerTeleporter“
zurück! und fügen unter „Outputs“ dem „trigger_teleport“ einen Output hinzu:
My output named Target entities named Via this input After a delay in seconds of Fire once only
OnStartTouch Zufallsgenerator PickRandom 0.00 no

7. Fertig ! Map compellieren und testen!
8. Zusammenfassung:
Gebraucht wurde „nur“:
1x trigger_Teleport,
1x logic_case,
Je Ziel,
1x info_Teleport_destination,
1x ai_change_target
Zur Funktion:
Der Teleporter triggert beim „Berühren“ den Zufallsgenerator,
dieser nimmt zufällig einen seiner „Outputs“ und aktiviert es. Wird einer der „ai_changetarget“
aktiviert ändert dieses das Teleporterziel des „tigger_teleport“ auf ein
Teleporterziel „info_teleport_destination“.
Leider ist das neue Teleporterziel erst nach einem Teleport verfügbar, d.h. der
erste Player landet immer auf „tele_ziel_01“ aber die folgenden Ziele sind nicht
bestimmbar;
Begründung: die Source Engine teleportiert erst den Player und greift dann auf
den Output, der das Ziel ändert, zu. Es gibt leider keine Möglichkeit den „Trigger_Teleport“
zu verzögern (jedenfalls nicht ohne zusätzliche „Trigger_...“ die das Ganze
wieder zu komplex werden lassen).
Anhang: sdk_zufallsteleporter.rar
Viel Spaß mit Euren Zufallsteleportern!
P.S: Möglich wäre auch die Sache zu abzuwandeln, dass die Teleporterziele der
festen Reihenfolge 1-3 abgearbeitet werden.
MfG DrSilence