Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: loki on January 25, 2017, 08:58:43 AM

Title: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: loki on January 25, 2017, 08:58:43 AM
Code: [Select]
$toch=85

GETSCREEN
COLORMODE (5)
WAIT(2)

THREAD(d, 1)
   IF_PICTURE_IN (634,240,824,525, "d1.bmp", 16777215, $toch)
      LCLICK(1169,318)
      LOGWRITE ("âíèç 1")
      SCREENSHOT("d1")
      WAIT(90)
   else
      IF_PICTURE_IN (634,240,824,525, "d2.bmp", 16777215, $toch)
         $d2=1
         LCLICK(1169,318)
         LOGWRITE ("âíèç 2")
         SCREENSHOT("d2")
         WAIT(90)
      else
         IF_PICTURE_IN (634,240,824,525, "d3.bmp", 16777215, $toch)
            $d3=1
            LCLICK(1169,318)
            LOGWRITE ("âíèç 3")
            SCREENSHOT("d3")
            WAIT(90)
         else
            IF_PICTURE_IN (634,240,824,525, "d4.bmp", 16777215, $toch)
               $d4=1
               LCLICK(1169,318)
               LOGWRITE ("âíèç 4")
               SCREENSHOT("d4")
               WAIT(90)
            else
               IF_PICTURE_IN (634,240,824,525, "d5.bmp", 16777215, $toch)
                  $d5=1
                  LCLICK(1169,318)
                  LOGWRITE ("âíèç 5")
                  SCREENSHOT("d5")
                  WAIT(90)
               else
                  IF_PICTURE_IN (634,240,824,525, "d6.bmp", 16777215, $toch)
                     $d6=1
                     LCLICK(1169,318)
                     LOGWRITE ("âíèç 6")
                     SCREENSHOT("d6")
                     WAIT(90)
                  else
                     IF_PICTURE_IN (634,240,824,525, "d7.bmp", 16777215, $toch)
                        $d7=1
                        LCLICK(1169,318)
                        LOGWRITE ("âíèç 7")
                        WAIT(90)
                     end_if
                  end_if
               end_if
            end_if
         end_if
      end_if
   end_if
end_thread
 

ищет только первый что не так то?
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: Vint on January 25, 2017, 09:39:01 AM
В потоке нет задержки при ненахождении, это будет сильно грузить процессор впустую. Обычно 25%.

Значит или всегда находит первый и дальше само собой пропускается, или остальные не находит.

Почему не сделать компактней
Code: (clickermann) [Select]
$toch=85
WAIT(1)
//...

THREAD(d, 1)
    $d = 0
    GETSCREEN
    COLORMODE(5)
    FOR($j=1, $j < 8)
        IF_PICTURE_IN(634,240,824,525, STRCONCAT("d", $j, ".bmp"), 16777215, $toch)
            $j = 100
            $d = $j
            LCLICK(1169,318)
            LOGWRITE ("вниз ", $j)
            SCREENSHOT(STRCONCAT("d", $j))
            WAIT(90)
        END_IF
    END_CYC
    WAITMS(100)
END_THREAD

Правда здесь заменили флаги $d1, $d2, $d3... на значение одной переменной $d. Всё равно картинки по этому коду не могут быть найдены одновременно несколько. Вот и получаем в $d номер найденной или 0.

P.S. Можно вопрос не касающийся кода? Какая версия кликермэна? Какая винда стоит? И какая у винды локализация, Винда изначально с русским основным или он поставлен позже? Какие стоят языки в системе кроме Англ. и Рус.?
Просто хочется понять, почему у многих в последнее время на форум попадает кодировка ISO 8859-1 (а может это Windows−1252). Прям табунами пошла. Кто виноват и что делать.
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: Oraven on January 25, 2017, 09:51:07 AM
Вот еще вариант
Code: (clickermann) [Select]
$toch=85
DEFINE($d1,0)
DEFINE($d2,0)
DEFINE($d3,0)
DEFINE($d4,0)
DEFINE($d5,0)
DEFINE($d6,0)
DEFINE($d7,0)
WAIT(1)

