je pense pas que ça soit trop dur en réfléchissant bien, par exemple pour heu un mec qui doit ramener du minerai d'un rocher tu ferais:
create
x=raffinerie.x
y=raffinerie.y
mode=0
step
{
roc=instance_nearest(x,y,rocher)
raf=instance_nearest(x,y,raffinerie)
if mode=0
{mp_potential_step(roc.x,roc.y,4,false)}
if mode=1
{mp_potential_step(raf.x,raf.y,4,false)}
}
collision rocher
if mode=0 mode=1
collision raffinerie
if mode=1 mode=0
enfin là c'est un moyen un peu simple il ne restera pas sur les roc ou raffineries mais tu peux aussi mettre plus de mode possible et une variable qui se remplit tant qu'il est à coté du rocher, dès qu'il a le max hop il change de mode et se dirige vers la raffinerie et quand il l'atteint la variable revient à 0... ou encore mieux la variable se remplit en fonction du minerai restant sur le rocher le plus proche ^^
enfin bref ça devrait pas être trop dur pour ça, et pour faire une unité qui se bat (je vais pas dire en code) tu fais du genre :
on stocke l'id de l'objet ennemi le plus proche
si cet objet est à moins de 150 pixels on va vers lui
tant quil est là on reste à l'attaquer et on rentre à la base dès qu'il est battu... toujours avec des mode et mp_potential_step ^^
et si tu veux arrondir les directions tu fais par ex direction=floor(direction/45)*45