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

Основной раздел => Общие вопросы => Тема начата: Hito от Март 07, 2019, 01:01:05 pm

Название: IF_PICTURE_IN - Для новичков
Отправлено: Hito от Март 07, 2019, 01:01:05 pm
Очень часто вижу на форуме, как новички пытаются разобраться в том, как находить нужную картинку на экране. Мне это понятно, так как несколько лет назад сам тут ломал голову не одни сутки над этим ))) Решил написать для новичков подробный мануал на эту тему. Приступим...

1:
Начнем с того, что у  Clickermann-а, как и у других программ, нет реальных глаз, как у человека, и для того, чтобы "визуально" работать с экраном, ему нужно сделать снимок этого экрана и поместить в свой графический буфер. Вот этот снимок он и делает с помощью команды GETSCREEN. Если эта команада без координат, то Clickermann помещает в свой графический буфер скриншот ВСЕГО вашего экрана. Если же будут указаны координаты, как - GETSCREEN (x1, y1, x2, y2 ), то Clickermann поместит в свой графический буфер скриншот, сделанный строго в указанных координатах. Поехали дальше...

2:
Если после GETSCREEN (в следующей строке) вы используете команду COLORMODE и указываете режим COLORMODE-а, как - COLORMODE(5), то в буфер Clickermann-а поступает не та картинка, которая находится на вашем экране, а измененная, в зависимости от режима, указанного в команде COLORMODE. Для наглядности (чтобы было понятно) можно поиграться со следующим кодом. Только прежде, чем его запускать в кликере, сохраните этот скрипт в какую-либо папку.
Код: Clickermann
  1. GETSCREEN // Clickermann помещает в свой графический буфер скриншот вашего экрана
  2. COLORMODE(3) // Применяет к этому скриншоту режим COLORMODE
  3. SCREENSHOTFIX(0,0, $_xmax,$_ymax, "file.bmp") // Сохроняет скриншот, находящийся в его буфере, в папку, в которой будет сохранен этот скрипт
  4. HALT // Останавливает скрипт
После того, как скрипт отработает, в папке, в которой он сохранен, появится скриншот вашего экрана. Откройте этот скриншот и посмотрите его. Потом установите в скрипте другой режим COLORMODE - к примеру COLORMODE(6), и повторите операцию. Вы увидите разницу, между первым скрином и тем, что появится во второй раз. Проанализировав эту разницу, вы можете понять - как работает команда COLORMODE. Идем далее...

3:
После того, как Clickermann отскринит ваш экран и поместит скрин в свой графический буфер, он будет готов приступить к анализу этого скриншота. В нашем случае, он будет готов к поиску вашей заготовленной картинки на том скриншоте, который находится в буфере Clickermann-а. Имейте в виду, что та заготовка картинки, которую вы будете искать, должна быть сделана в соответствующем режиме COLORMODE, который Clickermann применял к скриншоту вашего экрана, при помещении его в свой буфер, для анализа. Поиском картинки у нас занимается оператор - IF_PICTURE_IN. Не трудно понять, что перефразируя с английского языка, это выглядит как - ЕСЛИ_КАРТИНКА_В. И так, рассмотрим этот оператор подробнее...
Код: Clickermann
  1. IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100)
  2. // IF_PICTURE_IN - Это - оператор, который говорит Clickermann-у о том, чем он будет заниматься, а именно - искать картинку
  3. // 0,0, $_xmax,$_ymax - Это координаты, в которых Clickermann будет искать картинку
  4. // file.bmp - Это собственно наш заготовленный скриншот, который мы будем искать "на экране"
  5. // О таких параметрах, как -1 и 100, вполне понятно написано в справке Clickermann-а
Думаю, что с этим тоже разобрались...

4:
Далее у нас идет оператор END_IF, говорящий о закрытии условия - ЕСЛИ_КАРТИНКА_В
Есть еще один оператор, который мы можем использовать во всей этой теме. Это - ELSE. Вариантов перевода этого оператора с английского языка не мало, но в нашем случае подходит вариант - ИНАЧЕ. Вот, как выглядит полностью наш скрипт вместе с этим оператором:
Код: Clickermann
  1. GETSCREEN // Clickermann помещает в свой графический буфер скриншот вашего экрана
  2. COLORMODE(3) // Применяет к этому скриншоту режим COLORMODE
  3. IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100) // "ЕСЛИ_КАРТИНКА_В..." - ищет картинку в заданных координатах на скрине, находящемся в буфере.
  4.   // Тут мы прописываем команды на случай, если картинка найдена.
  5. ELSE // "ИНАЧЕ"
  6.   // Тут прописываем действия на случай, если картинка не найдена.
  7. END_IF // КОНЕЦ_"ЕСЛИ..." - конец условия

5:
Теперь создадим скрин, который в последствии будем искать на экране. Создадим скрин цифры "3:". Вставляем код в кликер, который дан в пункте "2:" этого поста, а далее смотрим видео...
https://www.youtube.com/watch?v=aasgn66DgtE (https://www.youtube.com/watch?v=aasgn66DgtE)
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Hito от Март 07, 2019, 03:25:39 pm
Еще необходимо описать процедуру подготовки и сохранения картинки в PAINT-е. У многих с этим возникают огромные трудности.
И можно в типовые алгоритмы отправлять.
Добавил )
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Alexxx от Март 09, 2019, 02:33:59 pm
Спасибо за информацию. Проясните пару моментов, пожалуйста.
 1). Получение скриншота небольшой области экрана как то ускоряет процесс в сравнении со скриншотом всего экрана, скажем, в Windows7(10)?
 2). Как на скриншоте части экрана задаются координаты поиска нужной области - от края полученной картинки или от края экрана?
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Oraven от Март 09, 2019, 05:52:07 pm
Спасибо за информацию. Проясните пару моментов, пожалуйста.
 1). Получение скриншота небольшой области экрана как то ускоряет процесс в сравнении со скриншотом всего экрана, скажем, в Windows7(10)?
 2). Как на скриншоте части экрана задаются координаты поиска нужной области - от края полученной картинки или от края экрана?

1. При указании маленькой области снимка при разрешении например 1920х1080 сам процесс GETSCREEN отрабатывает в разы быстрее.

2. Размер скриншота не изменяется, просто обновляется только указанная область. Остальная часть снимка может содержать части старых снимков, если был снимок всего экрана, или вообще остаться черной.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Hito от Март 09, 2019, 05:56:32 pm
2. Размер скриншота не изменяется, просто обновляется только указанная область. Остальная часть снимка может содержать части старых снимков, если был снимок всего экрана, или вообще остаться черной.
Хм... А почему тогда, если я скриню пол экрана, то при SCREENSHOTFIX(0,0, $_xmax,$_ymax, "file.bmp"), у меня сохроняется скрин, на ктором только пол экрана...?
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Oraven от Март 09, 2019, 06:01:57 pm
Хм... А почему тогда, если я скриню пол экрана, то при SCREENSHOTFIX(0,0, $_xmax,$_ymax, "file.bmp"), у меня сохроняется скрин, на ктором только пол экрана...?

Запускаю код
Код: Clickermann
  1. GETSCREEN(100,100,500,500)
  2. SCREENSHOTFIX(0,0, $_xmax,$_ymax, "file.bmp", 0)
  3. HALT

В результате снимок равен размеру экрана, но при этом изменился только участок 100,100,500,500
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Hito от Март 09, 2019, 06:28:50 pm
Хм... А почему тогда, если я скриню пол экрана, то при SCREENSHOTFIX(0,0, $_xmax,$_ymax, "file.bmp"), у меня сохроняется скрин, на ктором только пол экрана...?

Запускаю код
Код: Clickermann
  1. GETSCREEN(100,100,500,500)
  2. SCREENSHOTFIX(0,0, $_xmax,$_ymax, "file.bmp", 0)
  3. HALT

В результате снимок равен размеру экрана, но при этом изменился только участок 100,100,500,500

Хм... Да...
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Hito от Март 09, 2019, 06:30:30 pm
Аааа... Я с привязкой к окну перепутал... В привязке если делаешь скрин, то "0,0, $_xmax,$_ymax" будет равно размеру окна, к которому кликер привязан.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Alexxx от Март 14, 2019, 06:30:08 pm
Спасибо за развёрнутые ответы. А нет ли на форуме такой же темы для команды "IF_PIXEL_IN"? Поиск ничего не даёт. Не понятно, как прикрутить к команде какое либо действие при поиске нескольких цветов. Допустим, я ищу на участке скрина цвета красный и зелёный. Как сделать, что бы в зависимости от найденного цвета переменная принимала значение "1" (0), а в лог печаталось сообщение "красный" (зелёный)?
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Hito от Март 14, 2019, 10:33:02 pm
Как сделать, что бы в зависимости от найденного цвета переменная принимала значение "1" (0), а в лог печаталось сообщение "красный" (зелёный)?

Код: Clickermann
  1. GETSCREEN
  2. IF_PIXEL_IN(0,0, $_xmax,$_ymax, 255)
  3.   LOGWRITE ("Красный")
  4.   $peremennaya = 1
  5. else
  6.   IF_PIXEL_IN(0,0, $_xmax,$_ymax, 122) // Я хз - какой там зеленый...
  7.      LOGWRITE ("Зеленый")
  8.      $peremennaya = 1
  9.   else
  10.      $peremennaya = 0
  11.   END_IF
  12. END_IF
  13.  
  14. IF($peremennaya)
  15.   // какой-то цвет был найден - смотри лог
  16. else
  17.  // Никакого цвета не было найдено
  18. END_IF
  19. HALT
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Hito от Март 15, 2019, 01:38:11 am
IF($peremennaya)
В данном случае $peremennaya выполняет функцию переменной типа - boolean. Если $peremennaya имеет значение - 0, то она является false, а если она имеет значение отличное от ноля, то она является true.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Kibes от Март 15, 2019, 11:19:07 pm
Подскажите, а если мне нужно перебирать много картинок, скажем так:
001.bmp
002.bmp
003.bmp
...
010.bmp
Мне для каждого файла нужно писать отдельную процедуру, или можно прикрутить счетчик, что бы к конце файла добавляло +1
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Космич от Март 15, 2019, 11:48:28 pm
Код: Clickermann
  1. FOR($count = 1, $count < 11)
  2.   GETSCREEN
  3.   IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT(STRCUT("00", 0, 3 - STRLEN($count)), $count, ".bmp"), -1, 100)
  4.      LCLICK($_return1, $_return2)
  5.      WAITMS(100)
  6.   END_IF
  7. END_CYC
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Kibes от Март 16, 2019, 01:05:10 am
Спасибо, подстроил под чуть под свой код, все работает :)
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Омск от Март 16, 2019, 07:48:25 pm
Я посмотрел видео и не понял, как используется картинка, которая скопирована из скриншота? Какая строчка кода ищет эту картинку?
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Hito от Март 16, 2019, 10:31:09 pm
Я посмотрел видео и не понял, как используется картинка, которая скопирована из скриншота? Какая строчка кода ищет эту картинку?
Ппц... Кому все писал - хз...
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Alexxx от Март 19, 2019, 07:28:27 pm
Код: Clickermann
  1. GETSCREEN
  2. IF_PIXEL_IN(0,0, $_xmax,$_ymax, 255)
  3.   LOGWRITE ("Красный")
  4.   $peremennaya = 1
  5. else
  6. ...  
  7.  

у команды "IF_PIXEL_IN" есть блок "else"  :o ?! В справке про это ни слова нет. Это ко всем командам, начинающимися на "IF" относится?
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Kibes от Июль 27, 2019, 12:53:25 am
Код: Clickermann
  1. IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100)
  2. // IF_PICTURE_IN - Это - оператор, который говорит Clickermann-у о том, чем он будет заниматься, а именно - искать картинку
  3. // 0,0, $_xmax,$_ymax - Это координаты, в которых Clickermann будет искать картинку
  4. // file.bmp - Это собственно наш заготовленный скриншот, который мы будем искать "на экране"
  5. // О таких параметрах, как -1 и 100, вполне понятно написано в справке Clickermann-а
Думаю, что с этим тоже разобрались...
Немножко не понятно, что за параметр -1, толи туплю, толи не могу разобраться.
В справке сказано, что bgcolor - необязательный параметр; игнорируемый цвет фона входного изображения. А что в примере обозночает -1?
Поясню в чем пытаюсь разобраться, я создаю картинку, где есть текст. Текст этот черными буквами, цвет его не меняется, а вот цвет фона меняется. Черный текст, на желтой или белой подложке... Можно ли как-то саму подложку игнорировать?
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Oraven от Июль 27, 2019, 07:17:05 am
Немножко не понятно, что за параметр -1, толи туплю, толи не могу разобраться.
В справке сказано, что bgcolor - необязательный параметр; игнорируемый цвет фона входного изображения. А что в примере обозночает -1?

-1 означает что прозрачность не используется. За место -1 ты должен указать цвет в твоей картинке который будет считаться за прозрачность. Просто выбери цвет, закрась им в графическом редакторе все лишнее и укажи этот цвет в функции.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: kirihor от Декабрь 19, 2019, 11:59:03 am
Картинка на єкране появляется в интервале от 15 до 150 секунд. Как ее поймать что б не ждать постоянно по максимуму?
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: kirihor от Декабрь 19, 2019, 02:22:51 pm
  GETSCREEN
IF_PICTURE_IN (233, 194, 970, 650, "yt_z.bmp")
   wait(5)
  lclick($_return1, $_return2)

GETSCREEN
  IF_PICTURE_IN (13, 33, 985, 71, "ok.bmp")
IF($t_wait = 0)
   WHILE(($_time_h ! 3)|($_time_m ! 5)) // ждем 03:05
      WAITMS(500)
       END_CYC
   $t_wait = 1
  wait(5)
  lclick($_return1, $return2)
  END_IF
  END_IF
  END_IF

Никак не может найти картинку ok.bmp. Поправьте, если не сложно, скрипт.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Hito от Январь 01, 2020, 03:14:24 pm
  GETSCREEN
IF_PICTURE_IN (233, 194, 970, 650, "yt_z.bmp")
   wait(5)
  lclick($_return1, $_return2)

GETSCREEN
  IF_PICTURE_IN (13, 33, 985, 71, "ok.bmp")
IF($t_wait = 0)
   WHILE(($_time_h ! 3)|($_time_m ! 5)) // ждем 03:05
      WAITMS(500)
       END_CYC
   $t_wait = 1
  wait(5)
  lclick($_return1, $return2)
  END_IF
  END_IF
  END_IF

Никак не может найти картинку ok.bmp. Поправьте, если не сложно, скрипт.

Код: Clickermann
  1. GETSCREEN // Делаем скрин экрана в буфер кликера для анализа
  2. IF_PICTURE_IN (233, 194, 970, 650, "yt_z.bmp") // Ищем на скрине yt_z.bmp в указанных координатах
  3.   wait(5) // Это зачем?
  4.   lclick($_return1, $_return2)
  5.  
  6.   GETSCREEN // Если wait(5) в третьей строке лишний, то и эта строка лишняя - скрин экрана мы уже сделали.
  7.   IF_PICTURE_IN (13, 33, 985, 71, "ok.bmp") // Ищем на скрине ok.bmp в указанных координатах
  8.      // А дальше что-то не понятное...
  9.      IF($t_wait = 0)
  10.         WHILE(($_time_h ! 3)|($_time_m ! 5)) // ждем 03:05
  11.            WAITMS(500)
  12.         END_CYC
  13.         $t_wait = 1
  14.         wait(5)
  15.         lclick($_return1, $return2)
  16.      END_IF
  17.   END_IF
  18. END_IF

Ты понимаешь, что у тебя вот этот цикл
Код: Clickermann
  1. WHILE(($_time_h ! 3)|($_time_m ! 5)) // ждем 03:05
  2.   WAITMS(500)
  3. END_CYC
будет крутиться, пока не наступит 3 часа, или любой час и 5 минут?

Ты объясни хоть задачу. А то у тебя в скрипте чепуха какая-то...
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Oraven от Январь 02, 2020, 06:15:13 pm
Ты понимаешь, что у тебя вот этот цикл
Код: Clickermann
  1. WHILE(($_time_h ! 3)|($_time_m ! 5)) // ждем 03:05
  2.   WAITMS(500)
  3. END_CYC
будет крутиться, пока не наступит 3 часа, или любой час и 5 минут?

Ты объясни хоть задачу. А то у тебя в скрипте чепуха какая-то...

Там же подписано что ждем 3:05, так и есть, цикл перестанет выполняться когда будет 3:5
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Hito от Январь 02, 2020, 09:52:38 pm
Там же подписано что ждем 3:05, так и есть, цикл перестанет выполняться когда будет 3:5

Тогда может не так
Код: Clickermann
  1. WHILE(($_time_h ! 3)|($_time_m ! 5))
А так...?
Код: Clickermann
  1. WHILE(($_time_h ! 3)&($_time_m ! 5))
Я просто не понимаю - человеку нужно включить скрипт и лечь спать, а скрипт чтоб сработал ОДИН раз ночью? В 03:05?
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Hito от Январь 02, 2020, 10:05:38 pm
Не могу понять задачу по скрипту...
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: JacsoN от Январь 04, 2020, 02:42:42 am
нет  Тех Задания  что  тут  понимать?)
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Vint от Январь 04, 2020, 12:00:48 pm
Тогда может не так
Код: Clickermann
  1. WHILE(($_time_h ! 3)|($_time_m ! 5))
А так...?
Код: Clickermann
  1. WHILE(($_time_h ! 3)&($_time_m ! 5))
Нет, всё правильно.

Не находит по причине, что и всегда. "OK" не совпадает полностью. Сглаживание текста, полупрозрачность и т.п.
Используй цветокоррекцию и % поиска.
Задержка должна быть не перед, а ПОСЛЕ клика.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: starweb от Январь 24, 2020, 11:58:49 pm
Всех приветствую. Может ошибся разделом, и нужно было запостить это в ошибках, но вероятно что это только у меня.
Ситуация в следующем. С помощью функции if_picture_in пытаюсь щелкнуть по элементу веб страницы (кнопка). Эта кнопка может появится в любом месте страницы. КМ находит картинку и выдает координаты, но они не совпадают с реальными координатами кнопки на странице. Я бы мог решить это добавив разницу между $_return1 , $_return2 и реальными координатами, но эта разница тоже меняется в зависимости от положения кнопки на экране. Самому трудно поверить, но это так. Скрины в приложении. Один снимок дисплея сделан с телефона что бы увидить где реально курсор находится, другой скриншот экрана. Использую КМ 14.4.003b . Windows 10. Может кто уже сталкивался с таким.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: starweb от Январь 25, 2020, 01:43:13 pm
хочу вас обрадовать - это заразно, но давным-давно лечится установлением масштаба рабочего стола на 100%
Спасибо! Помогло:) И я ж думал об этом. Но почему то ковырялся в спец возможностях. А оно в системе
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: tuturum от Февраль 01, 2020, 02:32:15 pm
Ребят, может кто помочь со скриптом? Не дружу с ними совсем( Младший просит сделать поиск картинки на экране, клацать на нее мышкой и нажимать V постоянно.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: tuturum от Февраль 01, 2020, 04:11:15 pm
Там только функции, я фиг знает какие вставлять и в каком порядке( Может есть какой-нить похожий скрипт? Я бы подредактил, с нуля не разберусь быстро, а сидеть несколько дней ради такого пустяка сами понимаете.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: tuturum от Февраль 04, 2020, 01:26:05 pm
Премного благодарен! ) И еще пару вопросиков: кликер так и должен слегка задумываться пока картинку ищет? Около 3сек скрипт проходит. Работать работает, но только не в игре (roblox).
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: tuturum от Февраль 04, 2020, 05:34:12 pm
Да, я уже разобрался что куда, покурил ман, толку ноль. Не видит хоть убейся. И colormode пробовал 6-8. Не видит хоть тресни. Может редактировать надо в каком-нить фотошопе, либо разрешение делать выше чем окно игры, не знаю.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: nesttek от Февраль 20, 2020, 11:39:19 am
Добрый день.
Прошу помочь со скриптом для 1С:УТ .
Не могу настроить переменную или (or?) , и под размер окна 1С дабы избавиться от большой нагрузки на процессор :
Суть такая , приходят заказы в 1С , они под разными именами попадают в базу(Допустим аренда\покупка и т.д) , далее хотел настроить оповещение во всплывающем окне или звуке на это событие , но из за большой нагрузки на процессор всё это происходит с большой задержкой (нагрузка кликермана 50-60% , машины довольно старые , c2d e8550)
Как можно оптимизировать код , чтобы он искал изображение с переменной "или" , т.к у меня получилось только через копирование всего кода .
 
И второй вопрос , не могу настроить размер окна ( не понимаю какие точки вписывать в getscreen )

Сам код:
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "аренда.bmp", -1, 100)
LOGWRITE ("аренда!")
HINTPOPUP("АРЕНДА", "АРЕНДА")
SOUND("play.wav")
END_IF
WAITMS(60)
//=============================================
 GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "аренда1.bmp", -1, 100)
LOGWRITE ("аренда!")
HINTPOPUP("АРЕНДА1", "АРЕНДА1")
SOUND("play.wav")
END_IF
WAITMS(60)
//=============================================
        GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "касса1.bmp", -1, 100)
LOGWRITE ("аренда!")
HINTPOPUP("КАССА1", "КАССА1")
SOUND("play.wav")
END_IF
WAITMS(460)
//=============================================
     GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "касса.bmp", -1, 100)
LOGWRITE ("аренда!")
HINTPOPUP("КАССА", "КАССА")
SOUND("play.wav")
END_IF
WAITMS(460)
//=============================================
     GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Касса2.bmp", -1, 100)
LOGWRITE ("аренда!")
HINTPOPUP("КАССА2", "КАССА2")
SOUND("play.wav")
END_IF
WAITMS(460)
//=============================================
                   GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Касса3.bmp", -1, 100)
LOGWRITE ("аренда!")
HINTPOPUP("КАССА3", "КАССА3")
SOUND("play.wav")
END_IF
WAITMS(640)
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Vint от Февраль 20, 2020, 01:53:03 pm
Задержки есть, значит основная нагрузка из-за больших размеров заготовленных картинок, их нужно уменьшить.
Если это текст, достаточно делать узкую полоску высотой 2-3 px по центру надписи.
Если произвольные иконки - область делать 3-5-10-15... до 50 px.
Стоит ещё ограничить GETSCREEN и поиск определённой областью. Наверняка же весь экран не нужен.

