Gegenstände einsammeln 2- Fortgeschritten mit Plugin TRNG
Im Teil 1 von "Gegenstände einsammeln - Grundlagen" wurde erklärt, wie man Gegenstände vom Boden, von einem Podest, von einer Wand usw. einsammelt. Diese verschiedenen Arten stammen hauptsächlich aus Teil 1 - Teil 4 der Originalspiele.
Ab Teil 5 "Tomb Raider - die Chronik" wurden weitere Arten hinzugefügt, wie z.B. Gegenstände einsammeln von einem Regal, aus einer Schublade, aus einem Schrank oder aus einer Truhe.
Da diese jedoch nicht mit der TR4 Engine kompatibel sind, müssen wir hier einen anderen Weg gehen. Ein Weg war, die Sarcophagus Animation auszutauschen und alles entsprechend anzupassen.
Dank AODfan und ChocolateFan gibt es aber ein Plugin für die TRNG Engine, indem wir dies relativ einfach realisieren können, wenn man weiß wie es geht.
Zunächst müssen wir uns das Plugin herunterladen. Dieses finden wir hier unter dem Stichwort "Plugin_AODfanChocolateFanChronicles.dll". Dieses installieren wir nun im TombIDE im Plugin Manager.
Nun können wir bis zu 16 Objekte verwenden, die Lara durchsuchen kann. Hier in dem Tutorial geht es mal darum, wie man die Objekte aus "TRV - Die Chronik" mit dem Plugin verwendet.
Generell benötigen wir noch 3 bzw. 4 TRNG Script Befehle:
AssignSlot=<MyUsedSlot>,OBJ_SEARCH_OBJECT{1..16}
<MyUsedSlot>
Hier geben wir den Slot an, indem sich das Objekt befindet (Beispiel Animating 1-16 usw.)
OBJ_SEARCH_OBJECT{1..16}
Hier weisen wir dem oben vergebenen Slot ein "Search_Object" zu, von 1-16.
Syntax: Customize=CUST_SEARCH_..., TestPositionId, OneShot, Animation, Frame
Hier setzen wir noch weitere Werte für das oben definierte "Search_Object".
CUST_SEARCH_OBJECT1 - CUST_SEARCH_OBJECT16
Hier geben wir das CUST_SEARCH_OBJECT mit der Nummer an.
TestPostitionID
Hier geben wir die Nummer des "TestPosition=" ScriptBefehl an.
Der "TestPosition=" Script Befehl wird noch mal gesondert in einem Tutorial erklärt werden.
OneShot
Hier geben wir DISABLED oder ENABLED für One Shot ein.
Anmerkung:
Setzen wir hier "IGNORE", gilt der Standardwert "DISABLED".
Frame
Hier setzen wir das Frame der Animation1 beim Suchobjekt, an dem eine mögliche TriggerGroup ausgelöst werden soll.
Setzen wir hier IGNORE wird die Triggergroup bei Frame 15 abgespielt.
Anmerkung:
Da die Lara Animation genau die gleiche Länge an Frames haben muss, können wir auch hier schauen welcher Frame sich dafür eignet, wann die Triggergroup (z.b. dass ein Gegenstand ins Inventar wandert) ausgelöst werden soll. Denn die Animation1 des Suchobjektes hat meist keine allzu großen Bewegungen. (z.B. Schrank, Regal usw. haben keine Veränderung, wenn die Animation abgespielt wird)
TestPosition=
Hier geben wir die Position des Objektes an, welches Lara durchsuchen soll. Der Befehl ist etwas aufwendig, deswegen wird dieser in einem gesonderten Tutorial erklärt werden.
Triggergroup=
Zusätzlich brauchen wir noch eine TriggerGroup, in der wir einen Gegenstand dem Inventar hinzufügen. Beim Regal kann man noch zusätzlich ein Gegenstand platzieren, der erst sichtbar ist und dann beim Einsammeln verschwindet und im Inventar erscheint (siehe praktisches Beispiel beim Regal)
Diese Triggergroup lösen wir durch einen OCB Eintrag beim Objekt aus. Beim "Customize=CUST_SEARCH_OBJECT" Script Befehl können wir noch zusätzlich den Frame eintragen, bei dem die TriggerGroup ausgelöst werden soll. (siehe ebenfalls die Praktischen Beispiele")
TriggerGroup=2, $2000,48,$016D
; Trigger for FlipEffect
; <#> Inventory-Item. Increase (+1) in (E)way the number of <&>inventory-item in inventory (F48)
; <&> BIGMEDI_ITEM Slot=368
; <E> Show animation of item (like it was picked up)
; Copy following values to your script:
; $2000,48,$016D
Zusätzlich müssen wir dem "Lara" Objekt noch die entsprechenden neuen Animationen hinzufügen. Dabei können wir die Original Slots nehmen, wie sie auch in "TRV - Die Chronik" verwendet wurden, oder andere Slots. Dies müssen wir nur dann entsprechend beim "Customize=CUST_SEARCH_OBJECT" entsprechend unter "Animation" eintragen.

Anmerkung:
Wichtig ist, dass die StateID der Lara Animation 89 bzw. "MISC_CONTROL" sein muss. Ausserdem muss die Länge der Animation1 beim Objekt und die Länge der Lara Animation gleich sein.
Objekte aus TRV - die Chronik
Anmerkung:
Alle Objekte können im Anhang heruntergeladen werden. Manche Objekte wie z.B. Schränke haben oben oder an der Seite keine Faces, da sie im Original "TRV" Teil aneinandergereiht wurden oder durch andere Objekte verdeckt wurden. Alle Objekte haben eine Soundzuweisung der TR4 Standard Sounds und die richtigen Animationen. Sofern es andere TRV Sounds gibt, habe ich diese hinzugefügt. Diese kann man dann durch andere Sound Slots austauschen oder komplett neue Sound Slots hinzufügen und dann zuweisen. (Benötigt allerdings einen Flep Patch)
1 Regal (shelf)
Das Regal befindet sich hier im Beispiel im Animating1 Slot. Zusätzlich setzen wir im Script folgende Einträge:
AssignSlot=ANIMATING1,OBJ_SEARCH_OBJECT1
Customize=CUST_SEARCH_OBJECT1, 1, DISABLED, 466, 168
TestPosition= 1, -1, ANIMATING1, -512, 512, -128, 128, -192, 192, -1820, 1820, -5460, 5460, -1820, 1820
Im Editor selber setzen wir noch beim Animating1 im OCB die Nummer der Triggergroup (hier im Beispiel 1), die wir bei Frame 168 auslösen möchten. In das Regal setzen wir das "Objekt" welches Lara aufsammeln soll. Zusätzlich setzen wir noch die "loot_shelf" Animation 466 in unser "Lara" Objekt.
Die Triggergroup für das Regal (Hinzufügen eines BigMedi Packs) könnte wie folgt aussehen:
TriggerGroup=1, $5000,115,$010E, $2000,48,$016D
; Trigger for ActionNg
; <#> (368) BIGMEDI_ITEM (Room 18 (copy)), Ocb = 0, Script ID = 115
; <&> Enemy. Kill <#>object in (E) way (A14)
; <E> Remove immediatly (disappear any item)
; Copy following values to your script:
; $5000,115,$010E
; Trigger for FlipEffect
; <#> Inventory-Item. Increase (+1) in (E)way the number of <&>inventory-item in inventory (F48)
; <&> BIGMEDI_ITEM Slot=368
; <E> Show animation of item (like it was picked up)
; Copy following values to your script:
; $2000,48,$016D
Display More
Anmerkung:
Sound
Wenn Lara aufs Regal tritt hört man ein kurzes Metallgeräusch. Dieses ist in der Lara Animation 466 zugeordnet. Tritt Lara aber auf ein Regal welches z.b. aus Holz ist, ändert man hier den Sound auf "Wood". (siehe Bild)
In der Lara Animation habe ich beide Sounds hinzugefügt. Standardmäßig hört man "Metall". Möchte man Holz verwenden, löscht man einfach den "Metall" Eintrag.
2 Schublade (drawer)
Die Schublade befindet sich hier im Beispiel im Animating2 Slot. Der Schrank dazu befindet sich im Animating2_Mip Slot und dient nur als Objekt. Manchmal befindet sich dieser Schrank auch in einem Static Slot. Zusätzlich setzen wir im Script folgende Einträge:
AssignSlot=ANIMATING2,OBJ_SEARCH_OBJECT2
Customize=CUST_SEARCH_OBJECT2, 2, DISABLED, 465, 96
TestPosition= 2, -1, ANIMATING2, -512, 512, -128, 128, -192, 192, -1820, 1820, -5460, 5460, -1820, 1820
Im Editor selber setzen wir noch beim Animating2 im OCB die Nummer der Triggergroup (hier im Beispiel 2), die wir bei Frame 96 auslösen möchten. Zusätzlich setzen wir noch die "loot_drawer" Animation 465 in unser "Lara" Objekt.
Die Triggergroup (Hinzufügen eines BigMedi Packs) für die Schublade könnte wie folgt aussehen:
TriggerGroup=2, $2000,48,$016D
; Trigger for FlipEffect
; <#> Inventory-Item. Increase (+1) in (E)way the number of <&>inventory-item in inventory (F48)
; <&> BIGMEDI_ITEM Slot=368
; <E> Show animation of item (like it was picked up)
; Copy following values to your script:
; $2000,48,$016D
Anmerkung:
Wir brauchen hier kein Objekt in die Schublade setzen, da Lara es sowieso nicht einsammeln würde. Das simulieren wir durch die TriggerGroup.
3 Schrank (cupboard)
Der Schrank befindet sich hier im Beispiel im Animating3 Slot. Zusätzlich setzen wir im Script folgende Einträge:
AssignSlot=ANIMATING3,OBJ_SEARCH_OBJECT3
Customize=CUST_SEARCH_OBJECT3, 3, DISABLED, 464, 168
TestPosition= 3, -1, ANIMATING3, -512, 512, -128, 128, -192, 192, -1820, 1820, -5460, 5460, -1820, 1820
Im Editor selber setzen wir noch beim Animating3 im OCB die Nummer der Triggergroup (hier im Beispiel 2), die wir bei Frame 168 auslösen möchten. Zusätzlich setzen wir noch die "loot_cabinet" Animation 464 in unser "Lara" Objekt.
Die Triggergroup (Hinzufügen eines BigMedi Packs) für die Schublade könnte wie folgt aussehen:
TriggerGroup=2, $2000,48,$016D
; Trigger for FlipEffect
; <#> Inventory-Item. Increase (+1) in (E)way the number of <&>inventory-item in inventory (F48)
; <&> BIGMEDI_ITEM Slot=368
; <E> Show animation of item (like it was picked up)
; Copy following values to your script:
; $2000,48,$016D
Anmerkung:
Wir brauchen hier kein Objekt in den Schrank setzen, da Lara es sowieso nicht einsammeln würde. Das simulieren wir durch die TriggerGroup.
4 Truhe (suitcase, chest)
Die Truhe befindet sich hier im Beispiel im Animating4 Slot. Es funktioniert auch nur die Truhe, die sich hier unten im Anhang befindet, da ich die Position der Truhe und den Pivot Punkt verändern musste, damit sie mit dem Plugin funktioniert. Zusätzlich setzen wir im Script folgende Einträge:
AssignSlot=ANIMATING4,OBJ_SEARCH_OBJECT4
Customize=CUST_SEARCH_OBJECT4, 4, ENABLED, 472, 84
TestPosition= 4, -1, ANIMATING4, -512, 512, -100, 100, -18, 18, -1000, 1000, -200, 200, -200, 200
Im Editor selber setzen wir noch beim Animating4 im OCB die Nummer der Triggergroup (hier im Beispiel 2), die wir bei Frame 84 auslösen möchten. Zusätzlich setzen wir noch die "loot_chest" Animation 464 in unser "Lara" Objekt.
Anmerkung:
Die Truhe kann man nur einmal durchsuchen, deswegen ist hier im "CUST_SEARCH_OBJECT" Script Befehl ein "ENABLED" gesetzt.
Die Triggergroup (Hinzufügen eines BigMedi Packs) für die Truhe könnte wie folgt aussehen:
TriggerGroup=2, $2000,48,$016D
; Trigger for FlipEffect
; <#> Inventory-Item. Increase (+1) in (E)way the number of <&>inventory-item in inventory (F48)
; <&> BIGMEDI_ITEM Slot=368
; <E> Show animation of item (like it was picked up)
; Copy following values to your script:
; $2000,48,$016D
Anmerkung:
Wir brauchen hier kein Objekt in die Truhe setzen, da Lara es sowieso nicht einsammeln würde. Das simulieren wir durch die TriggerGroup.