Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: kaliman777 en Septiembre 13, 2011, 11:59:26 PM

Título: Variables globales: son globales entre rooms tambi?n?
Publicado por: kaliman777 en Septiembre 13, 2011, 11:59:26 PM
Hola:

Sigo con este problema: quiero que una variable global que ha acumulado un score, justo al entrar a la siguiente room le sume este score al existente.

Veamos:

[gml]roomA: global.bonus+=500;
roomB: global.total+=global.bonus;[/gml]
Lo pongo en room end event

El global.bonus est? bien porque lo dibuja en la romA, pero no lo suma l pasar a la siguiente roomB
?Por qu? no me suma nada?
Título: Re: Variables globales: son globales entre rooms tambi?n?
Publicado por: Mgbu en Septiembre 14, 2011, 01:21:39 AM
No hay un objeto que resetea el bonus al comienzo da la room B?
Digo porque siempre me pasan esos errores tan tontos  :o
Título: Re: Variables globales: son globales entre rooms tambi?n?
Publicado por: MaanuRP en Septiembre 14, 2011, 03:06:02 AM
Lo que puedes probar es arrancarlo en Debug mode y verificar esas variables, para ver donde esta el error.
Título: Re: Variables globales: son globales entre rooms tambi?n?
Publicado por: brunoxzx en Septiembre 14, 2011, 03:47:14 AM
Las variables globales funcionan en todos los rooms aunque la verdad no se por que no funcione, corre en modo debug y revisa all? las variables globales a ver si alli vez el error.
Título: Re: Variables globales: son globales entre rooms tambi?n?
Publicado por: Wadk en Septiembre 14, 2011, 04:24:52 AM
Prob? cambiar esto:
[gml]global.total+=global.bonus;[/gml]
por esto:
[gml]show_message("global.total = " + string(global.total) + ".#global.bonus = " + string(global.bonus) + ".");
global.total += global.bonus;
show_message("global.total + global.bonus = " + string(global.total) + ".");[/gml]
As? sabr?s si el c?digo se ejecuta, sabr?s exactamente cu?ndo, sabr?s el valor que ambas variables ten?an antes de la suma y sabr?s el valor de global.total despu?s de la suma.
Si todos los valores son los esperados, definitivamente est?s volviendo a definir la variable global.total en alg?n lado como dijo Mgbu.
Título: Re: Variables globales: son globales entre rooms tambi?n?
Publicado por: kaliman777 en Septiembre 14, 2011, 02:27:37 PM
Cita de: Wadk en Septiembre 14, 2011, 04:24:52 AM
Prob? cambiar esto:
[gml]global.total+=global.bonus;[/gml]
por esto:
[gml]show_message("global.total = " + string(global.total) + ".#global.bonus = " + string(global.bonus) + ".");
global.total += global.bonus;
show_message("global.total + global.bonus = " + string(global.total) + ".");[/gml]
As? sabr?s si el c?digo se ejecuta, sabr?s exactamente cu?ndo, sabr?s el valor que ambas variables ten?an antes de la suma y sabr?s el valor de global.total despu?s de la suma.
Si todos los valores son los esperados, definitivamente est?s volviendo a definir la variable global.total en alg?n lado como dijo Mgbu.

Wadk: Prob? tu c?digo y este fue el resultado:

- Cuando fue a la room de bonus, el score ganado fue 500.
-El mensaje mostrado fue: global.bonus+=500 global.total+=1
-Luego un mensaje donde sumaba ambas cosas es decir 501.

El error es que el global.total era 1000 y no 1.

