Comando
CAMBIAR_IMAGEN_OVERLAY

Permite cambiar la imagen de un 'overlay' por otra imagen cargada del disco.




Sintaxis del comando:


ACCI CAMBIAR_IMAGEN_OVERLAY número_de_imagen fichero_gráfico



  • número_de_imagen:
  • Número de imagen (entre 1 y 64).

    Este número de imagen u 'overlay' que será sustituida por la nueva imagen cargada del disco.

    Este número de imagen también será el que deberemos utilizar en los comandos OVERLAY1 y OVERLAY0 para hacerla aparecer o desaparecer de la pantalla.


  • fichero_gráfico:
  • Fichero gráfico conteniendo la imagen o textura que sustituirá a la que ya tenga asignado este número de 'overlay'.

    Puedes utilizar ficheros gráficos en formato .BMP o .JPG

    El fichero gráfico debe existir en la carpeta 'bmp / texturas'



    Puedes usar este comando para cargar y mostrar imágenes al jugador de forma dinámica durante el transcurso del juego en función de las acciones del jugador. Incluso usando siempre el mismo número de 'overlay' para esta función, por lo que no será necesario que tengas pre-cargados múltiples 'overlays' con todas las imágenes que quieres presentar en pantalla.

    Pueden ser mapas según la ubicación del jugador en ese momento (consultado las variables del sistema POSICION_X_JUGADOR, POSICION_Y_JUGADOR y POSICION_Z_JUGADOR) o los rostros de los personajes que hablen con el jugador.


    Cada imagen que cargues con este comando ocupará su memoria correspondiente hasta que sea sustituida por otra nueva, por lo que puedes cargar multitud de imágenes sin sobrecargar la memoria del programa.


    Atención: El uso de este comando puede causar una pausa de unos pocos milisegundos en el motor 3D, por lo que no es conveniente usarlo de manera intensiva.



    Ejemplo 1:

    Cargar y mostrar (durante 5 segundos) en la esquina inferior izquierda de la pantalla la imagen de un reactor nuclear que el jugador debe destruir:


    ACCI CAMBIAR_IMAGEN_OVERLAY 7 reactor.jpg

    ACCI OVERLAY1 7 5 10 -400 100 0 255 255 255 255



    Ejemplo 2:

    Cargar y mostrar a pantalla completa los planos de un centro comercial cuando el jugador pulse la tecla 'U' en cualquier momento. Tener en cuenta que el centro comercial dispone de planta baja y tres plantas más, pero no se dispone del plano de la planta baja.

    Se debe mostrar el plano de la planta en que esté situado el jugador en ese momento. Detener toda la acción del juego mientras el jugador esté visionado estos planos.


    Para saber en qué planta se encuentra el jugador nos basaremos en la altura que se encuentre en ese momento el jugador consultando la variable del sistema POSICION_Y_JUGADOR, asumiendo que:

    Se encuentra en la planta baja si el valor de POSICION_Y_JUGADOR está entre 0 y 300.

    Se encuentra en la primera planta con valores entre 301 y 600.

    Se encuentra en la segunda planta con valores entre 601 y 900.

    Se encuentra en la tercera planta con valores entre 901 y 1200.


    Para este ejemplo necesitaremos tres ficheros gráficos con los siguientes nombres que representen los planos de las tres plantas del centro comercial: plano1.jpg, plano2.jpg y plano3.jpg

    También debemos crear una entidad 'TeclaComandos' para asignar la tecla 'U' a un fichero de comandos, por ejemplo 'mapa_centro.ini'. Este sería el contenido de ese fichero para realizar la presentación de los planos:

      ; Primero controlamos si ya se esta mostrando el plano
      ; En ese caso lo ocultamos y no hacemos nada mas
      ; Ya que el jugador podra usar la misma tecla para
      ; mostrar y ocultar el plano
      IF COND MOSTRANDO_PLANO=1
        ACCI OVERLAY0 12
        ACCI PONE MOSTRANDO_PLANO=0
      ELSE
        ; Si no se esta mostrando el plano, procedemos a mostrarlo
        ACCI TEXT Planos centro comercial

        ; Inicializar variables
        ACCI PONE NOMBRE_FICHERO=plano
        ACCI PONE NPLANTA=0

        ; Se comprueban los tres tramos de alturas para las tres plantas
        IF COND POSICION_Y_JUGADOR>300 COND POSICION_Y_JUGADOR<601
          ACCI PONE NPLANTA=1
        ENDIF

        IF COND POSICION_Y_JUGADOR>600 COND POSICION_Y_JUGADOR<901
          ACCI PONE NPLANTA=2
        ENDIF

        IF COND POSICION_Y_JUGADOR>900 COND POSICION_Y_JUGADOR<1201
          ACCI PONE NPLANTA=3
        ENDIF

        ; Mostramos el plano si el jugador no esta en la planta baja
        IF COND NPLANTA!0
          ACCI PONE MOSTRANDO_PLANO=1

          ; Se construye el nombre del fichero usando la variable NPLANTA y la extension final .jpg
          ACCI OPEC NOMBRE_FICHERO %NPLANTA%
          ACCI OPEC NOMBRE_FICHERO .jpg

          ; Cargar la imagen de la planta usando la variable NOMBRE_FICHERO
          ACCI CAMBIAR_IMAGEN_OVERLAY 12 %NOMBRE_FICHERO%

          ; Hacer visible el plano ('overlay' 12) a pantalla completa (escala 1000)
          ACCI OVERLAY1 12 0 20 10 1000 0 255 255 255 220
        ELSE
          ACCI TEXT No esta disponible el plano de la planta baja
        ENDIF

      ENDIF

    Para detener a acción del juego mientras el jugador está consultando el plano deberás añadir estas dos líneas después de la línea que muestra el plano, es decir, después del OVERLAY1:

    ACCI ESTABLECER_VALOR_SISTEMA bots_activos no

    ACCI ESTABLECER_VALOR_SISTEMA models_activos no

    ... pero también deberás añadir las siguientes líneas después del OVERLAY0 para reanudar la acción cuando el jugador oculte el plano:

    ACCI ESTABLECER_VALOR_SISTEMA bots_activos si

    ACCI ESTABLECER_VALOR_SISTEMA models_activos si


    Si en esos planos quieres representar la posición del jugador deberás trasladar las coordenadas X y Z del jugador, que encontrarás en las variables del sistema POSICION_X_JUGADOR y POSICION_Z_JUGADOR a coordenadas X e Y de la pantalla.

    Para esto también deberás tener en cuenta la escala de tu plano y la resolución de pantalla.



    Ejemplo 3:

    Cargar y mostrar a pantalla completa el plano de un desierto con un pequeño indicador sobre este plano que indique una zona con un pozo de agua para que el jugador pueda beber.

    Este plano debe mostrarse correctamente en cualquier resolución de pantalla.

    Mostrar el plano pero no el indicador si el jugador no dispone de la información de la ubicación del pozo. Usar para esta condición la variable INFO_POZO que en otro punto del juego se cargará con el valor 1 cuando un personaje informe al jugador sobre la ubicación del pozo:

      ACCI TEXT Mapa overlay

      ; La posicion del indicador expresada en porcentajes
      ;(36% del ancho de la pantalla y 60% del alto de la pantalla)
      ACCI PONE POSX_IND=36
      ACCI PONE POSY_IND=60

      ; Calcular su posición en coordenadas X Y según su posicion expresada en
      ; porcentajes y la resolucion actual de la pantalla
      ACCI OPE* POSX_IND %ANCHO_RESOLUCION%
      ACCI OPE* POSY_IND %ALTO_RESOLUCION%
      ACCI OPE/ POSX_IND 100
      ACCI OPE/ POSY_IND 100

      ; Cargar la imagen del mapa como 'overlay' 9
      ACCI CAMBIAR_IMAGEN_OVERLAY 9 mapa_desierto.jpg

      ; Hacer visible el mapa ('overlay' 9) a pantalla completa (escala 1000) durante 7 segundos
      ACCI OVERLAY1 9 7 20 10 1000 0 255 255 255 220

      IF COND INFO_POZO=1
        ; Superponer el indicador ('overlay' 10) usando las coordenadas X Y calculadas anteriormente
        ACCI OVERLAY1 10 7 %POSX_IND% %POSY_IND% 100 0 255 255 255 250
      ELSE
        ACCI TEXT No dispones de informacion sobre el pozo
      ENDIF


    Funcionamiento del comando en el modo de juego online

    Ámbito de actuación por defecto del comando:


    El comando soporta cambio de ámbito: