Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: CyraxCraft en Abril 16, 2014, 03:17:16 AM

Título: Unknown variable index
Publicado por: CyraxCraft en Abril 16, 2014, 03:17:16 AM
Buenas, ando con un error con mi proyecto.

CitarERROR in
action number 1
of Mouse Event for Left Pressed
for object obj_invslot:

Error in code at line 2:
       if obj_slot_control.inv[index,0] != 0 && (obj_inv_m.spr_index = 0 && obj_inv_m.inv_index = 0){
                               ^
at position 30: Unknown variable index

el codigo en el left pressed:

if obj_inv.inventory = true{
    if obj_slot_control.inv[index,0] != 0 && (obj_inv_m.spr_index = 0 && obj_inv_m.inv_index = 0){
        //select item
        obj_inv_m.spr_index = obj_slot_control.inv[index,0];
        obj_inv_m.inv_index = obj_slot_control.inv[index,1];
        obj_slot_control.inv[index,0] = 0;
        obj_slot_control.inv[index,1] = 0;
    }
    if obj_slot_control.inv[index,0] != 0 && (obj_inv_m.spr_index != 0 && obj_inv_m.inv_index != 0 && obj_inv_m.spr_indexp != 0 && obj_inv_m.inv_indexp != 0){
        //place items
        obj_slot_control.inv[index,0] = obj_inv_m.spr_indexp;
        obj_slot_control.inv[index,1] = obj_inv_m.inv_indexp;
        obj_inv_m.spr_index = 0;
        obj_inv_m.inv_index = 0;
    }
      if obj_slot_control.inv[index,0] != 0 && (obj_slot_control.inv[index,0] = obj_inv_m.spr_index && obj_slot_control.inv[index,0]+obj_inv_m.spr_index <= 64) && (obj_inv_m.spr_index != 0 && obj_inv_m.inv_index != 0 && obj_inv_m.spr_indexp != 0 && obj_inv_m.inv_indexp != 0){
       //place items
        obj_slot_control.inv[index,1] += obj_inv_m.inv_index;
        obj_inv_m.spr_index = 0;
        obj_inv_m.inv_index = 0;
      }
      if obj_slot_control.inv[index,0] != 0 && (obj_slot_control.inv[index,0] != obj_inv_m.spr_index) && (obj_inv_m.spr_index != 0 && obj_inv_m.inv_index != 0 && obj_inv_m.spr_indexp != 0 && obj_inv_m.inv_indexp != 0){
       //swap items
        obj_inv_m.spr_index = obj_slot_control.inv[index,0];
        obj_inv_m.inv_index = obj_slot_control.inv[index,1];
        obj_slot_control.inv[index,0] = obj_inv_m.spr_indexp;
        obj_slot_control.inv[index,1] = obj_inv_m.inv_indexp;
      }
}


Donde se supone que tengo la variable declarada

for(i=0; i<41; i+=1){
    inv[i,0]=0;
    inv[i,1]=0;
   
}
Título: Re:Unknown variable index
Publicado por: vampy09 en Abril 16, 2014, 04:58:30 AM
for(i=0; i<41; i+=1){
    inv[i,0]=0;
    inv[i,1]=0;
}


Aqui no declaras la variable index, aqui estas creando dos arreglos con el mismo nombre: inv


Me parece que es un problema de scope.
Trate con haciendo global la variable index.
Para que no tengas que cambiar el código, donde declaras la variable index hazlo de la sig. manera:

globalvar index;
index = 0;
Título: Re:Unknown variable index
Publicado por: CyraxCraft en Abril 16, 2014, 06:24:55 AM
El problema se va, pero no queda como yo quiero.
me explico: estoy haciendo un inventario, hasta acá todo bien, pero luego cuando entro en la parte de mover los objetos del inventario (es decir, cambiarlo de lugar en otro slot) sale ese error.

Lo curioso es que en todo el inventario ya trabajé con el "obj_slot_control.inv[index,0]"
Solo en ese paso (exactamente en obj_invslot)

es como si hubiese una parte del codigo que este limitando el uso del index y en obj_slot_control solo están los dos arreglos.

No se si me explico.
Título: Re:Unknown variable index
Publicado por: vampy09 en Abril 16, 2014, 09:16:56 AM
En que objeto declaras/inicializas la variable index ?

Título: Re:Unknown variable index
Publicado por: penumbra en Abril 16, 2014, 10:19:11 AM
Por lo que comentas suena como que esa variable index debería estar declarada como global en un objeto controlador persistente para evitar el error. Ni idea de cómo hayas implementado el cambio de items en el inventario, ni cuántos objetos usas, pero el error unknown variable indica que esa variable no está disponible en todo momento para alguno de los objetos

Puedes probar a usar el debugger de GM8 para ver que pasa con la variable index cuando ocurre el error