1. TRLevel
  2. Forum
    1. Unresolved Threads
    2. Articles
  3. Members
    1. Recent Activities
    2. Users Online
    3. Team
    4. Trophy
    5. Search Members
  4. Tutorials
  5. Levels
  6. Downloads
  7. Adventskalender
    1. Kalender 2025
    2. Kalender 2024
    3. Kalender 2023
    4. Kalender 2022
    5. Kalender 2021
    6. Kalender 2020
    7. Kalender 2019
    8. Kalender 2018
    9. Kalender 2017
  8. Osterkalender
    1. Osterkalender 2026
    2. Osterkalender 2025
    3. Osterkalender 2024
    4. Osterkalender 2023
    5. Osterkalender 2022
    6. Osterkalender 2021
    7. Osterkalender 2020
    8. Osterkalender 2019
    9. Osterkalender 2018
    10. Osterkalender 2017
    11. Osterkalender 2016
  9. Mediathek
    1. Albums
    2. Video channels
  • Login
  • Register
  • Search
Tutorials
  • Everywhere
  • Articles
  • Pages
  • Forum
  • Tutorials
  • Files
  • Images
  • Videos
  • More Options
  1. TRLevel.de
  2. Lexicon

Lua Scripting Timer und EventSequence

  • Jörg
  • September 21, 2022 at 10:05 AM
  • August 30, 2024 at 5:07 PM
  • 2,472 times viewed

WICHTIG

Diese Tutorials sind beim schreiben immer mit der aktuellsten TEN/TE Version erstellt worden.
Leider kann sich von Version zu Version des Tomb Editor oder der Tomb Engine immer etwas am Code ändern. Daher können manche Teile der Tutorials veraltet sein, bzw. nicht mehr funtkionieren.
Wenn euch hier etwas auffällt, teilt uns dies BITTE mit. Damit man sich das Tutorial ansehen und überarbeiten kann. Dazu bitte einfach ein Thema im "TRLevel Forum" eröffnen.

  • 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.

    Code
    local Timer = require("Engine.Timer")
    
    LevelFuncs.KillLara = function() 
    Lara:Explode() 
    PlaySound(106)
    PlaySound(30)
    end
    
    LevelFuncs.StartTimer = function ()
    local myTimer = Timer.Create("my_timer", 5.0, false,{minutes = false, seconds = true, deciseconds = true},LevelFuncs.KillLara)
    myTimer:Start()
    end
    Display More

    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.

    Code
    local EventSequence = require("Engine.EventSequence")
    
    LevelFuncs.opendoor1 = function ()
    local gate = GetMoveableByName("door_1")
    gate:Enable()
    end
    
    LevelFuncs.opendoor2 = function ()
    local gate = GetMoveableByName("door_2")
    gate:Enable()
    end
    
    LevelFuncs.opendoor3 = function ()
    local gate = GetMoveableByName("door_3")
    gate:Enable()
    end
    
    LevelFuncs.TriggerSequence = function ()
    local mySeq = EventSequence.Create("my_seq",
    false,
    --{seconds = true, deciseconds = true}, -- timer format, see Timer for details
    10, LevelFuncs.opendoor1,
    5, LevelFuncs.opendoor2,
    3, LevelFuncs.opendoor3
    )
    
    mySeq:Start()
    end
    Display More

    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

    • Timer
    • EventSequence

Share

  • Previous entry Text am Bildschirm anzeigen - LUA
  • Next entry Weitere Level Einstellungen LUA
  • Changelog
  • PDF

Table of Contents

  • 1 Timer
  • 2 EventSequence

Categories

  1. Archiv 8
    1. Tomb Editor_Alt 2
    2. TRNG_Alt 4
  2. Bauen 239
    1. Tomb Editor (TE) 107
      1. Tipps und Tricks 19
      2. SoundTool 5
      3. TombIDE 6
      4. WadTool 11
      5. NodeEditor 2
    2. Tomb Engine (TEN) 72
      1. Tipps und Tricks 17
      2. Lua Scripting 35
    3. TRNG Engine 194
      1. Scripting 4
      2. NG Center 20
      3. Allgemein 7
      4. Neue TRNG Script Befehle 66
      5. Neue TRNG Trigger 66
      6. Neue TRNG OCB Werte 9
      7. TRNG Plugins 6
      8. Tipps und Tricks 5
      9. TRNG Engine Praktische Beispiele 8
    4. NGLE (Next Generation Level Editor) 12
    5. Tomb Raider Level Editor 86
      1. Licht 4
      2. Geometrie 8
      3. Levelbau 110
      4. Tipps und Tricks 12
      5. Script 3
      6. Sounds 2
      7. Texturen 2
      8. OCB 4
      9. Sonstiges 3
      10. Dxtre3D 1
  3. Tools 21
    1. Metasequoia 5
      1. Metasequoia 3.x 2
      2. Metasequoia 4.x 3
    2. StrPix und WADMerger 4
      1. StrPix 2
      2. WADMerger 2
    3. FLEP 9
    4. Tools 2
    5. TREP 7
      1. Flipeffect Editor 1
      2. Custom Patches 2
    6. TRViewer 1
    7. Blender 0
  4. Allgemeine Tipps und Tricks 3
  5. Level Editor Lexikon 107
    1. Tomb Editor 1
    2. Tools 3
      1. TREP/FLEP 3
      2. WADMerger 0
      3. Strpix 0
    3. NGLE/LE 97
    4. Allgemein 6
      1. WAD Slots 5
    5. NGEngine 0
  1. Privacy Policy
  2. Contact
  3. Legal Notice
Lexicon 7.1.17, developed by www.viecode.com
Powered by WoltLab Suite™ 6.1.18
TRLevel.de in the WSC-Connect App on Google Play
TRLevel.de in the WSC-Connect App on the App Store
Download