Muchas gracias por responder Arcadian, pero justo antes ya lo habia programado. El caso es que al coger el disco 46 no me da ningun error, pero al coger el disco 45 me sale este error. y no entiendo porque.
FATAL ERROR in
action number 1
of Create Event
for object objectMENU_DISCOS:
Push :: Execution Error - Variable Index [0,65] out of range [1,65] - -5.DISCO(100040,65)
at gml_Object_objectMENU_DISCOS_CreateEvent_1 (line 34) - if (DISCO==true)
Este es el codigo que uso.
CREATE;
//VARIABLES DE LOS DISCOS
globalvar DISCO;
globalvar BOLSILLO_MAXIMO;
BOLSILLO_MAXIMO = 65;
globalvar CODIGO;
for(i=45;i<BOLSILLO_MAXIMO;i++)
{
DISCO=false;
CODIGO=0;
}
AL COGER EL DISCO EN COLISION EVENT
if !audio_is_playing(soundDISKETERA_PASANDO)
if (bandera_sonar)
{
audio_play_sound(soundDISKETERA_PASANDO,1,0);
bandera_sonar = false;
}
DISCO[numero]= true;
*numero es el numero del disco.
AL CARGAR EL ESPECIE DE INVENTARIO
BOLSILLO_MAXIMO = 65;
for(i=45;i<BOLSILLO_MAXIMO;i++)
{
if (DISCO==false)
{
i++;
}
if (DISCO==true)
{
DISCO_CARGADO = i;
CODIGO_CARGADO = CODIGO;
}
}
}
lo guardo todo en dos nuevas variables para usarlo con mas facilidad. El for comienza a partir de 45, solo por motivos de gusto, para no usar disco 1 disco 2, para que suena mas real.
El caso que primero lo probe con el disco 46 y me funciono, pero al poner el disco 45, me sale el error de fuera rango. No entiendo.
Bueno si alguien ve algo que me comente please.
FATAL ERROR in
action number 1
of Create Event
for object objectMENU_DISCOS:
Push :: Execution Error - Variable Index [0,65] out of range [1,65] - -5.DISCO(100040,65)
at gml_Object_objectMENU_DISCOS_CreateEvent_1 (line 34) - if (DISCO==true)
Este es el codigo que uso.
CREATE;
//VARIABLES DE LOS DISCOS
globalvar DISCO;
globalvar BOLSILLO_MAXIMO;
BOLSILLO_MAXIMO = 65;
globalvar CODIGO;
for(i=45;i<BOLSILLO_MAXIMO;i++)
{
DISCO=false;
CODIGO=0;
}
AL COGER EL DISCO EN COLISION EVENT
if !audio_is_playing(soundDISKETERA_PASANDO)
if (bandera_sonar)
{
audio_play_sound(soundDISKETERA_PASANDO,1,0);
bandera_sonar = false;
}
DISCO[numero]= true;
*numero es el numero del disco.
AL CARGAR EL ESPECIE DE INVENTARIO
BOLSILLO_MAXIMO = 65;
for(i=45;i<BOLSILLO_MAXIMO;i++)
{
if (DISCO==false)
{
i++;
}
if (DISCO==true)
{
DISCO_CARGADO = i;
CODIGO_CARGADO = CODIGO;
}
}
}
lo guardo todo en dos nuevas variables para usarlo con mas facilidad. El for comienza a partir de 45, solo por motivos de gusto, para no usar disco 1 disco 2, para que suena mas real.
El caso que primero lo probe con el disco 46 y me funciono, pero al poner el disco 45, me sale el error de fuera rango. No entiendo.
Bueno si alguien ve algo que me comente please.
Cita de: Arcadian en Mayo 27, 2017, 03:08:41 PM
Una forma es usando arrays. Empiezas el juego con cero discos, ponemos un objeto para controlar esos datos:
EVENTO CREATECódigo [Seleccionar]
global.discos=0 // Número de discos en nuestro inventario
for(i=1;i<=50;i+=1) // Loop entre todos los discos, la cifra es sólo orientativa
{
global.disco[i]=0 // Esta variable nos dirá si tenemos o no un disco en particular en nuestro inventario
}
Y desde ya dibujamos la variable de nuestro total de discos (dentro del objeto controlador, no del disco en si mismo):
EVENTO DRAWCódigo [Seleccionar]draw_text(x,y,string(global.discos))
Y ahora ya sí pasamos al objeto_disco; añadimos el código que nos dirá qué número de disco es:
EVENTO CREATECódigo [Seleccionar]disco=instance_number(objeto_disco)
Cuando el personaje coge el disco, por ejemplo al clicarlo, si no lo tenía ya, añade ese número de disco a su inventario:
EVENTO LEFT PRESSEDCódigo [Seleccionar]
if global.disco[disco]=0{global.discos+=1;global.disco[disco]=1}else show_message("Este disco ya lo tengo!");exit}