Изображения вставляются в сообщения при помощи соответствующего тега.
Тогда, на ум приходит только получение рейтинга удалённости точек от центра, путём сложения их разницы, после чего, переместить курсор по их координатам в порядке возрастания. Для начала, потребуется найти все точки. Воспользуемся решением от serzh82saratov:
#SingleInstance Force
#NoEnv
ListLines Off
SetBatchLines -1
SetTitleMatchMode, 2
CoordMode, Pixel
CoordMode, Mouse
Global center_x, center_y, rateArr := {}, order := []
F1::
WinGetPos, win_x, win_y, win_w, win_h,Тайтл окна, в котором производится поиск
center_x:= win_x + win_w // 2, center_y:= win_y + win_h // 2, srch_w := win_x + win_w, srch_h := win_y + win_h
dataArray := SeveralSearch(win_x, win_y, srch_w, srch_h, ["chest.png"], 50)
Loop,% len := dataArray.Length()
SetRateItem(dataArray[ A_Index ])
Loop,% len
MouseMove, rateArr[ order[ A_Index ] ][1], rateArr[ order[ A_Index ] ][2]
return
SeveralSearch(ix1, iy1, w, h, files, variation = 0) {
Coords := []
For k, file in files
{
x1 := ix1, y1 := iy1, x2 := ix1 + w - 1, y2 := iy1 + h - 1
prY := y2, ErrorCount := 0
Loop
{
ImageSearch, mX, mY, x1, y1, x2, y2, *%variation% %file%
If (ErrorLevel && ++ErrorCount > 1)
Break
If (mY = "" || mY > prY)
x1 := ix1, y1 += 1, prY := y2
Else
x1 := mX + 1, ErrorCount := 0, y1 := mY, prY := mY, Coords.Push([mX, mY])
}
}
Return Coords
}
SetRateItem(item) {
a := center_x < item[1] ? item[1] - center_x : center_x - item[1]
b := center_y < item[2] ? item[2] - center_y : center_y - item[2]
rateArr[rate := a + b] := item, doInsert := true
Loop,% order.Length(){
if (rate <= order[ A_Index ]) {
order.InsertAt(A_Index, rate)
doInsert := false
break
}
} (doInsert && order.Push(rate))
}