Julio 18, 2014, 07:29:31 PM Ultima modificación: Julio 18, 2014, 07:41:27 PM por matiascarpello
Hola gente, tengo un juego con un sistema de desbloqueo de nivel.

Cuando el personaje coliciona con la meta se ejecuta este código:

if(room = level_3){ini_open("save.ini"); ini_write_real("niveles","nivel4",1); ini_close();}

Y el el botón que llava al nivel antes bloqueado tengo el siguiente código:

ini_open("save.ini");
n = ini_read_real("niveles","nivel2",0);
ini_close();

if(n = 0)
{
    bloqueado = 1;
    sprite_index = Bloqueado;
}
else
{
    bloqueado = 0;
    sprite_index = spr_2;
}


El problema es que a partir del nivel 6 quiero añadir un requisito más para que se cumpla el desbloqueo del nivel:

Quiero que si global.coin=0 es mayor o igual a tres recién se aplique el código que les deje ahí arriba al principio.

O sea resumiendolo si global.coin=0 es mayor o igual a tres se haga esto:

if(room = level_3){ini_open("save.ini"); ini_write_real("niveles","nivel4",1); ini_close();}

Caso contrario que no se haga nada.

¿Como podría implementar ese condicional?

#1 Julio 18, 2014, 09:52:44 PM Ultima modificación: Julio 18, 2014, 09:56:09 PM por penumbra
 :o Por los dioses del GML, por favor explícame qué significa la expresión

"si global.coin=0 es mayor o igual a tres"

Pusiste eso dos veces, así que todavía tengo más dudas de qué significa esa condición. Y también lo siguiente. Mencionas que a partir del nivel 6 (es decir, 6, 7, 8,...) quieres agregar otra condición, pero por qué luego tienes if (room = level_3)? Eso sólo se cumpliría cuando el nivel es 3, no 6, 7, 8, etc.

creo que se refiere a que si global.coin = 0 es mayor o igual al nivel 3 aunque tampoco entiendo bien eso creo que quiere que cuando tenga monedas en el nivel 3 este se desbloquee si no tiene monedas y las demas condiciones este siga bloqueado creo que es lo que intenta explicar que si tiene monedas que en este caso seria global.coin = xmonedas y este en el nivel 3 este nivel se desbloquee

mmm ya voy entendiendo, creo que quiere saber si en el nivel 3 no hay monedas... o eso me figuro.

Yo creo que más bien le sobró el "=0" y quiso decir:

CitarO sea resumiendolo si global.coin es mayor o igual a tres se haga esto: (...)

matiascarpello tendrá que volver a aclararlo.


Vale yo no entiendo mucho pero te voy a explicar como lo haria yo:

if room = level_3
{
global.nivel4 = 1;
ini_open("save.ini")
ini_write_real("niveles","nivel4",global.nivel4)
ini_close();
}


en el siguiente objeto:
evento step:

if global.nivel4 = 1
{
    bloqueado = 1;
    sprite_index = Bloqueado;
}
else
{
    bloqueado = 0;
    sprite_index = spr_2;
}


Crea una room y la pones la primera y añade un objeto que al iniciar el juego cargue todas las variables y te mande a la room principal, yo creo en el bloque de la izquierda creo un script y añado las variables entonces en el objeto pongo lo siguiente:

Script_Globals(); esto es el nombre del script
room_goto(rm_mainmenu);


en Script_Globals deberias añadir algo asi como esto para que cuando empieze el juego se carguen las variables:

ini_open("save.ini");
ini_read_real("niveles","nivel1",0);
ini_read_real("niveles","nivel2",0);
ini_read_real("niveles","nivel3",0);
ini_close();


ahora vayamos a lo de desbloquear el nivel 6 si global.nivel 6 es igual 1 y global.coin es mayor o igual a 3

if global.nivel6 = 1 and global.coin >= 3
{
    bloqueado = 1;
    sprite_index = Bloqueado;
}
else
{
    bloqueado = 0;
    sprite_index = spr_6;
}


Creo que asi esta bien explicado soy novato asi que no se explicarme muy bien. Si alguien entiende mas que yo es libre de criticar xDDDD
Los limites los pones tu