THREAD(d, 1)
   GETSCREEN
   COLORMODE(5)
   FOR($i=1,$i<8)
      IF_PICTURE_IN (634,240,824,525, STRCONCAT("d",$i,".bmp"), 16777215, $toch)
         LCLICK(1169,318)
         LOGWRITE ("вниз ",$i)
         SETVAR(STRCONCAT("$d",$i), 1)
         SCREENSHOTEX(634,240,824,525, STRCONCAT("d",$i,"_"), 0)
         WAIT(90)
      END_IF
   END_CYC
   WAITMS(100)
end_thread
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: Vint on January 25, 2017, 10:28:47 AM
Я просто на 4.11 сижу и SETVAR не стал уже делать, хоть мысль была.
Просто здесь не нужна гора переменных, хватит одной.
И $d1, $d2, $d3...  ставятся, но нигде не сбрасываются! Спорная польза от такого применения.
Вот если бы ему было нужно искать все и пометить какие нашли. И то удобней массив.
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: Oraven on January 25, 2017, 11:06:55 AM
Я просто на 4.11 сижу и SETVAR не стал уже делать, хоть мысль была.
Просто здесь не нужна гора переменных, хватит одной.
И $d1, $d2, $d3...  ставятся, но нигде не сбрасываются! Спорная польза от такого применения.
Вот если бы ему было нужно искать все и пометить какие нашли. И то удобней массив.

Ну из вопроса "ищет только первый что не так то?" выходит что нужно искать их все и отмечать найденные. Думаю что это только часть скрипта.
Да конечно массив разумнее.
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: Vint on January 25, 2017, 12:47:10 PM
Ну из вопроса "ищет только первый что не так то?" выходит что нужно искать их все и отмечать найденные.

Не факт. Ведь вложенность он не от балды поставил. И "ищет только первый" может не ищет когда там второй или третий. Может просто тупо изменение графики влияет, а не структура скрипта.
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: loki on January 25, 2017, 04:41:47 PM
да нужно искать все сразу и кликать в область
ок тогда я и массовом пробовал

Code: [Select]
$toch = 80

GETSCREEN
COLORMODE(5)
WAIT(3)


THREAD(down, 1)
   SCANPICTURE($darr1, 699,216, 823,710,"d1.bmp",-1,$toch)
   SCANPICTURE($darr2, 699,216, 823,710,"d2.bmp",-1,$toch)
   SCANPICTURE($darr3, 699,216, 823,710,"d3.bmp",-1,$toch)
   SCANPICTURE($darr4, 699,216, 823,710,"d4.bmp",-1,$toch)
   SCANPICTURE($darr5, 699,216, 823,710,"d5.bmp",-1,$toch)
   SCANPICTURE($darr5, 699,216, 823,710,"d6.bmp",-1,$toch)
   SCANPICTURE($darr5, 699,216, 823,710,"d7.bmp",-1,$toch)
   
   
   $c = ARRSIZE($darr1)/2
   IF(($c > 0)&($c < 4))
      LCLICK(1170,324)
      SCREENSHOT ("d1")
      LOGWRITE ("âíèç 1")
   END_IF
   
   $c = ARRSIZE($darr2)/2
   IF(($c > 0)&($c < 4))
      LCLICK(1170,324)
      SCREENSHOT ("d2")
      LOGWRITE ("âíèç 2")
   END_IF
   
   $c = ARRSIZE($darr3)/2
   IF(($c > 0)&($c < 4))
      LCLICK(1170,324)
      SCREENSHOT ("d3")
      LOGWRITE ("âíèç 3")
   END_IF
   
   $c = ARRSIZE($darr4)/2
   IF(($c > 0)&($c < 4))
      LCLICK(1170,324)
      SCREENSHOT ("d4")
      LOGWRITE ("âíèç 4")
   END_IF
   
   $c = ARRSIZE($darr5)/2
   IF(($c > 0)&($c < 4))
      LCLICK(1170,324)
      SCREENSHOT ("d5")
      LOGWRITE ("âíèç 5")
   END_IF
   
   $c = ARRSIZE($darr6)/2
   IF(($c > 0)&($c < 4))
      LCLICK(1170,324)
      SCREENSHOT ("d6")
      LOGWRITE ("âíèç 6")
   END_IF
   
   $c = ARRSIZE($darr7)/2
   IF(($c > 0)&($c < 4))
      LCLICK(1170,324)
      SCREENSHOT ("d7")
      LOGWRITE ("âíèç 7")
   END_IF
   
 
   
   UNDEFINE($darr1)
   UNDEFINE($darr2)
   UNDEFINE($darr3)
   UNDEFINE($darr4)
   UNDEFINE($darr5)
