Author Topic: Помогите со скриптом .  (Read 2923 times)

0 Members and 1 Guest are viewing this topic.

Dominik

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Помогите со скриптом .
« on: August 20, 2018, 08:47:44 PM »
Всем доброго вечера.
Я только начал разбираться , то бишь,полный дилетант )
Если кто-то может,помогите написать лёгенький скрипт.
Суть скрипта :
В определенной области экрана  появляется маленькая картинка(всего 50 вариантов этой картинки ,меня устроит только 6 из них ) . Когда появляется  любой из 6 вариантов   который меня устраивает , курсор должен нажать в точку "А" ,затем нажать в точку "Б"  ,после этого  нажать в точку "C" . Пауза 3 минуты и все по новой   бесконечное количество раз .
Если появляется картинка ,которая  меня не устраивает ,то запустить все заново спустя минуту бесконечное количество раз.
Заранее огромное спасибо откликнувшимся людям .

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Помогите со скриптом .
« Reply #1 on: August 21, 2018, 09:03:40 AM »
Сохрани этот скрипт в папку. Создай в этой папке папку Image. В неё помести скриншоты для поиска твоих картинок. Размер должен быть не более 50х50. Формат BMP 24bit
В функции IF_PICTURE_IN укажи область поиска твоих картинок.
Скрипт автоматически получает имена всех картинок из папки Image и в цикле проверяет их на совпадение с тем что на экране.

