Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: pacne en Julio 14, 2014, 06:50:02 PM

Título: Menu
Publicado por: pacne en Julio 14, 2014, 06:50:02 PM
Buenas tardes, otra vez.
Haber si alguien me puede ayudar. Tengo un juego con 20 niveles, y quiero que en el menu aparezca una vez me pasa cada nivel el numero del nivel, ejemplo: me paso el nivel 1 y que en el menu me salga 1, me paso el segundo nivel 2. tengo un archivo .ini y he creado una variable global.jugador. Pero no consigo que funcione. Muchas Gracias
Título: Re:Menu
Publicado por: 7sixerCF en Julio 14, 2014, 06:56:54 PM
bien al final de cada nivel, cuando se supone que "lo pasas" define una variable global algo como global.numerolv xDDD y guardas en un .ini, ahora cuando vuelvas al menu cargas la variable con un draw_text y todo eso, cuando se cierra el juego y este se vuelve a abrir deverias crear una habitacion especial en el que se carguen todas las variables globales, diferente del menu (o bueno puedes en el mismo menu crear un objeto que solo se ejecute la primera vez que se abre y no cada vez que vuelves al menu) y bueno eso hay cargas las variables del .ini
Título: Re:Menu
Publicado por: pacne en Julio 14, 2014, 07:39:17 PM
tengo creado este codigo. pero como pongo que cargue el nivel 2 o el 3 o el 4.

global.col_jugador=0
ini_open("armadillo.ini")
global.col_jugador = ini_read_real("nivel","nvlcol1",0)
ini_close()

if global.col_jugador == 0
{
sprite_index = spr_numeros;
}

fuente=font_add_sprite(spr_numeros,ord("0"),0,0)
Título: Re:Menu
Publicado por: 7sixerCF en Julio 14, 2014, 10:40:44 PM
Cita de: pacne en Julio 14, 2014, 07:39:17 PM
tengo creado este codigo. pero como pongo que cargue el nivel 2 o el 3 o el 4.

global.col_jugador=0
ini_open("armadillo.ini")
global.col_jugador = ini_read_real("nivel","nvlcol1",0)
ini_close()

if global.col_jugador == 0
{
sprite_index = spr_numeros;
}

fuente=font_add_sprite(spr_numeros,ord("0"),0,0)


Bueno si tus niveles estan numerados haci como mencionas (1,2,3,4,etc) solo deves hacer un room_goto(1) o para hacerlo mas dinamico podrias hacer uso de la variable que te mencione que hicieras al final del nivel (donde guardas en numero del nivel) de esta manera puedes hacer algo como


room_goto(global.numerolv+1)
Título: Re:Menu
Publicado por: pacne en Julio 15, 2014, 12:16:51 AM
No consigo que funcione. Me lo podrias explicar con un ejemplo de codigo, muchas gracias por todo
Título: Re:Menu
Publicado por: pacne en Julio 15, 2014, 06:53:02 PM
Tengo este codigo en un objeto que cuando el personaje colisiona con objeto(que esta al final del nivel)

global.col_jugador = (room)

if global.col_jugador = (roo_colorado_1){
ini_open("armadillo.ini");
ini_write_real("menu","col",1);
ini_close();
}

if global.col_jugador = (roo_colorado_2){
ini_open("armadillo.ini");
ini_write_real("menu","col",2);
ini_close();
}

if global.col_jugador = (roo_colorado_3){
ini_open("armadillo.ini");
ini_write_real("menu","col",3);
ini_close();
}


Despues tengo un codigo en el menu de abrir el .ini y draw la variable.
TODO BIEN por ahora. Lo que necesito es que cuando me pase el nivel 2 y vuelva al 1 no me dibuje otra vez el uno sino que se quede en el nivel maximo que he llegado.
Muchas Gracias
Título: Re:Menu
Publicado por: 7sixerCF en Julio 16, 2014, 12:05:26 AM
bien pues solo tienes que comprobar si el numero del nivel anterior es mayor o menor algo como esto, supongamos que ya yo estoy en el lv 19 y de aburrido me voy al lv 1 suponiendo que pase el lv 19 y por lo tanto la variable global.numerolv es = a 19 lo único que tienes que hacer es agregar en el codigo del objeto con el que colisionas para finalizar la partida algo como esto:


