====== schlafender Zombie ====== Die [[half-life_2:entities:scripted_sequence]] kommen bei tausenden Aktionen vor. Sie werden bei triggerbaren Aktionen/Animationen verwendet. Fast alle Aktionen in Half-Life2 wurden mit diesen Entities gemacht (z.B der Combine_Guard am Anfang in der Trainstation, der einem befielt, eine Dose in den Mülleimer zu schmeissen). Mit ihnen kann man alle Animationen der [[glossar:npc|Npc's]] abrufen und abspielen. ===== Aufbau ===== ==== npc_zombie ==== Für die Benutzung der [[half-life_2:entities:Scripted_Sequence]] brauchen wir zuerst einmal den Npc, der eine Sequenz durchführen soll. Wir brauchen logischerweise einen [[half-Life_2:entities:npc_zombie]]. Setzt ihn ungefähr an die Position, wo er später sein soll. Die eigentliche Positionsbestimmung nimmt aber die [[half-life_2:entities:Scripted_Sequence]] vor. \\ {{half-life_2:tutorials:schlafender_zombie:npc_zombie.jpg}} \\ Gebt ihn den Namen **Zombie** (oder einen ähnlichen). ==== Outputs ==== Nun brauchen wir noch 2 Outputs. \\ \\ {{half-life_2:tutorials:schlafender_zombie:output1.jpg}} \\ * Der erste Output gibt an, dass wenn er vom Spieler getroffen wird (**OnDamaged**), spielt er die Animation (**BeginSequence**) der Sequence (''zombie_seq'') ab, was ja logisch ist, sonst würde er immer liegen bleiben, egal, ob man auf ihn schiesst. * Der zweite Output gibt an, dass wenn der Zombie **vor** der Sequenz getötet wurde (**OnDeath**), wird der Trigger, der später die Animation auslösen würde (''zombie_trigger''), gekillt (**Kill**). \\ ==== Scripted_Sequence ==== Jetzt plazieren wir eine [[half-life_2:entities:Scripted_Sequence]] exakt dort, wo der Zombie später liegen soll. \\ {{half-life_2:tutorials:schlafender_zombie:seq.jpg}} \\ === Einstellungen === Wir brauchen folgende Einstellungen: * **Name** - zombie_seq (Wichtig für die Outputs vom Zombie!) * **Target Npc** - Zombie * **Pre Action Idle Animation** - slump_a (das ist eine schlafende Animation, ihr könnt euch alle Animation der Npcs mit dem Modelviewer anschauen.) * **Action Animation** - slumprise_a (das ist jetzt eine Animation, wo der Zombie aufsteht.) * **Search Radius** - 512 * **Move To Position** - Instantaneous (Somit ist der Zombie bei Spielstart sofort an der Sequenz, ohne sich bewegen zu müssen) == Flags == Folgende Flags müsst ihr aktivieren: * **Start on Spawn** - Somit wird die **Pre Action Idle Animation** gleich am Anfang ausgeführt. * **No Interruptions** - Die Animation wird nicht unterbrochen. * **Override AI** * **Priority Script** ==== Weckgeräusch ==== Wir brauchen nun erstmal noch ein Weckgeräusch, welches wir mit einem [[half-life_2:entities:ambient_generic]] erzeugen. * **Name** - wakesound * **Sound Name** - Hier könnt ihr natürlich nehmen was euch gefällt. Geht einfach mal tools->Soundbrowser und sucht nach einem Zombie Sound der passt. Ich habe hier jetzt einfach mal ''npc/zombie_poison/pz_alert1.wav'' angegeben. == Flags == * **Start Silent** * **Is NOT looped** ==== Auslöser ==== Wir brauchen nun noch einen Auslöser, also einen [[half-life_2:entities:#trigger_|Trigger]]. Hier ist der beste [[source:entities:trigger_once]], weil die Animation sowieso nur einmal ausgeführt werden kann. Plaziert es soweit um den Zombie, dass es logisch erscheint, dass der Zombie durch den Spieler geweckt wird. \\ {{half-life_2:tutorials:schlafender_zombie:trigger.jpg}} \\ Gebt ihm den Namen **zombie_trigger**. Wir brauchen nun folgende Outputs: \\ {{half-life_2:tutorials:schlafender_zombie:output2.jpg}} \\ * Der erste Output gibt an, dass wen der Spieler den Trigger auslöst (**OnTrigger**), wird die Sequenz ''zombie_seq'' abgespielt (**BeginSequence**). * Der zweite Output gibt an, dass wenn der Spieler den Trigger auslöst (**OnTrigger**), wird der ''wakesound'' abgespielt (**PlaySound**). \\ Der Trigger müsste jetzt ausserdem ein Input vom ''Zombie'' bekommen haben. \\ === Beispielmap === {{half-life_2:tutorials:schlafender_zombie:script.zip}} ===== Nachwort ===== Es scheint hierbei auch eine Methode mit dem [[source:entities:npc_template_maker]] zu geben, diese hat bei mir allerdings nicht funktioniert!