Code: (clickermann) [Select]
GETFILELIST($a_im, "Image\*.bmp") // Получаем имена картинок из паки Image
WHILE(1) // бесконечный цикл
   GETSCREEN
   FOR($i=0,$i<ARRSIZE($a_im))
      IF_PICTURE_IN (0,0, 500,500, STRCONCAT("Image\",$a_im[$i]), -1, 100) // поиск в области 0,0, 500,500
         LCLICK(100,100) // три клика
         WAITMS(500)
         LCLICK(100,100)
         WAITMS(500)
         LCLICK(100,100)
         WAIT(180) // Пауза на 3 мин
         $i=9999 // завершаем цикл
      ELSe
         WAITMS(50)
      END_IF
   END_CYC
   IF($i!10000) // Одна минута паузы если не было совпадений
      WAIT(60)
   END_IF
END_CYC
« Last Edit: August 24, 2018, 09:37:34 AM by Oraven »

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: Помогите со скриптом .
« Reply #2 on: August 21, 2018, 03:52:31 PM »
Одна минута паузы, если не было совпадений, будет выполняться всегда. Даже если совпадения были.Потому как вы забываете что цикл FOR наращивает переменную в конце. А это значит что на выходе из цикла $i=10000.

Dominik

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Re: Помогите со скриптом .
« Reply #3 on: August 21, 2018, 05:03:22 PM »
Сохрани этот скрипт в папку. Создай в этой папке папку Image. В неё помести скриншоты для поиска твоих картинок. Размер должен быть не более 50х50. Формат BMP 24bit
В функции IF_PICTURE_IN укажи область поиска твоих картинок.
Скрипт автоматически получает имена всех картинок из папки Image и в цикле проверяет их на совпадение с тем что на экране.

Code: (clickermann) [Select]
GETFILELIST($a_im, "Image\*.bmp") // Получаем имена картинок из паки Image
WHILE(1) // бесконечный цикл
   GETSCREEN
   FOR($i=0,$i<ARRSIZE($a_im))
      IF_PICTURE_IN (0,0, 500,500, $a_im[$i], -1, 100) // поиск в области 0,0, 500,500
         LCLICK(100,100) // три клика
         WAITMS(500)
         LCLICK(100,100)
         WAITMS(500)
         LCLICK(100,100)
         WAIT(180) // Пауза на 3 мин
         $i=9999 // завершаем цикл
      ELSe
         WAITMS(50)
      END_IF
   END_CYC
   IF($i!9999) // Одна минута паузы если не было совпадений
      WAIT(60)
   END_IF
END_CYC


 Oraven ,добрый день ,большое спасибо за ответ .
У меня задача немного усложнилась ,добавились еще проверки ,так как я  вообще слабо  разбираюсь  ,я написал простой но громоздкий код.
Как я и говорил ,задача заключается в следующем (опишу так подробно как смогу):
В определенной области экрана  есть столбец маленьких картинок,всего в столбце пять картинок , в верхней позиции  появляется новая картинка каждые 3 минуты и она сдвигает остальные картинки по позиции вниз , то бишь , та которая была пятой пропадает   ,на ее место становится та , которая была на четвертой позиции и так далее .Всего отдельных картинок  около 50  есть  и они появляются рандомно,меня устраивает  6 из 50 .то бишь , чтобы любая из этих 6 была на первом месте .
Приведу пример визуально
Code: (clickermann) [Select]
Картинка 1
Картинка 2
Картинка 3
Картинка 4
Картинка 5

ПРОХОДИТ  3 МИНУТЫ

Картинка 6
Картинка 1
Картинка 2
Картинка 3
картинка 4

Проходит 3 минуты

Моя картинка
Картинка 6
Картинка 1
Картинка 2
Картинка 3

И так далее .все продолжает сдвигаться дальше .

 

Раньше ,надо было просто после появления моей картинки  нажать мышкой в 3-х места поочередно  .В место А ,место Б и место С .
Сейчас немного усложнилось ,когда я вник в суть.
Сейчас надо проверить ,чтобы моей картинки не было на позиции  номер 2 .то бишь ,  у меня может появится 2 картинки подряд , в  таком случае мне не надо нажимать в эти места .
То бишь надо сканировать  первое место появление картинки на наличие моей , а второе место появление на отсутствие моей
Code: (clickermann) [Select]
Правильное условие такого
1 картинка - на этой позиции  есть моя картинка ,любая из 6.
2 картинка - а тут  находится любая картинка кроме  любой моей из 6 .
3картинка
4картинка
5картинка

Такой сценарий не ведет к нажатию
Моя картинка 2
Моя картинка 1
1 картинка
2 картинка
3 картинка
Плюс ,добавилась проблема  , даже если все условия выше  соблюдены , и я нажимаю на кнопку ,  то на кнопку можно нажать  повторно уже через 3 секунды ,а этого мне не надо . На появление одной моей картинки  .надо всего одно нажатие. Можно поставить паузу подсчитанную по времени после нажатия , но проблема в том,что там  может идти зависание на +- 10 секунд и со временем эта пауза пропустит круг и собьется.
В голову мне пришел вариант проверки ,то бишь , если  все условия выше соблюдены , проходит наш цикл  и  новый не начинается , пока моя картинку, которая на позиции один не  станет на позицию два .
Code: (clickermann) [Select]
Моя картинка1- (программа нашла мою картинку)
Картинка 1-(программа проверила что нету  на второй позиции моей картинки и нажимает на кнопки)
Картинка 2
картинка 3
Картинка 4

После этого , она начинает проверять  2 позицию на наличие "моей  картинки1"  бесконечное число раз по кругу , пока  картинка не переместится.

Картинка7
Моя картинка 1 ( программа увидела ,что картинка переместилась  и она запускает весь комплекс сначала )
Картинка 1
Картинка 2
Картинка 3

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

Моя картинка 2
Моя картина 1( программа увидела ,что моя картинка стала с первого на второе место и запустило все заного )(Но после анализа увидела , что две мои картинки идут подряд и  нажатие не произошло)
Картинка 1
Картинка 2
Картинка 3

ниже приведу мой код , который построен с более легких пример этого форума  и очень громоздкий. Все более менее  работает ,но происходят сбои , и проблема с перемещением картинки с первой позиции на вторую после нажатия я не решил , а поставил ожидание в 170 секунд.   Как написать все проще и чтобы работало как часы ) Справочник к программе почитал ,нашел "or" но не знаю , подходит ли он к картинкам. 
PS  Пожалуйста,когда будете писать код или исправлять , закоментите  в коде  места , которые помогут мне поглубже вникнуть в суть .
В коде  при проверке картинок добавил случайные клики по экрану , чтобы  видеть какие части кода исполняются и понимать , что все работает .
Code: (clickermann) [Select]
WAITMS(500)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (557,353, 653,402, "1.bmp" )
      IF_PICTURE_IN (557,393, 653,433, "1.bmp" )
      LCLICK(557,393)
      WAITMS(300)
      ELSE
     GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "2.bmp" )
      LCLICK(557,353)
      WAITMS(300)
      ELSE
     GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "3.bmp" )
      LCLICK(390,493)
      WAITMS(300)
      ELSE
      GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "4.bmp" )
      LCLICK(836, 800)
      WAITMS(300)
      ELSE
GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "5.bmp" )
      LCLICK(836, 800)
      WAITMS(300)
      ELSE
GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "6.bmp" )
      LCLICK(836, 800)
      WAITMS(300)
      ELSE
  WAIT(1000)
  LCLICK(836, 800)
      WAITMS(1000)
      LCLICK(836, 800)
      WAITMS(1000)
LCLICK(1214, 796)
WAITMS(1000)
LCLICK(1214, 796)
WAITMS(1000)
LCLICK(1329, 980)
WAITMS(170000)
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
Else
LCLICK(557,393) /////////
   GETSCREEN
   COLORMODE(6)
IF_PICTURE_IN (557,353, 653,402, "2.bmp")
      IF_PICTURE_IN (557,393, 653,433, "1.bmp" )
      LCLICK(557,393)
      WAITMS(300)
      ELSE
     GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "2.bmp" )
      LCLICK(557,353)
      WAITMS(300)
      ELSE
     GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "3.bmp" )
      LCLICK(390,493)
      WAITMS(300)
      ELSE
      GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "4.bmp" )
      LCLICK(836, 800)
      WAITMS(300)
      ELSE
GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "5.bmp" )
      LCLICK(836, 800)
      WAITMS(300)
      ELSE
GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "6.bmp" )
      LCLICK(836, 800)
      WAITMS(300)
      ELSE
   WAIT(1000)
  LCLICK(836, 800)
      WAITMS(1000)
      LCLICK(836, 800)
      WAITMS(1000)
LCLICK(1214, 796)
WAITMS(1000)
LCLICK(1214, 796)
WAITMS(1000)
LCLICK(1329, 980)
WAITMS(170000)
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
   Else
   LCLICK(836, 800) /////
      GETSCREEN
      COLORMODE(6)
IF_PICTURE_IN (557,353, 653,402, "3.bmp")
      IF_PICTURE_IN (557,393, 653,433, "1.bmp" )
      LCLICK(557,393)
      WAITMS(300)
      ELSE
     GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "2.bmp" )
      LCLICK(557,353)
      WAITMS(300)
      ELSE
     GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "3.bmp" )
      LCLICK(390,493)
      WAITMS(300)
      ELSE
      GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "4.bmp" )
      LCLICK(836, 800)
      WAITMS(300)
      ELSE
GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "5.bmp" )
      LCLICK(836, 800)
      WAITMS(300)
      ELSE
GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "6.bmp" )
      LCLICK(836, 800)
      WAITMS(300)
      ELSE
   WAIT(1000)
  LCLICK(836, 800)
      WAITMS(1000)
      LCLICK(836, 800)
      WAITMS(1000)
LCLICK(1214, 796)
WAITMS(1000)
LCLICK(1214, 796)
WAITMS(1000)
LCLICK(1329, 980)
WAITMS(170000)
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
      Else
      LCLICK(557,393)  ////////
         GETSCREEN
         COLORMODE(6)
IF_PICTURE_IN (557,353, 653,402, "4.bmp")
      IF_PICTURE_IN (557,393, 653,433, "1.bmp" )
      LCLICK(557,393)
      WAITMS(300)
      ELSE
     GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "2.bmp" )
      LCLICK(557,353)
      WAITMS(300)
      ELSE
     GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "3.bmp" )
      LCLICK(390,493)
      WAITMS(300)
      ELSE
      GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "4.bmp" )
      LCLICK(836, 800)
      WAITMS(300)
      ELSE
GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "5.bmp" )
      LCLICK(836, 800)
      WAITMS(300)
      ELSE
GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "6.bmp" )
      LCLICK(836, 800)
      WAITMS(300)
      ELSE
   WAIT(1000)
  LCLICK(836, 800)
      WAITMS(1000)
      LCLICK(836, 800)
      WAITMS(1000)