if global.numerolv < lvnumero {aqui lo de guardar en el .ini y de redefinir la variable global.numerolv}


la idea es que en el objeto que colisionas en el evento create definas una variable con el numero del nivel que en ele ejemplo de arriba es "lvnumero" y recuerda que se supone cada vez que abres el juego se deveria cargar la variable global.numerolv de manera que al finalizar el nivel compruebes si el nivel en el que estas ahora es mayor que en el que estuviste alguna vez... supongo que se entiende xD pero si sigues con dudas me avisas
Título: Re:Menu
Publicado por: pacne en Julio 16, 2014, 01:24:11 AM
gracias colega me a servido de ayuda al final me a quedado asi y va como queria:


global.prevRoom = (room)
global.col_jugador = 0
global.col_jugador_m = 0

if global.prevRoom = (roo_colorado_1)
{global.col_jugador += 1}
if global.prevRoom = (roo_colorado_1)
{
ini_open("armadillo.ini");
global.col_jugador_m = ini_read_real("menu","col",0);
if global.col_jugador_m < global.col_jugador
ini_write_real("menu","col",1);
ini_close();
}

if global.prevRoom = (roo_colorado_2)
{global.col_jugador += 2}
if global.prevRoom = (roo_colorado_2)
{
ini_open("armadillo.ini");
global.col_jugador_m = ini_read_real("menu","col",0);
if global.col_jugador_m < global.col_jugador
ini_write_real("menu","col",2);
ini_close();
}

if global.prevRoom = (roo_colorado_3)
{global.col_jugador += 3}
if global.prevRoom = (roo_colorado_3)
{
ini_open("armadillo.ini");
global.col_jugador_m = ini_read_real("menu","col",0);
if global.col_jugador_m < global.col_jugador
ini_write_real("menu","col",3);
ini_close();
}


Crees que es mucho codigo o que se puede simplificar.
Muchas gracias tio
Título: Re:Menu
Publicado por: 7sixerCF en Julio 16, 2014, 02:06:51 AM
Cita de: pacne en Julio 16, 2014, 01:24:11 AM
gracias colega me a servido de ayuda al final me a quedado asi y va como queria:


global.prevRoom = (room)
global.col_jugador = 0
global.col_jugador_m = 0

if global.prevRoom = (roo_colorado_1)
{global.col_jugador += 1}
if global.prevRoom = (roo_colorado_1)
{
ini_open("armadillo.ini");
global.col_jugador_m = ini_read_real("menu","col",0);
if global.col_jugador_m < global.col_jugador
ini_write_real("menu","col",1);
ini_close();
}

if global.prevRoom = (roo_colorado_2)
{global.col_jugador += 2}
if global.prevRoom = (roo_colorado_2)
{
ini_open("armadillo.ini");
global.col_jugador_m = ini_read_real("menu","col",0);
if global.col_jugador_m < global.col_jugador
ini_write_real("menu","col",2);
ini_close();
}

if global.prevRoom = (roo_colorado_3)
{global.col_jugador += 3}
if global.prevRoom = (roo_colorado_3)
{
ini_open("armadillo.ini");
global.col_jugador_m = ini_read_real("menu","col",0);
if global.col_jugador_m < global.col_jugador
ini_write_real("menu","col",3);
ini_close();
}


Crees que es mucho codigo o que se puede simplificar.
Muchas gracias tio

Si supongo que se puede simplificar un poco con switch ya que haces muchos if para global.prev_room hay usa la documentacion de game maker para ver de que va ese comando