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 2025
    2. Osterkalender 2024
    3. Osterkalender 2023
    4. Osterkalender 2022
    5. Osterkalender 2021
    6. Osterkalender 2020
    7. Osterkalender 2019
    8. Osterkalender 2018
    9. Osterkalender 2017
    10. 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 Flare Timer - verbleibene Zeit anzeigen

  • l.m.
  • October 7, 2024 at 11:17 PM
  • October 10, 2024 at 9:02 PM
  • 559 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.

  • Mit diesem Script könnt ihr die verbliebene Zeit eurer Flare anzeigen.

    Der Timer läuft sobald Lara die Flare entzündet und beendet sich, sobald die Zeit abgelaufen ist.

    Da eine Flare 60 sek. lang leuchtet, habe ich den Timer auf 60 Sek. gesetzt. Sollte die Zeit der Flare angepasst sein, ändert ihr einfach den Wert um.

    Alles was ihr braucht ist dieses Script:

    Code
    local Timer = require("Engine.Timer")
    
    -- Level event functions
    LevelFuncs.OnLoad = function() end
    LevelFuncs.OnSave = function() end
    LevelFuncs.OnStart = function() 
    end
    LevelFuncs.OnLoop = function() 
    
    	ShowFlareTimer()
    end
    LevelFuncs.OnEnd = function() end
    
    -- initialize flare variables
    local flare = false
    local flareTimeSeconds = 60.0
    
    LevelFuncs.__EndFlare = function()
    	flare = false
    end
    
    function ShowFlareTimer()
        -- check for timer to begin
        if Lara:GetWeaponType() == 7 and Lara:GetHandStatus() == 2 and not flare then
            flare = true
            --StartTimer
            StartTimer()
        end
    end
    
    function StartTimer()
        -- starts timer
        local flareTimer = Timer.Create(
            "flareTimer", --name
            flareTimeSeconds, -- seconds
            false, -- loop
            {minutes = false, seconds = true, deciseconds = true}, -- timer table
            __EndFlare
        )
        flareTimer:Start()
    end
    Display More


    Kurze Erklärung:

    Da der Timer benutzt wird, müssen wir diesen auch vorher einbinden:

    Code
    local Timer = require("Engine.Timer")

    Es gibt einige Level Events, aber wir benötigen nur die OnLoop Funktion (da unsere Funktion jeden Frame des Spiels abgefragt werden muss - es muss quasi IMMER im Spiel gefragt werden, "Hat Lara eine Fackel entzündet?")

    Code
    -- Level event functions
    LevelFuncs.OnLoad = function() end
    LevelFuncs.OnSave = function() end
    LevelFuncs.OnStart = function() end
    LevelFuncs.OnLoop = function() 
    	ShowFlareTimer()
    end
    LevelFuncs.OnEnd = function() end


    Da die Bedingung ob Lara die Fackel entzündet jeden Frame des Spiels abgefragt werden muss wird die Funktion im "OnLoop" aufgerufen.

    Wir benötigen eine Hilfsvariable "flare" damit der Timer nicht öfter als einmal aufgerufen wird, nachdem Lara die Fackel entzündet und definieren die Dauer:

    Code
    -- initialize flare variables
    local flare = false
    local flareTimeSeconds = 60.0

    Standardmäßig ist flare = false, und wir können den Timer NUR dann starten wenn Lara den Weapon Type 7 , Hand Status 2 und flare = false ist:


    if Lara:GetWeaponType() == 7 and Lara:GetHandStatus() == 2 and not flare then


    Informationen woher die Werte für Weapon Type (7) und Hand Status (2) kommen, findest du hier:

    Weapon Type:

    https://tombengine.github.io/2%20classes/Ob…t:GetWeaponType

    Hand Status:

    https://tombengine.github.io/2%20classes/Ob…t:GetHandStatus


    Wenn diese Bedingung erfüllt ist, ändern wir die Variable "flare" auf True damit diese Bedingung im nächsten Frame Loop nicht mehr erfüllt wird (und somit der Code innerhalb des "if" nicht mehr ausgeführt wird) und rufen unsere Funktion zum Starten des Timers auf:

    Code
    flare = true
    --StartTimer
    StartTimer()


    Informationen wie der Timer grundsätzlich funktioniert, schaue hier:

    599


    Wenn der Timer abgelaufen ist wird die __EndFlare LevelFuncs. Funktion aufgerufen. Man muss tatsächlich eine Level.Funcs. Funktion aufrufen, damit es im Spiel keine Fehler gibt, da der Timer NUR LevelFuncs. als Funktionswert unterstützt.

    Die beiden Unterstriche __ sind nur dazu da, dass die Funktion NICHT im Volume Event Fenster auftaucht, damit man unnötige Funktionen die dort nicht auftauchen sollen, unterdrückt.

    Code
    local flareTimer = Timer.Create(
        "flareTimer", --name
        flareTimeSeconds, -- seconds
        false, -- loop
        {minutes = false, seconds = true, deciseconds = true}, -- timer table
        __EndFlare
    )

    Die Funktion die nach dem Timer aufgerufen (gecalled) wird, setzt die flare Variable wieder auf false, damit ein neuer Kreislauf (neuer Timer) gestartet werden kann. Damit wäre die Bedingung in der if ( ... and not flare then ) wieder erfüllt (flare = false).

    Code
    LevelFuncs.__EndFlare = function()
    	flare = false
    end

Share

  • Previous entry Fehleranalyse
  • Next entry Flipmap - LUA
  • Changelog
  • PDF

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.16
TRLevel.de in the WSC-Connect App on Google Play
TRLevel.de in the WSC-Connect App on the App Store
Download