Здравствуйте, немного опишу проблему, в которой нуждаюсь в помощи.
Имеется скрипт на ловлю рыбы в одной игре, рыба спавнится в рандомной точке локации, поиск этой самой рыбы производится по части картинки этой рыбы.
set $path "C:\Users\Имя пользователя\Desktop\Pilot\"
set %cash[1] *Картинка рыбки*
set #a findimage (#startX #startY #endX #endY ($path%cash[#i].bmp) %crds #handle 2 25 1 10)
log #a
if #a > 0
log X= %crds[1 1] Y= %crds[1 2]. Цель Найдена
kleft %crds[1 1] %crds[1 2] // кликнули
end_if
end_for
Ищем картинку рыбы, потом ищем знак что она занята. Если знак не найдён, то ловим рыбу, если найден, то считаем разницу в координатах рыбы и знака. Если разница меньше какого-то числа, значит знак рядом с рыбой, т. е. она занята, если больше значит знак далеко от рыбы, можно ловить её.
set #delta 25 // на каком расстоянии может находится знак от рыбы
log clear
log mode compact
set #a findimage (0 0 1920 1080 ("C:\Рыба.bmp") %crds 2 80 1 10)
log "#a" = #a
if #a > 0
log X= %crds[1 1] Y= %crds[1 2]. Рыба Найдена
move %crds[1 1] %crds[1 2]
wait 1000
set #b findimage (0 0 1920 1080 (C:\знак.bmp) %crds2 2 80 1 10)
log "#b" = #b
if #b > 0
move %crds2[1 1] %crds2[1 2]
wait 1000
log X= %crds2[1 1] Y= %crds2[1 2]. Знак Найден
set #deltaX %crds[1 1] - %crds2[1 1]
set #deltaY %crds[1 2] - %crds2[1 2]
log Разница между координатами: abs(#deltaX) abs(#deltaY)
if abs(#deltaX) < #delta and abs(#deltaY) < #delta
log Нельзя ловить рыбу
else
log Можно ловить рыбу
kleft %crds[1 1] %crds[1 2]
end_if
else
log Знак не найден, можно ловить рыбу
kleft %crds[1 1] %crds[1 2]
end_if
end_if
end_script
set #delta 25 // на каком расстоянии может находится знак от рыбы
log clear
log mode compact
set #a findimage (0 0 1920 1080 ("C:\Рыба.bmp") %crds 2 80 1 10)
log "#a" = #a
if #a > 0
log X= %crds[1 1] Y= %crds[1 2]. Рыба Найдена
move %crds[1 1] %crds[1 2]
wait 1000
set #b findimage (0 0 1920 1080 (C:\знак.bmp) %crds2 2 80 1 10)
log "#b" = #b
if #b > 0
move %crds2[1 1] %crds2[1 2]
wait 1000
log X= %crds2[1 1] Y= %crds2[1 2]. Знак Найден
set #deltaX %crds[1 1] - %crds2[1 1]
set #deltaY %crds[1 2] - %crds2[1 2]
log Разница между координатами: abs(#deltaX) abs(#deltaY)
if abs(#deltaX) < #delta and abs(#deltaY) < #delta
log Нельзя ловить рыбу
else
log Можно ловить рыбу
kleft %crds[1 1] %crds[1 2]
end_if
else
log Знак не найден, можно ловить рыбу
kleft %crds[1 1] %crds[1 2]
end_if
end_if
end_script
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)