по идее, функция типа такой позволит продолжать движение, когда препятствие пропадет:
function HeroMoveThread(hero, x, y, f)
while 1 do
while not IsPlayerCurrent(GetObjectOwner(hero)) do
sleep()
end
local cx, cy, cf = GetObjectPosition(hero)
if cx == x and cy == y and cf == f then
break
end
MoveHero(hero, x, y, f)
sleep()
end
end
startThread(HeroMoveThread, имя_героя, координаты_назначения)
если MoveHero поменять на MoveHeroRealTime, то препятствия будут игнорироваться, но игнорирование будет полным, т.е. если препятствие, например, герой, то боя с ним не случится(хотя думаю, это исправляемо, но сложнее)