Код: Clickermann
  1. STRSEPARATE("аренда,аренда1,касса,касса1,касса2,касса3", ",", $block)
  2. $size_block = ARRSIZE($block)
  3.  
  4. WHILE(1)
  5.    GETSCREEN
  6.    FOR($i=0, $i < $size_block)
  7.        IF_PICTURE_IN(0,0, $_xmax,$_ymax, STRCONCAT($block[$i], ".bmp"))
  8.            LOGWRITE(STRCONCAT($block[$i], "!"))
  9.            HINTPOPUP($block[$i], $block[$i])
  10.            SOUND("play.wav")
  11.            WAITMS(460)
  12.        ELSE
  13.            WAITMS(30)
  14.        END_IF
  15.    END_CYC
  16.    WAITMS(200)
  17. END_CYC
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: nesttek от Февраль 24, 2020, 08:12:20 am
Спасибо! Помогло уменьшение размера картинок и уменьшение области экрана.
Еще один маленький вопросик ,  как на отдельную картинку выполнить действие? Например :   "касса" и "аренда" нужно нажатие f1. На остальных только оповещение .
Еще раз , большое спасибо!
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Vint от Февраль 25, 2020, 08:26:25 am
Код: Clickermann
  1. STRSEPARATE("аренда,аренда1,касса,касса1,касса2,касса3", ",", $block)
  2. $size_block = ARRSIZE($block)
  3.  
  4. WHILE(1)
  5.    GETSCREEN
  6.    FOR($i=0, $i < $size_block)
  7.        IF_PICTURE_IN(0,0, $_xmax,$_ymax, STRCONCAT($block[$i], ".bmp"))
  8.            IF(($i = 0) | ($i = 2))
  9.                KEYPRESS(#F1)
  10.                WAITMS(200)                
  11.            END_IF
  12.  
  13.            LOGWRITE(STRCONCAT($block[$i], "!"))
  14.            HINTPOPUP($block[$i], $block[$i])
  15.            SOUND("play.wav")
  16.            WAITMS(460)
  17.        ELSE
  18.            WAITMS(30)
  19.        END_IF
  20.    END_CYC
  21.    WAITMS(200)
  22. END_CYC
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: wert19s от Апрель 05, 2020, 07:29:46 pm
Добрый вечер,

Голову сломал:

GETSCREEN // Clickermann
COLORMODE(3)
IF_PICTURE_IN (20,150, $_xmax,$_ymax, "Y.bmp", -1, 80)
   BEEP(800,200)
     LOGWRITE ("BOMBA")
      DBLCLICK(493,99)
       WAIT(3)
   DBLCLICK(557,108)
ELSE // "ИНАЧЕ"
   BEEP(800,200)
   BEEP(800,200)
   BEEP(800,200)
   LOGWRITE ("О")
END_IF //
HALT

этот код не работает, когда не находит картинку то работает и пишет в лог О, а если находит то виснет кликер "не отвечает" закрываю его через диспечер.
и еще когда координаты оставляю :0,0 тоже виснет.
что может быть проблема?
спасибо
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Сексуальный украинец от Апрель 05, 2020, 08:03:48 pm

Велика картинка і маленький відсоток збігу
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: wert19s от Апрель 05, 2020, 09:36:00 pm

Велика картинка і маленький відсоток збігу


Подробней ???что поменять что бы работало?где поменять?
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Oraven от Апрель 06, 2020, 07:10:01 am
Все функции начинающиеся с IF_ поддерживают ELSE так как являются своего рода условиями.

Единственное почему кликер во время поиска картинки может длительное время не отвечать, это чрезмерный размер картинки. Придерживайся размера 50х50 пикселов.

Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: wert19s от Апрель 07, 2020, 10:29:59 pm
че-т не выходит
я делаю скрин с задаными координатами там вырезаю картинку маленькую относительно а затем вставляю ее в кликер
запускаю кликер :
Getscreen  стоит на координатах 0,0 тоесть весь экран....менял на часть экрана...? что не так делаю?

Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Hito от Апрель 09, 2020, 12:58:05 am
что не так делаю?
Еще один верующий, что тут телепаты...?
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: wert19s от Апрель 11, 2020, 11:42:19 pm
Ну делаю все по инструкции а не работает
виснет кликер приходится вырубать через диспечер
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Hito от Апрель 13, 2020, 08:12:05 am
Ну делаю все по инструкции а не работает
виснет кликер приходится вырубать через диспечер
Я к тому, что код надо выкладывать. Никто же не знает - что ты там по инструкции намутил...
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Svetiik от Апрель 18, 2020, 09:11:16 am
Подскажите пожалуйста можно ли прописать в скрипте , чтоб автоматически ставилась дата первого запуска скрипта и к этой дате прибавлялось 3 дня и он выполнял действие (но скрипт не работает все 3 дня , а включается примерно на час в день )
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Чольшой Блен от Апрель 18, 2020, 09:17:54 am
Подскажите пожалуйста можно ли прописать в скрипте , чтоб автоматически ставилась дата первого запуска скрипта и к этой дате прибавлялось 3 дня и он выполнял действие (но скрипт не работает все 3 дня , а включается примерно на час в день )
Ну конечно можно, при пуске проверять текстовый файл, считывая там последнюю записанную дату и сравнивать с текущей.
В зависимости от результатов сравнения, либо выполнять действие, либо записывать новую дату, если прошло более трёх дней и нужно повторить первый пуск и отсчёт от него.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Svetiik от Апрель 18, 2020, 10:07:17 am
Подскажите пожалуйста можно ли прописать в скрипте , чтоб автоматически ставилась дата первого запуска скрипта и к этой дате прибавлялось 3 дня и он выполнял действие (но скрипт не работает все 3 дня , а включается примерно на час в день )
Ну конечно можно, при пуске проверять текстовый файл, считывая там последнюю записанную дату и сравнивать с текущей.
В зависимости от результатов сравнения, либо выполнять действие, либо записывать новую дату, если прошло более трёх дней и нужно повторить первый пуск и отсчёт от него.

Я тут новичок , можете написать примерно как должен выглядеть скрипт ?
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Чольшой Блен от Апрель 18, 2020, 12:52:50 pm
Я тут новичок , можете написать примерно как должен выглядеть скрипт ?
НОВИЧОК?!!  Привет, Петрову и Боширову!  ;D
Если память мне не врёт, то на форуме и COVID-19 уже регистрировался! :o

Ну конечно напишу.
Скрипт  должен выглядеть, как показано в примерах справки и меню готовых шаблонов.
Каждый интересующийся Новичёк должен сначала прочесть их, а потом уточнять на форуме, то что осталось неясным.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Svetiik от Апрель 18, 2020, 02:31:13 pm
Я тут новичок , можете написать примерно как должен выглядеть скрипт ?
НОВИЧОК?!!  Привет, Петрову и Боширову!  ;D
Если память мне не врёт, то на форуме и COVID-19 уже регистрировался! :o

Ну конечно напишу.
Скрипт  должен выглядеть, как показано в примерах справки и меню готовых шаблонов.
Каждый интересующийся Новичёк должен сначала прочесть их, а потом уточнять на форуме, то что осталось неясным.
Я не знаю почему , но справка у меня не открывается 😭
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Vint от Апрель 19, 2020, 02:00:45 pm
Я не знаю почему , но справка у меня не открывается 😭
В папке с программой лежит ненужный файл "Если не открывается справка.txt". Ни в коем случае в него не заглядывать! Он совсем не про справку, название обманчиво и сделано для ввода новичков в заблуждение.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Daimond от Апрель 28, 2020, 06:15:40 pm
     Здравствуйте ,уважаемые форумчане! Скажите плиз как правильно написать скрипт?
     Дано:
Инвентарь с ячейками вертикальный,в нем случайным порядком располагаются одинаковые предметы кольца. Ну по внешн. виду одно и тоже.
     П.С. (делаю картинку в bmp 24 бит(несколько пискелей где то). Получается продать только один предмет в определенном слоте и все до и дальше по области не ищет и не даблкликает(не продается).
     Необходимо: находить по пикселю или по картинке (лучше) все кольца  в инвентаре от верхнего лев. угла до правого нижнего и продавать их двойным кликом левой кн мыши по очереди слева направо. ЧТобы без привязки к определенным координатам и не тыкало в одно и тоже место. Игра в окне, разрешение 1024 на 768 в левой верхнем угру монитора фуллхд, мин настройки графики.
Спасибо. Желательно поменьше нагрузку на ОС(проц) и чтоб без палева( ну эт так к слову)
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Hito от Апрель 28, 2020, 06:31:06 pm
     Здравствуйте ,уважаемые форумчане! Скажите плиз как правильно написать скрипт?
     Дано:
Инвентарь с ячейками вертикальный,в нем случайным порядком располагаются одинаковые предметы кольца. Ну по внешн. виду одно и тоже.
     П.С. (делаю картинку в bmp 24 бит(несколько пискелей где то). Получается продать только один предмет в определенном слоте и все до и дальше по области не ищет и не даблкликает(не продается).
     Необходимо: находить по пикселю или по картинке (лучше) все кольца  в инвентаре от верхнего лев. угла до правого нижнего и продавать их двойным кликом левой кн мыши по очереди слева направо. ЧТобы без привязки к определенным координатам и не тыкало в одно и тоже место. Игра в окне, разрешение 1024 на 768 в левой верхнем угру монитора фуллхд, мин настройки графики.
Спасибо. Желательно поменьше нагрузку на ОС(проц) и чтоб без палева( ну эт так к слову)
Прочти хотя бы эту страницу форума... Начиная со второго сообщения сверху.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Daimond от Май 03, 2020, 11:48:43 am
Ясно-понятно. Жаль конечно, что не работает и ответ таков. Я же приложил свой скрипт и он не пашет,хотя в моем понимании слева направо по картинке должен находить и даблкликать,а ннет) У меня уже есть пару скриптов от мала до среднего с подпрограммой. Там работает хоть и иногда слетает по неизвестным причинам. Игра та же скрипт не изменяется, а иногда не работает. Наверное игроделы что-то мутят или кликер тупит, или еще что-то. Может нужны новые переменные и команды, но почему то картинку только одну находоит в опред. месте, а до нее такая же , но не ищет и дальше тоже.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Vint от Май 03, 2020, 04:31:54 pm
Если 'такая же' но не находит, то варианта всего два. Не попадает в область поиска или какртинка та, да не та. Она отличается. С вероятностью 99.99% это так, можешь даже не спорить. Возьми эти две картинки и наложи слоями в фотошопе, либо сразу увидишь разницу либо включив режим наложения 'разница' выделить волшебной палочкой с нулевыми допусками цвет 0,0,0. Всё что не попадает - отличается. Там же увидишь значения цвета в одной точке.
Так работает масштабирование во флеш и сглаживание везде.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: wert19s от Май 15, 2020, 12:59:43 pm
Ну делаю все по инструкции а не работает
виснет кликер приходится вырубать через диспечер
Я к тому, что код надо выкладывать. Никто же не знает - что ты там по инструкции намутил...

Ну вот намутил первое и работает вход в игрушку, теперь понял как все делать правильно
все дело было в размере первого скрина с которого вырезал.
тоесть первый скрин с которого делал заготвку сначала был полныи экран а потом сделал 30Х30 а с него уже делал картинку маленькую...все получилось...


$check = 0
WHILE($check = 0)
   GETSCREEN
   colormode(5)
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Vhod.bmp", -1, 75)
      $check = 1
      LCLICK($_return1, $_return2)
      print("da")
      WAITM(3)
   ELSE
      print("net")
   END_IF
END_CYC
вот у меня такой примитивный  код для в входа в игру
вопрос: мне нужно вот таких кликов по картинку ну наверное штук 10-15 для одного окна как мне уменшить код  что не писать этот код 15 раз если возможно конечно.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: wert19s от Май 15, 2020, 02:28:41 pm
Код: Clickermann
  1. FOR($count = 1, $count < 11)
  2.   GETSCREEN
  3.   IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT(STRCUT("00", 0, 3 - STRLEN($count)), $count, ".bmp"), -1, 100)
  4.      LCLICK($_return1, $_return2)
  5.      WAITMS(100)
  6.   END_IF
  7. END_CYC



Я новичек  можна дословно обьяснить что точно он делает?

Я понимаю что он ищет из 10 или 11 картинок-заготовок и если находит одну из них то делает действия или если он находит все то делает?
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Hito от Май 15, 2020, 04:06:26 pm
Код: Clickermann
  1. FOR($count = 1, $count < 11)
  2.   GETSCREEN
  3.   IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT(STRCUT("00", 0, 3 - STRLEN($count)), $count, ".bmp"), -1, 100)
  4.      LCLICK($_return1, $_return2)
  5.      WAITMS(100)
  6.   END_IF
  7. END_CYC



Я новичек  можна дословно обьяснить что точно он делает?

Я понимаю что он ищет из 10 или 11 картинок-заготовок и если находит одну из них то делает действия или если он находит все то делает?

Цикл, "заряженный" на 10 повторений и ищущий картинки. Рядом со скриптом (в одной папке с ним) находится 10 картинок, типа - с 001.bmp до 010.bmp. Вот он их в цикле и ищет. Я бы поместил бы все нужные картинки в отдельную папку и в скрипте взял бы содержимое папки в массив, а уже проходясь по массиву искал бы картинки.

Код: Clickermann
  1. IF($click_time < $_ms) // Если после последнего клика прошла секунда
  2.   getfilelist($pic, "папка\*.bmp") // Забираем в массив все картинки из папки
  3.   GETSCREEN // Делаем скрин экрана
  4.   FOR($a=0,$a<arrsize($pic)) // Запускаем цикл по массиву
  5.      IF_PICTURE_IN (0,0, $_xmax,$_ymax, $pic[$a], -1, 100) // Если картинка найдена
  6.         LCLICK($_return1, $_return2) // Кликаем по ней
  7.         $click_time = $_ms+1000 // Заводим таймер клика на секунду
  8.         $a=9999 // Увеличиваем переменную для выхода из цикла
  9.      END_IF
  10.   END_CYC
  11.   UNDEFINE ($pic) // Обнуляем массив
  12. END_IF
  13. WAITMS(50)

