Comandos IF COND ELSE ENDIF

Este comando de control se utiliza para procesar otros comandos bajo ciertas condiciones que podamos establecer durante el transcurso del juego.


Sintaxis:


  • condición_o_condiciones:
  • Condición o condiciones que se han de cumplir.


  • comandos_a_procesar_SI:
  • Líneas de comandos que se procesarán si la condición se ha cumplido.


  • comandos_a_procesar_NO:
  • Líneas de comandos que se procesarán si la condición no se ha cumplido.



    Ejemplo 1: Presentar un mensaje y activar un sonido si la variable 'acceso' vale 0, de lo contrario presentar un diálogo:



    Ejemplo 2: Hacer aparecer un personaje en el caso de que la variable 'fase' valga 2 y el jugador porte en su inventario el objeto número 10 ('10_daga.act'):

    Fíjate que si el jugador lleva más de un objeto '10_daga.act' la condición no funcionará ya que estamos preguntando si el jugador lleva 1 solo objeto de este tipo.


    También podemos realizar el ejemplo anterior sin usar para nada el nombre del fichero .act para saber si el jugador porta el objeto número 10. Para ello usaremos el comando DAME_OBJETO_INVENTARIO para consultar la cantidad de ese objeto que porta el jugador:


    Ejemplo 3: Dar por finalizado el objetivo número 3 de la misión si el jugador alcanza la posición donde hemos situado una entidad 'Command', ha rescatado a un prisionero, lleva en su inventario de objetos la llave para salir (objeto por ejemplo '6_llave.act') y ha recogido los 10 cristales de energía:


    Para que funcione con 10 cristales la variable totalcristales ha de contener el valor 10.

    Como ves este ejemplo, puedes usar variables en las condiciones para comprobar valores que puedan contener esas variables, e incluso comparar el contenido de una variable con el contenido de otra variable, en este caso el nombre de la variable que pongas a la derecha del símbolo '=' debe estar rodeada de símbolos %, ya que no son lo mismo estas dos condiciones:

    IF COND cristales=%totalcristales%
    IF COND cristales=totalcristales

    Mientras la primera compara si el contenido de la variable 'cristales' es igual al contenido de la variable 'totalcristales', la segunda compara si el contenido de la variable 'cristales' es el texto totalcristales.



    Ejemplo 4: Quitar una vida al jugador si una clave de acceso que tiene que introducir anteriormente (por ejemplo usando el comando 'INPU') no es la correcta. La palabra correcta es 'FOXTROT':

    Como ves, el símbolo ! sirve para lo contrario que el símbolo =, en el ejemplo anterior la condición se da cumplida si el contenido de la variable 'clave_acceso' es distinto del texto 'FOXTROT'.

    Los únicos símbolos que puedes utilizar en comparaciones son =, !, < y >, que en términos informáticos significan respectivamente 'igual a', 'distinto de', 'menor que' y 'mayor que'.



    Ejemplo 5: Hacer desaparecer todas las piedras mágicas que el jugador lleve en su inventario de objetos si al menos lleva 3 de estas piedras. Si lleva ese mínimo de piedras, presentarle un mensaje informándole que ya tiene acceso a una habitación y modificar alguna variable que usarás en una condición para abrir la puerta de la habitación en otro punto del mapa.

    Si el jugador anteriormente no ha activado un resorte, no comprobar nada de lo de las piedras y avisarle de lo que pasa.




    Ejemplo 6: Tienes tres variables (var1, var2 y var3) que controlan tres eventos distintos del juego, las tres tienen el valor inicial de 0 y cuando cualquier evento se ha completado se pone a 1 la variable correspondiente.

    Comprobar si alguno de los eventos se ha completado, si es así presentar una textura animada en el escenario que muestre al jugador un sencillo vídeo del siguiente objetivo que debe cumplir.



    Habilidad mental:

    Tengo que reconocer que para una persona que nunca ha utilizado variables ni la lógica de las condiciones, aprender este tipo de sistema es un poco difícil, pero si quieres dotar a tu juego de una lógica de funcionamiento particular y tan compleja como quieras, es del todo imprescindible dominar mínimamente la utilización de estos comandos y condiciones que deberás introducir en ficheros con extensión .INI y asociar esos ficheros a distintas entidades que soportan este tipo de ficheros. En este manual, en el apartado de cada entidad, se indica si esa entidad soporta ficheros de comandos .INI y donde debes indicar el nombre del fichero para que Entidad 3D lo procese durante el juego.


    En cualquier sistema de creación de juegos que te permita cierta libertad a la hora de establecer la trama de tu juego y que no te limite sólo a modificar cuatro datos introducidos en unas bonitas cajas, deslizar vistosos controles para variar otros tantos datos, o pulsar con el cómodo ratón sobre maravillosos y visuales botones, te encontrarás con algún sistema de 'scripts' o algo similar a los comandos de Entidad 3D.

    Te comento esto por si este tipo de uso de comandos te echa hacia atrás a la hora de plantearte realizar un juego con algún sistema de creación de juegos.

    Si bien usando el propio Entidad 3D o algún otro 'Game Maker' efectivamente te permite realizar juegos sin usar prácticamente ningún sistema de comandos, pronto observarás que si quieres dotar a tu juego de un mecanismo particular siempre tendrás que enfrentarte, por muy simple o complejo que sea, a algún tipo de sistema similar a la lógica de la programación de computadoras.


    Si observas detenidamente los ejemplos anteriores observarás que no es tan difícil y a lo poco que te vayas dando cuenta de las combinaciones que puedes realizar con variables, comandos y condiciones verás la potencia que tienes en tus manos para controlar lo que sucede en tu juego.


    Es verdad que este sistema de codificar comandos es muy similar a como se realiza para un programa de computadora y siendo el lema de Entidad 3D la 'Creación de juegos 3D sin programar' parece un poco engañoso, pero ni de lejos es tan complejo como programar en cualquier lenguaje de programación, incluidos los lenguajes 'script', tampoco será tan potente como esos lenguajes pero para tener un mínimo control sobre lo que hace el jugador y lo que pasa en tu juego, este lenguaje de comandos de Entidad 3D es más que suficiente en la mayoría de los casos, para por lo menos encontrar una manera de realizar lo que tienes en mente usando de forma creativa combinaciones de diversos comandos y entidades.


    Para encontrar los comandos correctos, usados con las variables correctas, las condiciones correctas, en el lugar correcto y en el momento correcto, es necesario cierta habilidad mental y capacidad de abstracción del mecanismo de funcionamiento que tienes en mente y que deberás traducir en comandos de Entidad 3D que en muchos casos no hacen exactamente lo que quieres, y en ocasiones encontrar una manera equivalente de hacerlo puede ser todo un desafío.


    Esa habilidad mental de la que hablo te aseguro que no se nace con ella, pero tampoco se aprende en dos días, se adquiere con la práctica, viendo ejemplos de otras personas observando como han resuelto la situación que querían realizar, entendiendo muy bien que es lo que hace cada comando, asumiendo las limitaciones de Entidad 3D, teniendo mucho interés y sobre todo dedicándole mucho mucho mucho tiempo.




    Funcionamiento del comando en el modo de juego online

    Ámbito de actuación por defecto del comando:


    El comando soporta cambio de ámbito:




    Es bastante recomendable que te acostumbres a realizar este tipo de escalonamientos (indentación) de líneas que ves en los ejemplos cuando uses comandos 'IF COND ELSE ENDIF' para que te resulte más fácil de entender que se procesa al cumplir la condición, que se procesa si no se cumple o que condición está dentro de otra.


    Detrás de los 'IF' puedes poner tantas condiciones 'COND' como quieras, pero para que se procesen los comandos debajo del 'IF' tendrán que cumplirse todas las condiciones.


    Recuerda que los ficheros .INI debes ponerlos siempre en la carpeta 'comandos' de Entidad 3D y que son simples ficheros de texto que puedes crear con cualquier editor normal de textos tipo Notepad o similar.


    Consulta la sección 'Abriendo puertas' para ver ejemplos de como condicionar aperturas de puertas usando condiciones y comandos.