Junio 24, 2020, 06:51:55 PM Ultima modificación: Junio 25, 2020, 01:49:21 AM por 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?

Aquí hay un script, pero guarda las rooms en un ds_map (en pares nombre:id)
https://www.gmlscripts.com/script/map_rooms

No domino muy bien los ds_map pero si puedo reutilizar el codigo
[gml]
/// 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]);
[/gml]
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  ???

Efectivamente, bien pensado puede ocurrir el caso que en la última, la siguiente no contenga información y para ello se usa
[gml]
room_exist(i)[/gml]
para que el código se ejecute solamente si existe dicho room
asi que ese caso ya esta contemplado



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

if (room_exists(room_next(i)))
   i = room_next(i)

Esa parte se omite, porque es la que se coloca al final del ciclo:

[gml]
/// 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]);
[/gml]
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



Bueno mi duda ya esta resuelta, gracias por la aclaracion