Author Topic: Если картинка не совпадает - сохранить сриншот, иначе - удалить картинку  (Read 2772 times)

0 Members and 1 Guest are viewing this topic.

Flayka

  • Зашел в гости
  • *
  • Posts: 17
  • нуп
    • View Profile
Code: [Select]
getscreen
$pix=PXLCOUNT(60,820, 226,836, 0)
if (($pix=400) or ($pix=0))
else
   print("wow")
   SCREENSHOTEX(4,789, 1419,839, "Netak_"$n, 0)
   FOR($nomsc=0, $nomsc < $n)
      print(enter)
      getscreen
      IF_PICTURE_IN (4,789, 1419,839, STRCONCAT("Netak_"$nomsc,".bmp"), -1, 90)
         TFCLEAR ("screens\netak", 1)
      end_if
   end_cyc   
end_if

надо доработать, а я чет запутался.

Суть такая:
1.  Если пиксели совпали - ничего не делаем
2 . Если по количеству пикселей не совпало, то мы делаем скриншот.
2.1 Если такой скриншот есть, то удаляем существующий
2.2 Если такого же скриншота нет - оставляем.
3. каждый раз проверяем новый скриншот со всеми существующими скриншотами (которые созданы с момента запуска скрипта)

В начале скрипта надо бы сделать проверку на наличие картинок, если они есть, то удалить. Отсюда вопрос, скрины мы можем сохнять только в screens\ ?? ибо вариант с отдельной папкой, которую можно удалить в начале запуска скрипт не хочет воспринимать((

 :o :o :o

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Размер картинок слишком велик для IF_PICTURE_IN. В место этого лучше снимать хеш сумму с области и сравнивать числовые значения а новый скрин делать только при отсутствии совпадений.

Удалять папки и файлы проще батником.

У тебя есть ошибки, например здесь
Code: (clickermann) [Select]
SCREENSHOTEX(4,789, 1419,839, "Netak_"$n, 0)Правильно будет
Code: (clickermann) [Select]
SCREENSHOTEX(4,789, 1419,839, STRCONCAT("Netak_",$n), 0)
Не верно
Code: (clickermann) [Select]
IF_PICTURE_IN (4,789, 1419,839, STRCONCAT("Netak_"$nomsc,".bmp"), -1, 90)
Верно
Code: (clickermann) [Select]
IF_PICTURE_IN (4,789, 1419,839, STRCONCAT("Netak_",$nomsc,".bmp"), -1, 90)
« Last Edit: October 30, 2015, 08:13:21 PM by Oraven »

Flayka

  • Зашел в гости
  • *
  • Posts: 17
  • нуп
    • View Profile
батником проще, но я почему-то думал, что мне будут нужны некоторые файлы в папке скрин, немного подправил- уже не нужны)
У тебя есть ошибки, например здесь
Code: (clickermann) [Select]
SCREENSHOTEX(4,789, 1419,839, "Netak_"$n, 0)Правильно будет
Code: (clickermann) [Select]
SCREENSHOTEX(4,789, 1419,839, STRCONCAT("Netak_",$n), 0)
кликерман в 4.11 (000) Команды-Экран - SCREENSHOTEX(0,0, $_xmax,$_ymax, "Image_", 0)

а с запятыми и скобочками, да бывают у меня проблемки)
И спасибо большое, в который раз спасаешь))
« Last Edit: October 30, 2015, 10:32:44 PM by Flayka »

Flayka

  • Зашел в гости
  • *
  • Posts: 17
  • нуп
    • View Profile
тогда ещё можно вопросик?)
нужно было: делаем скрин части экрана, через 2 минуты делаем скрин той же части экрана, если картинки 5 раз совпали, перезапускаем скрипт, реализовал вот так:
Code: [Select]
      getscreen
   TFCLEAR ("screens\m_0000.bmp", 1)
   wait(3)
   SCREENSHOTEX(717,123, 1036,218, "m_", 0)
   wait(120)
   getscreen
   IF_PICTURE_IN (717,123, 1036,218, "screens\m_0000.bmp",-1,70)
      print("Пoвис в ", $povis," раз")
      inc($povis)
      TFCLEAR ("screens\m_0000.bmp", 1)
      If ($povis>5)
         $povis=0
         keypress(#F5)
         wait(30)
         inc($4etam) //флаг для сброса скрипта
      end_if
   else
      $povis=0
      TFCLEAR ("screens\m_0000.bmp", 1)
   END_IF
но после твоей помощи, думаю, что если сделать эту часть скрипта так же через хеш, то скрипт оптимизируется.)