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

TRNG TriggerGroup= - Teil 3

  • Jörg
  • May 27, 2021 at 12:08 PM
  • May 1, 2023 at 3:47 PM
  • 2,340 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.

  • TriggerGroup= - Teil 3

    +TGROUP_FLAGS

    Wie im zweiten Teil schon angekündigt geht es beim dritten Teil über die "+TGROUP_FLAGS".

    Mit den "+TGROUP_FLAGS" kann man Triggern noch weitere Operatoren geben und in Relationen zu anderen Triggern innerhalb der TriggerGroup bringen, um z.B. komplexe Rätsel erstellen zu können.

    Man unterscheidet folgende Flags:

    1 ONE SHOT FLAGS

    Hat man einen Flipeffect for TriggerGroup auf mehreren Squares gesetzt, wird die TriggerGroup jedesmal ausgelöst, wenn wir eines dieser Squares betreten. Setzen wir ONE SHOT, wird die TriggerGroup zumindest einmal auf jedem dieser Squares ausgelöst. Hat man z.b. einen Trigger für eine TriggerGroup auf 10 Squares gesetzt, und möchte dass die TriggerGroup nur einmal ausgelöst wird, sobald man eines dieser 10 Squares betritt und bei den anderen 9 danach nicht mehr, kann man einen ONE_SHOT Flag in eine TriggerGroup setzen.

    +TGROUP_SINGLE_SHOT
    Mit diesem Flag wird eine TriggerGroup nur einmal ausgelöst, egal wie viele Trigger man für die TriggerGroup im Editor gesetzt hat.
    Den Flag setzt man beim ersten Trigger in der Gruppe.

    Beispiel:

    TriggerGroup=1, $2000+TGROUP_SINGLE_SHOT,160,$002D,$2000,63,$0002,$2000,96,$0000
    +TGROUP_SINGLE_SHOT_RESUMED

    Auch mit diesem Flag wird eine TriggerGroup nur einmal ausgelöst, der Unterschied zu TGROUP_SINGLE_SHOT besteht aber da drin, dass die TriggerGroup noch mal ausgelöst wird wenn eine der Trigger erneut falsch und dann wieder wahr wird.

    TriggerGroup=1, $2000+TGROUP_SINGLE_SHOT_RESUMED,160,$002D,$2000,63,$0002,$2000,96,$0000

    2 CONDITION FLAGS

    Wie wir im ersten Teil gelernt haben, müssen bei gemischten Triggergroups in denen Bedingungen und ausführbare Trigger sind alle Bedingungen wahr sein, damit die ausführbaren Trigger zur Anwendung kommen.

    Man könnte auch sagen hier besteht ein unsichtbarer "Und" Operator.

    TriggerGroup = Wenn Bedingung 1 UND Bedingung 2 UND Bedingung usw. wahr sind, dann folgende Trigger ausführen.

    Möchte man nun Condition Trigger mit anderen Operatoren wie "NICHT - NOT" , "ODER - OR", "SONST - ELSE" in Verbindung bringen, kann man auf folgende drei +TGROUP Flags zurückgreifen.

    Der Flag wird hinter den ersten der 3 exportierten Trigger Werte gesetzt.

    TriggerGroup= $8000+TGROUP_OR,0,$0005

    TriggerGroup= $8000+TGROUP_NOT,0,$0005

    TriggerGroup= $8000+TGROUP_ELSE,0,$0005

    In den folgenden Beispielen werden Trigger wie abgekürzt:

    CT = Condition Trigger

    ET = Executable Trigger

    +TGROUP_OR

    Mit diesem Flag können wir eine "Oder" Relation herstellen. Wir erinnern uns, ohne Operatoren gilt immer "und" zwischen zwei oder mehreren Condition Triggern.

    Beispiele:

    TriggerGroup= 1, CT1+TGROUP_OR, CT2, ET1
    Wenn CT1 oder CT2 wahr ist dann soll ET1 ausgeführt werden.

    TriggerGroup=1, CT1+TGROUP_OR, CT2+TGROUP_OR, CT3, ET1, ET2
    Wenn CT1 oder CT2 oder CT3 wahr sind, dann soll ET1 und ET2 ausgeführt werden.

    TriggerGroup=1, CT1, CT2, CT3+TGROUP_OR,ET1, ET2, ET3

    Wenn CT1 wahr ist oder CT2 und CT3 wahr sind, dann soll ET1 und ET2 und ET3 ausgeführt werden.

    +TGROUP_NOT

    Mit diesem Flag können wir eine Bedingung umkehren von "wahr nach falsch" oder von "falsch nach wahr".

    Beispiele:

    TriggerGroup= 1, CT1+TGROUP_NOT, ET1, ET2

    Wenn CT1 nicht wahr ist, dann soll ET1 und ET2 ausgeführt werden.

    TriggerGroup= 1, CT1, CT2+TGROUP_NOT, ET1, ET2, ET3

    Wenn CT1 wahr ist und CT2 nicht wahr ist dann soll ET1, ET2 und ET3 ausgeführt werden.

    TriggerGroup= 1, CT1+TGROUP_NOT, CT2+TGROUP_NOT, ET1, ET2

    Wenn CT1 nicht wahr ist und CT2 nicht wahr ist dann soll ET1 und ET2 ausgeführt werden.

    Man kann auch ein TGROUP_OR dazusetzen:

    TriggerGroup= 1, CT1+TGROUP_OR, CT2+TGROUP_NOT, ET1, ET2, ET3

    Wenn CT1 oder CT2 nicht wahr ist dann soll ET1, ET2 und ET3 ausgeführt werden.

    +TGROUP_ELSE

    Mit diesem Flag können wir eine "sonst" Relation zwischen Bedingungen herstellen. Wenn eine Bedingung "wahr" oder "unwahr" ist, dann.... sonst prüfe, ob die nächste Bedingung "wahr" oder "unwahr" ist und führe dann .... aus.

    Beispiele:

    TriggerGroup= 1, CT1, ET1, CT2+TGROUP_ELSE, ET2

    Diese Triggergruppe prüft ob CT1 wahr ist und führt dann ET1 aus. Ist dies nicht der Fall wird geprüft, ob CT2 wahr ist und führt dann ET2 aus.

    Komplexes Beispiel (von AkyV):

    TriggerGroup= 1, CT1, CT2+TGROUP_OR, ET1, ET2, CT3+TGROUP_ELSE, ET3, >

    CT4+TGROUP_ELSE, CT5+TGROUP_NOT, ET4, ET5, ET6

    Die Triggergruppe prüft, ob CT1 oder CT2 wahr sind. Ist eine von beiden wahr wird ET1 und ET2 ausgeführt. Ist keiner der beiden wahr, wird geprüft ob CT3 wahr ist. Ist dies der Fall wird ET3 ausgeführt. Ist dies nicht der Fall wird geprüft ob CT4 wahr ist und CT5 nicht wahr ist. Ist dies der Fall wird ET4, ET5 und ET6 ausgeführt.

    TriggerGroup= 1, CT1, ET1, ET2+TGROUP_ELSE, ET3

    Wenn CT1 wahr ist, führe ET1 aus aber wenn CT1 nicht wahr ist, dann führe ET3 und ET3 aus.

    3 INDEX FLAGS

    Bei Index Flags kann man einen Trigger so verändern, dass er auf alle Objekte eines bestimmtes Slots Anwendung findet. Als z.B. soll etwas bei allen Animating1 Objekten passieren. Oder bei einem Gegner soll dieser Trigger auf alle Baddy1, Crocodile, Mummy usw. Anwendung finden.

    Der Flag überschreibt quasi die einzelne ID eines Objektes in dem Trigger und wendet es auf alle Objekte an, die in diesem Slot sind.

    Es gibt folgende Index Flags:

    TGROUP_USE_....
    +TGROUP_USE_EXECUTOR_ITEM_INDEX

    Dieser Flag kann dazu verwendet werden, damit alle Gegner in einem bestimmten Slot, die auf bestimmte Squares laufen getötet werden.

    Dazu setzt man einen Trigger für eine TriggerGroup auf bestimmte Squares und löst sie mit einem Heavy Trigger aus. (Wichtig ist hier, dass Single execution genommen wird)

    Zunächst setzen wir einen Heavy Trigger für eine TriggerGroup, hier TriggerGroup=3

    Heavy for FlipEffect

    TriggerGroup. Perform <&>TriggerGroup from script.dat (Single execution to use when in TriggerGroup there are only commands) (F371)

    <&> TriggerGroup=3

    In diese TriggerGroup (hier im Beispiel TriggerGroup 3) setzen wir nun den Action Trigger (43), der einen Gegner (hier im Beispiel Baddy2 mit der ID 35) tötet.

    Dadurch dass wir nun hinter der ersten Zahl den Flag TGROUP_USE_EXECUTOR_ITEM_INDEX setzen, gilt es nicht nur für den Baddy2 mit der ID 35, sondern für alle Baddy2, die die TriggerGroup 3 mit Heavy auslösen.

    TriggerGroup=3, $5000+TGROUP_USE_EXECUTOR_ITEM_INDEX,35,$000E

    ; Trigger for ActionNg

    ; <#> (43) BADDY_2, Room = Block Party5, X = 5, Z = 7, Ocb = 0, ScriptId = 35

    ; <&> Enemy. Kill <#>object in (E) way (A14)

    ; <E> Default death animation (only for mortal creatures, removing vitality)

    ; Copy following values to your script:

    ; $5000,35,$000E

    Dadurch sterben alle Baddy2, die auf die Squares laufen, auf denen der TriggerGroup Trigger F371 mit Heavy ausgelöst wird.

    Anmerkung:

    Damit der Baddy2 auch einen Heavy Trigger ohne AI Nullmesh-Objekte auslöst, setzen wir im Script Befehl "Enemy=" einen "NEF_EASY_HEAVY_ENABLING" Flag.

    Enemy= BADDY_2, IGNORE, NEF_EASY_HEAVY_ENABLING, IGNORE, IGNORE, IGNORE, IGNORE, IGNORE; Baddy2 can trigger Heavy Trigger

    +TGROUP_USE_FOUND_ITEM_INDEX

    Dieser Flag kann dazu benutzt werden, um beispielsweise Action Trigger auf alle Slots eines Moveable Objecks anzuwenden. So muss man nicht für jedes Moveable Objekt einen neuen Trigger auslösen.

    Beispiel:

    Immer wenn Lara das Animating7 Objekt berührt, welches sich irgendwo im Level befindet, soll es sich um 4 Klicks nach oben bewegen.

    Möglicher Aufbau:

    GlobalTrigger=1, IGNORE, GT_COLLIDE_SLOT, Animating7,IGNORE,1,IGNORE

    TriggerGroup=1, $5000+TGROUP_USE_FOUND_ITEM_INDEX,6,$031E

    ; Trigger for ActionNg

    ; <#> (439) ANIMATING7, Room = Block Party (Copy), X = 5, Z = 6, Ocb = 0, Script ID = 6

    ; <&> Move. Move up <#>animating for (E) clicks (A30)

    ; <E> 4 click

    ; Copy following values to your script:

    ; $5000,6,$031E

    Durch den Global Trigger legen wir zunächst einen Index fest, indem wir sagen, immer wenn Lara das Animating7 Objekt berührt, soll etwas passieren.

    In der "TriggerGroup=1" setzen wir eine Action Trigger, der festlegt, dass wenn Lara das Animating7 mit der ID6 berührt, sich dieses um 4Klicks erhöhen soll.

    Damit dies nun bei jedem Animating7 welches wir im Level irgendwo platziert haben passiert, benutzen wir den "TRGROUP_USE_FOUND_ITEM_INDEX Flag. Dadurch wird jedes Animating7 im Level um 4Klicks erhöht, sobald Lara es berührt, egal welche ID es hat.

    +TGROUP_USE_ITEM_USED_BY_LARA_INDEX

    Dieser Flag kann dazu benutzt werden, dass immer wenn Lara mit einem bestimmten Objekttyp interagiert, etwas passieren soll. So muss man nicht für jedes Objekt einen neuen Trigger oder Script Befehl schreiben.

    Beispiel:

    Immer wenn Lara einen "pushable_Object" schiebt, soll bei diesem gelber Sprühnebel erscheinen.

    Möglicher Aufbau:

    AddEffect=1, ADD_MIST, FADD_CONTINUE_EMIT,JOINT_SINGLE_MESH,0,0,0,0,0,24,1,MIST_COL_YELLOW,32
    GlobalTrigger=1, IGNORE,GT_CONDITION_GROUP,IGNORE, 1,2,IGNORE


    TriggerGroup=1, $8000,13,$0005


    ; ConditionNg for ParameterNg
    ; <#> Pushing block
    ; <&> Lara. (Status) Lara is performing <#>action is (E) (C5)
    ; <E> TRUE (Lara is performing #action)
    ; Copy following values to your script:
    ; $8000,13,$0005


    TriggerGroup=2, $5000+TGROUP_USE_ITEM_USED_BY_LARA_INDEX,17,$0130


    ; Trigger for ActionNg
    ; <#> (156) PUSHABLE_OBJECT1, Room = Room 0 (copy 3), X = 3, Z = 7, Ocb = 0, Script ID = 17
    ; <&> Effect. Add to <#>Enemy the (E)AddEffect from script.txt (A48)
    ; <E> AddEffect=1
    ; Copy following values to your script:
    ; $5000,17,$0130

    Wir legen einen AddEffect 1 fest, dem wir den gelben Sprünebel zuweisen.

    Der GlobalTrigger sagt aus, dass immer wenn Lara einen "pushable Object" von sich wegschiebt, ein gelber Sprühnebel erscheinen soll. Hier haben wir ein "pushable_object1", der Effekt wird aber bei allen pushable_Objects angewendet, auch "pushable_object2" usw.

    Laut Paolone gehen folgende Objekte, mit denen Lara interagieren kann:
    Vehicles, rope, polerope, switch 1/2/3, pushable objects, rollingball (with pusing features), parallel bar, elevator, keypad.

    Hier gilt allerdings die Devise, einfach mal ausprobieren, welche Objekte alle gehen.

    +TGROUP_USE_OWNER_ANIM_ITEM_INDEX

    Diesen Flag können wir verwenden, wenn wir z.B. eine TriggerGroup nach Wadmerger zu einer Animation bzw. Frame als Animcommand exportieren.

    Als Beispiel mal die Baboon Affen von Rardraider.

    Hier hat Rardraider folgende Basis Triggergruppe angelegt:

    TriggerGroup=10, $9000,12,IGNORE $0236,>

    $2000,89,$000D


    ; ConditionNg for ParameterNg

    ; <#> (67) BABOON_NORMAL, Room = Room 0 (copy 2), X = 2, Z = 4, Ocb = 0, Script ID = 12

    ; <&> Lara. Distance. Lara is distant by <#>Moveable less or even than (E)Clicks (C54)

    ; <E> Value=2

    ; Copy following values to your script:

    ; $9000,12,$0236

    ; Trigger for FlipEffect

    ; <#> Lara. (Health) Damage Lara, decreasing life by <&>percentage of full vitality in (E) way (F89)

    ; <&> 5 Percentage

    ; <E> Immediatly, one-shot

    ; Copy following values to your script:

    ; $2000,89,$000D


    Die Triggergruppe sagt aus, dass jedesmal, wenn Lara sich innerhalb von 2 Clicks dem Baboon mit der ID 12 nähert, zieht dieser Lara 5% Energie ab.

    Möchten wir nun, dass diese Triggergruppe immer ausgelöst wird, wenn jeder Baboon im Level die Angriffsanimation 23 bei Frame 7 ausführt, ändern wir die Triggergruppe folgendermaßen.

    TriggerGroup=10, $9000+TGROUP_USE_OWNER_ANIM_ITEM_INDEX,IGNORE, $0236,$2000,89,$000D

    Statt der ID 12 setzen wir hier IGNORE, da wir ja möchten, dass bei jedem Baboon_Normal, der im Level ausgelöst wird, die Triggergruppe 10 bei Animation 23 im Frame 7 ausgelöst wird.

    Nun müssen wir den folgenden Auslöser für die Triggergruppe 10 in die Animation 23 des Baboon_Normal bekommen.

    Set Trigger Type - FLIPEFFECT 118

    ;Exporting: TRIGGER(10:0) for FLIPEFFECT(118)

    ;<#> : TriggerGroup. Perform <&>TriggerGroup from script.dat in (E)way

    ;<&> : TriggerGroup= 10

    ;(E) : Mutiple performing (to use when in TriggerGroup there is some condition)

    Dazu öffnen wir den TE oder NGLE und exportieren den Trigger als AnimCommand (siehe Bild hier mit dem Tomb Editor)

    Hier müssen wir nun noch den Frame angeben, in unserem Beispiel 7, dann erscheint folgende Zahlenkombination:

    diese setzen wir in Wadmerger mit "Edit AnimCommands" oder in WadTool mit "AnimCommands" in die entsprechende Animation 23 des Baboon_Normal.

    +TGROUP_USE_TRIGGER_ITEM_INDEX

    Dieser Flag ist laut AkyV nicht sinnvoll und braucht nicht verwendet zu werden.

    • Trigger
    • TriggerGroup
    • TGroup Flags

Share

  • Previous entry TriggerGroup= - Teil 2
  • Next entry WindowsFont=
  • Changelog
  • PDF

TRNG

TRNG Version
1.3.0.7
NG Center
1.5.7

Table of Contents

  • 1 ONE SHOT FLAGS
  • 2 CONDITION FLAGS
  • 3 INDEX FLAGS

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