Buenas! la verdad que suena bastante fácil pero estoy teniendo muchos problemas con esto. Os explico lo que intento conseguir.
Hasta ahora tengo establecido que cuando llegas al final de un nivel te desbloquee en otra room (donde están todos los niveles) el icono del nivel desbloqueado para poder meterte, es decir si no consigues pasar cierto nivel, se quedaría el icono del botón bloqueado (que es un objeto).
Ahora bien, lo que quiero es, que una vez se haya creado el botón del nivel, al pasar el nivel1 por ejemplo, el botón bloqueado se elimine, quedando solo el del nivel desbloqueado.
Espero que se entienda. Saludos~
amigo utiliza los archivos .ini
entonces haces
if nivel2=1//osea desbloqueado
{
nivel2=obj_desbloqueado
}
else
{
nivel2=obj_bloqueado
}
Cita de: ocarina en Marzo 15, 2014, 05:41:43 PM
amigo utiliza los archivos .ini
entonces haces
if nivel2=1//osea desbloqueado
{
nivel2=obj_desbloqueado
}
else
{
nivel2=obj_bloqueado
}
Me lío muchísimo con esto, la verdad.
No te quiero molestar pero si me pudieses dar un ejemplo o algo que me pueda ayudar..
Gracias~
sabes utilizar los archivos ini???
si no sabes te dejo un ejemplo de como se hace
http://www.comunidadgm.org/preguntas-y-respuestas/ayuda-grabar-puntuacion-mas-alta/msg93663/#msg93663 (http://www.comunidadgm.org/preguntas-y-respuestas/ayuda-grabar-puntuacion-mas-alta/msg93663/#msg93663)
ahora si mira!!! al pasar el nivel 1 le pones que guarde en el archivo ini q nivel 2=1 osea desbloqueado 0=bloqueado 1=desbloqueado
entonces cuando entras al menu de seleccion haces los if para cada nivel
if nivel2=1//osea desbloqueado
{
nivel2=obj_desbloqueado
}
else
{
nivel2=obj_bloqueado
}
en el gms en la seccion de ejemplos viene un ejemplo de como hacer esto!!! si lo vez fijate en el codigo de los room ahi esta lo de los archivos ini!!!
A ver.. no sé que me falta.
He creado un objeto que se llama "obj_niveles" que tiene lo siguiente en el evento create:
ini_open("niveles.ini"); //este metodo busca el archivo scores.ini y si no existe automaticamente locrea
ini_close();//cierra el archivo .ini
Ahora en el Boton (bloqueado) del nivel 2, CREO que debería de poner lo siguiente que me dijiste:
if nivel2=1//osea desbloqueado
{
nivel2=obj_desbloqueado
}
else
{
nivel2=obj_bloqueado
}
Pero no sé que poner, es decir, son variables globales? La verdad que me está costando horrores entender como usar los .inis.
ini_close();//cierra el archivo .ini
El cierre del ini se debe hacer solamente después de haber terminado las operaciones necesarias, es decir, después de que hayas leído o escrito en él.
El problema es que de momento no tienes idea de cómo está estructurado un archivo INI.
Un archivo INI tiene una o más secciones. Cómo especificas una sección, así
[NIVELES] //Sección de nombre NIVELES
Una sección consiste de una serie de claves (keys) y valores
nivel1=0 //La clave nivel1 tiene un valor de 0
Al usar inis, no manejas directamente variables de GM, lees o escribes en los valores de las claves. Deberías seguir el tutorial de "saving" que viene incluído con el GM:S, ahí explican cómo trabajar con inis.
A ver.. lo que quiero decir.. al crear el ini:
ini_open("niveles.ini");
ini_write_real( "Niveles" , "Nivel1" , 1 );
ini_write_real( "Niveles" , "Nivel2" , 0 );
ini_close();
Hasta aquí bien, pero no sé como hacer que se lean los datos de si el nivel esta bloqueado VALOR= 0 o si está desbloqueado VALOR= 1 y haga los cambios en los botones.
ini_read_real(section,key,default) Lee el valor real de la llave indicada con key de la sección indicada como section. Cuando no existe la llave o la sección se devuelve el valor especificado por default.
El valor de la lectura se lo asignas a una variable en GM y luego pruebas si esa variable es 1 o no
lo lees asi
primero usa una variable
global.nivel1=ini_read_real("Niveles" , "Nivel1",0);//donde 0 es un numero defalu si no lo encuentra
global.nivel2=ini_read_real("Niveles" , "Nivel2",0);
y asi sucesivamente
Subo un ejemplo del proyecto que estoy intentando hacer para que se entienda mejor..
Estoy echando un vistazo pero me confunde, si uso los .inis para no hacerlo con variables, por qué tengo que mezclarlas?
En fin, dejo el proyecto a ver si le podéis echar un vistazo y decirme donde debo añadir lo que me planteáis.
Cita de: LowHertzs en Marzo 16, 2014, 02:16:59 AM
si uso los .inis para no hacerlo con variables, por qué tengo que mezclarlas?
No es estrictamente necesario mezclarlas, pero por ejemplo, comparar valores en un IF es más fácil si esos valores se almacenan en variables. Si no almacenas el valor de una clave de un ini en una variable, el IF se volvería muy enredoso (largo), pero nada impide que así se haga.
Me estoy volviendo loco, de intentos que llevo, y de ver tutoriales en ingles.
Pero a mi me sigue sin funcionar como quiero.
He puesto que en la room "Niveles_1" Salgan los 3 niveles, donde solo el primero está desbloqueado.
En el boton del nivel2 bloqueado puse esto:
Step: ini_open("niveles.ini");
global.niveles=ini_read_real("Niveles" , "Nivel1",0);//donde 0 es un numero defalu si no lo encuentra
ini_close();
ini_open("niveles.ini");
global.niveles=ini_read_real("Niveles" , "Nivel2",0);
ini_close();
ini_open("niveles.ini");
global.niveles=ini_read_real("Niveles" , "Nivel3",0);
ini_close();
if global.niveles is greater than 1
set the sprite to spr_nivel2 with subimage 0 and speed 1
Hasta ahora creo que lo hice como debe de ser, es decir quiero que lea los valores de Nivel1, Nivel2, y Nivel3, en niveles.ini y si es mayor que 1 cambie el sprite del nivel 2 bloqueado a nivel 2 desbloqueado.
Luego hice otro objeto que se llama "obj_desbloquea_nivel" que cuando el "player" colisione con el desbloquee el nivel 2.
ini_open("niveles.ini");
ini_write_real( "Niveles" , "Nivel1" , 1 );
ini_write_real( "Niveles" , "Nivel2" , 1 );
ini_write_real( "Niveles" , "Nivel3" , 0 );
ini_close();
set variable global.niveles to 1
Pero sigue sin funcionar, no sé como hacerlo ya.
Cuando coge el objeto que se supone desbloquea el nivel2 en este caso, no se desbloquea se queda exactamente igual, pero la aplicación no me da ningún fallo.
Dejo el proyecto.. por si queréis mirarlo.
¿Alguien tiene alguna idea?
Gracias~