Помощь - Поиск - Пользователи - Календарь
Полная версия: FindImage
UoKit.com Форумы > Кликер > UO Pilot
portos
подскажите , есть 5 одинаковых картинок в браузере , и надо кликнуть по каждой. появляються в разных местах
cirus
Код
set #a FindImage (0 0 1920 1080 (d:\myImages\wolf.bmp) %arr 2 80 -1 5)
hint Найдено картинок: size(%arr)
if #a > 0
    for #i 1 size(%arr)     // цикл для всех найденных картинок
        move %arr[#i 1] %arr [#i 2]    // навести курсор на каждую картинку
        wait 500
    end_for
end_if
end_script
dron4938
Цитата(cirus @ 24.2.2018, 21:26) *

Код
set #a FindImage (0 0 1920 1080 (d:\myImages\wolf.bmp) %arr 2 80 -1 5)
hint Найдено картинок: size(%arr)
if #a > 0
    for #i 1 size(%arr)     // цикл для всех найденных картинок
        move %arr[#i 1] %arr [#i 2]    // навести курсор на каждую картинку
        wait 500
    end_for
end_if
end_script



а на луа финдимидж есть? Можно пример на луа?
portos
Цитата(cirus @ 24.2.2018, 19:26) *

Код
set #a FindImage (0 0 1920 1080 (d:\myImages\wolf.bmp) %arr 2 80 -1 5)
hint Найдено картинок: size(%arr)
if #a > 0
    for #i 1 size(%arr)     // цикл для всех найденных картинок
        move %arr[#i 1] %arr [#i 2]    // навести курсор на каждую картинку
        wait 500
    end_for
end_if
end_script



то что надо , спасибо cirus
Sreg
А что значат числа "2 80 -1 5" после %arr?
Sreg
Понятно, а поиск одного слова на экране тоже через финдимидж делается, или есть способ лучше?
DarkMaster
А чем он плох? Иногда имеет смысл искать через встроенные средства браузера, но, как правило, ищут финдимиджем.
Sreg
Ну в деле я пока еще не пробовал, просто слова не на монотонном фоне, а на динамичном фоне, и если картинка меняется, то картинка внутри буквы как бы тоже меняется, что не есть хорошо для финдимиджа....
cirus
Цитата
слова не на монотонном фоне, а на динамичном фоне

Закрашиваете левый верхний пиксель и весь фон в один и тот же любой цвет. Тогда эти пиксели не будут учитывать при поиске.
Sreg
Работает пока очень коряво, срабатывает через раз...
Вот картинки, первая оригинал, только черной рамкой я обвел.
А вторая совсем минимализм, в данный момент стоит вторая.
DarkMaster
Deviation задан в параметрах поиска? Погрешность ~2 обычно убирает очень много проблем.
cirus
https://forum.uokit.com/index.php?showtopic...mp;hl=findimage
Последний скрипт.
Sreg
Я как понял скрипт готовый, нужно только указать пути, и сделать несколько скринов картинки?
cirus
Цитата
Я как понял скрипт готовый, нужно только указать пути, и сделать несколько скринов картинки?

Да. Подобрать deviation, его же указывать потом в findimage. Если какой-то фон останется, то закрасить вручную.
Sreg
Сначала подумал скрипт не рабочий, а потом потестил на собственном нарисованных картинках, он работает...
Выходит что на всех картинках снятые скриншотом, уникальные, на каждом скрине белые буквы имеют разные оттенки...
cirus
deviation подберите, часть пикселей всё равно останется. Их хватит для поиска.
Sreg
Я попробую.
А пилоте есть функция, чтоб поиск пикселей начинал не слево сверху направо, а снизу справа налево?
DarkMaster
Цитата
А пилоте есть функция, чтоб поиск пикселей начинал не слево сверху направо, а снизу справа налево?

Нет. Ну точнее в каких-то релизах оно было случайно изменено, что привело к большим проблемам в старых скриптах. Вернули на место.
cirus
Цитата
А пилоте есть функция, чтоб поиск пикселей начинал не слево сверху направо, а снизу справа налево?

Результаты поиска можно отсортировать. Sort_array
Sreg
Я так не раскурил тему про sort array...

я смекнул сделать так, более понятным мне способом.

Так я расставил приоритеты, когда весь экран залеплен этими картинками, и использовать сначала нужно те что ближе к себе...
Код
  :1
set #a FindImage (292, 300  960, 663   (C:\Gem\Gem.bmp) %arr 2 95 -1 5 )  
hint Найдено картинок центр: size(%arr)
if #a > 0

kleft_down %arr [1 1], %arr [1 2]
wait 20
kleft_up  %arr [1 1], %arr [1 2]
goto 1
else

set #a FindImage (54, 664 1109, 960  (C:\Gem\Gem.bmp) %arr 2 95 -1 5 )  
hint Найдено картинок внизу: size(%arr)
if #a > 0

kleft_down %arr [1 1], %arr [1 2]
wait 20
kleft_up  %arr [1 1], %arr [1 2]
goto 1
else

set #a FindImage (1110, 220  1279, 975  (C:\Gem\Gem.bmp) %arr 2 95 -1 5 )
hint Найдено картинок справо: size(%arr)
if #a > 0

kleft_down %arr [1 1], %arr [1 2]
wait 20
kleft_up  %arr [1 1], %arr [1 2]
goto 1
else

set #a FindImage (0, 151 289, 945 (C:\Gem\Gem.bmp) %arr 2 95 -1 5 )  
hint Найдено картинок слево: size(%arr)
if #a > 0

kleft_down %arr [1 1], %arr [1 2]
wait 20
kleft_up  %arr [1 1], %arr [1 2]
goto 1


end_if
  end_if
  end_if
  end_if
FREEON
Не знаю в чем косяк но спустя время выбивает ошибку pos по координатам...хотя пробовал поиск и для одного объекта и для всех найденных с параметром -1
set #объект findimage (зона поиска(путь\s0.bmp) %s5 2 80 -1)
Нажмите для просмотра прикрепленного файла
Для понимания процесса...есть 6 попыток... 7 слотов в которые рандомно падают конфеты в наборе 5, 3 и 1. Вот нужно собрать сперва максимальное колличество наборов сладостей а затем меншее... и лишнюю одну которая остаеться выбросить часто это набор по 1 но бывает и 3
Код

set #s0 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s0.bmp) %s0 2 80)
    while #s0 = 0 //пока есть попытки
           set #s0 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s0.bmp) %s0 2 80)
           set #s5 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s5.bmp) %s5 2 80)
           if #s5 > 0 // поиск набора по 5 сладостей
              set #s5 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s5.bmp) %s5 2 80)
              set #x (%s5 [1 1] + %s5 [1 3]) / 2
              set #y (%s5 [1 2] + %s5 [1 4]) / 2
              left #x #y //клик на сладость
              wait 1s
              set #x1 (%s5 [1 1] + %s5 [1 3]) / 2 + 50
              set #y1 (%s5 [1 2] + %s5 [1 4]) / 2 - 15
              left #x1 #y1 //получить вкусняшку
              wait 1s
           end_if
           set #s5 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s5.bmp) %s5 2 80)
           if #s5 = 0 // если нет набора по 5
              set #s3 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s3.bmp) %s3 2 80)
              if #s3 > 0 //собирать по 3
                 set #s3 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s3.bmp) %s3 2 80)
                 set #x (%s3 [1 1] + %s3 [1 3]) / 2
                 set #y (%s3 [1 2] + %s3 [1 4]) / 2
                 left #x #y //клик на сладость
                 wait 1s
                 set #x1 (%s3 [1 1] + %s3 [1 3]) / 2 + 50
                 set #y1 (%s3 [1 2] + %s3 [1 4]) / 2 - 15
                 left #x1 #y1 //забрать вкусняшку
                 wait 1s
              end_if
           end_if
           set #s3 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s3.bmp) %s3 2 80)
           if #s3 = 0 // если нет наборов по 5 и 3
              set #s3 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s3.bmp) %s3 2 80)
              set #s1 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s1.bmp) %s1 2 80)
              if #s1 > 0 //собирать по 1
                 set #s1 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s1.bmp) %s1 2 80)
                 set #x (%s1 [1 1] + %s1 [1 3]) / 2
                 set #y (%s1 [1 2] + %s1 [1 4]) / 2
                 left #x #y //клик по конфете
                 wait 1s
                 set #x1 (%s1 [1 1] + %s1 [1 3]) / 2 + 50
                 set #y1 (%s1 [1 2] + %s1 [1 4]) / 2 - 15
                 left #x1 #y1 //получить конфету
                 wait 1s
              end_if
           end_if
        end_while
    set #s0 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s0.bmp) %s0 2 80)
    if #s0 > 1 //если все попытки израсходованы освободить слоты от сладостей
    set #s00 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s00.bmp) %s00 2 80)
    if #s00 > 0
    set #s00 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s1.bmp) %s00 2 80)
    set #x (%s00 [1 1] + %s00 [1 3]) / 2
    set #y (%s00 [1 2] + %s00 [1 4]) / 2
    left #x #y
    wait 1s
    set #x1 (%s00 [1 1] + %s00 [1 3]) / 2 - 50
    set #y1 (%s00 [1 2] + %s00 [1 4]) / 2
    left #x1 #y1
    wait 1s
    end_if
    end_if

Не знаю еще но почему-то когда идет while если не дублировать set в самом цикле то находит один раз...если дублировать сет в самом цикле тогда работает как нужно но иногда опять выбивает ошибку pos c координатами. С чем это связанно?
пример
Код

set #test параметры поиска
while #test > 1 // в принципе любое условие
    set #test параметры поиска
   //действие
end_while
cirus
Код
set #s5 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s5.bmp) %s5 2 80)
if  #s5 > 0
    set #s5 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s5.bmp) %s5 2 80)  // а если не найдётся?
    set #x (%s5 [1 1] + %s5 [1 3]) / 2  // получим ошибку
    set #y (%s5 [1 2] + %s5 [1 4]) / 2
    left #x #y
    wait 1s
    set #x1 (%s5 [1 1] + %s5 [1 3]) / 2 + 50
    set #y1 (%s5 [1 2] + %s5 [1 4]) / 2 - 15
    left #x1 #y1
    wait 1s
end_if
FREEON
Цитата(cirus @ 17.4.2018, 14:48) *

Код
set #s5 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s5.bmp) %s5 2 80)
if  #s5 > 0
    set #s5 findimage (434, 165 1014, 644 (D:\_UOPilot\Image\botn\s5.bmp) %s5 2 80)  // а если не найдётся?
    set #x (%s5 [1 1] + %s5 [1 3]) / 2  // получим ошибку
    set #y (%s5 [1 2] + %s5 [1 4]) / 2
    left #x #y
    wait 1s
    set #x1 (%s5 [1 1] + %s5 [1 3]) / 2 + 50
    set #y1 (%s5 [1 2] + %s5 [1 4]) / 2 - 15
    left #x1 #y1
    wait 1s
end_if


то есть дубль парит мозги
DarkMaster
Т.е. при повторном поиске изображение может и не найтись, а %s5 массив вы перезапишите в любом случае. Если не нашлось, а массив вы фактически уничтожили, то дальнейшее обращение к его элементам приведет к ошибке.
FREEON
Цитата(DarkMaster @ 17.4.2018, 15:36) *

Т.е. при повторном поиске изображение может и не найтись, а %s5 массив вы перезапишите в любом случае. Если не нашлось, а массив вы фактически уничтожили, то дальнейшее обращение к его элементам приведет к ошибке.

понял он ругается там где отсылка массива идет на координаты... оставлю один на вили(там координаты не используются и не должны вызывать ошибку) остальное уберу.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.