У меня немного по другому
#name "MOVE"
//начальные точки
$startx=$_xmouse
$starty=$_ymouse
// конечные точки
$finishx= 150
$finishy= 150
// скорость перемещения
$MOVEX=10 // X
$MOVEy=8 // Y
//проверка если курсор возле края экрана
IF($startx>$_xmax-100)
$startx=$_xmax-100
END_IF
IF($starty>$_ymax-50)
$starty=$_ymax-50
END_IF
IF($startx<50)
$startx=50
END_IF
IF($starty<20)
$starty=20
END_IF
// проверяем куда двигать курсор + или -
$cheakx=DIST($startx,$starty,$finishx,$starty)
$cheaky=DIST($startx,$starty,$startx,$finishy)
MOVE($startx+$MOVEX,$starty+$MOVEy)
IF ($cheakx<DIST($_xmouse,$_ymouse,$finishx,$_ymouse))
$MOVEX=0-$MOVEX
END_IF
IF ($cheaky<DIST($_xmouse,$_ymouse,$_xmouse,$finishy))
$MOVEY=0-$MOVEY
END_IF
//двигаем курсор
WHILE (($starty!$finishy) &($startx!$finishx))
MOVE($startx,$starty)
IF (DIST($_xmouse,$_ymouse,$finishx,$_ymouse)>10)
$startx=$startx+$MOVEX
ELSE
$startx=$finishx
END_IF
IF (DIST($_xmouse,$_ymouse,$_xmouse,$finishy)>10)
$starty=$starty+$MOVEy
ELSE
$starty=$finishy
END_IF
END_CYC