Sequences und anderer Kram für Zwischensequencen

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.

Sequences

Dafür benötigen wir zunähst:

  • trigger_once
  • scripted_sequence
  • Monster

—- Wir schnappen uns ein Monster (Scientist) und nennen es 'sci'. Dann erstellen wir ein scripted_sequence und geben ihm diese Einstellungen:

  • name - seq
  • target Monster - sci
  • Action Animation - writeboard
  • Move to position - walk

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

  • target - seq

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:

  • console = Bückt sich und tippt etwas ein
  • fall = tut so als würde er an einer Leiter hängen und fällt darauf
  • push_button = drückt einen Knopf
  • pondering = Er studiert (gekreutzte Arme + Hand um Mund)
  • pondering2 = Er studiert (schaut sich um)
  • pondering3 = Er studiert (gekreutzte Arme)
  • writeboard = Zeigt etwas auf einer Tafel
  • handrail = Stüzt sich auf ein Geländer
  • converse1 = meint etwas
  • converse2 = stimmt zu
  • no = schüttelt den Kopf
  • retina = beugt sich vor und aktiviert einen Retinascanner

—- gman:

  • bigyes = Ja
  • bigno = Nein
  • listen = hört zu

—- barney:

  • laser_top = obere Hälfte eines Barneys
  • laser_bottom = untere Hälfte eines Barneys
  • sit1 = sitzt wie Im Half-Life Level Anomalous Matrials und arbeitet
  • intropush = gibt seinen code ein

—- hgrunt:

  • draghole = wird in ein loch gezogen

—- zombie:

  • eatbody = frisst eine Leiche
  • eatbodytable = frisst eine Leiche auf dem Tisch

Sentences und Speaker

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.

Schritt 1

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.

Schritt 2

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.

Schritt 3

Jetzt stellen wir den Speaker bzw. das scripted_sentence-Entity so ein, dass es „unser“ sentence abspielt. Das geht ganz einfach mit dieser Einstellung:

  • sentence name/sentence group name - !Test

Nie das !-Zeichen vergessen!

Schritt 4

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

  • (pX): Setzt pitch = X Prozent von Normal. (Höhere Werte = höherer pitch)
  • (tX): Setzt eine Pause hinter das Wort = 100-0 X Prozent von Normal (t0 = „Volle Pause“, t100 = keine Pause)
  • (vX): Lautstärke = X Prozent von Normal
  • (sX): Überspringe X Prozent des Sounds beim Starts
  • (eX): Stoppe den Sound wenn X Prozent des Sounds abgespielt wurden
Die Verwendung aller Dokumente einschließlich der Abbildungen ausschließlich zu nichtkommerziellen Zwecken. Verbreitung des Dokuments auf Speichermedien, (insbesondere auf CD-ROMs als Beilage zu Zeitschriften und Magazinen oder sog. "Mission-Packs" etc.) ist untersagt.
 
half-life/tutorials/sequence_sentence_speaker.txt · Zuletzt geändert: 2005/08/23 13:33 von Richman