Hola ! :D
puse en un objeto global.coin = 0 , y tengo otro que cada vez que mi personaje pilla un moneda puse global.coin + = 1 entonces haria que cada vez que mi personaje pille una moneda , global.coin aumente uno, ?esta bien esto hasta ahora? lo otro : ahora que tengo el objeto con global.coin = 0 , quiero ponerlo en una habitacion (llamemosla x1) entonces puse a mi personaje en otra habitacion con monedas (llamemosla x2). entonces si en la habitacion x2 pillo las monedas que puse, en la habitacion x1 ?cambiaria global.coin aumetnando uno mas?
?esta bien todo lo que dije, me funcionaria?
Citarpuse en un objeto global.coin = 0 , y tengo otro que cada vez que mi personaje pilla un moneda puse global.coin + = 1 entonces haria que cada vez que mi personaje pille una moneda , global.coin aumente uno, ?esta bien esto hasta ahora?
Es correcto, sip.
Citarlo otro : ahora que tengo el objeto con global.coin = 0 , quiero ponerlo en una habitacion (llamemosla x1) entonces puse a mi personaje en otra habitacion con monedas (llamemosla x2). entonces si en la habitacion x2 pillo las monedas que puse, en la habitacion x1 ?cambiaria global.coin aumetnando uno mas?
?esta bien todo lo que dije, me funcionaria
Sip...
Recuerda que al usar una variable con
global no importa el cambio de room ya que la variable seguira existiendo con el
?ltimo valor que le asignaste en el room anterior, ademas ten en cuenta no resetear el valor al iniciar el siguiente room (error humano com?n) por ejemplo que pongas global.coin = 0 nuevamente.
Saludos.
Osea si yo tengo una variable en global funcionaria aunque no este presente en la room donde esta mi jugador, pero este en otra room igual contaria las monedas que pillo. ?esta correcto?
Pregunto por que no tengo el Game maker a mano, entonces quiero cuando lo tenga hacerlo altiro . (:
si pongo local.coin entonces es solo funcionaria en la misma room , si es global.coin me funciona en todas las rooms.?
El "prefijo" local no existe. Todas las variables que no lleven el prefijo global se consideran locales (excepto en :GM8: que puedes puedes ahorrarte el "global." declar?ndolas con globalvar). Las variables locales se refieren a valores relacionados a objetos determinados, mientras que las globales son omnipresentes y puedes referirte a ellas desde cualquier room una vez declaradas. Las variables locales desaparecen junto al objeto una vez destru?do, a diferencia de las globales que no est?n fijadas a un objeto sino al juego mismo, por lo que permanecen en memoria hasta cerrar el juego.
Si deseas contar las monedas que tome el personaje en todas las rooms no es necesario crear un objeto aparte para esta tarea, sino programarlo desde el mismo evento de colisi?n del personaje con la moneda; de otro modo tendr?as que cargar el objeto contador junto con el personaje a todas las rooms con monedas.
?Saludos!
No se si me explico Bien con lo que quiero hacer. pero tratare de explicarme un poco mas.
-primero pondre un ejemplo, ?conocen Super Mario Bros 3? bueno pues este contiene una HUD bar, que es azul , donde mostraba el timepo, el score, las monedas pilladas, etc. bueno yo quiero hacer algo similar, pero quiero que eso este en otra habitacion.
(http://www.nesretro.com/mariohistory/images/SuperMarioBros3.jpg)
es la barra de abajo celeste
-Entonces despues de este ejemplo ,el contador esta en otra habitacion, llamada room_contador donde pondre el contador de monedas. luego en otro nivel ponder a mario (objPlayer) y monedas (obj_coin)que seria nivel uno
-Cuando Mario pille las monedas que puse en el nivel uno el contador de monedas en la habitacion room_contador cabiaria dependendiendo de cuantas monedas puse.
Eso es lo que quiero hacer, y por ahora el objeto contador, lleva en create global.coin = 0, y en mario lleva que cuando colisiona con obj_coin de una moneda mas y puse global.coin +=1.
?me explico?
que tendria que cambiar para que el contador siga funcionando aunque no este en la misma habitacion donde pasa que mario pilla la moneda, osea en otra habitacion. ?tendira que ponerle globalvar.coin = 0 envez de global.coin.?
Yo te recomiendo que cada vez que escuches de una nueva funci?n o sentencia te dirijas al manual para reforzar lo que entendiste de la soluci?n que te ofrecieron; investiga sobre globalvar, por ejemplo.
Haciendo globalvar a un lado, si ya lograste que Mario tome las monedas y las sume al contador solo te hace falta que el HUD (est? donde est?) dibuje ese valor usando la variable global como argumento de entrada. Un ejemplo simple para que hagas la prueba ser?a este:
En el evento
Draw del objeto contador:
Citardraw_text(50,50,'Monedas: '+string(global.coin)); //Aparecer? en la esquina superior izquierda, te toca ajustarlo
Citar
...yo quiero hacer algo similar, pero quiero que eso este en otra habitacion...
GM no permite el uso de mas de un room a la vez.Sin embargo lo que quieres hacer es bastante sencillo y no se necesitan el uso de dos rooms, solo debes crear un objeto que administre el juego como "obj_game" o "obj_control" y que sea este el que maneje las variables y el dibujado del HUD, ponerlo de modo "persistent" asi estara presente en todas las rooms a las que vayas
Yo tengo la idea de que tratas de hacer un HUD estilo men? de pausa, pero si es m?s como lo que dice flayd4 la verdad es que nos fuimos mucho por las ramas. XD
Pero no es lo que quiero. xD
haber tratare de explicarme mejor...
una room , que tiene un contador de monedas . y otra que es un nivel (con mario y monedas),.... Mario pilla 10 monedas, apreto enter, entro a la room donde esta el contador de monedas y muestra 10 monedas.
eso quiero hacer.. es muy dificil? no es que esten las 2 rooms mostrandose a la misma vez, solo que una (room_contador) cambia sin que el jugador objPlayer este en ese nivel.
Hombre, si es as? como lo quieres ya te ofrec? una soluci?n que definitivamente te tiene que funcionar ?Ya la probaste? :-\
Mir? ardilla, las variables no pertenecen a ciertos rooms, s?lo a objetos, o si son globales como en este caso, se puede decir que no pertenecen a nada y perduran hasta que el juego se cierre.
Eso quiere decir que una vez que asignes la variable global.coin, s? vas a poder modificarla desde el objeto y desde el room que quieras, y esta no se va a borrar ni a resetear ni nada por cambiar de room.
Pero si en el objeto contador ten?s esto en create:
global.coin=0;
Entonces lo que quer?s hacer no va a funcionar bien, porque ese c?digo se va a ejecutar siempre que vuelvas al room donde est? el objeto, y por lo tanto global.coin se va a poner en 0.
Para evitar ese problema, pod?s hacer lo siguiente:
if !global_variable_exists("coin"){
global.coin=0;
}
Es decir, comprobar si la variable existe y s?lo si no existe, ponerla en 0.
Hola , creo que ya encontre la solucion con lo que ustedes me dieron (:, muchas gracias !.
SOLUCIONADO !!
La pr?xima vez ta hago un ejemplo. :)