Primero que nada, hola.
hace ya rato que quiero hacer un juego rpg, que trabaje parecido al tibia... bueno, todo iba realmente bien hasta
que llegue a la parte de la AI de los mounstruos, investigando di con que utilizan el A* para llegar al personaje,
es una parte importante del rpg, asi que me gustaria aprender a hacerlo. bueno, leí como funciona el A* y traté
de crear uno propio, aun no funciona pero me gustaria tener su opinion para ver si me estoy acercando :) Gracias y a continuacion el codigo;
// argument0 = objeto a encontrar
//argument1 = Tamaño de los pasos (32x32)
//argument2 = id
var goal,steps;
goal=argument0.id

if argument1<1{steps=1}else{steps=argument1}
for (i=0;i<9;i+=1)
{
around[i]=0
switch(i)
{
case(1):around[i,1]=x-32;around[i,2]=y-32;if !place_free(around[i,1],around[i,2]){around[i,1]=-50000;around[i,2]=-50000};break
case(2):around[i,1]=x;around[i,2]=y-32;if !place_free(around[i,1],around[i,2]){around[i,1]=-50000;around[i,2]=-50000};break
case(3):around[i,1]=x+32;around[i,2]=y-32;if !place_free(around[i,1],around[i,2]){around[i,1]=-50000;around[i,2]=-50000};break

case(4):around[i,1]=x-32;around[i,2]=y;if !place_free(around[i,1],around[i,2]){around[i,1]=-50000;around[i,2]=-50000};break
case(5):around[i,1]=x+32;around[i,2]=y;if !place_free(around[i,1],around[i,2]){around[i,1]=-50000;around[i,2]=-50000};break

case(6):around[i,1]=x-32;around[i,2]=y+32;if !place_free(around[i,1],around[i,2]){around[i,1]=-50000;around[i,2]=-50000};break
case(7):around[i,1]=x;around[i,2]=y+32;if !place_free(around[i,1],around[i,2]){around[i,1]=-50000;around[i,2]=-50000};break
case(8):around[i,1]=x+32;around[i,2]=y+32;if !place_free(around[i,1],around[i,2]){around[i,1]=-50000;around[i,2]=-50000};break
}

}
with argument0
{
for (i=0;i<9;i+=1)
{
argument2.dist[i]=distance_to_point(argument2.around[i,1],argument2.around[i,2])
}
}
switch min(dist[1],dist[2],dist[3],dist[4],dist[5],dist[6],dist[7],dist[8])
{
case(dist[1]):x=around[1,1];y=around[1,2];break
case(dist[2]):x=around[2,1];y=around[2,2];break
case(dist[3]):x=around[3,1];y=around[3,2];break
case(dist[4]):x=around[4,1];y=around[4,2];break
case(dist[5]):x=around[5,1];y=around[5,2];break
case(dist[6]):x=around[6,1];y=around[6,2];break
case(dist[7]):x=around[7,1];y=around[7,2];break
case(dist[8]):x=around[8,1];y=around[8,2];break
}


:GM8: