La cuestión es que no me deja andar una vez caigo en el obj_solid_platform, no se que es lo que falla la verdad. Dejo aqui el codigo por si alguien se ofrece a ayudar.

Código:

Script:
///Collision

if (argument0.solid && !place_free(x + hspeed, y + 1)) {
    x -= hspeed;
}

if (place_meeting(x + hspeed, y + vspeed, argument0)) {
    if (vspeed > 0 && y - vspeed < argument0.y + step_threshold) {
        y = other.y - 1;
        vspeed = 0;
        gravity = 0;
        state_id = state_idle;
        entered_new_state = true;
        jump_count = 0;
        current_platform = argument0.id;
    }
    else if (argument0.solid) {
        y -= vspeed;
        vspeed = 0;
    }
}

este script lo llamo desde un event collision. Gracias de antemano.

la verdad no entiendo como se complican tanto la vida los que hacen scripts plataformeros xd

bueno, para empezar, te recomiendo que busques otro código que el que encontraste xd que vaya todo en step, porque en lo de colisión es bastante incómodo, donde verifique si hay sólido, en vez de place_meetings, place_frees..

Sobre tu pregunta, lo que se me ocure es el error básico, en tus sprites, el sprite player que salta o cae, segun tengas, y los del player quieto y andando, osea, todos los que tengas del player, ponle la misma mask y el mismo offset. Ya que puede ser que al cambiarte el sprite al tocar el suelo (cambios de sprite que SUPONGO tendras por donde el step en otro script o código), pues la mask del nuevo sprite se mete debajo del suelo, por lo que al ser sólido, el script lo detecta y no deja moverte


Pero bueno, también puedes probar de una forma chapucera poner en step "if !place_free(x,y+1) y-=1;" que no sé si te dejará pegando botecillos xd
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]