Здравствуйте, гость ( Вход | Регистрация )

2 страниц V < 1 2  
Ответить в эту темуОткрыть новую тему
> FindImage, поиск одинаковых картинок и клик по ним
Sreg
сообщение 29.3.2018, 15:17
Сообщение #21


**

Neophyte
Сообщений: 31
Регистрация: 6.4.2013
Группа: Пользователи
Наличность: 0
Пользователь №: 15.974
Возраст: 26



Я так не раскурил тему про 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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 17.4.2018, 13:31
Сообщение #22


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 18.346
Возраст: 25



Не знаю в чем косяк но спустя время выбивает ошибку pos по координатам...хотя пробовал поиск и для одного объекта и для всех найденных с параметром -1
set #объект findimage (зона поиска(путь\s0.bmp) %s5 2 80 -1)
Прикрепленный файл  Screenshot_5.bmp ( 849,66 килобайт ) Кол-во скачиваний: 161

Для понимания процесса...есть 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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 17.4.2018, 14:48
Сообщение #23


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26540
Пользователь №: 16.971
Возраст: 29



Код
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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 17.4.2018, 15:02
Сообщение #24


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 18.346
Возраст: 25



Цитата(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


то есть дубль парит мозги
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 17.4.2018, 15:36
Сообщение #25


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



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


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
FREEON
сообщение 17.4.2018, 15:46
Сообщение #26


*****

Journeyman
Сообщений: 365
Регистрация: 14.2.2017
Группа: Пользователи
Наличность: 1319
Пользователь №: 18.346
Возраст: 25



Цитата(DarkMaster @ 17.4.2018, 15:36) *

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

понял он ругается там где отсылка массива идет на координаты... оставлю один на вили(там координаты не используются и не должны вызывать ошибку) остальное уберу.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

2 страниц V < 1 2
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.3.2024, 12:25
Designed by Nickostyle