Eigene Anzeigebalken erstellen
Mit dem Script Befehl "Customize=CUST_BAR" kann man die Standardanzeigebalken wie Gesundheit, Sprinten usw. anpassen. Man kann aber auch völlig neue Anzeigebalken erstellen.
Hier in diesem Beispiel zeige ich euch wie man z.B. die Dauer, die eine Magnesiumfackel brennt, in einen Anzeigebalken setzen kann. Die Standardbrenndauer ist 30 Sekunden bei einer Magnesiumfackel. Diese kann man mit dem Script Befehl "CUST_FLARE" ändern.
Das Basis Tutorial über den "CUST_BAR" Script Befehl kann man hier nachlesen.
Zunächst einmal benötigen wir das Grundgerüst für einen eigenen Anzeigebalken, dazu definieren wir die Farbe des Balkens und stellen ein, dass wir einen eigenen Anzeigebalken haben möchten.
ColorRGB=1, 255,255,0
ColorRGB=2, 255,128,0
Customize=CUST_BAR,BAR_CUSTOM1, FBAR_SHOW_BAR_NAME,8,100, 150,12, 1,2,#0800
Unter BAR_ können wir bis zu 4 verschiedene eigene Balken erstellen. Wir wählen hier den ersten BAR_CUSTOM1. Unter Extra setzen wir die Variable "Current Value" als Variable die wir im Balken anzeigen möchten. In diese Variable setzen wir den Wert der Anzeige der Magnesiumfackel als Hexadezimalwert.
Anmerkung:
Wie Variablen als Platzhalter in einem Hexadezimalwert aussehen, könnt ihr in TombIDE im Reference Browser in der Rubrik "Variable Placeholders" nachlesen.
Durch "FBAR_SHOW_BAR_NAME" können wir unserem Anzeigebalken noch einen Text oder eine Variable als Hexadezimalwert mitgeben, die unter dem Balken anzeigt wird. Diesen Text setzen wir in die English.txt Datei unter "Extra NG Strings". (Welche ID wir dafür verwenden müssen können wir ebenfalls in dem "CUST_BAR" Tutorial nachlesen.)
Nun erstellen wir noch einen GlobalTrigger mit einer Condition Group, indem wir der Engine mitteilen, dass wir die Anzeige der Magnesiumfackel in die Variable "Current Value" setzen möchten.
Der Aufbau ist folgerndermaßen:
GlobalTrigger= 1,IGNORE, GT_CONDITION_GROUP,IGNORE,1,2,3
TriggerGroup= 1, $8000,7,$0023
; ConditionNg for ParameterNg
; <#> Holding_Flare
; <&> Lara. (Holds) Lara is holding/driving the <#>item (C35)
; Copy following values to your script:
; $8000,7,$0023
TriggerGroup=2, $2000,244,$0C50,> ; Copy to Local Short Alfa1 "Lara. Hands. Remaining time with lighted flare in the hand"
$2000,331,$0004,> ; Show Custom Bar1 forever on screen
$2000,253,$0950,> ; Divide Local Short Alfa1 by 9
$2000,271,$0050,> ; Copy Local Short Alfa1 to Current Value
$2000,232,$6442,> ; Set Local Byte Alfa3 to Value 100
$2000,286,$0042,> ; Substract from Current Value Local Byte Alfa3
$2000,284,$00FF ; Invert the sign of Current Value
; Trigger for FlipEffect
; <#> Variables. Memory. Copy to <&>Numeric Variable the (E)Savegame Memory value (F244)
; <&> Local Short Alfa1
; <E> Lara. Hands. Remaining time with lighted flare in the hand (Short)
; Copy following values to your script:
; $2000,244,$0C50
; Trigger for FlipEffect
; <#> Custom Bar. Show the <&>Custom bar on screen for (E)Seconds (F331)
; <&> BAR_CUSTOM1
; <E> Forever (use other action/effect to disable it)
; Copy following values to your script:
; $2000,331,$0004
; Trigger for FlipEffect
; <#> Variables. Numeric. Divide <&>Numeric Variable by (E)Value (F253)
; <&> Local Short Alfa1
; <E> Value 9
; Copy following values to your script:
; $2000,253,$0950
; Trigger for FlipEffect
; <#> Variables. Numeric. Copy <&>Numeric Variable to CurrentValue (F271)
; <&> Local Short Alfa1
; Copy following values to your script:
; $2000,271,$0050
; Trigger for FlipEffect
; <#> Variables. Numeric. Set <&>Variable with (E)value (F232)
; <&> Local Byte Alfa3
; <E> Value 100
; Copy following values to your script:
; $2000,232,$6442
; Trigger for FlipEffect
; <#> Variables. Numeric. Subtract from CurrentValue the <&>Numeric Variable (F286)
; <&> Local Byte Alfa3
; Copy following values to your script:
; $2000,286,$0042
; Trigger for FlipEffect
; <#> Variables. Numeric. Invert the sign of <&>Numeric Variable (F284)
; <&> Current Value
; Copy following values to your script:
; $2000,284,$00FF
TriggerGroup=3,$2000,332,$0004
; Trigger for FlipEffect
; <#> Custom Bar. Hide the <&>Custom bar (F332)
; <&> BAR_CUSTOM1
; Copy following values to your script:
; $2000,332,$0004
Display More
Kurze Erklärung:
in der TriggerGroup1 setzen wir die Bedingung immer, wenn Lara eine Fackel anzündet, bzw. in der Hand hält soll folgendes passieren was wir in der TriggerGroup2 gesetzt haben.
Hält Lara keine Magnesiumfackeln in der Hand soll TriggerGroup3 ausgeführt werden. In dieser ist festgelegt, dass der Anzeigebalken "BAR_CUSTOM1" wieder vom Bildschirm verschwinden soll. Ist die Fackel also zuende gebrannt, verschwindet auch der Anzeigebalken.
In der TriggerGroup2 werden folgende Flipeffekte ausgeführt.
- Wir setzen die Brenndauer der Magnesiumfackel in die Variable "Local Short Alfa1". Der Zahlenwert der Brenndauer ist von 0-900. Deswegen müssen wir eine "Short" Variabel nehmen, da eine "Byte" Variabel nur Zahlenwerte bis 127 haben kann. (900 entspricht hier einer Brenndauer von 30 Sekunden)
- Wir lassen den Anzeigebalken mit der "BAR_CUSTOM1" für immer auf dem Bildschirm erscheinen.
- Wir teilen den Zahlenwert 900 durch 9 damit wir "100" erhalten, da ein Balken nur von 0-100 Zahlenwerte anzeigen lassen kann.
- Wir setzen die Variabel "Local Short Alfa1" in die Variabel "Current Value".
Anmerkung:
Nun erhalten wir einen Balken der von 0 auf 100 ansteigt. Möchten wir aber schon zu Beginn einen vollen Balken haben, der langsam abnimmt müssen wir noch folgendes machen:
- Wir setzen in eine Variable z.B. Local Byte Alfa3 (Wichtig ist hier, dass wir nicht Local Byte Alfa1 oder Local Byte Alfa2 nehmen, da sich sonst die Werte überschneiden würden) den Wert 100.
- Dann ziehen wir von der Variabel "Current Value" den Wert dieser Variabel 100 ab.
- Da wir nun einen Minuswert erhalten, invertieren wir das ganze noch mit einem "Invert Sign" Flipeffect, um einen Positivwert zu erhalten.
Wie erhalten wir einen vollen Balken zu Beginn?
Da bei einem Anzeigebalken der Wert 0 ein leerer Balken ist, und der Wert 100 ein voller Balken, müssen wir es so einstellen dass der Wert der "Current Value" Variabel schon zu Beginn 100 ist.
Am Anfang ist der Wert immer 0, also 0% und steigt dann bis zu 100%.
Um nun schon einen vollen Balken zu erhalten, ziehen wir von dem Wert 0, der am Anfang besteht, die Zahl 100 ab. Dadurch erhalten wir -100. Diesen Wert "-100" invertieren nun noch und erhalten den Wert 100. Der Balken startet also mit 100% und nimmt dann stetig ab.
Beispiel:
Wert 10 - 100 ergibt -90, dieser in einem positiven Wert umgewandelt ergibt 90. Der Balken ist also noch zu 90% voll.
Anzeigebalken der Brenndauer einer Magnesiumfackel, hier im Beispiel entsprechen 90% 26 Sekunden Brenndauer.