pamiętaj, że każda mapa ma swoje ID, zatem tworząc ją, dostaniesz to ID:
GML
global.mapa;
global.mapa= ds_map_create();
potem możesz wsadzić ją w inną mapę
GML
var inna;
inna = ds_map_create();
ds_map_add(global.mapa,'wsadzona_mapa',inna);
a potem, żeby odzyskać id tej wsadzonej mapy:
GML
var id_innej;
id_innej = ds_map_find_value(global.mapa,'wsadzona_mapa');
var costam;
costam = ds_map_find_value(id_innej,'jakas_wartosc....');
...
W ten sposób można pakować mapy w mapy, pamiętając jedynie ID tej głównej (warto przypisać do zmiennej globalnej, chyba, że jakiś obiekt istnieje całą grę właściwą).
Jak może się to przydać?
Ot, mamy np. w grze kilku bohaterów, każdy z nich ma quest. Tworzymy więc mapę, gdzie klucze to imiona, a wartości to ID ich map z questami. Mapa z questem jako klucze ma np. 'nazwa','czy_wykonany','nagroda'. Wtedy rozmawiając z postacią szukamy w global.mapa wartości 'imie_postaci' (ds_map_find_value), pobieramy jej wartość do zmiennej (nawet tymczasowej), i mamy dostęp do informacji o queście (mamy ID struktury, jej referencję). Oczywiście w mape można wsadzić listę, kolejkę itd. i na odwrót. Warto pamiętać, że o ile zmienna var znika, to sama struktura nie zniknie, ponieważ zmienna var ma tylko jej identyfikator (referencję), a struktura znika dopiero przy zamykaniu gry lub poprzed ds_xxxx_destroy();