====== monster_osprey ======

Sicher habt ihr in HL schon mal dieses Transportflugzeug gesehen, von dem sich [[half-life:entities:monster_human_grunt]]s (ok eigentlich sind es [[half-life:entities:monster_grunt_repel]]s) abseilen. Ich wollte das nachbaun und war kurz vor dem verzweifeln, weil entweder Halflife abstürzte, oder sich das Flugzeug nicht bewegen wollte.

{{half-life:tutorials:monster_osprey:osprey.jpg}}

Im Prinzip ist es aber ganz einfach, wenn man weiß wodrauf man achten muss. Ihr benötigt:

  * ein [[half-life:entities:monster_osprey]] (wer hätte das gedacht)
  * mindestens ein [[half-life:entities:monster_human_grunt]]
  * mehrere [[half-life:entities:path_corner]]

===== Für ungeduldige =====

Weil da unten viel Text ist, hier die Kurzform für Ungeduldige:

Jedem ''path_corner'' werden vier Attribute zugewiesen:

  * **targetname** - name dieses entities
  * **target** - name des nächsten path_corner
  * **speed** - Geschwindigkeit, meistens über 300
  * **angles** - Hoch,Runter Himmelsrichtung Rechts,Links

Mindestens ein ''monster_human_grunt'' irgendwo in die map.

Und noch ein ''monster_osprey'' nach irgendwo.

  * **target** - der path_corner, wo der Flug startet


===== Für interessierte =====

Zuerst müsst ihr die ''path_corner'' bauen. Setzt ihre Atrribute beispielsweise wie unten, aber ersetzt X Y Z durch Zahlen. Am Anfang reicht beispielsweise <code>0 90 0</code>
Dann zeigt der **Osprey** immer nach Norden. Erklärt wird's unten. 

  * **targetname** - pc1
  * **target** - pc2
  * **speed** - 500
  * **angles** - X Y Z

  * **targetname** - pc2
  * **target** - pc3
  * **speed** - 500
  * **angles** - X Y Z

  * **targetname** - pc3
  * **target** - pc4
  * **speed** - 200
  * **angles** - X Y Z

  * **targetname** - pc4
  * **target** - pc5
  * **speed** - 0
  * **angles** - X Y Z

  * **targetname** - pc5
  * **target** - pc6
  * **speed** - 200
  * **angles** - X Y Z

  * **targetname** - pc6
  * **target** - pc1
  * **speed** - 500
  * **angles** - X Y Z

Es ist sehr wichtig, dass einige ''path_corner'' bei **speed** einen wert von **mehr** als ''300'' haben (500 ist eine gute Wahl). Ansonsten stürzt die Engine beim triggern des ''monster_osprey'' ab. Die ''path_corner'' mit einem speed von **mehr** als ''300'' werden immer angeflogen.
Der ''monster_osprey'' benutzt die anderen ''path_corner'' nur, wenn zu wenige ''monster_human_grunts'' auf der map sind. Dazu komme ich aber gleich noch.

Nun zu **angles**:
Hier muß man etwas rumprobieren, damit der Flug des ''monster_osprey'' nachher gut aussieht. Im Gegensatz zum ''monster_apache'' kann der ''monster_osprey'' sich nicht selbständig in die Kurve legen.
Der erste Wert X gibt an, ob die Nase des Flugzeugs nach **oben(positive Zahl)** oder **unten(negative Zahl)** zeigt. Bei 0 fliegt der ''monster_osprey'' geradeaus. Ihr müsst den Wert danach auswählen, ob zwischen dem aktuellen und dem nächsten ''path_corner'' ein Höhenunterschied besteht.

Der zweite Wert Y gibt die **Richtung** des ''monster_osprey'' an. Am besten nutzt ihr im **Valve Hammer Editor** die Ansicht von oben und richtet den Kompass im Menü Eigenschaften (der kleine schwaze Kreis mit einer weißen Linie die rotieren kann) auf das nächste ''path_corner''. Da das ''monster_osprey'' immer die Richtungsangaben (angles) des ''path_corner'' nutzt, das es gerade anfliegt, solltet ihr euch überlegen, wie sich das ''monster_osprey'' auf seinem Weg verhalten sollte, damit sich eine gleichmäßige Bewegung ergibt.
Jetzt noch der dritte Wert Z. Hier gibt man die Neigung nach rechts oder links an. Bei einem positiven Wert legt sich das Flugzeug nach rechts und bei einem negativen Wert nach links.

So noch schnell ein Beispiel damits einleuchtet:

<code>angles  33 90 15</code>
Die Nase des Flugzeugs zeigt jetzt um 33 Grad nach oben. Das Flugzeug fliegt nach Norden (90 Grad sind bei HL Norden) und neigt sich um 15 Grad nach rechts.

So, wenn ihr nach dem ganzen Text noch Lust habt weiter zu mappen, bauen wir jetzt einfach irgendwo in der map einen oder mehrere ''monster_human_grunts''. Beim triggern zählt der ''monster_osprey'' alle ''monster_human_grunts'' in der map. Immer wenn welche getötet werden seilen sich an ''path_corners'' mit einem speed von **0** neue ''monster_grunt_repels'' ab. Sie werden dann zu ''monster_human_grunts''. Das passiert solange, bis wieder so viele ''monster_human_grunts'' auf der map sind, wie am anfang, als der ''monster_osprey'' getriggert wurde.

So, jetzt kommt endlich der ''monster_osprey''. Setzt ihn einfach irgendwo hin. Das einzige was ihr noch machen müsst ist folgendes:

  * **target** - pc1

Nehmt halt den Namen von dem ''path_corner'', wo der ''monster_osprey'' losfliegen soll. 

Beachtet, das eine Map mit einem ''monster_osprey'' sehr groß sein muß, da er selbst auch sehr groß ist und keine sprunghaften Richtungswechsel machen sollte.

Viel Spass beim ausprobieren meines ersten Tutorials, ich hoffe es war leicht zu verstehen. 