UoKit.com Форумы > Кликер > UO Pilot
kdv
Здравствует.

Делаю скрипт для игры, и возникла проблема
Код

while 1 == 1 do

local path = [["C:\uopilot\pic\pic_target_red.bmp"]]
local arr, a = findimage (761, 3 , 943, 53 , {path}, 2, 80, 1, 5)

  if a > 80   then     --нашли
        wait (1000)
        hw.mouse.left (453, 1018  ,  "abs")   --удар
   else

       --  while a > 80 do
          repeat
            wait (500)
            hw.mouse.left (514, 1020  ,  "abs")       ---подняли
            wait (1000 + math.random (250))
            hw.mouse.left (823, 1020 ,  "abs")          --ищу
            local path = [["C:\uopilot\pic\pic_target_red.bmp"]]
            local arr, a = findimage (761, 3 , 943, 53 , {path}, 2, 80, 1, 5)
          until  a > 80
       --  end

  end

end



Все хорошо проходить с repeat, только при нахождение объекта лишний раз выполняется команда
Код

wait (500)
            hw.mouse.left (514, 1020  ,  "abs")       ---подняли
            wait (1000 + math.random (250))
            hw.mouse.left (823, 1020 ,  "abs")          --ищу
            local path = [["C:\uopilot\pic\pic_target_red.bmp"]]
            local arr, a = findimage (761, 3 , 943, 53 , {path}, 2, 80, 1, 5)


я предполагал поставить while, так как с начало проверяется условие, но у меня в таком случае не работает вообще все

Вверх
DarkMaster
local path = [["C:\uopilot\pic\pic_target_red.bmp"]]
либо кавычки и двойные \\ либо квадратные скобки. В данный момент у вас кавычки не признак строки, а часть строки

Проблема в том, что local переменые уничтожаются перед каждым новым витком цикла. Соответственно присвоив "а" некоторе значение внутри цикла вы не можете проверить ее значение в следующем витке. Решение простое - объявите некоторые переменные вне блока while и сохраняйте в них результат поиска.
Вверх
nykep
у тебя по коду не понятно что именно ты хочешь
Код

if a > 80 then     --если нашел картинку
    wait (1000)
    hw.mouse.left (453, 1018  ,  "abs")   --удар
else --если не нашел
    --while a > 80 do противоречит условию если не нашел
    repeat
        wait (500)
        hw.mouse.left (514, 1020  ,  "abs")       ---подняли
        wait (1000 + math.random (250))
        hw.mouse.left (823, 1020 ,  "abs")          --ищу
        local path = [["C:\uopilot\pic\pic_target_red.bmp"]] --это лишнее
        local arr, a = findimage (761, 3 , 943, 53 , {path}, 2, 80, 1, 5)
    until  a > 80
       --  end

  end

чтоб два раза не выполняло можешь вместо repeat записать так
Код
while findimage (761, 3 , 943, 53 , {path}, 2, 80, 1, 5) do

и мне интересно что такое hw.mouse.left? объясните кто знает
Вверх
DarkMaster
Цитата
и мне интересно что такое hw.mouse.left? объясните кто знает

Это ардуинка.
Вверх
kdv
Цитата(nykep @ 12.3.2023, 22:04)

у тебя по коду не понятно что именно ты хочешь

чтоб два раза не выполняло можешь вместо repeat записать так
Код
while findimage (761, 3 , 943, 53 , {path}, 2, 80, 1, 5) do

и мне интересно что такое hw.mouse.left? объясните кто знает


Ишу картинку,
Код
local path = [["C:\uopilot\pic\pic_target_red.bmp"]]
local arr, a = findimage (761, 3 , 943, 53 , {path}, 2, 80, 1, 5)

если картинка есть бью,
Код
 hw.mouse.left (453, 1018  ,  "abs")   --удар

пока картинка не исчезнет.

или ищу эту картинку скилом

Код
hw.mouse.left (823, 1020 ,  "abs")          --ищу
local path = [["C:\uopilot\pic\pic_target_red.bmp"]]
local arr, a = findimage (761, 3 , 943, 53 , {path}, 2, 80, 1, 5)


до тех пор пока не найду, как найду возвращаюсь бить

Код
while findimage (761, 3 , 943, 53 , {path}, 2, 80, 1, 5) do

а как считывает программа, там же просто говорится что while имеет такое значение, т.е. что 0, что 45, 100.... оно просто будет т.е. сравнение есть ли картинка или нет не будет, или я не совсем понял.
Вверх
nykep
Код

local path = [["C:\uopilot\pic\pic_target_red.bmp"]]
local arr, a = findimage (761, 3 , 943, 53 , {path}, 2, 80, 1, 5)
while findimage (761, 3 , 943, 53 , {path}, 2, 80, 1, 5) do --не выйдет из цикла пока в зоне поиска есть картинка
    wait (1000)
    hw.mouse.left (453, 1018  ,  "abs")   --удар
end

точность поиска стоит 80, значит будет выполнять пока видит картинку попадающую в эту точность
Вверх
kdv
Цитата(nykep @ 13.3.2023, 13:35)

Код

local path = [["C:\uopilot\pic\pic_target_red.bmp"]]
local arr, a = findimage (761, 3 , 943, 53 , {path}, 2, 80, 1, 5)
while findimage (761, 3 , 943, 53 , {path}, 2, 80, 1, 5) do --не выйдет из цикла пока в зоне поиска есть картинка
    wait (1000)
    hw.mouse.left (453, 1018  ,  "abs")   --удар
end

точность поиска стоит 80, значит будет выполнять пока видит картинку попадающую в эту точность

а если картинки нету ....по тому , для того я внес эту операцию в else и он будет ее искать пока эта картинка не появится на экране, только когда появляется у меня она еше раз повторно ищет когда использую repeat, а с while не получается

Вверх
nykep
Код

local path = [["C:\uopilot\pic\pic_target_red.bmp"]]
while 1 do
    while not findimage (761, 3 , 943, 53 , {path}, 2, 80, 1, 5) do
        wait (500)
        hw.mouse.left (514, 1020  ,  "abs")       ---подняли
        wait (1000 + math.random (250))
        hw.mouse.left (823, 1020 ,  "abs")          --ищу
    end
    while findimage (761, 3 , 943, 53 , {path}, 2, 80, 1, 5) do --не выйдет из цикла пока в зоне поиска есть картинка
        wait (1000)
        hw.mouse.left (453, 1018  ,  "abs")   --удар
    end
end

Вверх
Invision Power Board © 2001-2024 Invision Power Services, Inc.
Version for Pocket PC © 2006-2024, IPBest Studio.