Buenas Makeros!

Hoy quería hacerles una pregunta muy particular que no se como solucionar, resulta que estoy trabajando en un juego de estrategia por casilleros y cuando una criatura esta al lado de otra quiero que se la pueda atacar (éstas no tienen colisión), podría hacerlo si hubiera alguna forma de obtener la ID de la instancia en cuestión ya que en base a las coordenadas de mi criatura puedo conocer las coordenadas de la otra criatura;

La pregunta concreta sería:
¿Existe alguna forma de obtener la ID de una instancia conociendo sólo sus coordenadas? y, si existe ¿Cuál es?

Desde ya Muchas gracias!!!

¡Buenas!

La función que buscas es instance_position(x,y,objeto), siendo objeto el tipo de objeto del cual quieres su id en esa posición.

Cualquier duda, aquí estamos  :)

¡Un saludo! ¡Ánimo!

Gracias por responder!
Acabo de hacer una prueba pero me parece que la función que mencionaste no devuelve la ID. Estás seguro que no devuelve otra cosa porque en un intento me devolvió -4 siendo que la id del objeto era 100003.
Espero tu respuesta!

Sí, devuelve el ID. -4 significa que no hay una instancia en ese lugar, quizá solo la detecte si tiene mask.

¡Un saludo!

Tenés otra manera sin tener que ponerles mask pero es un poquito más rebuscada, tendrías q chequear la posición de todos los objetos y ver si el objeto que querés se encuentra en esas coordenadas, algo asi

odib=0
with(all)
{
if object_index=objetodeseado and x<other.x+10 and x>other.x and y>other.y-5 and y<other.y+5
{
other.obid=id
}
}

Entonces chequearía en todos los objetos si hay alguna instancia del objetodeseado que cumpla las condiciones de coordenadas guardaría su id en la variable obid, si no encuentra ninguna devuelve 0, podés usar distance_to_point o cualquier función que se te ocurra para el chequeo de coordenadas, te puse eso como ejemplo. Bueno, ya verás la manera q más te convenga, suerte!
PD: También podés usar un array para guardar los id's si es que hubiera más de uno, o guardar la posición en otra variable para que la función se quede con el más cercano... Depende de lo que quieras




Hola Makero Luciano 1892:


  La solución que te ofrece al makero Texic está buena. Solo faltaría agregarle que GM tiene un arreglo ("array") donde guarda todas las instancias creadas de cada objeto:  instance_id[ k ]   donde k sería el indice partiendo desde cero.

  Si conoces las coordenadas del objeto al que le quieres hallar la id, entonces puedes recorrer este arreglo uno por uno y preguntarle quién tiene esas oordenadas. Quien las tenga es muy probable que sea el objeto que buscas. Ejemplo:

   ID = "" //  aquí estará el id del objeto encontrado y en cado de no encontrarlo tendrá al último creado.
   for (i=0; i<instance_count; i+=1)
     {
       ID = instance_id[ i ] ;
       if (ID.x == x_conocida and ID.y == y_conocida)
         {
      // en este pedazo escribes lo que quieres hacer con el objeto encontrado. Aquí solo entra si coinciden las coordenadas.
        }
     }



  Espero te sirva de algo y hasta la próxima.