Единственное что, не помню - есть ли в версиях ниже 4.14, getfilelist...
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: wert19s от Май 15, 2020, 08:58:27 pm
Код: Clickermann
  1. FOR($count = 1, $count < 11)
  2.   GETSCREEN
  3.   IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT(STRCUT("00", 0, 3 - STRLEN($count)), $count, ".bmp"), -1, 100)
  4.      LCLICK($_return1, $_return2)
  5.      WAITMS(100)
  6.   END_IF
  7. END_CYC



Я новичек  можна дословно обьяснить что точно он делает?

Я понимаю что он ищет из 10 или 11 картинок-заготовок и если находит одну из них то делает действия или если он находит все то делает?

Цикл, "заряженный" на 10 повторений и ищущий картинки. Рядом со скриптом (в одной папке с ним) находится 10 картинок, типа - с 001.bmp до 010.bmp. Вот он их в цикле и ищет. Я бы поместил бы все нужные картинки в отдельную папку и в скрипте взял бы содержимое папки в массив, а уже проходясь по массиву искал бы картинки.

Код: Clickermann
  1. IF($click_time < $_ms) // Если после последнего клика прошла секунда
  2.   getfilelist($pic, "папка\*.bmp") // Забираем в массив все картинки из папки
  3.   GETSCREEN // Делаем скрин экрана
  4.   FOR($a=0,$a<arrsize($pic)) // Запускаем цикл по массиву
  5.      IF_PICTURE_IN (0,0, $_xmax,$_ymax, $pic[$a], -1, 100) // Если картинка найдена
  6.         LCLICK($_return1, $_return2) // Кликаем по ней
  7.         $click_time = $_ms+1000 // Заводим таймер клика на секунду
  8.         $a=9999 // Увеличиваем переменную для выхода из цикла
  9.      END_IF
  10.   END_CYC
  11.   UNDEFINE ($pic) // Обнуляем массив
  12. END_IF
  13. WAITMS(50)

Единственное что, не помню - есть ли в версиях ниже 4.14, getfilelist...
a если есть 2 картинки которые находит как определяет кто первыи а кто второй из-за нумерации?
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Hito от Май 15, 2020, 09:20:59 pm
a если есть 2 картинки которые находит как определяет кто первыи а кто второй из-за нумерации?
Ну так пронумеруй их в названии последовательно. Ты вопросы задаешь уже не нужные - экспериментируй.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: wert19s от Май 17, 2020, 10:45:29 pm
Добрый вечер еще 3 вопросa : игры маил.ру там как бы заходишь в верхнюю панел далее охота открывается окошко флеш тоесть на этом окошке кликер должен найти картинку вопрос делать так же как и обычно без всяких дополнений?или для флеша нужно что-то особенное?
2.и еще : как реализовать нахождение картинки и клик к примеру на 2 сантиметра ниже/выше в сторону? возможно ли?
3. черный цвет не находит с colormode 5 может не применять к черному?
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: wert19s от Май 19, 2020, 10:06:25 pm
1:
 wait(1)
LCLICK(624,189)  // zapad
 wait(3)
$check = 0
WHILE($check = 0)
   GETSCREEN
   colormode(5)
   IF_PICTURE_IN (0,0,$_xmax,$_xmax, "1.bmp", -1, 65)
      $check = 1
      print("Boy")
      LCLICK($_return1-32, $_return2-18)
      wait(3)
      LCLICK(363,187)  // 2373236
      wait(3)
      LCLICK(698,340)  // 6184542
      wait(4)
      LCLICK(698,340)  // 6184542
      wait(5)
      DBLCLICK(704,100)  // 10127201
      wait(3)
      DBLCLICK(704,100)  // 10127201
      WAITM(3)
   ELSE
      print("net")
       GOTO(2)
   END_IF
END_CYC


2:
wait(1)
LCLICK(668,203)  // yug
 wait(3)
$check = 0
WHILE($check = 0)
   GETSCREEN
   colormode(5)
   IF_PICTURE_IN (0,0,$_xmax,$_xmax, "1.bmp", -1, 65)
      $check = 1
      LCLICK($_return1-32, $_return2-18)
      wait(3)
      LCLICK(363,187)  // 2373236
      wait(3)
      LCLICK(698,340)  // 6184542
      wait(4)
      LCLICK(698,340)  // 6184542
      wait(5)
      DBLCLICK(704,100)  // 10127201
      wait(3)
      DBLCLICK(704,100)  // 10127201
      print("Boy")
      WAITM(3)
   ELSE
      print("net")
       GOTO(3)
   END_IF
END_CYC


3:
wait(1)
LCLICK(723,186)  // vostok
wait(3)
$check = 0
WHILE($check = 0)
   GETSCREEN
   colormode(5)
   IF_PICTURE_IN (0,0,$_xmax,$_xmax, "1.bmp", -1, 65)
      $check = 1
      LCLICK($_return1-32, $_return2-18)
      wait(3)
      LCLICK(363,187)  // 2373236
      wait(3)
      LCLICK(698,340)  // 6184542
      wait(4)
      LCLICK(698,340)  // 6184542
      wait(5)
      DBLCLICK(704,100)  // 10127201
      wait(3)
      DBLCLICK(704,100)  // 10127201
      print("Boy")
      WAITM(3)
   ELSE
      print("net")
        GOTO(4)
   END_IF
END_CYC

4:
wait(1)

LCLICK(670,180)  // sever
wait(3)
$check = 0
WHILE($check = 0)
   GETSCREEN
   colormode(5)
   IF_PICTURE_IN (0,0,$_xmax,$_xmax, "1.bmp", -1, 65)
      $check = 1
      LCLICK($_return1-32, $_return2-18)
      wait(3)
      LCLICK(363,187)  // 2373236
      wait(3)
      LCLICK(698,340)  // 6184542
      wait(4)
      LCLICK(698,340)  // 6184542
      wait(5)
      DBLCLICK(704,100)  // 10127201
      wait(3)
      DBLCLICK(704,100)  // 10127201
      print("Boy")
      WAIT(3)
   ELSE
      print("net")
         GOTO(1)
   END_IF
END_CYC
ну вот наконец сделал: кликабельнный только серый цвет не смог его найти но есть и яркий зеленый его нашел ну и подправил клик как видите по координаты серого цвета.
Спасибо всем кто помог




Можно ли этот код как-то упростить?
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Hito от Май 20, 2020, 06:17:25 am
1:
 wait(1)
LCLICK(624,189)  // zapad
 wait(3)
$check = 0
WHILE($check = 0)
   GETSCREEN
   colormode(5)
   IF_PICTURE_IN (0,0,$_xmax,$_xmax, "1.bmp", -1, 65)
      $check = 1
      print("Boy")
      LCLICK($_return1-32, $_return2-18)
      wait(3)
      LCLICK(363,187)  // 2373236
      wait(3)
      LCLICK(698,340)  // 6184542
      wait(4)
      LCLICK(698,340)  // 6184542
      wait(5)
      DBLCLICK(704,100)  // 10127201
      wait(3)
      DBLCLICK(704,100)  // 10127201
      WAITM(3)
   ELSE
      print("net")
       GOTO(2)
   END_IF
END_CYC


2:
wait(1)
LCLICK(668,203)  // yug
 wait(3)
$check = 0
WHILE($check = 0)
   GETSCREEN
   colormode(5)
   IF_PICTURE_IN (0,0,$_xmax,$_xmax, "1.bmp", -1, 65)
      $check = 1
      LCLICK($_return1-32, $_return2-18)
      wait(3)
      LCLICK(363,187)  // 2373236
      wait(3)
      LCLICK(698,340)  // 6184542
      wait(4)
      LCLICK(698,340)  // 6184542
      wait(5)
      DBLCLICK(704,100)  // 10127201
      wait(3)
      DBLCLICK(704,100)  // 10127201
      print("Boy")
      WAITM(3)
   ELSE
      print("net")
       GOTO(3)
   END_IF
END_CYC


3:
wait(1)
LCLICK(723,186)  // vostok
wait(3)
$check = 0
WHILE($check = 0)
   GETSCREEN
   colormode(5)
   IF_PICTURE_IN (0,0,$_xmax,$_xmax, "1.bmp", -1, 65)
      $check = 1
      LCLICK($_return1-32, $_return2-18)
      wait(3)
      LCLICK(363,187)  // 2373236
      wait(3)
      LCLICK(698,340)  // 6184542
      wait(4)
      LCLICK(698,340)  // 6184542
      wait(5)
      DBLCLICK(704,100)  // 10127201
      wait(3)
      DBLCLICK(704,100)  // 10127201
      print("Boy")
      WAITM(3)
   ELSE
      print("net")
        GOTO(4)
   END_IF
END_CYC

4:
wait(1)

LCLICK(670,180)  // sever
wait(3)
$check = 0
WHILE($check = 0)
   GETSCREEN
   colormode(5)
   IF_PICTURE_IN (0,0,$_xmax,$_xmax, "1.bmp", -1, 65)
      $check = 1
      LCLICK($_return1-32, $_return2-18)
      wait(3)
      LCLICK(363,187)  // 2373236
      wait(3)
      LCLICK(698,340)  // 6184542
      wait(4)
      LCLICK(698,340)  // 6184542
      wait(5)
      DBLCLICK(704,100)  // 10127201
      wait(3)
      DBLCLICK(704,100)  // 10127201
      print("Boy")
      WAIT(3)
   ELSE
      print("net")
         GOTO(1)
   END_IF
END_CYC
ну вот наконец сделал: кликабельнный только серый цвет не смог его найти но есть и яркий зеленый его нашел ну и подправил клик как видите по координаты серого цвета.
Спасибо всем кто помог




Можно ли этот код как-то упростить?

Ребят, вы что такие зацикленные на циклах...? Тебе зачем все эти циклы в скрипте...? Да к тому же циклы, из которых ты выскакиваешь при ЛЮБОМ условии, либо при помощи $check = 1, либо при помощи GOTO (во втором случае еще и ломая весь цикл)... Да еще и в каждом цикле ища одну и ту же картинку и производя одни и те же действия... Кто вас подсаживает на этот маразм...?
Вот всё,что тебе надо:

Код: Clickermann
  1. IF($click_timer < $_ms)
  2.   IF($click = 0)
  3.      SWITCH($mir)
  4.         CASE(0)
  5.            LCLICK(624,189)  // zapad
  6.            $mir = 1
  7.         CASE(1)
  8.            LCLICK(668,203)  // yug
  9.            $mir = 2
  10.         CASE(2)
  11.            LCLICK(723,186)  // vostok
  12.            $mir = 3
  13.         CASE(3)
  14.            LCLICK(670,180)  // sever
  15.            $mir = 0
  16.      END_SWITCH
  17.      $click = 1
  18.      $click_timer = $_ms+3000
  19.   else
  20.      GETSCREEN
  21.      colormode(5)
  22.      IF_PICTURE_IN (0,0,$_xmax,$_xmax, "1.bmp", -1, 65)
  23.         print("Boy")
  24.         LCLICK($_return1-32, $_return2-18)
  25.         wait(3)
  26.         LCLICK(363,187)  // 2373236
  27.         wait(3)
  28.         LCLICK(698,340)  // 6184542
  29.         wait(4)
  30.         LCLICK(698,340)  // 6184542
  31.         wait(5)
  32.         DBLCLICK(704,100)  // 10127201
  33.         wait(3)
  34.         DBLCLICK(704,100)  // 10127201
  35.  
  36.         $click_timer = $_ms+3000
  37.         $click = 0
  38.      END_IF
  39.   END_IF
  40. END_IF
  41. WAITMS(50)

И вот так еще можно:

