Hola buenas :3
Verán, comencé a hacer un programa tipo quiz, una especie de preguntas y respuestas que hace uso de rejillas dinámicas para almacenar las mismas, pero no sé que ocurre que cuando añado un arreglo a un campo de la ds_grid, no soy capaz de recogerlo después, me devuelve undefined. Así tengo mi proyecto:

Primero tengo un script que crea arreglos con los argumentos, para facilitarme el trabajo:
[gml]
///array(val0, ..., val15);
var s;
for(var i = 0; i < argument_count; i++)
    s = argument;
return s;
[/gml]
Lo más fácil sería pensar que el error está acá y que desde un principio ningún arreglo se guarda, pero no veo ningún error en el código :vv.

Después tengo el evento create del controlador de las preguntas, con esto:
[gml]
globalvar Q, Qshow, page;
Q = ds_grid_create(4, 1);
Q[#0, 0] = "La pregunta :v";
Q[#0, 1] = array(
    "La respuesta A",
    "La respuesta B",
    "La respuesta C",
    "La respuesta D"
);
Q[#0, 2] = 2; //respuesta correcta: C
Q[#0, 3] = false; //No respondida

page  = 0;
Qshow = -1;
[/gml]
Bien, la variable Q es la rejilla que contendrá los datos. Para probar le puse una sola fila, pero siempre tiene 4 columnas: La pregunta, las respuestas, la respuesta correcta y si se ha respondido o no. Las variables page y Qshow son para mostrar la pregunta; page no es relevante, pero Qshow almacena el índice de la pregunta a mostrar, en este caso valdrá 0 (porque sólo hay una pregunta).

Ahora bien, nos vamos al evento Draw:
[gml]
TextExt(room_width/2, 280, Q[#Qshow, 0], 704, 28, 0.5, 0);
h = string_height_ext(Q[#Qshow, 0], 28, 704) / 2;
r = Q[#Qshow, 1];
for(var i = 0; i < array_length_1d(r); i++)
{
    Text(608, 280 + h + 32*i, r, 0.5, 0);
}
[/gml]
Los scripts TextExt() y Text() tampoco importan, son sólo para dibujar el texto en pantalla; háganles caso omiso :v. La variable h también es correcta, hasta ahí todo bien, la pregunta se dibuja correctamente en pantalla. El problema viene con la variable r: El ciclo que debería dibujar las posibles respuestas no se ejecuta nunca, y si muestro con un emergente el valor de r, me aparece undefined.

No tengo idea de por qué sucede esto, ¿alguna idea? ¿es problema de las grids, que casualmente no admitan arreglos (con lo cual tendría que reescribir mucho código >.<)? ¿o es error mío en alguna parte (ojalá sea así :v) que no he visto?

EDITO: Intenté cambiar los arreglos por listas, pero el error sigue sucediendo exactamente igual. Comprobé que el script funcionaba bien insertanto la misma lista en otra variable cualquiera, y al mostrarla en pantalla sí devolvía el identificador de la lista y no undefined, como sucede cuando la guardo en la rejilla >.<".

Espero haberme explicado bien xD.
Gracias por leer, saludos :}
alaberga regué el café.

BA:STFW&RTFM

Todo parece correcto, las grids sí pueden guardar referencias a arreglos, incluso lo arreglos pueden guardar referencias a arreglos. Tal vez el error está en Qshow = -1;.

Lo dudo :{. Antes de ejecutar el código que mostré en Draw, establezco Qdraw a 0, y por ello sí que dibuja en pantalla la pregunta en sí, pero no lo hace con las respuestas D:.
alaberga regué el café.

BA:STFW&RTFM

Sube el proyecto, así encontraremos más rápido el error.


Encontré el error, es algo muy simple: has creado una grid de 4x1, y la escritura y lectura se hace en celdas fuera de su rango, por ejemplo (0,3). Se soluciona así:
[gml]
Q = ds_grid_create(1, 4);
[/gml]

 XD XD XD XD
Pero mira semejante tontería.
Gracias Clamud, problema resuelto.  :-[
alaberga regué el café.

BA:STFW&RTFM