Game Maker: Como conseguir el número de una instancia

GreyShock

Hola amigos del Game Maker, he estado googleando y no saco nada en claro, este es mi problema:

Quiero saber cual es el número/orden de creación de una instancia y no encuentro manera de recuperarlo en la documentación.

Para poner un ejemplo más claro de lo que quiero conseguir, esta función es un buen ejemplo:

instance find(obj, n);

Esa n, el segundo parámetro, como se consigue?

Tengo entendido que n es el orden de creación de la instancia un tipo de objeto. Así que si hacemos...

a = instance_create(0,0,obj_mono);
b = instance_create(0,0,obj_mono);
c = instance_create(0,0,obj_mono);

instance find(obj, 0); //devuelve a
instance find(obj, 1); //devuelve b
instance find(obj, 2); //devuelve c

Pero no sé como hacerlo a la inversa, conseguir el número de instancia de a.
¿Si no sé el orden en el que las he creado, como puedo saber cuál es el número de c?

Tengo otras soluciones, que es en el momento de crear una instancia guardar en una variable de la propia instancia cual es su número, pero quería saber si hay alguna forma de hacerlo sin recurrir a ello.

gonya707

en el manual no pone por ningun lado que se pueda, pero se me ocurre una chapu para hacerlo. Simplemente en el onCreate event crea manualmente una variable ID para cada instancia e incrementa una variable global una unidad cada vez para que no se vayan repitiendo. Entonces solo tienes que acceder al .ID de esa instancia.

Otra que se me ocurre es que almacenases un array con tus a, b, c,.... y vayas accediendo a ellas de manera ordenada.

No se cual de las dos es mas chapu

2 respuestas
GreyShock

#2 Lo que he hecho de momento para salir del paso es en el array de creación de esas instances guardarles el índice.

en plan..

for(var  i = 0;i<10;i++){
       with(instance_create(0,0,obj_culito)){
               index = i;
       }
}

pero vaya, me sorprendía que existiera una función para buscar instancias por orden de creación pero que no haya ninguna forma de saber este orden de creación xD

Jastro

#1 #2 vaya forma de complicaros la vida xD

Cuando se crea una instancia, se guarda en la propiedad id.

simplemente coge esa id.

Prueba Show_message(id);

Y te saldra.

PD: http://docs.yoyogames.com/source/dadiospice/002_reference/objects%20and%20instances/instances/instance%20properties/id.html

1 respuesta
GreyShock

#4 Pero es que no quiero la id, Jastro, quiero saber su orden de creación.

Jastro

Si no te sirve eso, no veo otra opcion viable

que la que dijiste arriba.

EDIT: Mirando por san google y la documentación no encuentro ná de ná, lo unico que el autor decia que queria implementar un sistema para elegir el orden de creación, asi que va a ser que no hay propiedades ni ná.

BLZKZ

creo que la id es incremental.

Aún así, en el create de la room puedes tener un array y en el create del objeto setteas un campo del array con id de la instancia, siendo la posición del array el orden de creación. Así tienes el orden y el id de la instancia para hacer lo que quieras con ello.

Algo más vi, luego edito y comento, que aún no he comido :)

1 respuesta
GreyShock

#7 A ver, básicamente necesito su posición en 0,1,2,3,4.. para espaciar bien los submenús:

y = parent.y + index*span + parent.image_yscale+15;

Donde index es 0,1,2,3,4, vamos básicamente el orden de creación de cada instancia submenú. Y ya está solucionando y funcionando con simplemente en cada evento Create de cada submenu asignar su index de creación.

La pregunta iba más enfocada a que me parece curioso que exista una función para llamar a una instancia por su orden de creación, pero no exista manera de conocer este dato.

2 respuestas
Jastro

#8 Si, estuve mirando y parece que lo implementarán en el siguiente parche, segun lei.

1
BLZKZ

#8 http://gmc.yoyogames.com/index.php?showtopic=586623

XDDDDDDDD

1 1 respuesta
GreyShock

#10

Currently is "half" based around its depth, and half around the room order. That's unacceptable. We want a clear order, one that you can change if you really have to.

La madre que los parió xDD

1 respuesta
BLZKZ

#11 miedo me da saber cómo está hecho game maker por debajo, parece spaguetti code de 1995 XDDDDDDDDDDDDDDDD

1 1 respuesta
gonya707

#12 un goto fest fijo

javifugitivo

En teoria, se puede cambiar el orden de creación, desde la propia room, con el botón Instance Order. Sin embargo te salen las Ids y tienes que rastrear que ids te interesan y cambiar su orden desde ahí. Tampoco lo he trasteado mucho lo reconozco.

Usuarios habituales

  • javifugitivo
  • gonya707
  • BLZKZ
  • GreyShock
  • Jastro