Quiero que un objeto ejecute un código, una vez para cada instancia de tal objeto. Es dificil de explicar, lo que quiero hacer es que cada bala se desvie con varios imanes, entonces tiene que calcular la atracción una vez para cada imán.
El código es así y fuanciona bien cuando hay un imán:
Citardir=point_direction(x,y,obj_iman.x,obj_iman.y)
dist=distance_to_point(obj_iman.x,obj_iman.y)
motion_add(dir,(50/(dist+1)))

Lo que pasa es que ahora quiero agregar muchos imanes, y obviamente sólo tiene el cuenta el primero creado
¿Cómo puedo hacer para que sea atraído por todos los imanes?

Otra forma sería con un "with obj_iman" pero como hago para hacerle motion_add a cada bala?
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy


  Saludos Amigo Mgbu:


  ¡Muy buena pregunta!  8)   

  Precisamente tienes ya la respuesta: utilizar el "with". Una vez dentro de la clausula "with" no estás referenciando al objeto inicial sino en al objeto que llamaste dentro del "with". Por ejemplo:


 
Citarinstance_id = array_instance[1,2];   //  esto es un sugerencia...
 
  with (instance_id)                             //   a partir de esta línea estamos dentro de la instancia nombrada..
   {
        motion_add(dir,(50/(dist+1)))
   }


  Mi sugerencia es que tengas las "id" de las instancias en una lista o "array" y las llames según necesites.  8)

  Espero hayas entendido... Un abrazo... ;D



Ah, gracias! ahí lo pude hacer con tus consejos, se me ocurrió poner la id en una variable global:
Citarglobal.tmp=id
with obj_iman {
    global.tmp.dir=point_direction(global.tmp.x,global.tmp.y,x,y)
    global.tmp.dist=distance_to_point(global.tmp.x,global.tmp.y)
    with global.tmp motion_add(dir,(50/(dist+1)))
}

Gracias!
El Manual

- Ley de la gravitación selectiva: toda herramienta se caerá donde produzca el mayor daño.
- Si todo parece estar bien, es obvio que uno no encontró el problema
- Todo aquello que se corte a medida resultara ser demasiado corto.
- Todo archivo borrado era necesario, todo archivo conservado es inutil
- Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.

                                                               Murphy