Comando TEM1

Activa temporizadores.

Se utiliza para que transcurrido un tiempo dado se procesen comandos.


Sintaxis del comando:

ACCI TEM1 número_de_temporizador tiempo nombre_fichero_ini

  • número_de_temporizador:
  • Número de temporizador que se desea activar (entre 1 y 30).

    Este número lo asignaremos manualmente.

    Podemos utilizar hasta 15 temporizadores simultáneamente.
    Este número también será el que deberemos utilizar en el comando 'TEM0' para referirnos a un temporizador en concreto para desactivarlo.


  • tiempo:
  • Tiempo, en segundos, que ha de transcurrir para que se lance el procesamiento del fichero de comandos indicado en 'nombre_fichero_ini'.


  • nombre_fichero_ini:
  • Nombre del fichero .ini que contendrá los comandos a procesar una vez transcurrido el tiempo establecido.

    Este fichero .ini es un fichero normal como el resto de ficheros .ini que se utilizan en Entidad 3D. Puede contener todo tipo de comandos o secuencias de IF COND ENDIF. Como es habitual para estos ficheros, han de estar en la carpeta 'comandos'.



    El comando TEM1 se puede utilizar en infinidad de situaciones. Por ejemplo, puede servir para hacer explotar bombas retardadas, presentar un mensaje al cabo de un tiempo, permitir abrir una puerta en un determinado tiempo, hacer aparecer o desaparecer personajes secundarios, etc... Todo dependerá de la combinación que realices con estos temporizadores y los comandos disponibles en Entidad 3D.



    Ejemplo 1:

    Queremos crear una situación en la que el jugador, pulsando un botón, desbloquee una puerta que se encuentra a una cierta distancia, sólo permitiremos al jugador abrir esa puerta en un determinado tiempo, transcurrido ese tiempo la puerta ya no se podrá abrir, a menos que el jugador vuelva a repetir todo el proceso.

    Evidentemente para montar toda esta situación intervienen diversos comandos y entidades, pero para el ejemplo que nos ocupa no me voy a centrar demasiado en los elementos que no sean del temporizador.


    Lo que está claro es que tendremos que disponer de una puerta (entidad 'Door') donde le hayamos asociado un fichero .ini para condicionar su apertura. Ese fichero .ini le llamaremos por ejemplo 'puerta.ini', fichero que crearíamos en la carpeta 'comandos' con el siguiente contenido:


      IF COND puerta_abrir=1
        ACCI TEXT Abriendo puerta de seguridad
      ENDIF

    (Los comandos anteriores se procesarán cuando el jugador intente abrir la puerta).


    Al lado de algo que represente el botón de desbloqueo situaremos una entidad 'Command' a la cual le asociaremos un fichero .ini que por ejemplo le llamaremos 'boton.ini', fichero que crearíamos en la carpeta 'comandos' con el siguiente contenido:


    ACCI TEM1 3 10 bloquear_puerta.ini
    ACCI TEXT Puerta de seguridad desbloqueada
    ACCI PONE puerta_abrir=1

    (Los comandos anteriores se procesarán cuando el jugador se acerque al botón).


    Pues sólo nos queda crear el fichero 'bloquear_puerta.ini' que hemos puesto en el comando del temporizador, este fichero .ini contendría lo siguiente:


    ACCI TEXT Puerta de seguridad bloqueada
    ACCI PONE puerta_abrir=0

    (Los comandos anteriores se procesarán transcurridos 10 segundos que comienzan a contar a partir de que el jugador 'toca' o se acerca al botón).


    Fíjate que si el jugador alcanza la puerta en menos de 10 segundos la variable 'puerta_abrir' valdrá 1 porque ese es el valor que le hemos asignado en 'ACCI PONE puerta_abrir=1', por lo tanto la condición 'COND puerta_abrir=1' de la puerta se cumplirá y la puerta se abrirá.




    Modificaciones posibles:

    Un detalle a comentar es que si el jugador abre la puerta y la atraviesa, cuando la puerta se cierre ya no podrá volver a abrirla ya que de todas formas el temporizador cuando alcanzó los 10 segundos puso la variable 'puerta_abrir' a 0. Siempre hablando en el supuesto de que el jugador no tenga ninguna manera de volver a alcanzar el punto donde se encuentra el botón de desbloqueo.
    Puede que te interese que el mecanismo funcione así, pero si quieres que el jugador pueda abrir la puerta desde cualquier lado una vez que consiga abrirla por primera vez, tendrías que variar el contenido del fichero 'puerta.ini' y dejarlo como sigue:
      IF COND puerta_abrir=1
        ACCI TEM0 3
        ACCI TEXT Abriendo puerta de seguridad
      ENDIF

    (Con 'ACCI TEM0 3' detenemos el temporizador 3, el que estamos utilizando, si el jugador consigue abrir la puerta).


    También tendremos que modificar el contenido del fichero 'boton.ini' para evitar que el jugador pueda volver a activar el temporizador. Todo el contenido de ese fichero .ini lo dejaríamos como sigue:

      IF COND puerta_abrir=0
        ACCI TEM1 3 10 bloquear_puerta.ini
        ACCI TEXT Puerta de seguridad desbloqueada
        ACCI PONE puerta_abrir=1
      ENDIF



    Uso de temporizadores para procesar ficheros de comandos condicionados:

    Si nos interesa procesar ciertos ficheros de comandos en función de ciertas condiciones que estamos evaluando dentro de otro fichero de comandos, podemos usar el comando 'TEM1' para realizar esto sin muchos problemas. Para ello debemos usar el valor 0.1 en el parámetro 'tiempo'.

    Usando este valor de tiempo tan bajo, indicamos que el fichero de comandos asociado al temporizador se procese de inmediato, pero atención, justo después del fichero de comandos que se esté procesando en esos momentos.


    Ejemplo 2:

      IF COND DATO=1
        ACCI TEM1 1 0.1 ficherocom1.ini
        ACCI TEM1 2 0.1 ficherocom2.ini
        ACCI TEM1 3 0.1 ficherocom3.ini
      ENDIF
      IF COND DATO=2
        ACCI TEM1 1 0.1 ficherofox1.ini
        ACCI TEM1 2 0.1 ficherofox2.ini
        ACCI TEM1 3 0.1 ficherofox3.ini
      ENDIF
      IF COND DATO=3
        ACCI TEM1 1 0.1 ficherowav1.ini
        ACCI TEM1 2 0.1 ficherowav2.ini
        ACCI EXIT
      ENDIF
      ACCI TEXT Este mensaje no se mostrara si DATO=3
    Si la variable DATO vale 1 se procesarán los tres ficheros de comandos 'ficherocom', pero después de procesar la última línea del presente fichero de comandos, en este caso el mensaje tras el comando 'ACCI TEXT'.

    Si la variable DATO vale 2 se procesarán los tres ficheros de comandos 'ficherofox', pero después de procesar la última línea del presente fichero de comandos, en este caso el mensaje tras el comando 'ACCI TEXT'.

    Si la variable DATO vale 3 se procesarán los dos ficheros de comandos 'ficherowav' sin esperar a nada más, ya que hemos usado el comando 'ACCI EXIT' para dar por finalizado el procesamiento del presente fichero de comandos.



    Funcionamiento del comando en el modo de juego online

    Ámbito de actuación por defecto del comando:

    Los comandos del fichero .INI asociado a este temporizador actuarán según su ámbito por defecto. Si quieres cambiar ese ámbito debes hacerlo en ese fichero .INI

    El comando soporta cambio de ámbito:




    Consulta la sección del comando 'TEM0' para desactivar temporizadores que aún no hayan alcanzado su tiempo establecido.