Author Topic: как проконтролировать работу скрипта?  (Read 2372 times)

0 Members and 1 Guest are viewing this topic.

slawik_s

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
Доброго времени суток, собственно вопрос в названии темы. Игра, не всегда реагирует, на действие кликера. Поэтому, я  решил проверять его работу, с помощью скриншота.

мой пример:

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

если скриншот не совпадает, как вернуть выполнение скрипта на исходную позицию?
 

Tochka

  • Освоившийся
  • **
  • Posts: 67
  • Ищу, читаю, учусь...
    • View Profile
Я не совсем поняла, где именно тут подразумевается выполнение скриншота? Вижу поиск картинки. Если картинка найдена, то всё отлично, если нет, то надо выполнять манипуляции с нажатием клавиши и двойными кликами. Верно?
Возможно, это должно выглядеть таким образом. Если ошибаюсь, то местные профи оперативно поправят мой ляп.
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
« Last Edit: March 18, 2017, 09:50:20 AM by Tochka »
Сюда влетаю иногда... Возник вопрос и завелась метла

slawik_s

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
совершенно верно, после манипуляций следует поиск картинки. Если картинка не найдена, как повторить, эти манипуляции до тех пор пока картинка не совпадет?
« Last Edit: March 18, 2017, 10:14:51 AM by slawik_s »

Tochka

  • Освоившийся
  • **
  • Posts: 67
  • Ищу, читаю, учусь...
    • View Profile
Если вас не устраивает код, который я изложила ранее, то можете сделать чуть иначе:
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 можно закомментировать или убрать. Тут дело вкуса.
Сюда влетаю иногда... Возник вопрос и завелась метла

slawik_s

  • Зашел в гости
  • *
  • Posts: 15
    • View Profile
спасибо за помощь буду экспериментировать ;)