Al entrar de nuevo en el room del juego deber?a sumar 500 a los 1000 ya existentes. En Debug mode me dijo que global.total era 1, aunque en realidad es 1000.
Título: Re: Variables globales: son globales entre rooms tambi?n?
Publicado por: elviskelley en Septiembre 14, 2011, 05:21:37 PM
ok se lo que pasa declaraste las variables global en el personaje o en un object que se encuentra en el room al regresar por lo que el valor se resetea ya que es como si declararas de nuevo el valor de la variable global.
crea un object y ese object llamalo objGlobales en el create de ese object declara todas las variables global que vallas a usar y coloca ese object unicamente en el primer room del juego asi sea el de la presentacion, asi quedaran activas las variables y podras usarlas siempre.
recuerda que una var global una vez declarada queda activa siempre en todos los rooms, pero si al regresar a algun room se encuentra con un object que la declaro su valor vuelve a ser el de inicio cuando fue declarada, por eso deben estar en un object al inicio del juego, para declararlas todas, y evitar que se resetee su valor.
Título: Re: Variables globales: son globales entre rooms tambi?n?
Publicado por: kaliman777 en Septiembre 14, 2011, 08:09:02 PM
Nada. Ninguna variable est? repetida. Todo el problema sigue, al volver a la room principal, no reconoce a global.bonus, por lo que no hay suma alguna. Cada variable solo es reconocida en su propia room donde es dibujada.

Si alguien me hiciera un peque?o engine donde hay dos room y una variable global que al salir de una room y entrar a otra sea llamada-dibujada. Se lo agradecer?a.
:-[ :@
Título: Re: Variables globales: son globales entre rooms tambi?n?
Publicado por: brunoxzx en Septiembre 14, 2011, 08:35:11 PM
No, no es necesario ning?n engine, deber?a funcionar.

Haz lo que te dice wadk y dinos que sucede.
Título: Re: Variables globales: son globales entre rooms tambi?n?
Publicado por: kaliman777 en Septiembre 15, 2011, 02:22:47 PM
Cita de: brunoxzx en Septiembre 14, 2011, 08:35:11 PM
No, no es necesario ning?n engine, deber?a funcionar.

Haz lo que te dice wadk y dinos que sucede.

Repito el problema: Al volver a la room original ya no reconoce nada de la otra room de bonus: ni score ni dibuja nada. Pero en la de bonus s? hace lo que se le pida.
Título: Re: Variables globales: son globales entre rooms tambi?n?
Publicado por: elviskelley en Septiembre 15, 2011, 04:21:53 PM
Ya te dije que declares todas las variables global en una object en el primer room del juego, solo asi va a funcionar bien.
Título: Re: Variables globales: son globales entre rooms tambi?n?
Publicado por: brunoxzx en Septiembre 15, 2011, 08:05:24 PM
Lo mas probable como dice elviskelley es que est?s volviendo a declarar tus variables globales, as? que no uses el evento create de alg?n objeto para declararlas usa el evento gamestart.
Título: Re: Variables globales: son globales entre rooms tambi?n?
Publicado por: kaliman777 en Septiembre 15, 2011, 08:37:29 PM
Cita de: brunoxzx en Septiembre 15, 2011, 08:05:24 PM
Lo mas probable como dice elviskelley es que est?s volviendo a declarar tus variables globales, as? que no uses el evento create de alg?n objeto para declararlas usa el evento gamestart.

Voy a repasar las variables una por una y ver qu? pasa qu? hallo mal. Gracias.
Título: Re: Variables globales: son globales entre rooms tambi?n?
Publicado por: MaanuRP en Septiembre 16, 2011, 01:28:53 AM
Lo que quieres es un engine donde en un room haya dos variables globales con un tal valor y que al pasar al otro room se sumen?

Si es eso, o algo parecido, revisa el engine que te hice a ver si te ayuda.

PD: Perdon por la desprolijidad, lo hice medio rapido.
PD2: Por las dudas miralo, quizas que me explique mal y si es lo que tu quieres.
Título: Re: Variables globales: son globales entre rooms tambi?n?
Publicado por: kaliman777 en Septiembre 16, 2011, 06:18:03 PM
Cita de: MaanuRP en Septiembre 16, 2011, 01:28:53 AM
Lo que quieres es un engine donde en un room haya dos variables globales con un tal valor y que al pasar al otro room se sumen?

Si es eso, o algo parecido, revisa el engine que te hice a ver si te ayuda.

PD: Perdon por la desprolijidad, lo hice medio rapido.
PD2: Por las dudas miralo, quizas que me explique mal y si es lo que tu quieres.
Aplicando, muchas gracias.