The problem is in the movement.script. You probably forgot to copy the CanMoveThere function from the original thread.
The entire movement.script should look like this:
#include "scripts\base.inc"
#include "scripts\keys.inc"
var TargetX, TargetY;
var LastDir = -1;
var CurrentDir = -1;
while(true)
{
// get a requested direction depending on pressed-down keys
if (Keyboard.IsKeyDown(VK_LEFT) && Keyboard.IsKeyDown(VK_UP)) CurrentDir = DI_UPLEFT;
else if(Keyboard.IsKeyDown(VK_LEFT) && Keyboard.IsKeyDown(VK_DOWN)) CurrentDir = DI_DOWNLEFT;
else if(Keyboard.IsKeyDown(VK_RIGHT) && Keyboard.IsKeyDown(VK_UP)) CurrentDir = DI_UPRIGHT;
else if(Keyboard.IsKeyDown(VK_RIGHT) && Keyboard.IsKeyDown(VK_DOWN)) CurrentDir = DI_DOWNRIGHT;
else if(Keyboard.IsKeyDown(VK_LEFT)) CurrentDir = DI_LEFT;
else if(Keyboard.IsKeyDown(VK_RIGHT)) CurrentDir = DI_RIGHT;
else if(Keyboard.IsKeyDown(VK_UP)) CurrentDir = DI_UP;
else if(Keyboard.IsKeyDown(VK_DOWN)) CurrentDir = DI_DOWN;
else CurrentDir = -1;
if(CurrentDir==LastDir)
{
// check for blocked areas
if(!CanMoveThere(CurrentDir)) actor.Reset();
}
else
{
// start walking
if(CurrentDir==-1 || !CanMoveThere(CurrentDir)) actor.Reset();
else
{
actor.TurnTo(CurrentDir);
switch(CurrentDir)
{
case DI_LEFT:
actor.PlayAnimAsync("actors\molly\ll\walk.sprite");
break;
case DI_RIGHT:
actor.PlayAnimAsync("actors\molly\rr\walk.sprite");
break;
case DI_UP:
actor.PlayAnimAsync("actors\molly\uu\walk.sprite");
break;
case DI_DOWN:
actor.PlayAnimAsync("actors\molly\dd\walk.sprite");
break;
case DI_UPRIGHT:
actor.PlayAnimAsync("actors\molly\ur\walk.sprite");
break;
case DI_UPLEFT:
actor.PlayAnimAsync("actors\molly\ul\walk.sprite");
break;
case DI_DOWNRIGHT:
actor.PlayAnimAsync("actors\molly\dr\walk.sprite");
break;
case DI_DOWNLEFT:
actor.PlayAnimAsync("actors\molly\dl\walk.sprite");
break;
}
}
}
LastDir = CurrentDir;
Sleep(20);
}
function CanMoveThere(Direction)
{
var CanMove = true;
switch(Direction)
{
case DI_LEFT:
if(!Scene.IsWalkableAt(actor.X-15,actor.Y)) CanMove = false;
break;
case DI_RIGHT:
if(!Scene.IsWalkableAt(actor.X+15,actor.Y)) CanMove = false;
break;
case DI_UP:
if(!Scene.IsWalkableAt(actor.X,actor.Y-15)) CanMove = false;
break;
case DI_DOWN:
if(!Scene.IsWalkableAt(actor.X,actor.Y+15)) CanMove = false;
break;
case DI_UPRIGHT:
if(!Scene.IsWalkableAt(actor.X+15,actor.Y-15)) CanMove = false;
break;
case DI_UPLEFT:
if(!Scene.IsWalkableAt(actor.X-15,actor.Y-15)) CanMove = false;
break;
case DI_DOWNRIGHT:
if(!Scene.IsWalkableAt(actor.X+15,actor.Y+15)) CanMove = false;
break;
case DI_DOWNLEFT:
if(!Scene.IsWalkableAt(actor.X-15,actor.Y+15)) CanMove = false;
break;
}
return CanMove;
}
You were missing the last part.
If there is some problem with your game, always check the wme.log file in your project folder. It logs any runtime errors which is often very useful.