Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Guardar los nombres de todas las Rooms en una Array [Solucionado]  (Leído 423 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado T789

Hola makeros, vengo porque se me habia ocurrido una idea pero no se como implementarla a mi juego

Como el titulo lo dice planeaba guardar en una Array los nombres de cada Room en mi Juego pero no se me ocurre como, bueno habia pensado en usar un bucle for para ello pero como?

Necesito que en el evento Create de mi objeto, este almacene los nombres de las rooms en una array de forma automatica y no pienso escribir todos los nombres de forma manual pues eso me cansaria mucho

Alguien sabe como lograr eso?
« última modificación: Junio 25, 2020, 01:49:21 am por T789 »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado Clamud

Respuesta #1 en: Junio 24, 2020, 11:35:37 pm
Aquí hay un script, pero guarda las rooms en un ds_map (en pares nombre:id)
https://www.gmlscripts.com/script/map_rooms

 


Desconectado T789

Respuesta #2 en: Junio 24, 2020, 11:54:53 pm
No domino muy bien los ds_map pero si puedo reutilizar el codigo
/// Event Create
var i, f;
i = room_first;
f = 0;
while(room_exists(i)) {
   Levels[f] = room_get_name(i);
   f += 1;
   i = room_next(i);
}
room_goto(Levels[1]);
Eso funcionaria bien creo pero no habra un conflicto al acabarse las rooms, digo si "i" almacena la ultima room, entonces esta ya no tendra room que almacenar pues la siguiente room a la actual no existe pues ya se acabaron, eso me ha confundido  ???

 


Desconectado Black_Cat

Respuesta #3 en: Junio 25, 2020, 01:33:15 am
Efectivamente, bien pensado puede ocurrir el caso que en la última, la siguiente no contenga información y para ello se usa
room_exist(i)
para que el código se ejecute solamente si existe dicho room
asi que ese caso ya esta contemplado


 
Los siguientes usuarios dieron las gracias a este tema: T789


Desconectado T789

Respuesta #4 en: Junio 25, 2020, 01:41:50 am
Ahhh para eso era el room_exists en el while pero que eso no solo te devuelve si existe la room actual, entonces deberia usar algo asi como
Código: [Seleccionar]
if (room_exists(room_next(i)))
   i = room_next(i)

 


Desconectado Black_Cat

Respuesta #5 en: Junio 25, 2020, 01:46:16 am
Esa parte se omite, porque es la que se coloca al final del ciclo:

/// Event Create
var i, f;
i = room_first;
f = 0;
while(room_exists(i)) {
   Levels[f] = room_get_name(i);
   f += 1;
   i = room_next(i); // AQUI SE ACTUALIZA i, POR ESO NO SE VERIFICA DENTRO DEL IF
}
room_goto(Levels[1]);
osea, i se actualiza de manera que apunta al siguiente room, luego cuando vuelve el ciclo pregunta justamente por el room, que debería estar en la siguiente posicion


 


Desconectado T789

Respuesta #6 en: Junio 25, 2020, 01:48:23 am
Bueno mi duda ya esta resuelta, gracias por la aclaracion