Manual del NGLE
Global triggers
Por Cook
Traducido por Pemon
Un GlobalTrigger es como un CONDITION trigger. Se activa si
ocurre algún evento en el juego. Es una forma de activar un
TriggerGroup sin la necesidad de colocar un trigger en un
sector de tu nivel.
Los TriggerGroups son explicados en el siguiente tutorial -
Script Triggers and Triggergroup Commands
Esto quiere decir que tu TriggerGroup puede ser activado en
cualquier lugar del nivel al ocurrir un evento en
particular. Es como si hubieses colocado un CONDITION
trigger y los trigger de tu TriggerGroup en todos los
sectores del nivel. Puedes desactivar un GlobalTrigger con
un trigger FLIPEFFECT si no deseas aplicarlo en una zona de
tu nivel. El mismo trigger FLIPEFFECT puede ser usado para
activarlo de nuevo.
Viendo los nombres de los diferentes tipos de GlobalTriggers
puedes llegar a comprender su significado. Son los
constantes que empiezan con GT_ en la lista bajo la opción
de mnemonic constants del NGCenter en la pestaña Reference.
Actualmente estos son los que existen con el
TRNGdll 1.2.2.3.
GT_AFTER_RELOADING_VARIABLES
GT_ALWAYS
GT_BEFORE_SAVING_VARIABLES
GT_COLLIDE_CREATURE
GT_COLLIDE_ITEM
GT_COLLIDE_SLOT
GT_COLLIDE_STATIC_SLOT
GT_CONDITION_GROUP
GT_DAMAGE_BAR_LESS_THAN
GT_DISTANCE_FROM_ITEM
GT_DISTANCE_FROM_STATIC
GT_ELEVATOR_STARTS_FROM_FLOOR
GT_ELEVATOR_STOPS_AT_FLOOR
GT_ENEMY_KILLED
GT_FMV_COMPLETED
GT_GAME_KEY1_COMMAND
GT_GAME_KEY2_COMMAND
GT_KEYBOARD_CODE
GT_KEYPAD_REMOVED
GT_KEYPAD_SHOWED
GT_LARA_HOLDS_ITEM
GT_LARA_HP_HIGHER_THAN
GT_LARA_HP_LESS_THAN
GT_LARA_POISONED
GT_LOADED_SAVEGAME
GT_NO_ACTION_ON_ITEM
GT_SAVED_SAVEGAME
GT_SCREEN_TIMER_REACHED
GT_TITLE_SCREEN
GT_TRNG_G_TIMER_EQUALS
GT_TRNG_L_TIMER_EQUALS
GT_USED_BIG_MEDIPACK
GT_USED_INVENTORY_ITEM
GT_USED_LITTLE_MEDIPACK
GT_USING_BINOCULAR
GT_VSCROLL_COMPLETE
Para ver el sintaxis del comando (ej. valores a usar y en
que orden) bajo la pestaña Reference del NGCenter en la
ventana desplegable selecciona la opción NEW SCRIPT
commands, en la ventana principal busca y selecciona
GlobalTrigger, pulsa el botón Expand Info.
Syntax: GlobalTrigger=IdGlobalTrigger, Flags Global
Trigger (FGT_...), Global Trigger (GT_..), Parameter,
IdConditionTriggerGroup, IdPerformTriggerGroup,
IdOnFalseTriggerGroup
Scope: To use in [LevelSection]
Que quiere decir todo esto?
En primer lugar nos dice donde debemos introducir el comando
en el script. La línea que empieza con "Scope:" nos dice que
se ha de poner en la sección [Level].
Así que para crear un GlobalTrigger, en el NGCenter añade
GlobalTrigger= en la sección [Level] de tu script.
Seguidamente nos dice que el comando debe tener (en una
línea) siete valores separados por comas "," después
del signo "=".
Los siete lugares donde escribes los valores, son conocidos
como fields (campos). En ningún comando se puede dejar un
campo vacío (,,).
El primer valor solo es un número que le damos para
identificar el GlobalTrigger. Cada GlobalTrigger que se
encuentre en la sección del mismo [Level] debe tener un
número diferente.
El siguiente campo puede contener un valor flag que empiece
con FGT_.
En la lista desplegable del NGCenter, cambia de NEW SCRIPT
commands a _mnemonic
constants for new script commands, mira en la lista
los valores que comienzan con FGT_ y lee la información que
nos pone en la ventana verde. Por ejemplo,
FGT_SINGLE_SHOT.
Si escribes este valor, tu GlobalTrigger solo se activará
una vez. Si no es esto lo que deseas, ¿que es lo que debemos
poner? Debes poner algo ya que no está permitido dejar un
campo vacío. Cuando no queremos poner ningún campo debemos
introducir la palabra IGNORE.
El valor FGT_SINGLE_SHOT se ha de emplear con muchos
GlobalTriggers. Cada diapositiva del juego, y eso es 30
veces por segundo, tu GlobalTrigger le pregunta al tomb4.exe
si algún evento ha ocurrido. Así que cada diapositiva que
detecta un evento en el que ocurre algo el GlobalTrigger
activará tu TriggerGroup.
Esto puede verse creando un TriggerGroup que obligue a una
animación de Lara y un GlobalTrigger sin el valor
FGT_SINGLE_SHOT y que se active cuando Lara tiene la bengala
en la mano (GT_HOLDS_ITEM).
Si utilizas el GlobalTrigger, GT_ENEMY_KILLED sin un valor
en el FGT_SINGLE_SHOT tu TriggerGroup se activará 1/30
segundos hasta el final del nivel cuando hayas eliminado al
enemigo, ya que el enemigo seguirá siendo eliminado en todas
las diapositivas.
El tercer campo es, que tipo de GlobalTrigger estas usando.
Debes elegir uno con los valores GT_ de los _mnemonic
constants. Ver la lista de arriba.
El valor que debes introducir en el siguiente campo depende
del valor GT_ que elijas. Debes de leer la info en la lista
del NGCenter los _mnemonic constants para ese valor GT_
elegido.
El quinto campo es un número ID de un TriggerGroup, o
introduce IGNORE. El TriggerGroup que uses solo debe
contener CONDITION triggers exportados. Ver este tutorial -
Multiple Condition Triggers. Si quieres aplicar
más restricciones sobre el GlobalTrigger, solo se usa un
TriggerGroup con un número ID. Por ejemplo, si quieres
activar algo cuando Lara tiene en la mano una bengala
(GT_HOLDS_ITEM) y cuando está corriendo.
El sexto campo es donde se introduce el número ID del
TriggerGroup que quieres activar, cuando el GlobalTrigger es
activado (todas las condiciones son verdaderas (true)
Debes ser cauteloso si usas este campo, ya que el
GlobalTrigger quizás no sea activado durante muchas frames
del juego lo que quiere decir que este
TriggerGroup será
activado en todas las frames.
Introduce IGNORE en este campo si no quieres activar ningún
TriggerGroup cuando no todas las condiciones son verdaderas
(true)
Notas
Debes tener cuidado a la hora de configurar un GlobalTrigger
y para la mayoría de ellos un diseño adecuado del nivel.
Como los configures depende en que es lo que quieres que
activen.
Por ejemplo, digamos que usas un GlobalTrigger GT_HOLDS_ITEM
para activar un TriggerGroup que haga que Lara suba
rápidamente por un palo vertical. Si no usas el
FGT_SINGLE_SHOT, Lara no podrá bajar por el palo, y si lo
agarra en la parte superior quizás sea movida hasta el
techo. Si usas FGT_SINGLE_SHOT que ocurre si Lara cayera
del palo antes de llegar arriba? Para solucionar estos
problemas deberás colocar triggers cerca del palo para que
active y desactive el GlobalTrigger.
Nowid
utilizó GlobalTriggers para hacer posible uso de una
antorcha ya encendida desde el inventario, algo en lo que yo
nunca hubiese pensado. Se puede encontrar otro ejemplo de
GlobalTriggers en el proyecto de Paolone sobre arenas
movedizas, uno de ellos es usado para terminar el nivel
después de que Lara consiguiera recoger seis jarrones.
Si usas la última versión del TRNG, los GlobalTriggers del
proyecto de la demo Miscellaneous de Paolone's, quizás se
necesita actualizar al Nuevo sintaxis de siete campos para
que el script sea compilado sin ningún error. Necesitas
añadir en el script el campo IdOnFalseTriggerGroup al final
de cada GlobalTrigger si solo hay seis campos presentes.
Usa IGNORE como el valor.
GT_CONDITION_GROUP
Este es el tipo que debes usar si quieres crear tu propio
GlobalTrigger. Solo has de exportar todos los CONDITION
triggers que quieres aplicar y crear para ellos un
TriggerGroup. Este será el CONDITION TriggerGroup ya que
solo contiene condition script triggers. Los condition
script triggers empiezan con $9000 o $8000.
Cuando todos los conditions en el CONDITION TriggerGroup son
verdaderos (true) tu GlobalTrigger activará el TriggerGroup
que hayas nominado en el campo del IDPerformTriggerGroup.
GT_ALWAYS
Este comando no necesita hacer nada en el juego para
activarlo.
Es activado automáticamente en cada (tick) frame del juego.
Este GlobalTrigger activará el TriggerGroup que hayas
nominado en el campo IDPerformTriggerGroup para cada tick
(frame) del juego.
Introduce IGNORE en el campo IdConditionTriggerGroup ya que
cualquier valor en este campo no será usado.