END_THREAD

вообще ничо не находит
помогите с массивом

а так то да часть, 2 таких потока один кликает на одну область второй поток на вторую

не по теме: винда 7 ультим русик изначально кроме англ ничо не стоит  кликер последний (мое имхо дело в теге код)
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: Oraven on January 25, 2017, 05:21:14 PM
Я тебе уже написал правильный вариант. В цикле просматриваются все 7 картинок.
Почему у тебя
Code: (clickermann) [Select]
GETSCREEN
COLORMODE(5)
вынесено за поток и обновляется раз в 3 секунды, тогда как в потоке беспрерывно идет анализ. Без задержек это порождает бессмысленно высокую нагрузку.

Не работает и не находит это разные вещи. Делай лучше картинки.
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: loki on January 25, 2017, 05:33:38 PM
спасибо огромное :)

картинки одни и теже только в первом варианте находит только первую

с массивом вообще не находит ни одну
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: Vint on January 25, 2017, 05:36:17 PM
не по теме: винда 7 ультим русик изначально кроме англ ничо не стоит  кликер последний (мое имхо дело в теге код)
Не, дело в изначально нерусской винде.
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: loki on January 26, 2017, 02:17:47 PM
дорогой ты мой человек Oraven а вот еще вопрос?
в конце разве не надо вот так

Code: [Select]
UNDEFINE($d1)
   UNDEFINE($d2)
   UNDEFINE($d3)
   UNDEFINE($d4)
   UNDEFINE($d5)

а то принтскрин один и тот же печатает

Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: Vint on January 26, 2017, 03:16:42 PM
в конце разве не надо вот так
Code: [Select]
UNDEFINE($d1)
   UNDEFINE($d2)
   UNDEFINE($d3)
   UNDEFINE($d4)
   UNDEFINE($d5)
а то принтскрин один и тот же печатает

Какое отношение имеет UNDEFINE($d...) к принтскрину? Это вопрос риторический, можно не отвечать. Потому как никакого.



Скрины одинаковые, потому что
Почему у тебя
Code: (clickermann) [Select]
GETSCREEN
COLORMODE(5)
вынесено за поток и обновляется раз в 3 секунды, тогда как в потоке беспрерывно идет анализ.



И какой скрин ты хочешь сделать? До клика или после?
Code: (clickermann) [Select]
      LCLICK(1170,324)
      SCREENSHOT ("d3")
Если до, то и писать нужно перед кликом.
Если после... после клика должна быть пауза чтобы дать информации обновится. Но всё это будет когда решишь вопрос выше (с гетскрином).




Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: loki on January 26, 2017, 03:45:03 PM
нет нет я уже вариант взял который тут предложили в сообщении №2 от Oraven

извините что не пояснил что от своей версии отказался

все работает немного притормаживает но вот скриншот один и тотже печатает и

еще вот чего возникает иногда картинка ниже

или просит d8.bmp

