Enero 09, 2015, 05:32:28 PM Ultima modificación: Enero 09, 2015, 05:35:46 PM por arcangelcaos
Hola, aquí ando otra vez. Vamos a ver si me explico lo que quiero, haber como me iluminais porque no doy con la tecla.

Tengo una room, con 2 filas horizontales, con 14 puntos "x" fijado a cada una.
Yo tengo una reserva de criaturas abajo de la room, arrastro la criatura hasta uno de esos puntos en una de las líneas. Si esta ocupada lo devuelve a la reserva, y si no la coloca centrada.

He aquí donde viene el tema, yo ahora le doy a un botón pasar turno.
Cada criatura tiene extablecido unos movimiento en línea recta, 2, 3, 4, etcc.  multiplicado por 92 cada uno, para asi llegar al punto de la línea que le corresponda.

Como ya se los puntos donde puede haber criaturas hago lo siguiente:
if not place_free (x,y,)
    criatura = colision_point(x,y, objAmigo)    //objAmigo es un padre de cada criatura
    move_towar_point ( criatura.x+(movimiento*92), criatura.y+(movimiento*92))

El problema es que no se para, sigue el movimiento, como puedo hacer que pare cuando llegue a ese punto.
Pero es que es mas, para completar la información, puede estar en 14 puntos diferente.
Otra cosa, he de colocar que antes de iniciar el movimiento compruebe si tiene a 92pix una criatura, si es asi, comprube si es amiga o enemiga (objetos padres), si es amiga, pase por encima, si es enemiga ataque (función independiente), y si no hay nada, que lo compruebe a 184 px, porque tiene de alcance 2 cuadros. Si tampoco hay nada, ande 92 pix, vuelva a comprobar si hay alguna critura a su alcance, delante, no al rededor, y vuelva a  empezar, asi hasta los movimientos que tenga asigandos en el evento créate.

Valo, yo he pensado en collision_ line (x,y, x1, y1, objeto) hasta hay bien. Pero como hago que se pare, con move_towar no para de andar.

Ahh, y otra cosa que me pasa, puede haber varias criaturas, y quiero que ande una, haga sus ataques y cuando termine que empiece la otra, y ahora se mueven todas prácticamente al mismo tiempo. Hay alguna manera que hasta que no finalice una función no continue con otra???

Gracias, espero haber explicado bien.

EJEMPLO UN POCO GRAFICO

__ __ __ __ __ __ __ __
__ __ __ __ __ __ __ __

A_ __ __ E_ __ __
__ __ __ __ __ __

Que A avance los movimientos, hasta que llegue a su destino y se pare, y si se encuentra a E durante el camino, que le ataque.

Me estoy volviendo loco, no se como hacerlo.

Necesito que cuando llegue a un determinado punto se pare

Yo hago
if not place_free(250,400)
   { criatura = collision_point (250,400, objAmigo, false, false)
        with (criatura)
        {
      x1= 430
      sprite_index = sprEspada2Mov
      move_towards_point (x1, 384,8)
        }


Con esto veo si hay algún "amigo" en ese sito y le hago avanzar. Pero no se para

Y en step del objeto le he puesto
if x = x1
{ speed = 0}


Pero no se para, que hago, como lo hago. Se que se ha hablado mucho, pero no doy con la tecla. Y es aki precisamente el tema, no hay teclas. Se moverá solo y se parará solo al llegar.


hola..  no entiendo muy bien tu codigo  pero  como se mueve con cierta speed y direccion los pixeles no siempre son precisos y por tanto puede que  su x "nunca"  sea igual a x1
por que puede que x1 sea igual a por ejemplo 430.000001 y por eso no funciona  prueba con :
if x=floor(x1){speed=0};
y si no funciona, en vez de usar el move_towards usa  mp_potential_step

#3 Enero 10, 2015, 12:09:55 PM Ultima modificación: Enero 10, 2015, 12:24:07 PM por arcangelcaos
Gracias. Pero estoy probando otra cosa.
Creo un path temporal, punto de inicio y punto final. Hasta aqui bien. Pero necesitaria que cuando llegase a ese punto hiciera una cosas, lo malo es que me las hace antes de llegar. El path es de un scrip independiente de la instancia.



EDIT:
Lo conseguí. Buscando por hay vi una evento en other que es paht end, o algo así. Y hay pongo el código que quiero, perfecto, gracias.
Seguire ampliando el código para que haga todo lo que quiero.