buenas estoy creando un contador de movimiento, y este es mi codigo:
// Movimientos Cuadrado

if !keyboard_check(vk_up) and !keyboard_check(vk_down) and keyboard_check_pressed(vk_right) and place_free(x + 1, y) 
    {
    x += 24;
    movimiento = 1
    }

if !keyboard_check(vk_up) and !keyboard_check(vk_down) and keyboard_check_pressed(vk_left) and place_free(x - 1, y)
    {
    x -= 24;
    movimiento = 1
    }

if !keyboard_check(vk_right) and !keyboard_check(vk_left) and keyboard_check_pressed(vk_down) and place_free(x, y + 1)
    {
    y +=24;
    movimiento = 1
    }
   
if !keyboard_check(vk_right) and !keyboard_check(vk_left) and keyboard_check_pressed(vk_up) and place_free(x, y - 1)
    {
    y -= 24
    movimiento = 1
    }
 
// Colision ob_bloque

if place_meeting(x, y, obj_bloque)
{
     x = xprevious;
     y = yprevious;
}

.
Lo que quiero esq cuando no haya movimiento la variable movimiento sea igual a 0. Todo esto esta montado en Step
Muchas Gracias

// Colision ob_bloque

if place_meeting(x, y, obj_bloque)
{
     x = xprevious;
     y = yprevious;
     movimiento=0
}

Tambien

if keyboard_check_released(vk_left) or keyboard_check_released(vk_right) or keyboard_check_released(vk_up) or keyboard_check_released(vk_down) {movimiento=0}

Lo que me gustaria saber la expresion que si esta colisionando el contador no reste, es que he cambiado el codigo:

// Movimientos Cuadrado

if !keyboard_check(vk_down) and !keyboard_check(vk_up) and keyboard_check_pressed(vk_right) and place_free(x + 1, y) 
    {
    x += 24;
    global.score_move -= 1;
    }

if !keyboard_check(vk_down) and !keyboard_check(vk_up) and keyboard_check_pressed(vk_left) and place_free(x - 1, y)
    {
    x -= 24;
    global.score_move -= 1;
    }

if !keyboard_check(vk_right) and !keyboard_check(vk_left) and keyboard_check_pressed(vk_down) and place_free(x, y + 1)
    {
    y +=24;
    global.score_move -= 1;
    }
   
if !keyboard_check(vk_right) and !keyboard_check(vk_left) and keyboard_check_pressed(vk_up) and place_free(x, y - 1)
    {
    y -= 24
    global.score_move -= 1;
    }
 
// Colision ob_bloque

if place_meeting(x, y, obj_bloque)
{
     x = xprevious;
     y = yprevious;
}

Muchas Gracias

Hola, no he entendido bien, pero seria algo asi..... ???

if !(place_meeting(x, y, obj_bloque))  //si no esta el bloque
{

if !keyboard_check(vk_down) and !keyboard_check(vk_up) and keyboard_check_pressed(vk_right) and place_free(x + 1, y) 
    {
    x += 24;
    global.score_move -= 1;
    }

if !keyboard_check(vk_down) and !keyboard_check(vk_up) and keyboard_check_pressed(vk_left) and place_free(x - 1, y)
    {
    x -= 24;
    global.score_move -= 1;
    }

if !keyboard_check(vk_right) and !keyboard_check(vk_left) and keyboard_check_pressed(vk_down) and place_free(x, y + 1)
    {
    y +=24;
    global.score_move -= 1;
    }
   
if !keyboard_check(vk_right) and !keyboard_check(vk_left) and keyboard_check_pressed(vk_up) and place_free(x, y - 1)
    {
    y -= 24
    global.score_move -= 1;
    }
 
}
else  // si esta
{que haga lo que sea}

Siento si no me expresado bien, lo que quiere es que cuando colisione no cuente movimientos, y no se como ponerlo
Muchas Gracias

Haber si te entiendo. Quieres contar los movimientos que hace ti objeto no??. Y si topa no puede moverse? O se puede mover pero no cuenta movimientos?? Explica un poco mas porfa.

el objeto cuando colisiona no se puede moverse y tampoco el contador de movimeintos deberia restar movimientos.
Muchas Gracias

Acabo de probar tu codigo y funciona, se detiene al chocar con las paredes y solo resta cuando se mueve y no cuando tiene un obstaculo enfrente. Cual es el problema  ???

La solucion es poner el objeto de colision en solido, jajajajaja.  al utilizar place_free. Cosa que yo no tenia. A veces te pones a dar vueltas y vueltas y despues es una tonteria. Gracias 3d gemenis y a los demas por el interes
Muchas Gracias