Fausts Cutscene System

Hallo miteinander,

hiermit möchte ich Euch noch mal ein Tutorial liefern, damit Ihr mein Cutscene System auch benutzen könnt.

Zunächst möchte ich Euch mal die User Defined Events erklären, da darauf mein System basiert.

User Defined Events

Wie Ihr sicherlich wisst, werden bei bestimmten Aktionen bestimmte Events automatisch ausgelöst:
Zum Beispiel wird beim Betreten eines Gebiets das Script im OnEnter - Eventslot der Area ausgeführt, die betreten wurde.

Und einige von Euch wissen bestimmt auch, dass man das Verhalten von Kreaturen auch mit Scripten im Userdefined Eventslot steuern kann, ohne Veränderungen in den jeweiligen Scripten im OnHeartbeat, OnPerception oder OnBlocked - Slot direkt zu verändern.

Wieso funktioniert das?
Wenn Ihr Euch mal die Standart Bioware Scripte in den oben genannten Slots anschaut, so werdet Ihr feststellen, dass am Ende des Scripts immer folgende Zeile steht:

SignalEvent(OBJECT_SELF, EventUserDefined(EVENT_DAMAGED));

Hinter der Konstanten EVENT_DAMAGED verbirgt sich eine Integer Konstante 1006.

Wird diese Funktion aufgerufen, wird das UserDefinedEvent-Slot-Script der Kreatur aufgerufen, die in diesem zusammenhang OBJECT_SELF ist (also sie selber).
Und so wie es beim Betreten der Area die Funktion GetEnteringObject gibt, die das auslösende Objekt zurückliefert, so liefert GetUserDefinedEventNumber die Nummer des Events zurück, mit dem auf sie gefeuert wurde.
In unserem Beispiel wäre das die 1006 (= EVENT_DAMAGED).

Ich möchte Euch jetzt mal einen Auszug aus den User Defined Events posten, um klarzumachen, wie dieses Scipt funktioniert:

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

    if(nUser == 1001) //HEARTBEAT 
    {

    }
    else if(nUser == 1002) // PERCEIVE
    {

    }
…
}

Wird nun also mit SignalEvent auf die Kreatur gefeuert, wird das oben gezeigte Sript ausgeführt und dort als erstes die Eventnummer herangeholt, die den Aufruf des Scriptes „verursacht“ hat. Nun kann man durch eintragen von Code in den jeweiligen Abschnitt bestimmen, was die Kreatur zum Beispiel OnHeartBeat oder OnPerception oder eben bei OnDamaged machen soll, ohne den Code in den anderen Slots zu verändern. Man fügt quasi Funktionalität hinzu.

Jetzt kann man sich aber auch vorstellen, dass man eigene Events definieren kann, indem man ihnen Eventnummern zuordnet, die noch nicht an bereits bestehende Events vergeben sind.
Wenn ich mich recht entsinne, liegen die bereits bestehenden Eventnummern für die oben angesprochenen Events(Heartbeat etc.) im Bereich von 1001 bis 1008.
Das bedeutet wir haben noch viel „Platz“ um uns neue Events zu erstellen.
Wozu das gut ist, und wie diese Events dann überhaupt ausgelöst werden erklär ich später, also verschwendet da jetzt noch keinen Gedanken daran. ;)

Erstellt von Faust | am 17.07.2007