LCLICK(1214, 796)
WAITMS(1000)
LCLICK(1214, 796)
WAITMS(1000)
LCLICK(1329, 980)
WAITMS(170000)
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
Else
LCLICK(836, 800) //////////
      GETSCREEN
      COLORMODE(6)
IF_PICTURE_IN (557,353, 653,402, "5.bmp")
      IF_PICTURE_IN (557,393, 653,433, "1.bmp" )
      LCLICK(557,393)
      WAITMS(300)
      ELSE
     GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "2.bmp" )
      LCLICK(557,353)
      WAITMS(300)
      ELSE
     GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "3.bmp" )
      LCLICK(390,493)
      WAITMS(300)
      ELSE
      GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "4.bmp" )
      LCLICK(836, 800)
      WAITMS(300)
      ELSE
GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "5.bmp" )
      LCLICK(836, 800)
      WAITMS(300)
      ELSE
GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "6.bmp" )
      LCLICK(836, 800)
      WAITMS(300)
      ELSE
   WAIT(1000)
  LCLICK(836, 800)
      WAITMS(1000)
      LCLICK(836, 800)
      WAITMS(1000)
LCLICK(1214, 796)
WAITMS(1000)
LCLICK(1214, 796)
WAITMS(1000)
LCLICK(1329, 980)
WAITMS(170000)
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
Else
LCLICK(557,393) ///////////
      GETSCREEN
      COLORMODE(6)
IF_PICTURE_IN (557,353, 653,402, "6.bmp")
      IF_PICTURE_IN (557,393, 653,433, "1.bmp" )
      LCLICK(557,393)
      WAITMS(300)
      ELSE
     GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "2.bmp" )
      LCLICK(557,353)
      WAITMS(300)
      ELSE
     GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "3.bmp" )
      LCLICK(390,493)
      WAITMS(300)
      ELSE
      GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "4.bmp" )
      LCLICK(836, 800)
      WAITMS(300)
      ELSE
GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "5.bmp" )
      LCLICK(836, 800)
      WAITMS(300)
      ELSE
GETSCREEN
     COLORMODE(6)
      IF_PICTURE_IN (557,393, 653,433, "6.bmp" )
      LCLICK(836, 800)
      WAITMS(300)
      ELSE
      WAIT(1000)
  LCLICK(836, 800)
      WAITMS(1000)
      LCLICK(836, 800)
      WAITMS(1000)
LCLICK(1214, 796)
WAITMS(1000)
LCLICK(1214, 796)
WAITMS(1000)
LCLICK(1329, 980)
WAITMS(170000)
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
Else
LCLICK(645, 753)
WAITMS(10000)   //////

          END_IF
            END_IF
         END_IF
      END_IF
   END_IF
END_IF
 

Всем заранее спасибо за помощь !)

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Помогите со скриптом .
« Reply #4 on: August 23, 2018, 08:50:31 AM »
Если тебе пофиг - каким будет работающий код, то копируй просто то, что тебе дают. Если ты хочешь разобраться сам, то в том, что тебе дают, именно тебе сейчас разобраться будет не просто. Разберись сначала вот в этом:
Code: (clickermann) [Select]
GETSCREEN // Делает скрин экрана и помещает его в буфер для анализа
COLORMODE(6) // Применение цветокоррекции для скрина (упрощение цветов)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100) // Ищет картинку на скрине, который в буфере. "file" - название картинки. "bmp" - расширение файла. "0,0, $_xmax,$_ymax" - координаты поиска картинки.
   // Здесь действия, которые нужно сделать, если картинка найдена
else
   // Здесь действия, которые нужно сделать, если картинка не найдена
END_IF
« Last Edit: August 23, 2018, 08:52:47 AM by Hito »
Я не ду... Потому и не бу...

Dominik

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Re: Помогите со скриптом .
« Reply #5 on: August 23, 2018, 04:57:38 PM »
Если тебе пофиг - каким будет работающий код, то копируй просто то, что тебе дают. Если ты хочешь разобраться сам, то в том, что тебе дают, именно тебе сейчас разобраться будет не просто. Разберись сначала вот в этом:
Code: (clickermann) [Select]
GETSCREEN // Делает скрин экрана и помещает его в буфер для анализа
COLORMODE(6) // Применение цветокоррекции для скрина (упрощение цветов)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100) // Ищет картинку на скрине, который в буфере. "file" - название картинки. "bmp" - расширение файла. "0,0, $_xmax,$_ymax" - координаты поиска картинки.
   // Здесь действия, которые нужно сделать, если картинка найдена
