Gleich vorweg: Dieses Tutorial gilt nicht nur für Counter Strike: Source, sondern auch für alle anderen HL2 Mods in denen keine npc's (→ npc_seagull) vorgesehen sind.
Was wir brauchen:
Wir beginnen mit der „Flugbahn“ des Vogels. Da der Vogel ja wie ein Zug funktioniert, besteht seine Strecke also aus path_tracks. Wie ihr eine solche Strecke erstellt, könnt ihr im Zug Tutorial nachlesen. Ich werde meine path_tracks hier “track1“, “track2“ usw. nennen.
Damit der Vogel keine „eckigen“ Flugbahnen fliegt ist es am sinnvollsten, eine kreisförmige Strecke zu erstellen. Am besten schafft ihr das, indem ihr euch einen Zylinder als Schablone erstellt und die path_tracks auf den Eckpunkten des Körpers positioniert:
Danach könnt ihr den Zylinder wieder löschen. Die Flugbahn ist jetzt also schonmal geschafft!
Nun kommen wir zum Vogel. Erst einmal müssen wir jedoch einen func_tracktrain erstellen, welcher später das Model des Vogels bewegen wird. Erstellt einfach einen 4x4x4 großen Brush, den ihr dann zu einem func_tracktrain macht. Hier müssen folgende Einstellungen gesetzt werden:
Jetzt kommt der eigentliche Vogel ins Spiel: Als prop_dynamic_override mit dem Model models/seagull.mdl (eine Seemöwe). Hier könnt ihr natürlich variieren, andere Möglichkeiten sind z.B. pidgeon (Taube) oder crow (Krähe).
Außerdem braucht das Model einen „Namen“ (“seagull“) und eine „Default Animation“ (“Fly“). Als „Parent“ tragt ihr den “train“ ein.
Am besten positioniert ihr das Model etwas unter dem func_tracktrain. Wichtig: Der Vogel muss mit dem Kopf nach Osten (rechts) ausgerichtet sein, sonst fliegt er rückwärts oder seitlich ;-).
Das sollte jetzt ungefähr so aussehen:
Wenn ihr die Map jetzt kompiliert, dreht der Vogel schonmal fröhlich seine Runden, abschießen könnt ihr ihn jedoch noch nicht.
Nun setzt ihr einen env_shooter genau an die Position des Origins des prop_dynamic_override. Ihr müsst folgende Einstellungen vornehmen:
models/seagull.mdl
Jetzt zieht ein einen Brush um das Model des Vogels, sodass kein Stück davon mehr herausschaut. Belegt ihn mit der toolsnodraw Textur und macht ihn zu einem func_button.
Das Ganze sollte nun so aussehen:
Zur besseren Übersicht hab ich den func_button in der 3D-Ansicht ausgeblendet.
Beim Button müsst ihr als „Parent“ natürlich auch den “train“ angeben. Bei den Flags checkt ihr noch den Punkt „Damage Activates“ und setzt Outputs wie folgt:
Fertig!