Код: Clickermann
  1. $x[0] = 624
  2. $y[0] = 189
  3. $x[1] = 668
  4. $y[1] = 203
  5. $x[2] = 723
  6. $y[2] = 186
  7. $x[3] = 670
  8. $y[3] = 180
  9.  
  10. IF($click_timer < $_ms)
  11.   IF($click = 0)
  12.      LCLICK($x[$i],$y[$i])
  13.      IF($i < 4)
  14.         INC($i,1)
  15.      else
  16.         $i = 0
  17.      END_IF
  18.      $click = 1
  19.      $click_timer = $_ms+3000
  20.   else
  21.      GETSCREEN
  22.      colormode(5)
  23.      IF_PICTURE_IN (0,0,$_xmax,$_xmax, "1.bmp", -1, 65)
  24.         print("Boy")
  25.         LCLICK($_return1-32, $_return2-18)
  26.         wait(3)
  27.         LCLICK(363,187)  // 2373236
  28.         wait(3)
  29.         LCLICK(698,340)  // 6184542
  30.         wait(4)
  31.         LCLICK(698,340)  // 6184542
  32.         wait(5)
  33.         DBLCLICK(704,100)  // 10127201
  34.         wait(3)
  35.         DBLCLICK(704,100)  // 10127201
  36.  
  37.         $click_timer = $_ms+3000
  38.         $click = 0
  39.      END_IF
  40.   END_IF
  41. END_IF
  42. WAITMS(50)

И вообще я бы все твои "wait" позаменял на таймеры. В скрипте в идеале должна быть одна пауза - в конце, для разгрузки процессора. Скрипт не должен висеть на паузах - он должен контролить все и вся на каждом кругу, с одной паузой.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: wert19s от Май 20, 2020, 10:49:01 pm
1:
 wait(1)
LCLICK(624,189)  // zapad
 wait(3)
$check = 0
WHILE($check = 0)
   GETSCREEN
   colormode(5)
   IF_PICTURE_IN (0,0,$_xmax,$_xmax, "1.bmp", -1, 65)
      $check = 1
      print("Boy")
      LCLICK($_return1-32, $_return2-18)
      wait(3)
      LCLICK(363,187)  // 2373236
      wait(3)
      LCLICK(698,340)  // 6184542
      wait(4)
      LCLICK(698,340)  // 6184542
      wait(5)
      DBLCLICK(704,100)  // 10127201
      wait(3)
      DBLCLICK(704,100)  // 10127201
      WAITM(3)
   ELSE
      print("net")
       GOTO(2)
   END_IF
END_CYC


2:
wait(1)
LCLICK(668,203)  // yug
 wait(3)
$check = 0
WHILE($check = 0)
   GETSCREEN
   colormode(5)
   IF_PICTURE_IN (0,0,$_xmax,$_xmax, "1.bmp", -1, 65)
      $check = 1
      LCLICK($_return1-32, $_return2-18)
      wait(3)
      LCLICK(363,187)  // 2373236
      wait(3)
      LCLICK(698,340)  // 6184542
      wait(4)
      LCLICK(698,340)  // 6184542
      wait(5)
      DBLCLICK(704,100)  // 10127201
      wait(3)
      DBLCLICK(704,100)  // 10127201
      print("Boy")
      WAITM(3)
   ELSE
      print("net")
       GOTO(3)
   END_IF
END_CYC


3:
wait(1)
LCLICK(723,186)  // vostok
wait(3)
$check = 0
WHILE($check = 0)
   GETSCREEN
   colormode(5)
   IF_PICTURE_IN (0,0,$_xmax,$_xmax, "1.bmp", -1, 65)
      $check = 1
      LCLICK($_return1-32, $_return2-18)
      wait(3)
      LCLICK(363,187)  // 2373236
      wait(3)
      LCLICK(698,340)  // 6184542
      wait(4)
      LCLICK(698,340)  // 6184542
      wait(5)
      DBLCLICK(704,100)  // 10127201
      wait(3)
      DBLCLICK(704,100)  // 10127201
      print("Boy")
      WAITM(3)
   ELSE
      print("net")
        GOTO(4)
   END_IF
END_CYC

4:
wait(1)

LCLICK(670,180)  // sever
wait(3)
$check = 0
WHILE($check = 0)
   GETSCREEN
   colormode(5)
   IF_PICTURE_IN (0,0,$_xmax,$_xmax, "1.bmp", -1, 65)
      $check = 1
      LCLICK($_return1-32, $_return2-18)
      wait(3)
      LCLICK(363,187)  // 2373236
      wait(3)
      LCLICK(698,340)  // 6184542
      wait(4)
      LCLICK(698,340)  // 6184542
      wait(5)
      DBLCLICK(704,100)  // 10127201
      wait(3)
      DBLCLICK(704,100)  // 10127201
      print("Boy")
      WAIT(3)
   ELSE
      print("net")
         GOTO(1)
   END_IF
END_CYC
ну вот наконец сделал: кликабельнный только серый цвет не смог его найти но есть и яркий зеленый его нашел ну и подправил клик как видите по координаты серого цвета.
Спасибо всем кто помог




Можно ли этот код как-то упростить?

Ребят, вы что такие зацикленные на циклах...? Тебе зачем все эти циклы в скрипте...? Да к тому же циклы, из которых ты выскакиваешь при ЛЮБОМ условии, либо при помощи $check = 1, либо при помощи GOTO (во втором случае еще и ломая весь цикл)... Да еще и в каждом цикле ища одну и ту же картинку и производя одни и те же действия... Кто вас подсаживает на этот маразм...?
Вот всё,что тебе надо:

Код: Clickermann
  1. IF($click_timer < $_ms)
  2.   IF($click = 0)
  3.      SWITCH($mir)
  4.         CASE(0)
  5.            LCLICK(624,189)  // zapad
  6.            $mir = 1
  7.         CASE(1)
  8.            LCLICK(668,203)  // yug
  9.            $mir = 2
  10.         CASE(2)
  11.            LCLICK(723,186)  // vostok
  12.            $mir = 3
  13.         CASE(3)
  14.            LCLICK(670,180)  // sever
  15.            $mir = 0
  16.      END_SWITCH
  17.      $click = 1
  18.      $click_timer = $_ms+3000
  19.   else
  20.      GETSCREEN
  21.      colormode(5)
  22.      IF_PICTURE_IN (0,0,$_xmax,$_xmax, "1.bmp", -1, 65)
  23.         print("Boy")
  24.         LCLICK($_return1-32, $_return2-18)
  25.         wait(3)
  26.         LCLICK(363,187)  // 2373236
  27.         wait(3)
  28.         LCLICK(698,340)  // 6184542
  29.         wait(4)
  30.         LCLICK(698,340)  // 6184542
  31.         wait(5)
  32.         DBLCLICK(704,100)  // 10127201
  33.         wait(3)
  34.         DBLCLICK(704,100)  // 10127201
  35.  
  36.         $click_timer = $_ms+3000
  37.         $click = 0
  38.      END_IF
  39.   END_IF
  40. END_IF
  41. WAITMS(50)

И вот так еще можно:

Код: Clickermann
  1. $x[0] = 624
  2. $y[0] = 189
  3. $x[1] = 668
  4. $y[1] = 203
  5. $x[2] = 723
  6. $y[2] = 186
  7. $x[3] = 670
  8. $y[3] = 180
  9.  
  10. IF($click_timer < $_ms)
  11.   IF($click = 0)
  12.      LCLICK($x[$i],$y[$i])
  13.      IF($i < 4)
  14.         INC($i,1)
  15.      else
  16.         $i = 0
  17.      END_IF
  18.      $click = 1
  19.      $click_timer = $_ms+3000
  20.   else
  21.      GETSCREEN
  22.      colormode(5)
  23.      IF_PICTURE_IN (0,0,$_xmax,$_xmax, "1.bmp", -1, 65)
  24.         print("Boy")
  25.         LCLICK($_return1-32, $_return2-18)
  26.         wait(3)
  27.         LCLICK(363,187)  // 2373236
  28.         wait(3)
  29.         LCLICK(698,340)  // 6184542
  30.         wait(4)
  31.         LCLICK(698,340)  // 6184542
  32.         wait(5)
  33.         DBLCLICK(704,100)  // 10127201
  34.         wait(3)
  35.         DBLCLICK(704,100)  // 10127201
  36.  
  37.         $click_timer = $_ms+3000
  38.         $click = 0
  39.      END_IF
  40.   END_IF
  41. END_IF
  42. WAITMS(50)

И вообще я бы все твои "wait" позаменял на таймеры. В скрипте в идеале должна быть одна пауза - в конце, для разгрузки процессора. Скрипт не должен висеть на паузах - он должен контролить все и вся на каждом кругу, с одной паузой.

Для начала спасибо большое, но я сделал то что смог ваших знаний у меня нет, были бы наверное так же отвечал бы :)))а может и нет, сечас проверю как работает выглядит намного красивее и круто:)))даже не знал об этих командах ....
цыклы ломал что переклчится с окна на окно в игре...
а вот только после месяца понял как правильно скрины делать и то черный не находит...
Спасибо еще раз
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Hito от Май 21, 2020, 09:25:05 pm
Только во втором варианте IF($i < 4) замени на IF($i < 3). Ошибся на единицу...
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Мыха от Январь 03, 2021, 08:59:23 am
вот что не получается. В bluestacks запущено андроид приложение. Задача - проверять наличие нужной кнопки, если она есть - нажимать на неё и т.д. каждое состояние по отдельности срабатывает замечательно, до состояния 2 всё вместе срабатывает замечательно, а на третьем состоянии - распознавание экрана не срабатывает, выдаёт ошибку по условию else. Что я не знаю?

Код: Clickermann
  1. $S_CORR = 0
  2. //проверяем состояние 0
  3. GETSCREEN
  4. COLORMODE(3)
  5. IF_PICTURE_IN(478,708, 520,717, "0.bmp", -1, 100)
  6. ELSE
  7. print("ошибка состояния 0")
  8. END_IF
  9. waitms(1000 + $S_CORR)
  10. //проверяем состояние 1
  11. GETSCREEN
  12. COLORMODE(3)
  13. IF_PICTURE_IN(556,709, 597,717, "1.bmp", -1, 100)
  14.  waitms(200 + $S_CORR)
  15. move(577,697)
  16. waitms(200 + $S_CORR)
  17. move(578,698)
  18. waitms(200 + $S_CORR)
  19. move(577,697)
  20. waitms(200 + $S_CORR)
  21. move(577,697)
  22. lDown(577,697)
  23. waitms(100 + $S_CORR)
  24.   lUp(577,697)
  25. ELSE
  26. print("ошибка состояния 1")
  27. END_IF
  28. waitms(1000 + $S_CORR)
  29. //проверяем состояние 2
  30. GETSCREEN
  31. COLORMODE(3)
  32. IF_PICTURE_IN(515,598, 627,611, "2.bmp", -1, 100)
  33.  waitms(200 + $S_CORR)
  34. move(566,605)
  35. waitms(200 + $S_CORR)
  36. move(567,606)
  37. waitms(200 + $S_CORR)
  38. move(567,605)
  39. waitms(200 + $S_CORR)
  40. move(567,605)
  41. lDown(567,605)
  42. waitms(100 + $S_CORR)
  43.   lUp(567,605)
  44. ELSE
  45. print("ошибка состояния 2")
  46. END_IF
  47. waitms(1000 + $S_CORR)
  48. //проверяем состояние 3"
  49. GETSCREEN
  50. COLORMODE(3)
  51. IF_PICTURE_IN(516,648, 566,661, "3.bmp", -1, 100)
  52.  waitms(200 + $S_CORR)
  53. move(542,656)
  54. waitms(200 + $S_CORR)
  55. move(543,657)
  56. waitms(200 + $S_CORR)
  57. move(542,656)
  58. waitms(200 + $S_CORR)
  59. move(542,656)
  60. lDown(542,656)
  61. waitms(100 + $S_CORR)
  62.   lUp(542,656)
  63. ELSE
  64. print("ошибка состояния 3")
  65. END_IF
  66. waitms(1000 + $S_CORR)
  67.  
  68. halt
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Мыха от Январь 03, 2021, 08:45:30 pm
ты не знаешь, что такое ELSE для IF_PICTURE_IN
это ни какая ни ошибка состояния, а  предусмотренное скриптом отсутствие указанной картинки, именно  на момент проверки.
waitms(1000 + $S_CORR)
//проверяем состояние 3"
этой задержки недостаточно, чтоб проверяемая картинка успела загрузиться.

