Hola soy nuevo usando Game Meker   :D

Cuando uso este código para que mi personaje salga de la habitación y regrese por la otra esquina

if (x < 0 && hspeed < 0) x = room_width + sprite_xoffset;
if (x > room_width && hspeed > 0) x = -sprite_width + sprite_xoffset;
if (y < 0 && vspeed < 0) y = room_height + sprite_yoffset;
if (y > room_height && vspeed > 0) y = -sprite_height + sprite_yoffset;

Cuando salgo con el personaje por la derecha me regresa por la izquierda
pero cuando salgo por la izquierda y  regresa por la derecha  no puedo moverlo para ninguna parte se queda congelado. :(

Parece que se interfieren las condiciones.

Yo uso un código como este
[gml]
if (x < offset) x += room_width + (offset * 2);
if (x > room_width + offset) x -= room_width + (offset * 2);
if (y < offset) y += room_height + (offset * 2);
if (y > room_height + offset) y -= room_height + (offset * 2);
[/gml]

Cambia offset por tus propios valores.
Puedes probar el ejemplo en GMLive.