Eine scripted_sequence ist für die Animation eines NPCs z.B knöpfe drücken und ect.
Eine scripted_sentence ist für die Gespräche zwischen dem NPC und dem Spieler oder anderen NPCs.
Ein speaker ist für zufällige Durchsagen oder umgebungsgeräusche.
Dafür benötigen wir zunähst:
—- Wir schnappen uns ein Monster (Scientist) und nennen es 'sci'. Dann erstellen wir ein scripted_sequence und geben ihm diese Einstellungen:
Wir müssen darauf achten, dass das scripted_sequence nicht zu weit weg von dem Scientist ist. Es sollte direkt über dem Boden sein.
Jetzt erstellen wir einen trigger_once
Wenn der Spieler durch den trigger_once läuft müßte er den Scientist sehen, der in der Luft herum zeigt. Die wichtigsten Ding bei einer scripted_sequence sind die Action- und die Idle-Animation. Die Actionanimation wird ausgeführt, sobald die scripted_sequence getriggert wird. Die Idle-Animation wird von Anfang an ausgeführt.
Hier nun einige Beispiele für verschiedene Animationen, verschiedener Monster. Mit einem Modelviewer kann man alle Animationen der einzelnen Monster und deren Namen direkt in den Models nachschauen.
scientist:
—- gman:
—- barney:
—- hgrunt:
—- zombie:
Heute befassen wir uns mal näher mit der Datei sentences.txt und dem Speaker-Entity. Zunächst: Was sind Sentences? Sentences sind mehrere Sounds, die von HL aneinandergereiht werden und dann als „Reihen“ von speakern oder auch von scripted_sentences verwendet werden kann. Beispielsweise einen Speaker für eine Lautsprecherdurchsage wie in Half-Life oder für einen sprechenden Scientist. Eine Reihe dieser Sounds definieren wir in der Datei Sentences.txt. Diese befindet sich in der pak0.pak oder im /sounds-Verzeichnis einer Mod. Jetzt erstellen wir als Beispiel mal einen Speaker, der in Level „Kill doctor freeman“ sagt.
Logischerweise erstellen wir erst mal eine Map, bauen einen Raum und platzieren darin ein Speaker-Entity. Dann extrahieren wir die sentences.txt aus der pak0.pak in den /sounds-Ordner unserer Mod und öffen sie.
Jetzt definieren wir in der Sentences.txt den Satz „Kill Doctor Freeman“. Dazu müssten wir diese Zeile in die Sentences.txt einbauen:
TEST bizwarn bizwarn, kill doctor freeman
Zur Erklärung: TEST heisst unser neuer Sentence, unsere neue Sound-Reihe, die wir nacher im speaker abspielen lassen. Das „bizwarn“ ist ein kurzer Sirenenton und Kill, Doctor und Freeman sind die vom „Announcer“ zu „sprechenden“ Worte. Diese befinden sich alle in der Pak0.pak, im Unterverzeichnis /sound/vox. In einem Sentence können nur Worte aus einem Verzeichnis vorkommen. Ist das Verzeichnis ein anderes als /vox muss es extra angegeben werden, ungefähr so:
SCIENTIST scientist/ipredictedthis
Diemal wird ein Scientist-Sound abgespielt, der sich (natürlich) nicht im /vox-Ordner, sondern in /scientist befindet. Daher die zusätzliche Pfadangabe /scientist.
Jetzt stellen wir den Speaker bzw. das scripted_sentence-Entity so ein, dass es „unser“ sentence abspielt. Das geht ganz einfach mit dieser Einstellung:
Nie das !-Zeichen vergessen!
Der Speaker muss jetzt nur noch von etwas getriggert werden (z.B. von einem func_button). Dann kann man gleich die Map starten und den Speaker ausprobieren.
Anhang: In der Sentences.txt kann man noch etwas nachhelfen, um die Sounds besser klingen zu lassen, wenn sie aneinandergereiht werden. Das macht man mit Flags, die man wie in folgendem Beispiel einbaut:
HG_QUEST3 hgrunt/clik(p110) (t30) squad, quiet(e75) down clik(p120)
Also gehören Flags in Klammern jeweils hinter den Satzteil, den sie beeinflussen sollen.
Flags