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 Alle Moveables/Statics eines Slots auswählen - LUA

  • Jörg
  • April 7, 2023 at 6:42 PM
  • April 8, 2023 at 4:01 PM
  • 1,543 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.

  • Alle Moveables/Statics eines Slots auswählen - LUA

    Mit der LUA Funktion "GetMoveableByName" oder "GetStaticByName" können wir ein einzelnes Moveable oder Static Objekt in eine Variable setzen und dann dieser eine LUA Funktion zuordnen. Möchen wir aber dass eine LUA Funktion bei allen Moveables wie z.B. bei dem Gegner "Baddy2" oder einem "Static Objekt in Slot 28" Anwendung findet, ist dies mit dem Auswählen des Namens nicht möglich, da dieser bei jedem Objekt unterschiedlich ist.

    Seit Version 1.0.3 gibt es nun die Möglichkeit, alle Moveables oder Statics anhand des Slotnamens auszuwählen.

    1 GetMoveablesBySlot(slot)

    Mit diesem LUA Befehl, den wir in eine Funktion setzen, können wir alle Moveables eines bestimmten Slots auswählen, z.B. den Gegner Baddy2.

    Code
    local moveables = GetMoveablesBySlot(TEN.Objects.ObjID.BADDY2)


    Hier setzen wir in die Variable "moveables" eine Tabelle mit allen "BADDY2", die wir im Level platziert haben.

    Anmerkung:

    Den Slotnamen können wir z.B. im WadTool nachsehen oder hier: Slot Namen

    Zwingend erforderlich ist, dass wir den Präfix "TEN.Objects.ObjID." verwenden. Nur "GetMoveableBySlot(BADDY2)" funktioniert also nicht.

    In der Variable "moveables" befindet sich nun quasi eine Tabelle mit allen "Baddy2", die sich in unserem Level befinden. Möchten wir diese nun z.B. alle gleichzeitig explodieren lassen, könnten wir nun jeden "Baddy2" aus dieser Tabelle mit dem jeweiligen Index einzeln aufführen, indem wir es in eine "LevelFuncs." schreiben. Das sähe dann so aus:

    Code
    LevelFuncs.Explode_All_Baddy2_manually = function ()
    local moveables = GetMoveablesBySlot(TEN.Objects.ObjID.BADDY2)
    
    moveables[1]:Explode()
    moveables[2]:Explode()
    moveables[3]:Explode()
    moveables[4]:Explode()
    
    end

    usw.

    In dem oben genannten Beispiel werden die ersten vier "Baddy2" zur Explosion gebracht. Was aber wenn wir nun hundert "Baddy2" haben? Dann müssten wir dies 100mal schreiben. Sehr aufwendig! Deswegen kann man das Ganze mit einer Schleife (Loop) abkürzen. Das Ganze sieht dann in einer "LevelFuncs." Funktion folgendermaßen aus:

    Code
    LevelFuncs.Explode_All_Baddy2 = function ()
    local moveables = GetMoveablesBySlot(TEN.Objects.ObjID.BADDY2)
    
    for index, moveable in pairs(moveables) do
    moveable:Explode()
    end
    end

    Hier wird in einer Schleife in "moveable" der Indexwert gesetzt (angefangen von 1 bis ......) und diesem einem "Baddy2" aus der Tabelle "moveables" zugeordnet. In dieser Tabelle befinden sich alle im Level platzierten" Baddy2". Dieser soll dann hier im Beispiel explodieren.

    Es wird also z.B. der Wert 1 dem "Baddy2" z.B. "baddy2_1" zugeordnet und durch "moveable: Explode()" explodiert dieser. Dann wird sofern vorhanden der Wert "2" dem nächsten "Baddy2" z.B. "baddy2_2" zugeordnet und dieser explodiert wieder. Das geht so lange weiter, bis alle "Baddy2" aus der Tabelle abgearbeitet wurden, also bis alle "Baddy2", die sich im Level befinden, explodiert sind.

    Wer sich noch genauer mit Schleifen, Tabellen und Arrays und dem Befehl "in pairs" beschäftigen möchte, kann dies in Kubsys Tutorial über Lua Basics nachlesen.

    Wie wir diese Funktion nun in einen Volume Trigger setzen, kann man hier nachlesen.

    Anmerkung:

    "GetMoveablesBySlot" lässt sich nicht im Node Editor aufrufen, man muss diese also in eine Funktion in der Lua Level Datei schreiben.

    2 GetStaticsBySlot(slot)

    Mit diesem LUA Befehl, den wir in eine Funktion setzen, können wir alle Statics eines bestimmten Slots auswählen, z.B. den Slot 28.

    Code
    local statics = GetStaticsBySlot(28)

    Hier setzen wir in die Variable "statics" eine Tabelle mit allen "Statics im Slot28", die wir im Level platziert haben.

    Anmerkung:

    Die Slot Zahl können wir z.B. im WadTool nachsehen.

    Hier ist kein Präfix notwendig, sondern es reicht die Slot Zahl.

    In der Variable "statics" befindet sich nun quasi eine Tabelle mit allen "Statics in Slot 28", die sich in unserem Level befinden. Möchten wir diese nun z.B. alle gleichzeitig umfärbenn, könnten wir nun jedes "Static im Slot 28" aus dieser Tabelle mit dem jeweiligen Index einzeln aufführen, indem wir es in eine "LevelFuncs." schreiben. Das sähe dann so aus:

    Code
    LevelFuncs.Color_All_Statics28_manually = function ()
    local statics = GetStaticsBySlot(28)
    
    statics[1]:SetColor(Color(0,255,0))
    statics[2]:SetColor(Color(0,255,0))
    statics[3]:SetColor(Color(0,255,0))
    statics[4]:SetColor(Color(0,255,0))
    
    end

    usw.

    In dem oben genannten Beispiel werden die ersten vier "Statics im Slot 28" in Grün umgefärbt. Was aber wenn wir nun hundert "Statics im Slot 28" haben? Dann müssten wir dies 100mal schreiben. Sehr aufwendig! Deswegen kann man das Ganze mit einer Schleife (Loop) abkürzen. Das Ganze sieht dann in einer "LevelFuncs." Funktion folgendermaßen aus:

    Code
    LevelFuncs.Color_All_Statics28 = function ()
    local statics = GetStaticsBySlot(28)
    
    for index, static in pairs(statics) do
    static:SetColor(Color(0,255,0))
    end
    end

    Hier wird in einer Schleife in "statics" der Indexwert gesetzt (angefangen von 1 bis ......) und diesem einem "Static in Slot 28" aus der Tabelle "statics" zugeordnet. In dieser Tabelle befinden sich alle im Level platzierten "Statics im Slot 28". Dieser soll dann hier im Beispiel grün färben.

    Es wird also z.B. der Wert 1 dem"Static in Slot 28" z.B. "static_mesh_1" zugeordnet und durch "static:SetColor(Color(0,255,0))" wird dieser grün gefärbt.. Dann wird sofern vorhanden der Wert "2" dem nächsten "Static in Slot 28" z.B. "static_mesh_2" zugeordnet und dieser wird ebenfalls grün gefärbt. Das geht so lange weiter, bis alle "Statics in Slot 28" aus der Tabelle abgearbeitet wurden, also bis alle "Statics in Slot 28", die sich im Level befinden, grün gefärbt sind.

    Wer sich noch genauer mit Schleifen, Tabellen und Arrays und dem Befehl "in pairs" beschäftigen möchte, kann dies in Kubsys Tutorial über Lua Basics nachlesen.

    Wie wir diese Funktion nun in einen Volume Trigger setzen, kann man hier nachlesen.

    Anmerkung:

    "GetStaticsBySlot" lässt sich nicht im Node Editor aufrufen, man muss diese also in eine Funktion in der Lua Level Datei schreiben.

    • Statics
    • Moveables
    • LUA
    • Slot

Share

  • Next entry Ammo Counter
  • Changelog
  • PDF

Table of Contents

  • 1 GetMoveablesBySlot(slot)
  • 2 GetStaticsBySlot(slot)

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