в иной ситуации я бы спросил про Ваше знание и понимание применения команды print, а в этой ситуации благодарю и попробую, что получится
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Мыха от Январь 03, 2021, 08:59:59 pm
да, прокатило! урок усвоен. мои благодарности.

З.Ы. print (ошибка состояния) используется для отладки, чтобы знать, где упало.

Еще раз спасибо
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Мыха от Январь 05, 2021, 11:44:52 pm
приветствую уважаемую публику

вскочил такой вопрос

типовая задача примерно такая. нажимаем на ссылку и ждём загрузки страницы. страница может загрузиться быстро, может - медленно, может вообще не загрузиться, может загрузиться не та, что хотелось бы. Фрагмент страницы, указывающей на её правильную загрузку, естественно заранее лежит в bmp файле. Хотелка состоит в том, чтобы не ждать по 10 - 20 секунд, перед единственной проверкой  IF_PICTURE_IN, а проверять в цикле, с интервалом например 2 ... 3 секунды. У меня сложилась идея решения, которая мне не очень нравится, а другого придумать не могу. Вот так можно делать? Заранее извиняюсь, (весь синтаксис операторов кликерманна пока не освоил, но смысл логических действий ведь везде одинаковый)

(запуск загрузки интернет страницы)
n=1
метка a
getscreen (все параметры)
colormode (все параметры)
IF_PICTURE_IN(все параметры)
(что делать, когда правильно загрузится)
else
ждать 1 секунду//или 2 ...3 секунды, по конкретной ситуации
n=n+1
     если n<10//или любое другое подходящее количество повторов
     переход по метке a
     иначе
     (действия в случае неудачи, вероятно выход из цикла переходом по отдельной метке)
     конец если
END_IF

такие вылеты из циклов и операторов условий допустимы? нормальны? или это как то по иному нужно запиливать?
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Vint от Январь 06, 2021, 03:59:57 pm
Шаблоны -- Графика -- Ожидание картинки
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Мыха от Январь 06, 2021, 07:26:55 pm
крутяк!

Код: Clickermann
  1. $check = 0
  2. WHILE($check = 0)
  3.   GETSCREEN
  4.   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100)
  5.      $check = 1
  6.      LCLICK($_return1, $_return2)
  7.      WAITMS(100)
  8.   ELSE
  9.      WAITMS(50)
  10.   END_IF
  11. END_CYC
  12.  

но я не понимаю, что здесь означает левый клик по координатам $_return1, $_return2 ? и что это вообще за координаты? где еще есть мануалы?

и еще такой вопрос. есть ли мануалы, которые объясняют, что за параметры в операторе IF_PICTURE_IN после имени файла?
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Vint от Январь 07, 2021, 01:12:10 am
А мануалы, как ни странно, находятся (барабанная дробь) в мануале! Неожиданно, но это так.
В программе есть встроенная справка.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Мыха от Январь 07, 2021, 01:17:33 am
а, кажись понял.

Код: Clickermann
  1. LCLICK($_return1, $_return2)
- это щелчок мыши по заранее заданной точке(return1, return2). Это, видимо, для автоматизации какой нибудь игры скорее всего. Здесь другой случай. в зависимости от того, загрузилась ли картинка нормально, или нет, дальше начинаются две непересекающиеся ветви программы, которые заканчивают свою работу самостоятельно.  в общем, смысл понятен, спасибо.

З.Ы. встроенную справку нашёл. Спасибо. Барабанную дробь можно выключать.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: melkichelik от Январь 15, 2021, 08:44:24 pm
Добрый день, вопрос такой.
Как сделать так, что бы эта функция работала на разных компьютерах.
Как я понял на разных компьютерах и разных браузерах одно и то же изображение может выводится в разном виде, особенно это заметно когда запускаешь скрипт на виртуальной машине, там получаются скрины которые и при 70% совпадении не ищутся.
Может можно поставить где-то нужные настройки, в системе или в виртуалке.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: kiril от Январь 15, 2021, 09:07:59 pm
Добрый день, вопрос такой.
Как сделать так, что бы эта функция работала на разных компьютерах.
Как я понял на разных компьютерах и разных браузерах одно и то же изображение может выводится в разном виде, особенно это заметно когда запускаешь скрипт на виртуальной машине, там получаются скрины которые и при 70% совпадении не ищутся.
Может можно поставить где-то нужные настройки, в системе или в виртуалке.
ну конечно-же можно, устанавливайте программно размер окна; попиксельно идентичный тому, на котором сканировались ваши картинки.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: melkichelik от Январь 15, 2021, 09:27:44 pm
ну конечно-же можно, устанавливайте программно размер окна; попиксельно идентичный тому, на котором сканировались ваши картинки.
А этот тут при чем? На обеих системах одно и то же разрешение, окно браузере в данном случае раскрывается на весь экран, браузер один и тот же, так, что размер окна тут не при чем, ну и самое главное, в браузере картинки не меняют свой размер (которые мы ищем), в виртуалке же как я понимаю там драйвер по умолчанию возможно этому мешает, я хз как там обстоят дела.
Название: Re: это явно не Для новичков
Отправлено: kiril от Январь 18, 2021, 06:33:12 pm
А этот тут при чем? На обеих системах одно и то же разрешение, окно браузере в данном случае раскрывается на весь экран, браузер один и тот же, так, что размер окна тут не при чем, ну и самое главное, в браузере картинки не меняют свой размер (которые мы ищем), в виртуалке же как я понимаю там драйвер по умолчанию возможно этому мешает, я хз как там обстоят дела.
А этот тут при чем?  Вы полностью изменили условия после получения ответа, если многократно проверенное решение лично вас по какой-то причине не устраивает, то не нужно городить костыли, чтоб представить его бесполезным, ищите самостоятельное решение на основе своих предположений и понимания.
Для статистики замечу, что у меня проблем с переносом картинок с основной на виртуальную операционную систему, и на чужие компы, давно уже не возникает, вплоть до генерации самим скриптом, любых нужных ему  для работы картинок, в процессе работы на другом компьютере .
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Алексей87 от Февраль 18, 2021, 12:59:57 am
Всем привет.
Подскажите пожалуйста, поразбирался с данным функционалом.
На данный момент у меня лучше получается разпознавать необходимые объекты используя
if_pixel_in нежели IF_PICTURE_IN
А теперь вопрос:
в каталоге C:\......\Clickermann\projects\if_picture_in имеется встроенный скрипт проверки main.cms и у меня даже он не отрабатывает. Всегда - картинка не найдена.
1. Естественно окно редактора при этом свернуто;
2. Пробовал менять параметры самого IF_PICTURE_IN;
3. Запускаю ПО от администратора;
4. Привязок к окнам не делал;
Ничего не помогло, кто-то может дать пояснения.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Алексей87 от Февраль 18, 2021, 08:26:13 am
.......... Вот этот снимок он и делает с помощью команды GETSCREEN. Если эта команада без координат, то Clickermann помещает в свой графический буфер скриншот ВСЕГО вашего экрана.................

Не подтверждаю. На моем устройстве (ноутбук Dell) данная команда помещает в свой графический буфер скриншот НЕ всего экрана, а примерно 2\3 начиная с нулевых координат.
Можете пояснить данную ситуацию и дать рекомендации?
Очень странное поведение. На ноутбуке Win 10 Pro захватывается 2\3 как писал выше.
На виртуальной машине на базе Win 10 20H2 - все корректно. Захват полный.
Что заметил на ноутбуке: несмотря на разрешение в full hd (1920\1080) координаты же стола при наведении курсором значительно меньше максимальные, примерно в 2 раза. С чем связано - не ясно.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Vint от Февраль 18, 2021, 03:13:51 pm
Не подтверждаю. На моем устройстве (ноутбук Dell) данная команда помещает в свой графический буфер скриншот НЕ всего экрана, а примерно 2\3 начиная с нулевых координат.
Можете пояснить данную ситуацию и дать рекомендации?
Очень странное поведение. На ноутбуке Win 10 Pro захватывается 2\3 как писал выше.

Примерно 5% (шутка, конечно меньше) всех вопросов на форуме и в группе ВК аналогичных твоему и везде дан ответ:
Масштаб рабочего стола должен быть 100%!

Вот прям в этом же разделе форума в шапке приклеена тема
Разрешение экрана. Смещение. Видит не весь экран. (http://crapware.aidf.org/forum/index.php?topic=3629.0)
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Алексей87 от Февраль 18, 2021, 04:10:55 pm
Не успел ознакомиться со всеми ветками! Прошу прощения, два дня работаю с ПО.
Теперь все стало ясно.
Такое ощущение что нужно начинать использование ПО с заголовка: возможные ограничения.
И список предостережений что может пойти не так.
Спасибо большое!
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: zalmanoff от Март 26, 2021, 02:07:16 am
доброй ночи всем)
смотрю живой форум.
Проблема такая:
Есть область экрана на которой ищется фрагмент, находится...
Проблема в том что таких фрагментов может быть один, а может быть 10 или ни одного.
Если фрагментов нет, все понятно так же как если один.
А вот если их несколько, то находится первый начиная от верхнего левого угла и на этом дальше выход из поиска.
Вопрос как собрать координаты всех фрагментов в заданной области?
Пока только придумалось тупо обрезать область поиска по у и повторить поиск на уменьшенной части и так резать после каждого нахождения до тех пор пока область не станет меньше фрагмента.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Vint от Март 26, 2021, 10:10:41 pm
SCANPICTURE
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: zalmanoff от Март 27, 2021, 11:08:47 pm
SCANPICTURE
СПАСИБО!!!! и простите.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Ivankak от Сентябрь 11, 2021, 10:02:07 pm
где-то есть полный список всех команд?
Очевидно, что в хелпе не все команды описаны.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: kiril от Сентябрь 12, 2021, 11:58:11 am
можете доказать столь очевидное вам утверждение?
 может вы просто невнимательно смотрите в справку, а так-же меню команд и шаблонов?
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Ivankak от Сентябрь 12, 2021, 06:38:13 pm
Видимо, вы правы.
не могу найти
Есть ли в языке механизм, чтобы задавать свои процедуры и функции?
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Vint от Сентябрь 13, 2021, 08:24:08 am
Свои функции задавать нельзя. Есть только механизм подпрограмм.
Да, не так удобно как с функциями и больше кода и не очень красивого кода может получаться, но использовать можно.
Кликер - использует специально упрощённый язык для новичков, поэтому автор не хотел вводить ещё и области видимости переменных, хоть позже частично это и пришлось сделать в двух случаях.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Aleksey999 от Январь 12, 2022, 02:14:05 pm
Здравствуйте господа, почитал ответы "гуру" в этой теме и понял что мне нужна помощь.
Скрипт ниже рабочий, действия простые но судя по всему сам скрип не самый оптимальный. Поделитесь опытом, как можно проще и эффективнее использовать функционал кликера?
Заранее благодарю за вашу помощь.

