Hola makeros, encuentro con este percance.
Tengo un objeto en el room llamado gema,
Cuando el personaje lo adquiere le suma puntos,
Cuando el personaje muere, el room se reinicia. pero me gustaria que las gemas ya adquiridas no aparezcan de nuevo...
Probe tildando persistent en el objeto gema pero eso logra que permanezca en pantalla a traves de los room no que no se vuelva a regenerar..
Alguna idea?
PD: Como me gustaria que exista una señal tipo batiseñal pero que invoque a Penumbra XD
Igual haz las gemas persistentes.
En el evento/accion que realiza el cambio de room pon lo siguiente:
with( obj_gema )
{
persistent = false;
}
No Vampy, eso no funcionó... las gemas se vuelven a regenerar cuando reinicio el room.
Ando necesitando algo hecho con variables supongo....
amigo quizas una variable global te sirva
ejemplo
crea un obj_control_gemas
ponlo persistente
en create pon
gema1=false;
en el obj_player pon en
colicion con la gema
obj_control_gemas.gema1=true
y en el obj_gema1 pone esto en el create
if obj_control_gemas.gema1=true
{
instance_destroy();
}
espero me entiendas
saludos cualquier duda me dices
CitarProbe tildando persistent en el objeto gema pero eso logra que permanezca en pantalla a traves de los room no que no se vuelva a regenerar..
Me respuesta es para esta parte de tu pregunta, es mi culpa no haberlo especificado.
Ahora con tu pregunta principal.
Sì, el evento Room Start reinicia todo y tambien las instancias aunque sean persistentes.
Lo que habria que hacer es script con tu un reinicio personalizado.
Dentro de este script se pondria por ejemplo que el personaje principal, enemigos vuelvan a su posicion incial.
Dado que no se cuantas instancias ni como tienes organizado el room de tu juego no se cuan complicado podria ser esto.
Compañero existe una manera aun mas sencilla:
haz tu gemas persistentes.
haz tu room persistente tambien (pestaña settings en el room editor)
Yo lo haría con INIs/archivos de texto
En GM, una variable de nombre partida iniciada en 0 a la que se le sume 1 cada que haya un room_restart() o un game_restart(). Esto serviría para saber si es la primera vez que se ejecuta el juego o ya se había jugado antes.
Si es la primera vez (partida = 0), leer el número de gemas desde un arreglo. Digamos que indica cuantas gemas hay en una habitación
gemas[0] = 5 //Gemas rojas
gemas[1] = 10 //Gemas verdes
gemas[2] = 8 //Gemas azules
A partir de este momento (haber colocado la distribución original de gemas) el arreglo ya no se usa. Sus valores se copian a un archivo INI.
[GEMAS]
roja= 5
verde= 10
azul=8
Los valores en el arreglo nunca cambian porque son los valores originales. Los valores en el INI cambian cada que se recoje una gema (se leería la llave "roja" y a su valor se le restaría 1, y ese nuevo valor se escribiría en "roja"). El arreglo sólo se leeria la primera vez, cuando partida = 0, pero después de eso, todos los cambios y lecturas se basan en el INI
No es tan directo, pero eso es lo que se me ocurrió.
CitarPD: Como me gustaria que exista una señal tipo batiseñal pero que invoque a Penumbra
amigo gracias por desvalorar a los todos los demas!!!!! NO SOLO PENUMBRA sabe hacer las cosas!!!!! Hay muchos que tambien podemos hacer muchas cosas y que conocemos!!!!!
Ocarina no te enojes!!! jaja pasa que ya es un clásico que penumbra aparezca con una ayuda jaja me salvo de varias :P
pero insisto es una humorada,si te ofendí me disculpo de antemano :-X
Volviendo con el problema creo que hacerlo INI seria el ultimo recurso porque el juego es por partidas, es decir que la gema no se va a volver a generar si ya la obtuve durante la partida pero si empieza TODO el juego de nuevo si va a estar presente otra vez. Al recurso del INI lo veo mas para save games o actualizar estados en largas partidas progresivas...
El mio es un juego mas simple, parece un problema sencillo pero...
Ocarina lo del objeto que controle si la gema se agarro o no me parece bien , pero no me funcionó porque debería crear uno para cada gema( o hay otra forma) son 1 o 2 gemas como maximo por room. (21 rooms)
Saludos.
Ya probastes esto:
Cita de: vampy09 en Abril 06, 2014, 04:33:01 AM
haz tu gemas persistentes.
haz tu room persistente tambien (pestaña settings en el room editor)
Cita de: luckylandia007 en Abril 06, 2014, 09:18:53 AM
la gema no se va a volver a generar si ya la obtuve durante la partida pero si empieza TODO el juego de nuevo si va a estar presente otra vez. Al recurso del INI lo veo mas para save games o actualizar estados en largas partidas progresivas...
Sin haberlo implementado, creo que el procedimiento que puse antes funciona perfectamente para esto. Todo es cuestión de controlar cuando pasar datos del arreglo al ini. Si TODO el juego se reinicia, partida = 0 y todas las gemas originales estarán presentes, si hay un room restart, partida va a ser distinta a 0, por lo que se usa el ini (y al comenzar un juego totalmente nuevo el ini vuelve a iniciciar con los valores originales). De acuerdo con que es un método enredoso, pero hay muchas maneras de hacerlo, el método de vampy parece ser el más inmediato, pero se puede hacer con variables, arreglos, inis, ds_lists o ds_maps, colas, etc, todo se basa en un IF que revise si se hizo un room_restart o si se empezó una partida totalmente nueva.
igual se puede usar el tiempo total de la partida (no recuerdo el nombre de la variable), para decidir si es un juego nuevo o ya se ha jugado otro. Tampoco sé si esta variable toma en cuenta el tiempo desde que inicia el juego o desde que se carga la primera habitación, pero es cuestión de hacer pruebas
Amigo con un solo objeto control de gemas es suficiente, nada más en el create pon
gema1=false;
gema2=false;
gema3=false;
......... Y todas las gemas q tengas
Y en cada colicion con cada gema nada mas pon
Obj_control_gemas.gema#=true;
Y en el evento create de cada gema pon el código q ti anteriormente!
Gracias a todos lo solucione
Hice un objeto control que sea persistente y que contenga una variable que si la gema fue tomada no vuelva a generarse pero que si restart game si.
Hice como me pusiste ocarina pero tuve que sacrificar un poco el diseño del juego. No quedo mal, pero bueno quiero publicar el juego una vez por todas ( posiblemente esta noche!!!) Muchas gracias a todos :D
a que bueno!! y que bien que te sirvio mi solucion!!! saludos!! cuando lo subas lo descargo para probarlo y darte mi opinion!!!
Ok! es para android! ojala que te guste!