Buenas comunidad, hace an~os que no posteaba por aquí!

Vayamos al punto. Me encuentro recién aprendiendo a usar GML, pero no logro hacer lo siguiente:
Evento Create

//Variable direccion.  0=derecha, 1=izquierda
dir=0;


Evento Step
//Derecha
if dir=0
{
if x=x+3
{
sprite_index=sprite3
image_speed=.2
}
else
sprite_index=sprite4
}
//Izquierda
if dir=1
{
if x=x-3
{
sprite_index=sprite2
image_speed=.2
}
else
sprite_index=sprite0
}


Lo que trato de hacer en este pedazo de código, es: Si la variable dirección tiene valor 0, es decir, a la derecha, el esprite de mi personaje es aquel que mira hacia la derecha. Pero, si ademas de que la variable tiene valor 0, y la variable de la coordenada en X se suma a si misma 3 unidades, debe cambiar a un sprite animado en el que mi personaje avanza hacia la derecha. El código termina haciendo lo mismo pero inversamente, es decir, a la izquierda.

Este es mi codigo al presionar la tecla Izquierda:
dir=1;
if place_free(x-1,y)
{
x-=3
}


Y este al presionar la tecla Derecha:
dir=0;
if place_free(x+1,y)
{
x+=3
}


Lo que si funciona: Según la tecla que presione, izquierda o derecha, la variable "dir" (dirección) cambia de valor, haciendo así que mi personaje apunte a la dirección en que avanza.

Lo que no funciona: Cuando mi personaje se mueve, su sprite no cambia a uno en que la animación de la sensación de que el personaje corre.

Soy un noob aun esto del código, espero puedan resolver mi duda. Desde ya, gracias.

El problema está donde dice...

if x=x+3

...y donde dice...

if x=x-3

...pues, básicamente, le estás pidiendo al programa que compruebe si la variable x es igual a si misma mas o menos tres, lo cual siempre va a ser falso, porque x siempre es igual a x.
Lo que necesitas hacer es revisar el valor de x con respecto al valor anterior de x, o lo que es lo mismo, xprevious.

Entonces, en el primer caso, donde x tiene que ser mayor a xprevious, mi solución es poner:

if (x > xprevious)

y así mismo, donde tiene que ser menor,

if (x < xprevious)


Espero que te haya ayudado :) me avisas si tienes problemas con el código.

Excelente, me ha funcionado muy bien.