Sorry, I didn't go through the entire code (partly because you don't use the code tags), but wouldn't it be easier to manually move the character instead of using the .Walk command? Then you wouldn't have to do all the stopmoving-setspeed-walk-stuff.