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 Funktion (Function) erstellen LUA

  • Jörg
  • August 16, 2022 at 11:04 AM
  • September 18, 2022 at 2:12 PM
  • 3,503 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.

  • LUA Erstellen einer Funktion (Function)

    Was ist eine Funktion in LUA?

    Da Lua eine Programmiersprache ist, besteht diese aus programmierbarem Code.

    In eine Funktion können wir einen Codeblock zusammen mit den neuen TEN Syntax Befehlen setzen, den wir dann so oft wir möchten ausführen können. Wir können damit also quasi unsere eigenen "TRNG Action, Flipeffect und Condition Trigger" schreiben, nur viel einfacher und komfortabler.

    In diesem Tutorial werde ich nicht darauf eingehen können, wie man in LUA grundsätzlich programmiert. Kubsy hat darüber ein Basis Tutorial geschrieben. Die neuen TEN Syntax Befehle kann man in der Dokumentation von Squidshire nachlesen.

    Es gibt zwei Arten von Funktionen:

    - Funktionen, die wir innerhalb eines LUA Scriptes setzen und mit .ON Funktionen aktivieren können.

    - Funktionen, die wir in die neuen Volume Trigger des Tomb Editors setzen können und somit im Level durch Lara, Gegner, Kameras usw. aktiviert werden.

    Anmerkung:

    Diese Funktionen, die wir in Volume Trigger setzen, erkläre ich in einem anderen Tutorial.

    In welcher LUA Datei schreiben wir diese Funktionen?

    Beim Erstellen eines neuen Levels haben wir auch eine Datei mit dem Namen erstellt, die wir wir unter "Level1.scriptfile=" vergeben haben.

    In diese Datei schreiben wir alle unsere Funktionen. Wir verwalten hier also unsere komplette Sammlung von selbstgeschriebenen "Triggern", egal ob wir diese später innerhalb des Scriptes oder in einem Volume Trigger aktivieren möchten.

    Es befinden sich darin schon einige Standardfunktionen, die wir beim Erstellen eines neuen Levels vorher angelegt haben. Siehe LUA Dateien - Erste Einführung

    Was bedeuten diese Standardfunktionen?

    Ich vergleiche sie mit den GlobalTriggern der TRNG Engine, da wir hier Funktionen z.B. gleich beim Starten eines Levels aktivieren können.

    Hier mal die einzelnen Erklärungen:

    .OnLoad = Funktionen, die wir hier hineinsetzen, werden beim Laden eines Savegames ausgeführt.

    .OnSave = Funktionen, die wir hier hineinsetzen, werden beim Speichern eines Savegames ausgeführt.

    .OnStart = Funktionen, die wir hier hineinsetzen, werden beim Starten eines Levels ausgeführt.

    .OnControlPhase = Funktionen, die wir hier hineinsetzen werden 30-mal in der Sekunde überprüft (30 FPS)

    .OnEnd = Funktionen, die wir hier hineinsetzen, werden beim Verlassen des Levels ausgeführt ( z.B. durch Laden, Levelwechsel oder zur Titel).

    An der Schreibweise "LevelFuncs." erkennen wir, dass es sich hierbei um Funktionen handelt, die man direkt im Level aktivieren kann.

    Als erstes praktisches Beispiel lösen wir einen Baddy1 sofort aus, wenn das Level startet.

    Code
    local baddy= GetMoveableByName("firstbaddy")
          baddy:Enable()

    Was bedeutet dieser Code?

    local baddy =

    hier vergeben wir eine lokale Variabel und geben ihr den Namen baddy.

    GetMoveablebyName("firstbaddy")

    In diese Variabel baddy setzen wir einen Baddy1 mit dem Lua Namen "firstbaddy"

    Anmerkung:

    Diesen Namen finden wir, wenn wir das Objekt im TE anklicken. Ändern können wir diesen Namen indem wir da Objekt rechts anklicken und "Rename Object" anklicken.


    baddy: Enable()

    HIer sagen wir, dass das Objekt, welches sich in der Variabel "baddy" befindet sofort aktiviert bzw. getriggert werden soll.

    Wie schreiben wir nun diesen Code in die Funktionen?

    Es gibt zwei Möglichkeiten:

    1. Wir können den Code direkt zwischen "function()" und "end" reinschreiben.

    Code
    LevelFuncs.OnStart = function() 
    
    local baddy= GetMoveableByName("firstbaddy") 
          baddy:Enable()
    
    end

    2. Besser ist es allerdings, den Code in eine weitere Funktion zu schreiben und auf diese dann zu verweisen:

    Wir erstellen also eine leere Funktion und vergeben einen Funktionsnamen (hier als Beispiel baddy1):

    Code
    function baddy1 ()
    end

    In diese Funktion setzen wir nun unseren Code:

    Code
    function baddy1 ()
    
    local baddy= GetMoveableByName("firstbaddy")
          baddy:Enable()
    
    end

    Diese Funktion setzen wir weiter unten in unsere LUA Level Datei, nun müssen wir in der ON Funktion noch auf sie verweisen.

    Dazu schreiben wir ein baddy1 () dazwischen, das sieht dann so aus:

    Code
    LevelFuncs.OnStart = function()
    
    baddy1 ()
    
    end

    Anmerkung:

    Dadurch, dass wir unseren Codeblock in eigene Funktionen schreiben, bleibt das Script lesbarer, wenn wir nachher weitere Codeblöcke schreiben und hinzufügen. Ausserdem können wir durch den Funktionsnamen, den wir vergeben haben, immer wieder von neuem auf den Codeblock verweisen und ihn auch in andere .ON Funktionen setzen.

    In unserer Level Lua Datei sieht das ganze dann in der Praxis so aus:

    Somit haben wir also unseren ersten Code geschrieben und diesen in eine Funktion gesetzt, die wir dann durch die .ON Funktionen im Level auslösen.

    Wie wir Funktionen erstellen, die wir in die neuen Volume Trigger setzen, erkläre ich im nächsten Tutorial.

    • Function
    • LevelFuncs

Share

  • Previous entry FOV - Kamerasicht - LUA
  • Next entry Funktionen (Functions) in Volume Trigger setzen 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.18
TRLevel.de in the WSC-Connect App on Google Play
TRLevel.de in the WSC-Connect App on the App Store
Download