хотя
Code: [Select]
FOR($i=1,$i<8) с чего хочет 8  :-[

версия проги 4.12.001; дата сборки: 25.03.2016

Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: Vint on January 26, 2017, 04:23:39 PM
Код в своей версии ты забыл показать.
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: loki on January 26, 2017, 05:08:49 PM
извините

Code: [Select]

DEFINE($d1,0)
DEFINE($d2,0)
DEFINE($d3,0)
DEFINE($d4,0)
DEFINE($d5,0)
DEFINE($d6,0)
DEFINE($d7,0)

DEFINE($u1,0)
DEFINE($u2,0)
DEFINE($u3,0)
DEFINE($u4,0)
DEFINE($u5,0)
DEFINE($u6,0)
DEFINE($u7,0)

WAIT(1)

THREAD(d, 1)
   GETSCREEN
   COLORMODE(5)
   FOR($i=1,$i<8)
      IF_PICTURE_IN (771,268,837,673, STRCONCAT("d",$i,".bmp"), 16777215, $toch)
         LCLICK(1169,318)
         LOGWRITE ("âíèç ",$i)
         SETVAR(STRCONCAT("$d",$i), 1)
         SCREENSHOTEX(771,268,837,673, STRCONCAT("d",$i,"_"), 0)
         WAIT(90)
      END_IF
   END_CYC
   WAITMS(100)
end_thread

//ââåðõ
THREAD(u, 1)
   GETSCREEN
   COLORMODE(5)
   FOR($i=1,$i<8)
      IF_PICTURE_IN (771,268,837,673, STRCONCAT("u",$i,".bmp"), 16777215, $toch)
         LCLICK(1174,267)
         LOGWRITE ("ââåðõ ",$i)
         SETVAR(STRCONCAT("$u",$i), 1)
         SCREENSHOTEX(771,268,837,673, STRCONCAT("u",$i,"_"), 0)
         WAIT(90)
      END_IF
   END_CYC
   WAITMS(100)
end_thread


вот никаких изменений кроме второго потока и координат
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: Vint on January 26, 2017, 05:21:05 PM

Используешь одинаковые переменные в разных потоках!
$i - переменная цикла.
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: loki on January 26, 2017, 05:22:59 PM
вот это я балбес спасибо  ::)

все заработало ура
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: Vint on January 26, 2017, 05:25:11 PM
Только вся конструкция сомнительная. 2 потока будут мешать друг другу своими GETSCREEN,  редко но будут.
В таком варианте выигрыша в скорости не будет, ищи последовательно один, потом другой, без всяких потоков. Ну или в одном, если так нужно для другого.
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: loki on January 26, 2017, 05:42:00 PM
хотя вот так наверное правда лучше
Code: [Select]

DEFINE($d1,0)
DEFINE($d2,0)
DEFINE($d3,0)
DEFINE($d4,0)
DEFINE($d5,0)
DEFINE($d6,0)
DEFINE($d7,0)

DEFINE($u1,0)
DEFINE($u2,0)
DEFINE($u3,0)
DEFINE($u4,0)
DEFINE($u5,0)
DEFINE($u6,0)
DEFINE($u7,0)

THREAD(down, 1)
   GETSCREEN
   COLORMODE(5)
   FOR($d=1,$d<8)
      IF_PICTURE_IN (771,268,837,673, STRCONCAT("d",$d,".bmp"), 16777215, $toch)
         LCLICK(1169,318)
         LOGWRITE ("âíèç ",$d)
         SETVAR(STRCONCAT("$d",$d), 1)
         WAITMS(50)
         SCREENSHOTEX(771,268,837,673, STRCONCAT("d",$d,"_"), 0)
         WAIT(90)
      else
         FOR($u=1,$u<8)
            IF_PICTURE_IN (771,268,837,673, STRCONCAT("u",$u,".bmp"), 16777215, $toch)
               LCLICK(1174,267)
               LOGWRITE ("ââåðõ ",$u)
               SETVAR(STRCONCAT("$u",$u), 1)
               WAITMS(50)
               SCREENSHOTEX(771,268,837,673, STRCONCAT("u",$u,"_"), 0)
               WAIT(90)
            END_IF
         END_CYC
      END_IF
   END_CYC
   WAITMS(100)
end_thread

