Author Topic: Поиск с ожиданием картинки.  (Read 1722 times)

0 Members and 1 Guest are viewing this topic.

Fazi

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Поиск с ожиданием картинки.
« on: June 08, 2017, 08:04:14 PM »
Всем привет. Подскажите пожалуйста как написать чтобы цикл чтобы в нем выполнялся поиск картинки в течении 30 секунд и заканчивался, а в случае если картинка найдена выполняются все условия и цикл сразу же вырубается не дожидаясь 30 сек.
Code: (clickermann) [Select]
$check = 0
WHILE($check = 0)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100)
      $check = 1
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(50)
   END_IF
END_CYC

Пробовал этот код. но он после нахождения картинки все равно продолжает находить её заново и выполнять условия...
Code: (clickermann) [Select]
$time = $_time_t + 10
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC



Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Поиск с ожиданием картинки.
« Reply #1 on: June 08, 2017, 08:23:36 PM »
Это потому что нет команды остановки. По умолчанию кликер выполняет код бесконечно.

Code: (clickermann) [Select]
$time = $_time_t + 10
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "file.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
HALT // стоп!!!

Fazi

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Re: Поиск с ожиданием картинки.
« Reply #2 on: June 08, 2017, 10:57:36 PM »
Code: (clickermann) [Select]
  $vkql=2
ELSE
waitms(30)
END_IF
waitms(RND(700,1800)

//***********Проверяем проверен ли квест**********
if($vkql=2)
$time = $_time_t + 15
WHILE($time > $_time_t)
GETSCREEN
COLORMODE(6)
IF_PICTURE_IN (754,437, 1013,663, "theQuestIsComplete.bmp", -1, 85)
    LCLICK($_return1, $_return2)
    WAITMS(100)
    LOGWRITE("квест пройден(успешно)")
    $vkql=3
    waitms(30)
    ELSE
    waitms(30)
    LOGWRITE("квест не пройден успешно")
  wait(30)
END_IF
END_CYC
end_if




//Пройти квест
if($vkql=3)
GETSCREEN
Oraven, вот часть моего кода, проблема в том что после нахождения картинки задание по прежнему в логе вижу что пишет "квест пройден(успешно)"на протяжении 15 секунд...Нужно как-то без команды halt обойтись т.к. дальше идёт ещё код... :'(

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Поиск с ожиданием картинки.
« Reply #3 on: June 09, 2017, 07:48:18 AM »
А куда из этого "куска кода" подевалась строка
Code: (clickermann) [Select]
$time = 0
Куски кода выкладываются блоками, а не с любого места по любое. Все конструкции должны быть целыми и закрытыми.


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Поиск с ожиданием картинки.
« Reply #4 on: June 09, 2017, 08:15:25 AM »
$time - это обычная переменная, может иметь любое имя
$_time_t - это системная переменная, возвращает время Unix в секундах
$time = $_time_t + 10 - здесь мы прибавляем к времени Unix + 10 секунд и записываем ето значение в переменную $time
WHILE($time > $_time_t) - Цикл выполняется пока $time больше $_time_t
$time не меняется а $_time_t постоянно увеличивается

Code: (clickermann) [Select]
$time = $_time_t + 10
WHILE($time > $_time_t)
   IF_
      $time = 0 // если хотим выйти из цикла то просто обнуляем значение в переменной
   ELSE

   END_IF
END_CYC


Fazi

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Re: Поиск с ожиданием картинки.
« Reply #5 on: June 09, 2017, 10:33:10 AM »
ахахха))нужно было просто обнулить))как я не додумался)) ::)
Спасибо парни!