else
   // Здесь действия, которые нужно сделать, если картинка не найдена
END_IF
Мужик , при всем моем уважении . Тебе не кажется ,   если я написал весь код через if .... else  ... end_if  То я это уже давно понял ,и смысл такого совета от тебя? 
Я прошу помощи в оптимизации , так как это можно сделать при помощи других команд и сократить число строк в раз 10 .Так же не знаю как сделать  отрицание  ,если это возможно ,  я пробовал отрицание сделать так же через IF , но там получалось 600 строк  и даже более . Код работал , но в каких-то местах происходили сбои  периодически . Ты вообще смотрел мой код , что посоветовал мне разобраться в If .....else .....end_if ?

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Помогите со скриптом .
« Reply #6 on: August 23, 2018, 07:49:12 PM »
То бишь надо сканировать  первое место появление картинки на наличие моей , а второе место появление на отсутствие моей

Вот твой код, только оптимизированный:
Code: (clickermann) [Select]
SUB(check_pic, $x1, $y1, $x2, $y2) //подпрограмма поиска всех картинок. входные параметры координат поиска $x1, $y1, $x2, $y2
   GETSCREEN
   COLORMODE(6)
   
   FOR($a=1,$a<7)  //перебираем 6 картинок с названиями файлов типа 1.bmp - 6.bmp
      IF_PICTURE_IN ($x1, $y1, $x2, $y2, STRCONCAT ($a, ".bmp")
         $a = 999   // если нашли, выходим из цикла
      END_аIF
   END_CYC
   IF($a = 1000)    // тут пишем флаг присутствия картинки
      $check_pic = 1  // если мы выскочили из цикла и $a = 1000, картинка найдена
      print("картинка №",$a," найдена в координатах ",$x1,",", $y1,",", $x2,",", $y2 )
   ELSE
      $check_pic = 0  // если перебрали все картинки и $a = 7, картинка не найдена
      print("картинки нет в координатах ",$x1,",", $y1,",", $x2,",", $y2 )
   END_IF
   
END_SUB


// основной код

WAITMS(500)

check_pic(557,353, 653,402) //смотрим наличие картинки сверху

IF($check_pic = 1)   //если она там есть
   
   check_pic(557,393, 653,433)  // смотрим наличие картинки ниже
   
   IF($check_pic = 0)   //если ее там нет, действуем
      print("действуем")
      WAIT(1000) //1000 секунд??? это ж 16 минут!!!
      LCLICK(836, 800)
      WAIT(1)
      LCLICK(836, 800)
      WAIT(1)
      LCLICK(1214, 796)
      WAIT(1)
      LCLICK(1214, 796)
      WAIT(1)
      LCLICK(1329, 980)
      WAIT(170)
   else
      //если она там есть
      //какието действия и ожидание
      WAIT(10)
   END_IF
   
else
   //если ее там нет
   //какието действия и ожидание
   WAIT(10)
   
END_IF
« Last Edit: August 23, 2018, 08:07:50 PM by dramster »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите со скриптом .
« Reply #7 on: August 24, 2018, 02:38:50 PM »
Code: (clickermann) [Select]
      END_аIF
Опечатка в 8 строке.


Dominik

  • Зашел в гости
  • *
  • Posts: 4
    • View Profile
Re: Помогите со скриптом .
« Reply #8 on: August 25, 2018, 01:51:28 AM »
То бишь надо сканировать  первое место появление картинки на наличие моей , а второе место появление на отсутствие моей

Вот твой код, только оптимизированный:
Code: (clickermann) [Select]
SUB(check_pic, $x1, $y1, $x2, $y2) //подпрограмма поиска всех картинок. входные параметры координат поиска $x1, $y1, $x2, $y2
   GETSCREEN
   COLORMODE(6)
   
   FOR($a=1,$a<7)  //перебираем 6 картинок с названиями файлов типа 1.bmp - 6.bmp
      IF_PICTURE_IN ($x1, $y1, $x2, $y2, STRCONCAT ($a, ".bmp")
         $a = 999   // если нашли, выходим из цикла
      END_аIF
   END_CYC
   IF($a = 1000)    // тут пишем флаг присутствия картинки
      $check_pic = 1  // если мы выскочили из цикла и $a = 1000, картинка найдена
      print("картинка №",$a," найдена в координатах ",$x1,",", $y1,",", $x2,",", $y2 )
   ELSE
      $check_pic = 0  // если перебрали все картинки и $a = 7, картинка не найдена
      print("картинки нет в координатах ",$x1,",", $y1,",", $x2,",", $y2 )
   END_IF
   
END_SUB


// основной код

WAITMS(500)

check_pic(557,353, 653,402) //смотрим наличие картинки сверху

IF($check_pic = 1)   //если она там есть
   
   check_pic(557,393, 653,433)  // смотрим наличие картинки ниже
   
   IF($check_pic = 0)   //если ее там нет, действуем
      print("действуем")
      WAIT(1000) //1000 секунд??? это ж 16 минут!!!
      LCLICK(836, 800)
      WAIT(1)
      LCLICK(836, 800)
      WAIT(1)
      LCLICK(1214, 796)
      WAIT(1)
      LCLICK(1214, 796)
      WAIT(1)
      LCLICK(1329, 980)
      WAIT(170)
   else
      //если она там есть
      //какието действия и ожидание
      WAIT(10)
   END_IF
   
else
   //если ее там нет
   //какието действия и ожидание
   WAIT(10)
   
END_IF
Большое спасибо.  Так же спасибо за подробные разъяснения в коде!!! :)

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Помогите со скриптом .
« Reply #9 on: August 27, 2018, 12:57:35 PM »
То бишь надо сканировать  первое место появление картинки на наличие моей , а второе место появление на отсутствие моей

Вот твой код, только оптимизированный:
Code: (clickermann) [Select]
SUB(check_pic, $x1, $y1, $x2, $y2) //подпрограмма поиска всех картинок. входные параметры координат поиска $x1, $y1, $x2, $y2
   GETSCREEN
   COLORMODE(6)
   
   FOR($a=1,$a<7)  //перебираем 6 картинок с названиями файлов типа 1.bmp - 6.bmp
      IF_PICTURE_IN ($x1, $y1, $x2, $y2, STRCONCAT ($a, ".bmp")
         $a = 999   // если нашли, выходим из цикла
      END_аIF
   END_CYC
   IF($a = 1000)    // тут пишем флаг присутствия картинки
      $check_pic = 1  // если мы выскочили из цикла и $a = 1000, картинка найдена
      print("картинка №",$a," найдена в координатах ",$x1,",", $y1,",", $x2,",", $y2 )
   ELSE
      $check_pic = 0  // если перебрали все картинки и $a = 7, картинка не найдена
      print("картинки нет в координатах ",$x1,",", $y1,",", $x2,",", $y2 )
   END_IF
   
END_SUB


// основной код

WAITMS(500)

check_pic(557,353, 653,402) //смотрим наличие картинки сверху

IF($check_pic = 1)   //если она там есть
   
   check_pic(557,393, 653,433)  // смотрим наличие картинки ниже
   
   IF($check_pic = 0)   //если ее там нет, действуем
      print("действуем")
      WAIT(1000) //1000 секунд??? это ж 16 минут!!!
      LCLICK(836, 800)
      WAIT(1)
      LCLICK(836, 800)
      WAIT(1)
      LCLICK(1214, 796)
      WAIT(1)
      LCLICK(1214, 796)
      WAIT(1)
      LCLICK(1329, 980)
      WAIT(170)
   else
      //если она там есть
      //какието действия и ожидание
      WAIT(10)
   END_IF
   
else
   //если ее там нет
   //какието действия и ожидание
   WAIT(10)
   
END_IF

Шестая строка, в конце не хватает скобки.
Code: (clickermann) [Select]
IF_PICTURE_IN ($x1, $y1, $x2, $y2, STRCONCAT ($a, ".bmp"))

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Помогите со скриптом .
« Reply #10 on: August 27, 2018, 01:55:13 PM »
Просьба к автору темы.
Дайте теме вразумительное название. Вот как в таких темах ориентироваться?