Buenashffjfdkfj!! xD
Me surge esa duda principalmente porque en ocaciones necesito almacenar más de un valor en una llave de una ds_map(), y obviamente la mejor forma de hacerlo es con un array, una ds_list() u otra ds_map().
La pregunta es, si yo tengo un array dentro de una estructura de datos (digámosle ds_map()), con una estructura algo como esto:
(https://gyazo.com/7f622ff2fb5aa5a6f5fae724a6282dff.png)
Había pensado en intentar como un array bidimensional, algo así:
[gml]
mapa[? 'llave1', 0]
[/gml]
Pero me sale error de compilación:
(https://gyazo.com/e8bc5ed9d201feac2dff9352fec4dc27.png)
¿Cómo podría obtener la información que se encuentra en el Array de cada llave del mapa sin tener que almacenar la misma en otra variable?
Gracias de antecabeza :B
no te entendi muy bien, pero porque no haces un objeto llave?
- que tenga todo lo necesario y metes en la lista diferentes llaves
ob_llave
-----------
Ev.Create
valor = 1001;
label = "llave nivel 1";
y en otro obeto manager, simplemente creas la lista , haces la istancia de las llaves que ocupas y las almacenas en dicha lsta:
ob_ManejadorLLave
--------------------------------
//creas la lista
llave1 = instance_create(0,0, obLlave);
llave2 = instance_create(0,0, obLlave);
llave3 = instance_create(0,0, obLlave);
llave1.value = 100;
llave2.value = 200;
llave3.value = 300;
//guardas estos objetos en la lista
espero haberme explicado bien
¿Y por qué usar un objeto llave cuando tendo ds_map()? XD
Verás, no puedo ir creando objetos por cada lista que necesite. Para ello están los ds_map(), que me permiten trabajar de la forma en que lo deseo.
Además, ¿Que tiene que ver lo que mostraste con los arrays? XD , parece que en realidad no se entendió mi pregunta :-X xD
1)- Tengo una ds_map() creada
2)- En una llave de esa ds_map() tengo guardado un array
3)- Necesito obtener el valor de un índice del array guardado en esa llave de la ds_map()
Eso es, espero haberme explicao mejor xD
Se me ocurre que tienes que obtener primero el arreglo para luego recien hacer referencia al elemento dentro de dicho arreglo, por ejemplo:
var array = arr = ds_map_find_value(mapa1, 2);
draw_text(0,0, arr[1]);
basandome anteriormente de que el mapa está formado de la siguiente manera:
mapa1 = ds_map_create();
array1[0] = "primero";
array1[1] = "segundo";
array1[2] = "tercero";
array2[0] = "cuarto";
array2[1] = "quinto";
array2[2] = "sexto";
ds_map_add(mapa1, 1, array1);
ds_map_add(mapa1, 2, array2);
edit: probando, conseguí, que es lo mismo usar:
var arr = mapa1[? 2];
var val = arr[@ 1];
draw_text(0,0, val);
Eso es lo que quiero hacer, pero a su vez es exactamente lo que quiero evitar XD
Cito lo que dije en mi mensaje original:
Cita de: NiuWeb en Febrero 21, 2016, 10:47:16 PM
¿Cómo podría obtener la información que se encuentra en el Array de cada llave del mapa sin tener que almacenar la misma en otra variable?
Ah, si te refieres a hacerlo con algun tipo de notacion... al menos yo, no he visto nada parecido en el manual.
No. No existe una forma directa de hacerlo. De todos modos, no es algo malo el tener que almacenarlo en otra variable.
De todos modos, no es algo que vaya a perjudicar la performance del juego, ya que no estas copiando el array entero, solo estás obteniendo un puntero/referencia del array en cuestion. :)