значительно быстрее спасибо
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: loki on January 26, 2017, 06:57:17 PM
следующий вопрос: когда добавляю для анализа еще картинки, все встает колом, впоть до зависания кликера, как еще оптимизировать процесс? чтоб искать например 100 картинок
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: Vint on January 26, 2017, 07:03:11 PM
Нифига себе быстрее.
Зачем ты вкладываешь в ELSE? Говорю же последовательно ищи.

Сейчас на каждую $d ищет все 8 $u.
И получается  7 * 8 = 56 поисков. 56! ищется впустую. т.к. картинка не менялась.


следующий вопрос: когда добавляю для анализа еще картинки, все встает колом, впоть до зависания кликера, как еще оптимизировать процесс? чтоб искать например 100 картинок
Наверно ты их тоже так добавляешь. Поиск у тебя растёт в геометрической прогрессии. Бесполезный поиск.
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: loki on January 26, 2017, 07:09:05 PM
и получаеться первое мое сообщение в которой я последовательно на каждую картинку писал чо делать :-[ или есть какие варианты еще
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: Vint on January 27, 2017, 08:47:51 AM
и получаеться первое мое сообщение в которой я последовательно на каждую картинку писал чо делать :-[ или есть какие варианты еще
ты не писал последовательно ты писал поиск вложенный

Code: (clickermann) [Select]
IF($first = 0)
    $first = 1
    FOR($i=1, $i < 8)
        SETVAR(STRCONCAT("$d",$i), 0)
        SETVAR(STRCONCAT("$u",$i), 0)
    END_CYC
END_IF

GETSCREEN
COLORMODE(5)
FOR($d=1, $d < 8)
    IF_PICTURE_IN (771,268,837,673, STRCONCAT("d",$d,".bmp"), 16777215, $toch)
        LCLICK(1169,318)
        LOGWRITE ("вниз ",$d)
        SETVAR(STRCONCAT("$d",$d), 1)
        WAITMS(50)
        SCREENSHOTEX(771,268,837,673, STRCONCAT("d",$d,"_"), 0)
        WAIT(90)
        GETSCREEN
        COLORMODE(5)
        $d = 1
    END_IF
END_CYC
WAITMS(30)
FOR($u=1, $u < 8)
    IF_PICTURE_IN (771,268,837,673, STRCONCAT("u",$u,".bmp"), 16777215, $toch)
        LCLICK(1174,267)
        LOGWRITE ("вверх ",$u)
        SETVAR(STRCONCAT("$u",$u), 1)
        WAITMS(50)
        SCREENSHOTEX(771,268,837,673, STRCONCAT("u",$u,"_"), 0)
        WAIT(90)
        GETSCREEN
        COLORMODE(5)
        $u = 100
    END_IF
END_CYC
WAITMS(30)

Но по прежнему непонятно где обновляются переменные $d.. и $u..

Ты объясни, а то всех запутал.
На экране могут быть одновременно несколько разных картинок, например $u3 и $d5 ? Тебе нужно поймать "состояние" всех есть/нет. Или достаточно любой одной? Или достаточно одной из каждой серии d, u?

Могут ли одновременно находится на экране несколько одинаковых? Например две или три $u3 ? Нужно тогда определять координаты всех или достаточно одной.
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: Oraven on January 27, 2017, 08:50:28 AM
Действительно нужен выход из цикла если найдено чтоб начать его заново.
Кроме того за место многочисленных $d1 нужно использовать массив. Тогда не сложно и 1000 картинок сделать.
Сначала создаем два массива (если у тебя есть еще лево право то 4) заполняем их нулями. Потом где то считываем нужный нам индекс
LOGWRITE ($arr_d[2]) // например узнаем найдена ли вторая картинка
 

Code: (clickermann) [Select]
//== Инициализация =====================================

// создаем 2 массива и заполняем их нулями

$count_image = 7  // количество картинок
FOR($a=0,$a<$count_image+1)
   $arr_d[$a] = 0
END_CYC

FOR($a=0,$a<$count_image+1)
   $arr_u[$a] = 0
END_CYC

SETTHREAD (down, 1) // запускаем потоки


START: // далее зацикленный скрипт

THREAD(down, 0)
   GETSCREEN
   COLORMODE(5)
   FOR($d=1,$d<ARRSIZE($arr_d))
      IF_PICTURE_IN (771,268,837,673, STRCONCAT("d",$d,".bmp"), 16777215, $toch)
         LCLICK(1169,318)
         LOGWRITE ("вниз ",$d)
         $arr_d[$d] = 1
         WAITMS(50)
         SCREENSHOTEX(771,268,837,673, STRCONCAT("d",$d,"_"), 0)
         WAIT(90)
         $d=ARRSIZE($arr_d) // выход из цикла
      ELSE
         IF_PICTURE_IN (771,268,837,673, STRCONCAT("u",$d,".bmp"), 16777215, $toch)
            LCLICK(1174,267)
            LOGWRITE ("вверх ",$d)
            $arr_u[$d] = 1
            WAITMS(50)
            SCREENSHOTEX(771,268,837,673, STRCONCAT("u",$d,"_"), 0)
            WAIT(90)
            $d=ARRSIZE($arr_d) // выход из цикла
         END_IF
      END_IF
   END_CYC
   WAITMS(100)
END_THREAD



Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: Vint on January 27, 2017, 09:10:22 AM
Когда я говорил про массив в сообщении #3. Я и имел ввиду массив состояний или флагов, вместо кучи переменных.
А не поиск в массив.
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: loki on January 27, 2017, 05:25:46 PM
на экране могут быть все сразу картинки и надо все сразу найти и нажать на одну из 2-х областей (группа картинок 1) либо на другую область ( группа картинок 2). каждый раз когда находит картинку относящаюся к группе 1 или к группе 2 давит на область экрана подходящую соответствующей группе картинок

щас попробую 23 ответ спасибо за участие очень приятно
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: Vint on January 27, 2017, 06:05:53 PM
на экране могут быть все сразу картинки и надо все сразу найти и нажать на одну из 2-х областей (группа картинок 1) либо на другую область ( группа картинок 2). каждый раз когда находит картинку относящаюся к группе 1 или к группе 2 давит на область экрана подходящую соответствующей группе картинок

щас попробую 23 ответ спасибо за участие очень приятно

Зачем тогда переменные для каждого?
Тогда и ищи группами последовательно.
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: loki on January 27, 2017, 06:54:56 PM
нужно знать какая картинка сработала

вроде работает последний вариант сообщение 23 спасибо
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: loki on February 07, 2017, 02:26:59 PM
эм запаздывает анализ поздно кликает

у меня идея: а если брать контрольную сумму картинки и ее сравнивать с контрольной суммой области анализа если сходиться то уже сравнивать картинку так будет быстрее?
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: loki on February 07, 2017, 02:42:47 PM
запаздывание идет на минуту это очень много
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: Vint on February 07, 2017, 02:48:45 PM
Контрольную сумму чего ты собрался считать? Там же везде поиск. Или область поиска на 100% совпадает с размером образца?

На минуту... За минуту, можно всё изображение разобрать на атомы и собрать обратно. Что там делать минуту?
Может ты свою геометрическую прогрессию не пофиксил?
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: loki on February 07, 2017, 05:11:29 PM
Code: (clickermann) [Select]
$toch=94 // точность поиска

// создаем 2 массива и заполняем их нулями

$count_image = 13  // количество картинок
FOR($a=0,$a<$count_image+1)
   $arr_d[$a] = 0
END_CYC

FOR($a=0,$a<$count_image+1)
   $arr_u[$a] = 0
END_CYC

SETTHREAD (down, 1) // запускаем потоки


START: // далее зацикленный скрипт

THREAD(down, 0)
   GETSCREEN
   COLORMODE(5)
   FOR($d=1,$d<ARRSIZE($arr_d))
      IF_PICTURE_IN (760,268,835,714, STRCONCAT("d",$d,".bmp"), -1, $toch)
         LCLICK(1172,317)
         LOGWRITE ("вниз ",$d)
         $arr_d[$d] = 1
         WAITMS(50)
         SCREENSHOTEX(760,268,835,714, STRCONCAT("d",$d,"_"), 0)
         WAIT(90)
         $d=ARRSIZE($arr_d) // выход из цикла
      ELSE
         IF_PICTURE_IN (760,268,835,714, STRCONCAT("u",$d,".bmp"), -1, $toch)
            LCLICK(1167,269)
            LOGWRITE ("вверх ",$d)
            $arr_u[$d] = 1
            WAITMS(50)
            SCREENSHOTEX(760,268,835,714, STRCONCAT("u",$d,"_"), 0)
            WAIT(90)
            $d=ARRSIZE($arr_d) // выход из цикла
         END_IF
      END_IF
   END_CYC
   WAITMS(100)
END_THREAD


THREAD(move, 1)
   MOVE(1073,419)
   MOVE(1070,552)
   LCLICK(1070,552)
   LOGWRITE ("подвигал")
WAIT(300)
END_THREAD

вот вообще весь скрипт
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: Oraven on February 08, 2017, 08:35:22 AM
Code: (clickermann) [Select]
START: // далее зацикленный скрипт
И где он? далее идут патоки которые вообще работают в стороне. Скрипт начнется заново бесконечно снова и снова заполняя нулями массивы $arr_d $arr_u без задержек приводя к бессмысленной нагрузке.

Зачем вообще эти массивы и присвоение той или иной картинки значения 1
Code: (clickermann) [Select]
$arr_d[$d] = 1Если это нигде потом не используется?

Вот так будет правильно, но вопрос с "нужностью" массивов пока не решен. Они тебе зачем?
Code: (clickermann) [Select]
$toch=94 // точность поиска

// создаем 2 массива и заполняем их нулями

$count_image = 13  // количество картинок
FOR($a=0,$a<$count_image+1)
   $arr_d[$a] = 0
END_CYC

FOR($a=0,$a<$count_image+1)
   $arr_u[$a] = 0
END_CYC

SETTHREAD (down, 1) // запускаем потоки

// далее зацикленный скрипт

WHILE(1)
   MOVE(1073,419)
   MOVE(1070,552)
   LCLICK(1070,552)
   LOGWRITE ("подвигал")
   WAIT(300)
END_CYC

THREAD(down, 0)
   GETSCREEN
   COLORMODE(5)
   FOR($d=1,$d<ARRSIZE($arr_d))
      IF_PICTURE_IN (760,268,835,714, STRCONCAT("d",$d,".bmp"), -1, $toch)
         LCLICK(1172,317)
         LOGWRITE ("вниз ",$d)
         $arr_d[$d] = 1
         WAITMS(50)
         SCREENSHOTEX(760,268,835,714, STRCONCAT("d",$d,"_"), 0)
         WAIT(90)
         $d=ARRSIZE($arr_d) // выход из цикла
      ELSE
         IF_PICTURE_IN (760,268,835,714, STRCONCAT("u",$d,".bmp"), -1, $toch)
            LCLICK(1167,269)
            LOGWRITE ("вверх ",$d)
            $arr_u[$d] = 1
            WAITMS(50)
            SCREENSHOTEX(760,268,835,714, STRCONCAT("u",$d,"_"), 0)
            WAIT(90)
            $d=ARRSIZE($arr_d) // выход из цикла
         END_IF
      END_IF
   END_CYC
   WAITMS(100)
END_THREAD


Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: Vint on February 08, 2017, 09:52:58 AM
На вопрос о нужности массива ответа нет уже 3-ю страницу.

После каждого нахождения и клика пауза 90 сек. На фоне жалоб про минутное запаздывание ни на какие мысли не наводит?
Title: Re: IF_PICTURE_IN поиск нескольких картинок помогите
Post by: loki on February 08, 2017, 01:02:20 PM
происходит так: нет кликов потом кликает когда картинка ушла уже почти к концу области анализа.
если бы пауза была после клика все бы отлично было а то по картинке которая после клика видно что кликнул с запаздыванием