Ну как я тебе напишу, если в каждой игре свои нюансы??
Ну вот тебе пример из другой игры. Вряд ли станет легче, я думаю
Пример
Код
:get_position
// Сохраняет текущую координату перса на карте ABS
if 1085, 523 2698032 abs // карта закрыта
kleft 1085, 523 abs // открываем
wait 720
end_if
set $a findcolor ( #mapX1, #mapY1 #mapX2, #mapY2 1 1 3689949 %arr 2 abs) // ищем себя на карте
if $a <> 0
set #x %arr[1 1] + #mapX1
set #y %arr[1 2] + #mapY1
set #mapPosX #x // Сохранил позицию перса на карте
set #mapPosY #y
else
set #mapPosX #mapHomeX
set #mapPosY #mapHomeY
end_if
wait 157
kleft 830, 135 abs // Закрываем карту крестиком
wait 200
return
// Бежим в направлении домашней точки (1 клик в ту сторону)
:goHome
//set #mapPosX 0 // координата X перса на карте ABS
//set #mapPosY 0 // координата Y перса на карте ABS
//set #mapHomeX 221 // точка на карте куда стремится перс ABS
//set #mapHomeY 345
//set #lookX1 60 // координата x левого верхнего угла области поиска
//set #lookY1 72 // координата y левого верхнего угла области поиска
//set #lookX2 938 // координата x правого нижнего угла области поиска
//set #lookY2 500 // координата y правого нижнего угла области поиска
set #dX #mapHomeX - #mapPosX // находим разницу текущих и желаемых координат
set #dY #mapHomeY - #mapPosY
// берем модули
if #dX < 0
set #dXm - #dX
else
set #dXm #dX
end_if
if #dY < 0
set #dYm - #dY
else
set #dYm #dY
end_if
set #sum #dXm + #dYm
set #sz size ( %doroga )
if #sz = 1
goto beg_dalee
end_if
if #sum < #doroga_dist // если почти прибежали на место, то определяем следующий пункт назначения
if #doroga_mode = 1
set #doroga_cur #doroga_cur + 1 // в следующий раз бежим уже на следующую точку
if #doroga_cur > #sz // если дошел до конца
set #doroga_cur #sz - 1
set #doroga_mode -1 // то бежим назад
end_if
goto beg_dalee
end_if
if #doroga_mode = -1
set #doroga_cur #doroga_cur - 1 // в следующий раз бежим уже на следующую точку
if #doroga_cur = 0 // если дошел до конца
set #doroga_cur 2
set #doroga_mode 1 // то бежим вперед
end_if
goto beg_dalee
end_if
if #doroga_mode = 0
set #doroga_cur #doroga_cur + 1 // в следующий раз бежим уже на следующую точку
if #doroga_cur > #sz // если дошел до конца
set #doroga_cur 1 // бежим на начало
end_if
goto beg_dalee
end_if
end_if
:beg_dalee
set #mapHomeX %doroga[ #doroga_cur 1 ] // для следующего раза
set #mapHomeY %doroga[ #doroga_cur 2 ]
if #dXm < #dYm
set #max #dYm // надо по модулю!
else
set #max #dXm
end_if
if #max = 0
return
end_if
set #dist ( #lookY2 - #lookY1 ) // максимальное допустимое расстояние клика от центра экрана (чтоб перс туда переместился)
set #x ( #dist * ( #dX ) / #max ) + #centerX
set #y ( #dist * ( #dY ) / #max ) + #centerY
if #x < #lookX1
set #x #lookX1
end_if
if #x > #lookX2
set #x #lookX2
end_if
if #y < #lookY1
set #y #lookY1
end_if
if #y > #lookY2
set #y #lookY2
end_if
kleft #x, #y // бежим в расчетную точку =)
return