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

Основной раздел => Общие вопросы => Topic started by: slawik_s on March 18, 2017, 07:38:40 AM

Title: как проконтролировать работу скрипта?
Post by: slawik_s on March 18, 2017, 07:38:40 AM
Доброго времени суток, собственно вопрос в названии темы. Игра, не всегда реагирует, на действие кликера. Поэтому, я  решил проверять его работу, с помощью скриншота.

мой пример:

KEYPRESS(#M)
WAIT(2)
DBLCLICK(1233,413)
WAIT(2)
DBLCLICK(1270,510)
WAIT(1)
DBLCLICK(1118,863)

далее, контрольный скриншот, для проверки вышеперечисленных действий.

GETSCREEN
IF_PICTURE_IN (754,889, 764,897, "search.bmp", -1, 100)
END_IF

если скриншот не совпадает, как вернуть выполнение скрипта на исходную позицию?
 
Title: Re: как проконтролировать работу скрипта?
Post by: Tochka on March 18, 2017, 09:46:54 AM
Я не совсем поняла, где именно тут подразумевается выполнение скриншота? Вижу поиск картинки. Если картинка найдена, то всё отлично, если нет, то надо выполнять манипуляции с нажатием клавиши и двойными кликами. Верно?
Возможно, это должно выглядеть таким образом. Если ошибаюсь, то местные профи оперативно поправят мой ляп.
Code: (clickermann) [Select]
$stop=0
WHILE($stop=0)
GETSCREEN
   IF_PICTURE_IN(754,889, 764,897, "search.bmp", -1, 100)
      $stop=1
   ELSE
      KEYPRESS(#M)
      WAIT(2)
      DBLCLICK(1233,413)
      WAIT(2)
      DBLCLICK(1270,510)
      WAIT(1)
      DBLCLICK(1118,863)
      WAIT(1)
   END_IF
END_CYC
Title: Re: как проконтролировать работу скрипта?
Post by: slawik_s on March 18, 2017, 10:13:05 AM
совершенно верно, после манипуляций следует поиск картинки. Если картинка не найдена, как повторить, эти манипуляции до тех пор пока картинка не совпадет?
Title: Re: как проконтролировать работу скрипта?
Post by: Tochka on March 18, 2017, 11:24:55 AM
Если вас не устраивает код, который я изложила ранее, то можете сделать чуть иначе:
Code: (clickermann) [Select]
$stop=0
WHILE($stop=0)
   KEYPRESS(#M)
   WAIT(2)
   DBLCLICK(1233,413)
   WAIT(2)
   DBLCLICK(1270,510)
   WAIT(1)
   DBLCLICK(1118,863)
   WAIT(1)
   GETSCREEN
      IF_PICTURE_IN(754,889, 764,897, "search.bmp", -1, 100)
         $stop=1
      ELSE
         SCREENSHOTEX(754,889, 764,897, "Ups_", 0)
         HALT // остановка. пройдите в папку screens и сравните искомое с результатом
      END_IF
END_CYC
Правда при таком раскладе цикл не особо нужен, ибо скрипт у вас скорее всего долгое время будет выполняться ровно до строки 16. Если убрать остановку скрипта, то ваша папка перезахламиться скринами, на которые вы даже внимания не обратите. Если же убрать существование самого цикла, то это не будет соответствовать вашим требованиям, но можете попробовать и так:
Code: (clickermann) [Select]
$log=0
KEYPRESS(#M)
WAIT(2)
DBLCLICK(1233,413)
WAIT(2)
DBLCLICK(1270,510)
WAIT(1)
DBLCLICK(1118,863)
WAIT(1)

GETSCREEN
   IF_PICTURE_IN(754,889, 764,897, "search.bmp", -1, 100)
      IF($log=1)
         LOGWRITE("Усё ништяки.")
      END_IF
   ELSE
      SCREENSHOTEX(754,889, 764,897, "Ups_", 0)
      IF($log=1)
         LOGWRITE("Здесь и сейчас лично я вижу вот это... Твой Clickermann")
      END_IF
   END_IF
HALT
Как-то так. Анализируйте, сравнивайте. Если картинка не соответствует стандартам функции IF_PICTURE_IN или находится не совсем в той области, то на скрине это будет видно. При нейтрализации ошибки SCREENSHOTEX и HALT можно закомментировать или убрать. Тут дело вкуса.
Title: Re: как проконтролировать работу скрипта?
Post by: slawik_s on March 18, 2017, 12:54:48 PM
спасибо за помощь буду экспериментировать ;)