Author Topic: IF_PICTURE_IN поиск нескольких картинок помогите  (Read 6808 times)

0 Members and 1 Guest are viewing this topic.

loki

  • Зашел в гости
  • *
  • Posts: 18
    • View Profile
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
 

ищет только первый что не так то?
« Last Edit: January 25, 2017, 09:01:04 AM by loki »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
В потоке нет задержки при ненахождении, это будет сильно грузить процессор впустую. Обычно 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). Прям табунами пошла. Кто виноват и что делать.


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Вот еще вариант
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

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Я просто на 4.11 сижу и SETVAR не стал уже делать, хоть мысль была.
Просто здесь не нужна гора переменных, хватит одной.
И $d1, $d2, $d3...  ставятся, но нигде не сбрасываются! Спорная польза от такого применения.
Вот если бы ему было нужно искать все и пометить какие нашли. И то удобней массив.
« Last Edit: January 25, 2017, 10:31:28 AM by Vint »


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Я просто на 4.11 сижу и SETVAR не стал уже делать, хоть мысль была.
Просто здесь не нужна гора переменных, хватит одной.
И $d1, $d2, $d3...  ставятся, но нигде не сбрасываются! Спорная польза от такого применения.
Вот если бы ему было нужно искать все и пометить какие нашли. И то удобней массив.

Ну из вопроса "ищет только первый что не так то?" выходит что нужно искать их все и отмечать найденные. Думаю что это только часть скрипта.
Да конечно массив разумнее.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Ну из вопроса "ищет только первый что не так то?" выходит что нужно искать их все и отмечать найденные.

Не факт. Ведь вложенность он не от балды поставил. И "ищет только первый" может не ищет когда там второй или третий. Может просто тупо изменение графики влияет, а не структура скрипта.


loki

  • Зашел в гости
  • *
  • Posts: 18
    • View Profile
да нужно искать все сразу и кликать в область
ок тогда я и массовом пробовал

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 ультим русик изначально кроме англ ничо не стоит  кликер последний (мое имхо дело в теге код)
« Last Edit: January 25, 2017, 05:01:57 PM by loki »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Я тебе уже написал правильный вариант. В цикле просматриваются все 7 картинок.
Почему у тебя
Code: (clickermann) [Select]
GETSCREEN
COLORMODE(5)
вынесено за поток и обновляется раз в 3 секунды, тогда как в потоке беспрерывно идет анализ. Без задержек это порождает бессмысленно высокую нагрузку.

Не работает и не находит это разные вещи. Делай лучше картинки.

loki

  • Зашел в гости
  • *
  • Posts: 18
    • View Profile
спасибо огромное :)

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

с массивом вообще не находит ни одну
« Last Edit: January 25, 2017, 05:37:48 PM by loki »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
не по теме: винда 7 ультим русик изначально кроме англ ничо не стоит  кликер последний (мое имхо дело в теге код)
Не, дело в изначально нерусской винде.


loki

  • Зашел в гости
  • *
  • Posts: 18
    • View Profile
дорогой ты мой человек Oraven а вот еще вопрос?
в конце разве не надо вот так

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

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

« Last Edit: January 26, 2017, 02:20:48 PM by loki »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
в конце разве не надо вот так
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")
Если до, то и писать нужно перед кликом.
Если после... после клика должна быть пауза чтобы дать информации обновится. Но всё это будет когда решишь вопрос выше (с гетскрином).






loki

  • Зашел в гости
  • *
  • Posts: 18
    • View Profile
нет нет я уже вариант взял который тут предложили в сообщении №2 от Oraven

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

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

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

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

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

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

« Last Edit: January 26, 2017, 04:00:01 PM by loki »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Код в своей версии ты забыл показать.


loki

  • Зашел в гости
  • *
  • Posts: 18
    • View Profile
извините

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


вот никаких изменений кроме второго потока и координат
« Last Edit: January 26, 2017, 05:14:38 PM by loki »