Cita de: Clamud en Abril 19, 2015, 04:46:14 AM
Puedes hacer eso con un arreglo 2D de tamaño 50x5, aunque escribir uno a uno los elementos del arreglo en un archivo ini me parece demasiado, optaría por usar una "grid" (también de 50x5) en vez de un arreglo para guardar toda la tabla en una sola línea del archivo ini. Pensándolo mejor se debería ser de tamaño 50x6; las primeras 5 filas serían para el estado de los objetos y la sexta para el total de objetos encontrados en cada nivel.
El procedimiento sería algo así:
Primero se crea la tabla
[gml]global.tabla = ds_grid_create( 50, 6 );[/gml]
al principio todos los valores dentro de la tabla son cero. En seguida se carga la tabla desde el ini con la función ds_grid_read. Busca la función en el manual, ahí aparece un ejemplo.
Después al entrar a un nivel (room), en el evento Room Start o Create, los objetos revisan si han sido encontrados, entonces se destruyen
[gml]///obj_1
if global.tabla[# global.level-1, 0 ] instance_destroy();[/gml]
[gml]///obj_2
if global.tabla[# global.level-1, 1 ] instance_destroy();[/gml]
se pone global.level-1 porque los niveles se empiezan a contar desde 1 pero en la tabla se cuenta desde 0.
Al encontrar un objeto se deben ejecutar algunas de estas líneas de código
[gml]//ob_1
global.tabla[# global.level-1, 0 ] = true;
global.tabla[# global.level-1, 5 ] += 1;
instance_destroy();[/gml]
[gml]//ob_2
global.tabla[# global.level-1, 1 ] = true;
global.tabla[# global.level-1, 5 ] += 1;
instance_destroy();[/gml]
Para guardar los cambios se debe usar la función ds_grid_write. En el manual también hay un ejemplo.
En la room de selección de niveles los números se escribirían con un ciclo for
[gml]
for( i=0; i<50; i++ )
{
draw_text( x,y+i*k, "Level "+string(i+1)+": "+string(global.tabla[#i,5])+"/5" );
}
[/gml]
Excelente! Lo del grid me anduvo espectacular.
Ahora los problemas que tengo son para guardar/cargar (lei el manual y lo intente de varias formas, pero no me sale) y tambien lo del draw_text en los niveles, pongo ese código y me salta error en cualquier evento, ya sea draw, create, step....