Author Topic: Сохранение картинок (SCREENSHOTEX) в папку и поиск этих картинок (IF_PICTURE_IN)  (Read 2669 times)

0 Members and 1 Guest are viewing this topic.

FJ

  • Освоившийся
  • **
  • Posts: 59
    • View Profile
Вроде простая задача, но не могу понять, как это сделать.
Допустим сохраняю части экрана в папку с помощью SCREENSHOTEX.
Затем идет условие с помощью IF_PICTURE_IN, если нахожу картинку - то одно действие, если не нахожу, делаю скрин.
Как реализовать?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Не все так просто, кликер не может определить количества сделанных снимков, поэтому дополнительно нужно вести учет сделанных снимков в файл INI

Вот пример. Можно оценить работу например открыв альбом с фотографиями в контакте. Запускаем скрипт, делается первый скриншот и теперь кликер знает что на экране первая фотография из альбома. Переключаем на следующую фотку, и скрипт тут же сделает новый снимок и будет знать что это фото 2. Теперь можно переключать фото в альбоме туда сюда а скрипт покажет какой номер фото он видит.
Code: (clickermann) [Select]
IF(TFCOUNT("config.ini")>0)
   $Image_count_s = INT(INIREAD("config.ini", "Image_count_s"))
ELSE
   $Image_count_s = 0
   INIWRITE("config.ini", "Image_count_s", "0")
END_IF

$check = 0
$gen = 0
$Image_count = 0
GETSCREEN
WHILE($check = 0)
   $len = STRLEN($gen)
   IF($len < 2)
      $num = STRCONCAT ("000", $gen)
   Else
      IF($len < 3)
         $num = STRCONCAT ("00", $gen)
      Else
         IF($len < 4)
            $num = STRCONCAT ("0", $gen)
         Else
            $num = $gen
         END_IF
      END_IF
   END_IF
   INC($gen,1)
   
   INC($Image_count,1)
   IF($Image_count > $Image_count_s)
      $check = 2 //
   ELSE
      IF_PICTURE_IN (692, 428, 709, 435, STRCONCAT("screens\Image_", $num,".bmp"), -1, 100) // поиск фрагментов
         $check = 1
      END_IF
   END_IF
END_CYC

IF($check = 1)
   HINTPOPUP (STRCONCAT("Картинка ", $Image_count, " найдена"))
   // здесь действие если картинка найдена
   WAIT(1)
ELSE
   // здесь действие если картинка не найдена (делаем новый снимок)
   INIWRITE("config.ini", "Image_count_s", $Image_count) // запись в базу данных количества сделанных скринов
   screenshotex(692, 428, 709, 435, "Image_", 0) // новый снимок
   HINTPOPUP ("Новый скриншот") // сообщение в трей (не обязательно)
   BEEP(800,200) // звуковой сигнал  (не обязательно)
   WAIT(1)
END_IF

Чтобы сбросить базу данных, нужно удалить файл "config.ini" и папку "screens".
Потесть скрипт в отдельной папке и увидишь как это работает.
« Last Edit: December 14, 2015, 09:18:58 PM by Oraven »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Можно определять количество снимков в папке батником. Батник можно генерировать на лету.
Если не используются русские буквы в именах, то можно и одними cmd командами.
Вот уже решали подобную задачу:
http://crapware.aidf.org/forum/index.php?topic=1752.msg11301#msg11301


FJ

  • Освоившийся
  • **
  • Posts: 59
    • View Profile
Спасибо!
Буду разбираться и внедрять! :)

Луций

  • Активный участник
  • ***
  • Posts: 248
  • чат в телеге: https://t.me/klickermannchat
    • View Profile
    • Пишу скрипты на заказ:
а делать свои имена своим счетчиком нельзя?