Organizer
Syntax: Organizer=IdOrganizer, Flags Organizer (FO_..), Parameter, FirstTime, PerformFirstIdTriggerGroup, SecondTime, PerformSecondIdTriggerGroup, {Time and TriggerGroup Array }
Bereich im Script: [Level]
Maximale Einträgepro Level: 499
Mit dem Organizer kann man Auslöser in zeitlicher Abfolge nacheinander auslösen. Der Scriptbefehl oben sieht komplizierter aus als er ist. Theoretisch kann man sogar einen Organizer dazu verwenden, nur ein Ereigniss zeitgesteuert auszulösen, wenn andere Methoden nicht funktionieren.
Das Besondere ist, dass man nicht die Trigger selber in den Befehl setzt, sondern diese in Triggergroups setzt, die man dann zeitgesteuert auslösen kann.
Gehen wir die Parameter einzeln durch;
IdOrganizer
Hier vergeben wir eine Nummer, damit wir den Organzier später mit einem Flipeffekt im Editor starten oder stoppen können.
Zahlen gehen hier in jedem Level laut Paolone bis zu 499.
Flags Organizer...
(FO_..)
Hier kann man folgende Parameter zuweisen:
FO_DEMO_ORGANIZER
Wird dafür verwendet, Triggergroups bei einer Demo auszlösen. Nähere Beschreibung dazu findet man bei Reference > _Mnemonic constants.
FO_ENABLED
Organzier löst man im Editor durch Flipeffekte aus. Möchte man, dass der Organzier schon beim Starten des Levels ausgelöst wird, nimmt man diesen Parameter.
FO_LOOP
Hier wiederholen sich die zeitlichen Abfolgen endlos. Wurde die letzte zeitliche Triggergroup ausgelöst, fängt der Organizer wieder mit der ersten Triggergroup im Befehl an. Kann durch einen entsprechenden Flipeffekt gestoppt werden.
FO_TICK_TIME
Zeitliche Abfolgen gibt man in Sekunden an, möchte man noch genauer zeitlich definieren, kann man diesen Parameter setzen und Sekunden als " Frame Ticks" setzen.
Dabei gilt folgende Formel:
Frame Tick = X Sekunde(n) * 30
1/2 Sekunde = 15
1/3 Sekunde = 10 usw.
Parameter
Wird nicht benutzt,
Hier bitte ein IGNORE setzen
FirstTime
HIer setzt man die Zeit in Sekunden bevor eine Triggergroup ausgelöst werden soll.
PerformFirstIdTriggerGroup
Hier setzt man die ID der ersten Triggergroup, die ausgelöst werden soll.
Bsp.
TriggerGroup= 1, $5000,0,$002B
Second Time
Hier setzt man die Zeit in Sekunden, bevor die 2 Triggergroup ausgelöst werden soll.
PerformSecondIdTriggerGroup
Hier setzt man die ID der zweiten Triggergroup, die ausgelöst werden soll.
Bsp.
TriggerGroup= 3, $5000,1,$070E
Die Liste kann man so fortsetzen, also immer Zeit in Sekunden und ID der Triggergroup. Dabei muss diese übrigens nicht chronologisch sein.
Man kann also Triggergroup 3 auslösen, dann Triggergroup 1, dann Triggergroup 12, dann Triggergroup 5 usw. Es empfiehlt sich aber aufgrund der Übersichtlichkeit eine chronologische Reihenfolge einzuhalten.
Zum Schluss noch ein praktisches Beispiel als Verdeutlichung:
Organizer= 1, IGNORE, IGNORE, 5,1,10,2,30,3
TriggerGroup= 2, $5000,2,$002B; Trigger. (Moveable) Activate <#>Object with (E)Timer value (A43) TriggerGroup= 3, $5000,2,$011A ; Trigger. (Door) (E)Open/Close <#>door (A26) |
Hier wird nach 5 Sekunden die Triggergroup mit der ID 1 ausgelöst, dann nach 10 Sekunden die Triggergroup mit der ID 2, dann nach 30 Sekunden die Triggergroup mit der ID 3.
Nach 5 Sekunden wird ein Sound auf Kanal 2 abgespielt, nach 10 Sekunden wird ein Objekt ausgelöst, nach 30 Sekunden geht eine Tür auf oder zu.
Anmerkung:
Mit folgenden Flipeffekt Triggern kann man Organizer im Editor auslösen, stoppen oder wiederaufnehmen.
127: Organizer. Enable <&>Organizer
128: Organizer. Stop <&>Organizer
290: Organizer. Resume <&>Organizer in (E)way
376: Organizer. Resume <&>Organizer from first command (reset)
377: Organizer. Resume <&>Organizer from next command (immediatly)
378: Organizer. Resume <&>Organizer from next command in the given time set in next command
Wichtiger Tipp:
Wenn man Organizer in Global Triggern mit dem FLag "GT_CONDITION_GROUP" auslösen möchte, muss man beim GlobalTrigger ein "FGT_SINGLE_SHOT" setzen, sonst wird der Organizer nicht ausgelöst, sobald die Zeitangabe (Time) nicht Null ist. (Je nach Bedingung wird nämlich der Organizer immer wieder von vorne gestartet und es kommt erst gar nicht zu einer Ausführung in der vorhandenden TriggerGroup). Wenn man in der Bedingung ein Ereignis hat, was immer wieder neu "wahr" oder "unwahr" wird, setzt man ein "FGT_SINGLE_SHOT_RESUMED".
Aufbau:
Organizer=1, IGNORE,IGNORE,3,1
TriggerGroup=1,xxxxxxx
; Hier setzt man einen ausführbaren Trigger
GlobalTrigger=1,FGT_SINGLE_SHOT,GT_CONDITION_GROUP,IGNORE,2,3,IGNORE
TriggerGroup=2,xxxx
; Hier setzt man eine Bedingung
TriggerGroup=3,$2000,127,$0001
; Trigger for FlipEffect
; <#> Organizer. Enable <&>Organizer (F127)
; <&> Organizer=1
; Copy following values to your script:
; $2000,127,$0001
Display More