GETSCREEN
COLORMODE(6)
SCREENSHOTFIX(26,597, 367,1090, "herb.bmp")
IF_PIXEL_IN(26,597, 367,1090, 8355647)
   
   KEYDOWN(#ctrl)
   WAITMS(100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
   KEYUP(#ctrl)
   WAITMS(200)
   
END_IF

GETSCREEN
COLORMODE(6)
SCREENSHOTFIX(26,597, 367,1090, "herb1.bmp")
IF_PIXEL_IN(26,597, 367,1090, 8355839)
   KEYDOWN(#ctrl)
   WAITMS(100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
   KEYUP(#ctrl)
   WAITMS(200)
   
END_IF

GETSCREEN
COLORMODE(6)
SCREENSHOTFIX(26,597, 367,1090, "herb2.bmp")
IF_PIXEL_IN(26,597, 367,1090, 8388607)
   KEYDOWN(#ctrl)
   WAITMS(100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
   KEYUP(#ctrl)
   WAITMS(200)
   
END_IF

GETSCREEN
   IF_PIXEL_IN(61,382, 343,413, 269907)
   LCLICK($_return1, $_return2)
   WAITMS(500)
END_IF


HALT


Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: dramster от Январь 12, 2022, 09:21:58 pm
Если это весь скрипт, то пусть себе и работает. Единственное что можно оптимизировать, для ускорения работы, это оставить гетскрин и колормод вверху кода, остальные убрать, и добавить области снимка и коррекции.
Код: Clickermann
  1. GETSCREEN(26,597,367,1090)
  2. COLORMODE(6, 26,597,367,1090)
  3. SCREENSHOTFIX(26,597, 367,1090, "herb.bmp")
  4. IF_PIXEL_IN(26,597, 367,1090, 8355647)  
  5.   KEYDOWN(#ctrl)
  6.   WAITMS(100)
  7.   LCLICK($_return1, $_return2)
  8.   WAITMS(100)
  9.   KEYUP(#ctrl)
  10.   WAITMS(200)  
  11. END_IF
  12.  
  13. SCREENSHOTFIX(26,597, 367,1090, "herb1.bmp")
  14. IF_PIXEL_IN(26,597, 367,1090, 8355839)
  15.   KEYDOWN(#ctrl)
  16.   WAITMS(100)
  17.   LCLICK($_return1, $_return2)
  18.   WAITMS(100)
  19.   KEYUP(#ctrl)
  20.   WAITMS(200)  
  21. END_IF
  22.  
  23. SCREENSHOTFIX(26,597, 367,1090, "herb2.bmp")
  24. IF_PIXEL_IN(26,597, 367,1090, 8388607)
  25.   KEYDOWN(#ctrl)
  26.   WAITMS(100)
  27.   LCLICK($_return1, $_return2)
  28.   WAITMS(100)
  29.   KEYUP(#ctrl)
  30.   WAITMS(200)  
  31. END_IF
  32.  
  33. GETSCREEN(61,382,343,413)
  34. IF_PIXEL_IN(61,382, 343,413, 269907)
  35.   LCLICK($_return1, $_return2)
  36.   WAITMS(500)
  37. END_IF
  38.  
  39.  
  40. HALT

Если хочется сократить код, то можно добавить подпрограммы, справка - язык сценариев - основные конструкции - sub ... end_sub
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Иван_Васильевич от Январь 12, 2022, 11:51:54 pm
Код: Clickermann
  1. // 12.01.2022
  2. #name "New herb"
  3. SUB(herb, $par1, $par2) // подпрограмма с параметрами
  4.   GETSCREEN(26,597,367,1090)
  5.   COLORMODE(6,26,597,367,1090)
  6.   SCREENSHOTFIX(26,597,367,1090,$par1)
  7.   IF_PIXEL_IN(26,597,367,1090,$par2)
  8.      KEYDOWN(#ctrl)
  9.      WAITMS(100)
  10.      LCLICK($_return1, $_return2)
  11.      WAITMS(100)
  12.      KEYUP(#ctrl)
  13.      WAITMS(200)
  14.   END_IF
  15. END_SUB
  16.  
  17. herb("herb.bmp",8355647) // вызов подпрограммы (обязательно ниже подпрограммы)
  18. herb("herb1.bmp",8355839)
  19. herb("herb2.bmp",8388607)
  20.  
  21. GETSCREEN(61,382,343,413)
  22. IF_PIXEL_IN(61,382, 343,413, 269907)
  23.   LCLICK($_return1, $_return2)
  24.   WAITMS(500)
  25. END_IF
  26.  
  27. HALT
  28.  
GETSCREEN(26,597,367,1090)
   COLORMODE(6,26,597,367,1090)
   SCREENSHOTFIX(26,597,367,1090,$par1)
 о какой оптимальности можно говорить если этот скрипт трижды сканирует одну область и трижды подряд сохраняет её как картинку под разными названиями!
в чём смысл утраивания усилий?
 Было-бы логично  сначала проверять цвет пикселя а уже в зависимости от найденного цвета, обновлять картинку, а так
только команда HALT спасает от перегрузки компа ненужными и ресурсоёмкими действиями. действиями
Код: Clickermann
  1. // 12.01.2022
  2. #name "New herb2"
  3. SUB(herb, $par1, $par2) // подпрограмма с параметрами
  4.   IF_PIXEL_IN(26,597,367,1090,$par2)
  5.      SCREENSHOTFIX(26,597,367,1090,$par1)
  6.      KEYDOWN(#ctrl)
  7.      WAITMS(100)
  8.      LCLICK($_return1, $_return2)
  9.      WAITMS(100)
  10.      KEYUP(#ctrl)
  11.      WAITMS(200)
  12.   END_IF
  13. END_SUB
  14. GETSCREEN(26,597,367,1090)
  15. COLORMODE(6,26,597,367,1090)
  16. herb("herb.bmp",8355647) // вызов подпрограммы (обязательно ниже подпрограммы)
  17. herb("herb1.bmp",8355839)
  18. herb("herb2.bmp",8388607)
  19.  
  20. GETSCREEN(61,382,343,413)
  21. IF_PIXEL_IN(61,382, 343,413, 269907)
  22.   LCLICK($_return1, $_return2)
  23.   WAITMS(500)
  24. END_IF
  25.  
  26. HALT
  27.  
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Aleksey999 от Январь 13, 2022, 06:27:39 pm
Код: Clickermann
  1. // 12.01.2022
  2. #name "New herb"
  3. SUB(herb, $par1, $par2) // подпрограмма с параметрами
  4.   GETSCREEN(26,597,367,1090)
  5.   COLORMODE(6,26,597,367,1090)
  6.   SCREENSHOTFIX(26,597,367,1090,$par1)
  7.   IF_PIXEL_IN(26,597,367,1090,$par2)
  8.      KEYDOWN(#ctrl)
  9.      WAITMS(100)
  10.      LCLICK($_return1, $_return2)
  11.      WAITMS(100)
  12.      KEYUP(#ctrl)
  13.      WAITMS(200)
  14.   END_IF
  15. END_SUB
  16.  
  17. herb("herb.bmp",8355647) // вызов подпрограммы (обязательно ниже подпрограммы)
  18. herb("herb1.bmp",8355839)
  19. herb("herb2.bmp",8388607)
  20.  
  21. GETSCREEN(61,382,343,413)
  22. IF_PIXEL_IN(61,382, 343,413, 269907)
  23.   LCLICK($_return1, $_return2)
  24.   WAITMS(500)
  25. END_IF
  26.  
  27. HALT
  28.  
GETSCREEN(26,597,367,1090)
   COLORMODE(6,26,597,367,1090)
   SCREENSHOTFIX(26,597,367,1090,$par1)
 о какой оптимальности можно говорить если этот скрипт трижды сканирует одну область и трижды подряд сохраняет её как картинку под разными названиями!
в чём смысл утраивания усилий?
 Было-бы логично  сначала проверять цвет пикселя а уже в зависимости от найденного цвета, обновлять картинку, а так
только команда HALT спасает от перегрузки компа ненужными и ресурсоёмкими действиями. действиями
Код: Clickermann
  1. // 12.01.2022
  2. #name "New herb2"
  3. SUB(herb, $par1, $par2) // подпрограмма с параметрами
  4.   IF_PIXEL_IN(26,597,367,1090,$par2)
  5.      SCREENSHOTFIX(26,597,367,1090,$par1)
  6.      KEYDOWN(#ctrl)
  7.      WAITMS(100)
  8.      LCLICK($_return1, $_return2)
  9.      WAITMS(100)
  10.      KEYUP(#ctrl)
  11.      WAITMS(200)
  12.   END_IF
  13. END_SUB
  14. GETSCREEN(26,597,367,1090)
  15. COLORMODE(6,26,597,367,1090)
  16. herb("herb.bmp",8355647) // вызов подпрограммы (обязательно ниже подпрограммы)
  17. herb("herb1.bmp",8355839)
  18. herb("herb2.bmp",8388607)
  19.  
  20. GETSCREEN(61,382,343,413)
  21. IF_PIXEL_IN(61,382, 343,413, 269907)
  22.   LCLICK($_return1, $_return2)
  23.   WAITMS(500)
  24. END_IF
  25.  
  26. HALT
  27.  

dramster, спасибо за ответ. Учту ваше замечание на будущее.

Иван_Васильевич, Огромная благодарность за рабочий скрипт с "программой с параметрами". Благодаря этому примеру получил понимание как работает эта программа с параметрами.
В итоге получил вот такой вариант, при котором делается один скриншот и по нему кликликер отыскивает 3 контрольных пикселя:


Код: Clickermann
  1.  
  2. // 12.01.2022
  3. #name "New herb2"
  4. SUB(herb, $par1)  
  5.   IF_PIXEL_IN(2,807,345,1304,$par1)
  6.      KEYDOWN(#ctrl)
  7.      WAITMS(100)
  8.      LCLICK($_return1, $_return2)
  9.      WAITMS(100)
  10.      KEYUP(#ctrl)
  11.      WAITMS(200)
  12.   END_IF
  13. END_SUB
  14.  
  15. GETSCREEN(2,807,345,1304)
  16. COLORMODE(6,2,807,345,1304)
  17. SCREENSHOTFIX(2,807,345,1304,"herb.bmp")
  18.  
  19. herb(8355647)
  20. herb(4194175)
  21. herb(8388607)
  22.  
  23. GETSCREEN(61,382,343,413)
  24. IF_PIXEL_IN(61,382, 343,413, 269907)
  25.   LCLICK($_return1, $_return2)
  26.   WAITMS(100)
  27. END_IF
  28.  
  29. HALT
  30.  
  31.  


Спасибо большое за помощь.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: dramster от Январь 13, 2022, 10:32:29 pm
Есть предположение, что из трех твоих вызовов подпрограмм находит только один цвет. Если это так, то нужно знать, что IF_PIXEL_IN может искать сразу множество цветов одновременно, и завершит поиск при первом совпадении в области:
Код: Clickermann
  1. GETSCREEN(2,807,345,1304)
  2. COLORMODE(6,2,807,345,1304)
  3. SCREENSHOTFIX(2,807,345,1304,"herb.bmp")
  4.  
  5. IF_PIXEL_IN(2,807,345,1304, 8355647, 4194175, 8388607)  //ищем сразу 3 цвета
  6.   KEYDOWN(#ctrl)
  7.   WAITMS(100)
  8.   LCLICK($_return1, $_return2)
  9.   WAITMS(100)
  10.   KEYUP(#ctrl)
  11.   WAITMS(200)
  12. END_IF
  13.  
  14. GETSCREEN(61,382,343,413)
  15. IF_PIXEL_IN(61,382, 343,413, 269907)
  16.   LCLICK($_return1, $_return2)
  17.   WAITMS(100)
  18. END_IF
  19.  
  20. HALT
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Aleksey999 от Январь 13, 2022, 11:41:29 pm
Есть предположение, что из трех твоих вызовов подпрограмм находит только один цвет. Если это так, то нужно знать, что IF_PIXEL_IN может искать сразу множество цветов одновременно, и завершит поиск при первом совпадении в области:
Код: Clickermann
  1. GETSCREEN(2,807,345,1304)
  2. COLORMODE(6,2,807,345,1304)
  3. SCREENSHOTFIX(2,807,345,1304,"herb.bmp")
  4.  
  5. IF_PIXEL_IN(2,807,345,1304, 8355647, 4194175, 8388607)  //ищем сразу 3 цвета
  6.   KEYDOWN(#ctrl)
  7.   WAITMS(100)
  8.   LCLICK($_return1, $_return2)
  9.   WAITMS(100)
  10.   KEYUP(#ctrl)
  11.   WAITMS(200)
  12. END_IF
  13.  
  14. GETSCREEN(61,382,343,413)
  15. IF_PIXEL_IN(61,382, 343,413, 269907)
  16.   LCLICK($_return1, $_return2)
  17.   WAITMS(100)
  18. END_IF
  19.  
  20. HALT

Задача найти в области каждый из указанных цветов и применить к каждому из них действие.
Варианты выше с этим справляются на ура.

А конкретно этот вариант будет применять действие только к одному из них.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: wert19s от Февраль 10, 2022, 01:45:51 am
Добрый вечер,

Голову сломал:

GETSCREEN // Clickermann
COLORMODE(3)
IF_PICTURE_IN (20,150, $_xmax,$_ymax, "Y.bmp", -1, 80)
   BEEP(800,200)
     LOGWRITE ("BOMBA")
      DBLCLICK(493,99)
       WAIT(3)
   DBLCLICK(557,108)
ELSE // "ИНАЧЕ"
   BEEP(800,200)
   BEEP(800,200)
   BEEP(800,200)
   LOGWRITE ("О")
END_IF //
HALT

этот код не работает, когда не находит картинку то работает и пишет в лог О, а если находит то виснет кликер "не отвечает" закрываю его через диспечер.
и еще когда координаты оставляю :0,0 тоже виснет.
что может быть проблема?
спасибо

ребят помогите ....вернулся опять  к старой проблеме...смотрел видео читал  сообщения здесь но таки не понял...
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Иван_Васильевич от Февраль 10, 2022, 06:30:34 pm
Добрый вечер,

Голову сломал:

GETSCREEN // Clickermann
COLORMODE(3)
IF_PICTURE_IN (20,150, $_xmax,$_ymax, "Y.bmp", -1, 80)
   BEEP(800,200)
     LOGWRITE ("BOMBA")
      DBLCLICK(493,99)
       WAIT(3)
   DBLCLICK(557,108)
ELSE // "ИНАЧЕ"
   BEEP(800,200)
   BEEP(800,200)
   BEEP(800,200)
   LOGWRITE ("О")
END_IF //
HALT

этот код не работает, когда не находит картинку то работает и пишет в лог О, а если находит то виснет кликер "не отвечает" закрываю его через диспечер.
и еще когда координаты оставляю :0,0 тоже виснет.
что может быть проблема?
спасибо

ребят помогите ....вернулся опять  к старой проблеме...смотрел видео читал  сообщения здесь но таки не понял...
вы ошибаетесь в  своих наблюдениях или код показали другой
так-как команда HALT даёт коду возможность только одноразового срабатывания и ни о каком зависании даже речи быть не может.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: wert19s от Февраль 10, 2022, 09:46:10 pm
Добрый вечер,

Голову сломал:

GETSCREEN // Clickermann
COLORMODE(3)
IF_PICTURE_IN (20,150, $_xmax,$_ymax, "Y.bmp", -1, 80)
   BEEP(800,200)
     LOGWRITE ("BOMBA")
      DBLCLICK(493,99)
       WAIT(3)
   DBLCLICK(557,108)
ELSE // "ИНАЧЕ"
   BEEP(800,200)
   BEEP(800,200)
   BEEP(800,200)
   LOGWRITE ("О")
END_IF //
HALT

этот код не работает, когда не находит картинку то работает и пишет в лог О, а если находит то виснет кликер "не отвечает" закрываю его через диспечер.
и еще когда координаты оставляю :0,0 тоже виснет.
что может быть проблема?
спасибо

ребят помогите ....вернулся опять  к старой проблеме...смотрел видео читал  сообщения здесь но таки не понял...
вы ошибаетесь в  своих наблюдениях или код показали другой
так-как команда HALT даёт коду возможность только одноразового срабатывания и ни о каком зависании даже речи быть не может.
Поверьте виснет при первом нажатии....Я поборол это при первом использовани...недавно опять понадобилось поиск по картинке в том же проэкте...и опять я застрял ....
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Иван_Васильевич от Февраль 11, 2022, 04:53:17 am
Добрый вечер,

Голову сломал:

GETSCREEN // Clickermann
COLORMODE(3)
IF_PICTURE_IN (20,150, $_xmax,$_ymax, "Y.bmp", -1, 80)
   BEEP(800,200)
     LOGWRITE ("BOMBA")
      DBLCLICK(493,99)
       WAIT(3)
   DBLCLICK(557,108)
ELSE // "ИНАЧЕ"
   BEEP(800,200)
   BEEP(800,200)
   BEEP(800,200)
   LOGWRITE ("О")
END_IF //
HALT

этот код не работает, когда не находит картинку то работает и пишет в лог О, а если находит то виснет кликер "не отвечает" закрываю его через диспечер.
и еще когда координаты оставляю :0,0 тоже виснет.
что может быть проблема?
спасибо

ребят помогите ....вернулся опять  к старой проблеме...смотрел видео читал  сообщения здесь но таки не понял...
вы ошибаетесь в  своих наблюдениях или код показали другой
так-как команда HALT даёт коду возможность только одноразового срабатывания и ни о каком зависании даже речи быть не может.
Поверьте виснет при первом нажатии....Я поборол это при первом использовани...недавно опять понадобилось поиск по картинке в том же проэкте...и опять я застрял ....
я проверил, хотя отлично знал, результат который получу, но пусть вам будет стыдно за ваше неуместное  требование проверки, вместо того, чтоб по простому, по человечески спросить о причине ваших собственных неудач.
 вот лог работы!
4:47:35 О
 как видите ни чего у нормальных-то пользователей ни где не виснет, а работает ожидаемо и после проверки скрипт, как и положено выключается, к вашему стыду! :-[
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Иван_Васильевич от Февраль 11, 2022, 05:09:41 am
Добрый вечер,

Голову сломал:

GETSCREEN // Clickermann
COLORMODE(3)
IF_PICTURE_IN (20,150, $_xmax,$_ymax, "Y.bmp", -1, 80)
   BEEP(800,200)
     LOGWRITE ("BOMBA")
      DBLCLICK(493,99)
       WAIT(3)
   DBLCLICK(557,108)
ELSE // "ИНАЧЕ"
   BEEP(800,200)
   BEEP(800,200)
   BEEP(800,200)
   LOGWRITE ("О")
END_IF //
HALT

этот код не работает, когда не находит картинку то работает и пишет в лог О, а если находит то виснет кликер "не отвечает" закрываю его через диспечер.
и еще когда координаты оставляю :0,0 тоже виснет.
что может быть проблема?
спасибо

ребят помогите ....вернулся опять  к старой проблеме...смотрел видео читал  сообщения здесь но таки не понял...
вы ошибаетесь в  своих наблюдениях или код показали другой
так-как команда HALT даёт коду возможность только одноразового срабатывания и ни о каком зависании даже речи быть не может.
Поверьте виснет при первом нажатии....Я поборол это при первом использовани...недавно опять понадобилось поиск по картинке в том же проэкте...и опять я застрял ....
Если вам уже стало стыдно, за своё неадекватное поведение, то:
1. уменьшайте размер картинки для поиска
2. увеличивайте процент совпадения
3. ограничивайте область обновления графического буфера и область цветокоррекции область поиска картинки
4. точнее указывайте область поиска картинки
5. точнее подбирайте для сохранённого образца режим цветокоррекции и игнорирования фона, чтоб повысить процент совпадения.
 
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: wert19s от Февраль 12, 2022, 10:49:47 pm
Добрый вечер,

Голову сломал:

GETSCREEN // Clickermann
COLORMODE(3)
IF_PICTURE_IN (20,150, $_xmax,$_ymax, "Y.bmp", -1, 80)
   BEEP(800,200)
     LOGWRITE ("BOMBA")
      DBLCLICK(493,99)
       WAIT(3)
   DBLCLICK(557,108)
ELSE // "ИНАЧЕ"
   BEEP(800,200)
   BEEP(800,200)
   BEEP(800,200)
   LOGWRITE ("О")
END_IF //
HALT

этот код не работает, когда не находит картинку то работает и пишет в лог О, а если находит то виснет кликер "не отвечает" закрываю его через диспечер.
и еще когда координаты оставляю :0,0 тоже виснет.
что может быть проблема?
спасибо

ребят помогите ....вернулся опять  к старой проблеме...смотрел видео читал  сообщения здесь но таки не понял...
вы ошибаетесь в  своих наблюдениях или код показали другой
так-как команда HALT даёт коду возможность только одноразового срабатывания и ни о каком зависании даже речи быть не может.
Поверьте виснет при первом нажатии....Я поборол это при первом использовани...недавно опять понадобилось поиск по картинке в том же проэкте...и опять я застрял ....
Добрый вечер
 Если вам уже стало стыдно, за своё неадекватное поведение, то:
1. уменьшайте размер картинки для поиска
например мне нужна область 500х200 и на 1200 на 400 квадрат...я делаю скрин этого участка с цветокорекцией 4-5-6 ....перепробовал все 3///
2. увеличивайте процент совпадения
максимально 100 минимально 0....экспререминтировал от 0 до 100
3. ограничивайте область обновления графического буфера и область цветокоррекции область поиска картинки
сдесь можна подробней?
4. точнее указывайте область поиска картинки
как указывать точнее? указываю ту же область когда беру скрин до вырезания картинки размером 30х30...
5. точнее подбирайте для сохранённого образца режим цветокоррекции и игнорирования фона, чтоб повысить процент совпадения.
цветокорекция ? выставляю так же как когда делаю скрин....а вот насчет фона можна подробнее?
заранее спасибо
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Hito от Февраль 19, 2022, 04:39:10 pm
1. уменьшайте размер картинки для поиска
2. увеличивайте процент совпадения
3. ограничивайте область обновления графического буфера и область цветокоррекции область поиска картинки
4. точнее указывайте область поиска картинки
5. точнее подбирайте для сохранённого образца режим цветокоррекции и игнорирования фона, чтоб повысить процент совпадения.

  На сколько я понимаю, вот это все тут ни при чем. Ведь человек сказал, что если у него НЕ находит картинку, то скрипт не зависает и в лог благополучно прописывается "О". Но для того, чтобы картинку НЕ найти, скрипту нужно поискать ее по всему экрану (в пределах заданных координат) и с заданными параметрами, а значит, что с размером экрана и условиями самого поиска процессор компа все же справляется, если в итоге он все же переходит в раздел ELSE. Ну, это чисто логика и терять ее в нашем деле нельзя...
  Мое мнение - человек что-то путает, так как я не вижу в скрипте проблемных мест. Либо я очень невнимателен - что вполне возможно. В любом случае у меня тоже часто возникают моменты, в которых вроде бы ВСЁ перепроверишь 50 раз, а оно всё равно не работает и тогда меня удивляет одна вещь на форуме - почему так боимся пользоваться логом? Да - ты прописал некие отмашки в лог в обоих направлениях, в которых может идти скрипт, но если сложилась такая ситуация, как у тебя, то не считаешь ли ты, что этих отметок мало и что тебе пора выяснить конкретно - на какой строке у тебя возникает трабл? Я понимаю - скрипт был бы в 3.000 строк... И то можно было бы сделать то же самое в проблемном месте скрипта.

Код: Clickermann
  1. GETSCREEN // Clickermann
  2. COLORMODE(3)
  3. IF_PICTURE_IN (20,150, $_xmax,$_ymax, "Y.bmp", -1, 80)
  4.   LOGWRITE ("Картинка найдена в координатах: ",$_return1,",",$_return2)
  5.   BEEP(800,200)
  6.   LOGWRITE ("BOMBA")
  7.   DBLCLICK(493,99)
  8.   LOGWRITE ("Ждемс три сек")
  9.   WAIT(3)
  10.   LOGWRITE ("Двойной клик")
  11.   DBLCLICK(557,108)
  12.   LOGWRITE ("Условие с найденной картинкой закончено")
  13. ELSE // "ИНАЧЕ"
  14.   LOGWRITE ("Картинка не найдена")
  15.   BEEP(800,200)
  16.   LOGWRITE ("BEEP")
  17.   BEEP(800,200)
  18.   LOGWRITE ("BEEP")
  19.   BEEP(800,200)
  20.   LOGWRITE ("О")
  21. END_IF //
  22. HALT

Запускаем скрипт и лог в студию.
Название: Re: IF_PICTURE_IN - Для новичков
Отправлено: Oblie1968 от Февраль 21, 2022, 02:03:27 pm
не считаешь ли ты, что этих отметок мало и что тебе пора выяснить конкретно - на какой строке у тебя возникает трабл? Я понимаю - скрипт был бы в 3.000 строк... И то можно было бы сделать то же самое в проблемном месте скрипта.
Другой вариант, закомментить все строки в проблемном месте и по одной вводить в строй.
Проблема в одном из DBLCLICK, больше просто негде, надо ему смотреть, чего он там кликает.