NGLE Manual

 

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.

Back to Top