Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: luckylandia007 en Abril 06, 2014, 02:08:41 AM

Título: Quiero que una instancia no vuelva a crearse cuando restart_game()
Publicado por: luckylandia007 en Abril 06, 2014, 02:08:41 AM
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

Título: Re:Quiero que una instancia no vuelva a crearse cuando restart_game()
Publicado por: vampy09 en Abril 06, 2014, 03:12:05 AM
Igual haz las gemas persistentes.

En el evento/accion que realiza el cambio de room pon lo siguiente:

with( obj_gema )
     {
       persistent = false;
      }
Título: Re:Quiero que una instancia no vuelva a crearse cuando restart_game()
Publicado por: luckylandia007 en Abril 06, 2014, 03:27:52 AM
No Vampy, eso no funcionó... las gemas se vuelven a regenerar cuando reinicio el room.

Ando necesitando algo hecho con variables supongo....
Título: Re:Quiero que una instancia no vuelva a crearse cuando restart_game()
Publicado por: ocarina en Abril 06, 2014, 03:45:22 AM
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
Título: Re:Quiero que una instancia no vuelva a crearse cuando restart_game()
Publicado por: vampy09 en Abril 06, 2014, 04:14:13 AM
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.
Título: Re:Quiero que una instancia no vuelva a crearse cuando restart_game()
Publicado por: vampy09 en Abril 06, 2014, 04:33:01 AM
Compañero existe una manera aun mas sencilla:
haz tu gemas persistentes.
haz tu room persistente tambien (pestaña settings en el room editor)
Título: Re:Quiero que una instancia no vuelva a crearse cuando restart_game()
Publicado por: penumbra en Abril 06, 2014, 06:04:29 AM
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ó.
Título: Re:Quiero que una instancia no vuelva a crearse cuando restart_game()
Publicado por: ocarina en Abril 06, 2014, 06:31:20 AM
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!!!!!
Título: Re:Quiero que una instancia no vuelva a crearse cuando restart_game()
Publicado por: luckylandia007 en Abril 06, 2014, 09:18:53 AM
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.

Título: Re:Quiero que una instancia no vuelva a crearse cuando restart_game()
Publicado por: vampy09 en Abril 06, 2014, 09:24:08 AM
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)
Título: Re:Quiero que una instancia no vuelva a crearse cuando restart_game()
Publicado por: penumbra en Abril 06, 2014, 09:40:52 AM
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


Título: Re:Quiero que una instancia no vuelva a crearse cuando restart_game()
Publicado por: ocarina en Abril 06, 2014, 04:38:29 PM
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!
Título: Re:Quiero que una instancia no vuelva a crearse cuando restart_game()
Publicado por: luckylandia007 en Abril 06, 2014, 07:53:05 PM
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
Título: Re:Quiero que una instancia no vuelva a crearse cuando restart_game()
Publicado por: ocarina en Abril 06, 2014, 07:56:30 PM
a que bueno!! y que bien que te sirvio mi solucion!!! saludos!! cuando lo subas lo descargo para probarlo y darte mi opinion!!!
Título: Re:Quiero que una instancia no vuelva a crearse cuando restart_game()
Publicado por: luckylandia007 en Abril 06, 2014, 11:40:02 PM
Ok! es para android! ojala que te guste!