Извиняюсь, очень сумбурно написал.
findcolor'a достаточно, цели имеют уникальный цвет, с их поиском проблем не возникло.
Камера привязана к персонажу(он всегда в этих координатах).
Код
--lua
log (1202, 573, 110, 100)
local heroX = 478
local heroY = 298
Есть функция по поиску нужного объекта, с ней все ок
Код
function getTargetPosition()
local x1, y1 = 478, 298
local x2, y2 = 478, 298
local count = 0
while true do
local cottonPos = findcolor (x1, y1, x2, y2, 1, 1, [[('3232848')]], '%arr', 2, 10, 2)
if cottonPos then
log(arr[1][1], arr[1][2])
return arr[1][1], arr[1][2]
else
-- log('expand search')
if count < 400 then
x1 = x1-1
y1 = y1-1
x2 = x2+1
y2 = y2+1
count = count +1
else
log('waiting spawn')
wait(5000)
x1,y1,x2,y2,count = 478,298,478,298,0
end
-- log(count)
end
end
end
Вот тут что-то не так (пока не берем во внимамние, что по оси Y движение не дописал. давайте рассмотрим хотябы что не так с движением по оси X)
Т.к. персонаж всегда в центре, то получается, что как бы не он сам движется, а мир вокруг него и хотелось, чтобы когда найдена цель - зажимались кнопки до тех пор, пока эта цель не окажется рядом с персонажем, но движения получаются прерывистыми и персонаж не останавливается, а бежит дальше
Код
function moveToTarget()
targetX, targetY = 0,0
while math.abs(heroX - targetX) > 50 or math.abs(heroX - targetY) > 50 do
targetX, targetY = getTargetPosition()
if heroX < targetX then
log('right')
kleft_down(rightX, rightY)
elseif heroX > targetX then
log('left')
kleft_down(leftX, leftY) -- т.к. send_down не работает, а send217_down некорректно работает, то зажимаю на джойстик движения мышкой
end
log('up')
kleft_up(leftX, leftY) -- отпускаю мышь
end
end
Если персонаж рядом с объектом, на экране появляется кнопка на которую нужно нажать, тут вроде тоже без проблем все
Код
while true do
if color(755, 240) == 38358 then
kleft(752, 253)
wait(3000)
else
moveToTarget()
end
end