Lua Scripting Timer und EventSequence - LUA

  • Erstellen von Zeitabläufen und Ereignissen in zeitlicher Reihenfolge

    Timer und EventSequence


    Seit Version 1.0.2 ist nun auch das Einsetzen eines Timers und einer EventSequence möglich. Mit EventSequence können wir Ereignisse in zeitlicher Reihenfolge auslösen.

    1 Timer

    Um ein Ereignis mit einem Timer auszulösen, brauchen wir zunächst einen Verweis auf die Timer.lua Modul Datei, die sich seit Version 1.0.2 in dem Unterordner "Engine" befindet.


    local Timer = require("Engine.Timer")


    Anmerkung:

    Diesen setzen wir am Besten ganz oben in unsere Level Lua Datei, damit er bei jedem Speichern und Laden neu aufgerufen werden kann. Auf jeden Fall nicht direkt in die Timer Funktion.



    Dann benötigen wir noch einen Auslöser, den wir in eine LevelFuncs. Funktion setzen. Dann den Aufbau für den Timer.



    Hier haben wir in die "LevelFuncs.KillLara" folgende Ereignisse gesetzt:


    Lara explodiert.

    Es wird der Explosionssound 106 abgespielt.

    Es wird der Lara Schrei Sound 30 abgespielt.


    Den Timer haben wir in eine "LevelFuncs.StartTimer" Funktion gesetzt.

    Wir weisen dem Timer eine lokale Variable mit dem Namen "myTimer" zu.

    Wir erstellen einen Timer mit dem Namen "my_timer" und sagen nach 5 Sekunden soll die "LevelFuncs.KillLara" ausgeführt werden.

    Code
    {minutes = false, seconds = true, deciseconds = true}

    Hier können wir einstellen, ob Minuten, Sekunden oder Dezimalsekunden angezeigt werden sollen. "False" heißt immer "nein" und "True" heißt immer "ja".

    Durch "myTimer:Start()" wird der Timer ausgelöst, sobald wir die "LevelFuncs.StartTimer" in einem VolumeTrigger auslösen.


    Die Funktion "LevelFuncs.StartTimer" können wir jetzt in einen Volume Trigger setzen.


    Unter Timer Module finden wir noch mehrere Funktionen die wir setzen können wie. z.B. den Timer zu pausieren, zu stoppen usw.

    2 EventSequence

    Um Ereignisse mit zeitlicher Reihenfolge mit einer EventSequence auszulösen, brauchen wir zunächst einen Verweis auf die EventSequence.lua Modul Datei, die sich seit Version 1.0.2 in dem Unterordner "Engine" befindet.


    local EventSequence = require("Engine.EventSequence")


    Anmerkung:

    Diesen setzen wir am Besten ganz oben in unsere Level Lua Datei, damit er bei jedem Speichern und Laden neu aufgerufen werden kann. Auf jeden Fall nicht direkt in die EvenSequence Funktion.



    Dann benötigen wir noch die Funktionen in einer "LevelFuncs. Funktion", die wir zeitlich hintereinander auslösen wollen. Dann den Aufbau für die EvenSequence.


    Als Ereignisse haben wir hier im Beispiel drei LevelFuncs. Funktionen erstellt, die hintereinander 3 Türen öffnen.

    Die Funktionen haben die Funktionsnamen "LevelFuncs.opendoor1", "LevelFuncs.opendoor2" und "LevelFuncs.opendoor3".


    Die EvenSequence haben wir in eine "LevelFuncs.TriggerSequence" Funktion gesetzt.

    Wir weisen der Eventsequence eine lokale Variable mit dem Namen "mySeq" zu.

    Wir erstellen eine EventSequence mit dem Namen "my_seq". Durch "false" legen wir fest, dass nach Ende der EventSequence diese sich nicht wiederholt. Bei "true" gibt es eine Endlosausführung.


    {seconds = true, deciseconds = true}


    Hier legen wir das Format fest, in welchem die Zeitangabe erfolgen soll. "Sekunden, Dezimalsekunden usw." Ähnlich wie beim Timer oben.


    Anmerkung:

    Möchten wir zwischen den einzelnen Ereignissen keinen Timer anzeigen, setzen wir einfach alle Werte auf "false", z.B.


    {seconds = false, deciseconds = false}


    Nach 10 Sekunden, lösen wir nun die Funkion "LevelFuncs.opendoor1" aus.

    Danach nach 5 Sekunden die Funktion "LevelFuncs.opendoor2".

    Danach nach 3 Sekunden die Funktion "LevelFuncs.opendoor3".


    Mit mySeq:Start() wir die EventSequence ausgelöst, wenn wir die "LevelFuncs.TriggerSequence" in einem Volume Trigger auslösen.


    Unter EventSequence Module finden wir noch mehrere Funktionen die wir setzen können wie. z.B. die EventSequence zu pausieren, zu stoppen usw.


    Wichtige Anmerkung:

    In der EventSequence.lua Datei in Version 1.0.2 wurde ausversehen nicht auf die aktuelle Timer.lua verwiesen, die sich in dem Unterordner "Engine" befindet. Dies muss man ausbessern, sonst erhält man in der Logs.txt einen Fehler, da er die Timer.lua nicht findet.



    muss man durch:


    local Timer = require("Engine.Timer")


    ersetzen.


    Alternativ habe ich hier auch eine korrigierte EventSequence.lua angehängt.


    EventSequence.lua

Share