randomize()
verdad = choose(1,2,3,4)
e=1
while (e<5)
{
    randomize()
    i= choose("Rojo","Amarillo","Verde","Azul","Negro")
    i2 = choose(1,2)
    a = "obj"+string(i)+string(i2)
    a2 = "objPadre"+ string(i)
    a = asset_get_index(a)
    if instance_exists(a2)
    {
    }
    else
    {
     switch(e)
     {case 1: x1=25; y1= 150;break
      case 2: x1=240; y1= 150;break
      case 3: x1=25; y1= 570;break
      case 4: x1=240; y1=570;break
     }
      instance_create(x1,y1,a);
        if verdad = e
        {a.verdadero = true}
        e+=1
    }

}


Bien, lo que pretendo es crear 4 objetos de diferente color. Si lo pongo sin el while, y lo repito 4 veces, me lo hace bien algunas veces, y otra solo pone 2 o 3.
Pero con el while no me detecta si existe el objeto, yo creo que es por que se ejecuta este código mas rápido que se crean los objetos, por eso no lo detecta.
Para aclarar.
Esto esta en créate de un objeto control.
Me da igual repetir i2, pero el i es el que tiene que ser único.
Tiene un objpadre cada objeto identificando el color, y esta comprobado.

Gracias de antemano.

Pues hay muchos problemas con el código:


  • El objeto no se detecta porque en la línea if instance_exists(a2), a2 es una cadena, pero se requiere un índice para que funcione.
  • Otro detalle es que primero "a" se define como cadena y después como índice.
  • Además el ciclo puede hacer más repeticiones de las necesarias porque se crea una instancia de "a" sólo cuando "a2" no existe, y tampoco se verifica que "a" existe.
  • Y por último a.verdadero = true sólo funcionará con la primera instancia creada y no con la que se acaba de crear.

Gracias por responder, pero añadiendo esto
a2 = asset_get_index(a2)

funciona perfectamente, Ni un fallo