Fausts Cutscene System

Ersteinmal zu dem Spieler

Die Funktion, die den Spieler handeln lässt findet ihr in dem Script „dev_pc_cam_mov“.
Sie heisst MovePC und ist analog zu den UserDefined Event Scripten der NPC Aktoren aufgebaut. Darum jetzt dazu.
In der Funktion MoveCam kann man der Kamera sagen, wie sie sich in der Scene bewegen soll. Hier jedoch muss man komplett anders vorgehen als bei dem Spieler und den NPCs.
Wichtigste Aussage: Hier gibt es nur einen Anweisungsblock pro Zwischensequenz (Scene).
Das bedeutet wir können hier nicht abfragen in welcher Miniscene wir uns befinden.
Wir werden also nicht darum herumkommen, uns von Beginn der Scene bis zum Ende auf eine genau getimte Kameraführung zu verlassen. Dazu müssen wir uns wie oben beschrieben die Kamera als Objekt herholen und Ihr dann mit ActionWait, ActionMoveToObject und eventuell einigen Kameraführungen (die mit ActionDoCommand geklammert werden müssen!) von Anfang an genau sagen, wann sie wo stehen soll.

NPC Aktoren und Ihre UserDefined Event Scripte

Ich habe hier einmal den Relevanten Auszug des o.g. Scripts aufgeführt.
Guckt Euch einfach das Script an und vergleicht mit den Aktionen, die wir für unsere Cutscene vorgesehen haben.
Dan solltet Ihr in der Lage sein, das System nutzen zu können.

//DEVEVLOPERS APPLY CHANGES HERE

//::///////////////////////////////////////////////
//:: Custom User Defined Event for Actors
//:: FileName
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*

*/
//:://////////////////////////////////////////////
//:: Created By:Faust
//:: Created On:
//:://////////////////////////////////////////////

void main()
{
    int nUser = GetUserDefinedEventNumber();

///////////////////////////////////////////////////////
//Cutscenes here
///////////////////////////////////////////////////////
    event eCutscene = EventUserDefined(nUser);
    int iChapter = GetLocalInt(GetModule(), "iChapter");
    object oActor = OBJECT_SELF;
    if(nUser =2000) //FritzTalk
        {
        if(iChapter == 1)
        {
            object oPC = =GetLocalObject(GetModule(),“PC_Copy“);
            ActionMoveToObject(oPC);
            DelayCommand(5.0, SignalEvent(GetModule(), eCutscene));
        }
        else if(iChapter == 2)
        {
            ActionSpeakString(„Hallo.“);
            DelayCommand(3.0, SignalEvent(GetModule(), eCutscene));
        }

        else if(iChapter == 3)
        {
            ActionPlayAnimatio(...bow...);
            ActionSpeakString(...kann heute nicht.....);
            DelayCommand(6.0,SignalEvent(GetModule(),eCutscene));
        }

        else if(iChapter == 4)
        {

//Nochmal: Das Modul wartet auf alle Aktoren. Wenn ein Aktor nix zu tun hat, kann er sofort //senden

            DelayCommand(0.0, SignalEvent(GetModule(), eCutscene)); 
    //<-End of Scene

        }

//Füge hier weitere Cutscene Handlungen ein. 
/*else if(nUser = )
    {
    }*/

Gutes Gelingen
Faust

Erstellt von Faust | am 17.07.2007