Author Topic: Прошу помощи в написании сценария для игры Jungle Heat!  (Read 11956 times)

0 Members and 1 Guest are viewing this topic.

keepsv

  • Освоившийся
  • **
  • Posts: 34
    • View Profile
Доброго времени суток! Помогите разораться в написании сценария для выполнения действий продемонстрированных в видео по этой ссылке https://www.dropbox.com/s/vb9fnqc9qusl4q9/JH.avi?dl=0
Пытался просто записать сценарий но работает это не надежно, при малейших временных задержках отображения страницы сценарий сбивается. Подумал может сделать сценарий на основе поиска всех ключевых кнопок (предварительно наделал скринов https://www.dropbox.com/s/pskbv55z8ug0bcq/%D0%BA%D0%BD%D0%BE%D0%BF%D0%BA%D0%B8.rar?dl=0)
Но в процессе понял что здорово буксую в процессе написания такого сценария! Помогите составить скрипт так что б его работа не зависела от времени загрузки страницы, т.к. оно часто меняется! Так же желательно что б выполнение сценария не зависело от местоположения  окна браузера, я так понимаю привязка к окну тут не прокатит, т.к. действия происходят в разных окнах. Буду очень благодарен за любую помощь в этом не простом для меня деле!
Вот что сделал до создания темы.
Code: (clickermann) [Select]
WAIT(2)
//--------------------------------
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "ksh.bmp", -1, 100)
   MOVE($_return1, $_return2)
      WAIT(1)   
   LCLICK($_return1, $_return2)
         ELSE
         WAIT(5)
END_IF
WAITMS(50)
//--------------------------------
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "ar.bmp", -1, 100)
   MOVE($_return1, $_return2)
      WAIT(1)   
   LCLICK($_return1, $_return2)
         ELSE
         WAIT(5)
//--------------------------------
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "da.bmp", -1, 100)
   MOVE($_return1, $_return2)
      WAIT(1)   
   LCLICK($_return1, $_return2)
         ELSE
         WAIT(5)
//--------------------------------
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "rz.bmp", -1, 100)
   MOVE($_return1, $_return2)
      WAIT(1)   
   LCLICK($_return1, $_return2)
         ELSE
         WAIT(5)
END_IF
WAITMS(50)         
//--------------------------------
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "po.bmp", -1, 100)
   MOVE($_return1, $_return2)
      WAIT(1)   
   LCLICK($_return1, $_return2)
         ELSE
         WAIT(5)
END_IF
WAITMS(50)
//--------------------------------
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "ar.bmp", -1, 100)
   MOVE($_return1, $_return2)
      WAIT(1)   
   LCLICK($_return1, $_return2)
         ELSE
         WAIT(5)
//--------------------------------
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "da.bmp", -1, 100)
   MOVE($_return1, $_return2)
      WAIT(1)   
   LCLICK($_return1, $_return2)
         ELSE
         WAIT(5)
//--------------------------------
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "rz.bmp", -1, 100)
   MOVE($_return1, $_return2)
      WAIT(1)   
   LCLICK($_return1, $_return2)
         ELSE
         WAIT(5)
END_IF
WAITMS(50)

Совсем забыл сказать что такую процедуру нужно будет проделывать на разных акаунтах. Возможно будет правильным сделать ввод логина и пароля в соответствующие поля, вместо автозаполнения браузером.
« Last Edit: October 26, 2014, 03:14:17 PM by Oraven »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Тебе нужен поиск картинок с ожиданием их появления.
Например ждем какую то кнопку, загрузилось, появилась, кликнули. Далее ждем следующую кнопку. Не обязательно кнопку. можно какую то часть игры.

Вот бесконечное ожидание картинки, цикл будет крутиться делая новый поиск каждые 50 миллисекунд, что вполне нормально, пока не найдет картинку.
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

Но могут быть разные глюки, картинка по какой то причине может быть не найдена. (Например кликер нажал кнопку а она не нажалась  :o)
Тогда нужно использовать ограниченный во времени цикл.
Code: (clickermann) [Select]
$time = $_time_t + 60
WHILE($time > $_time_t) // ждем картинку не более 60 сек
   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

IF($time ! 0) // проверка результатов, если НЕ 0 то
   // цикл был прерван по таймеру, картинка не найдена
   // какие то действия, например прыгнуть в начало какой то части по ГОТО
  // или выполнить дополнительную проверку
END_IF

Функция EXECUTE может открывать страницы в браузере
Code: (clickermann) [Select]
EXECUTE("http://vk.com/feed")
« Last Edit: October 26, 2014, 03:36:24 PM by Oraven »

keepsv

  • Освоившийся
  • **
  • Posts: 34
    • View Profile
Oraven Я так понимаю значения  $time нужно вводить ручками?
$time = $_time_t + 60
WHILE($time > $_time_t)

P.S. Написал в ЛС...

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Это время в секундах которое будет крутиться цикл. Тебе нужно лишь указать сколько секунд максимум допустимо ждать.

$переменная = $системная переменная время Unix + 60 // добавляем к текущему времени 60 секунд
WHILE(Если переменная $time БОЛЬШЕ системной переменной время Unix) // цикл крутится пока условие верно

keepsv

  • Освоившийся
  • **
  • Posts: 34
    • View Profile
Спасибо за подсказку, я так понимаю мне нужно заменить там название искомой картинки и выстроить последовательность.

Code: (clickermann) [Select]
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "ksh.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "ar.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
/// и так далее...



Я правильно понимаю?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Да.
Кстати в твоем первоначальном скрипте не хватает END_IF
Сколько IF столько же должно быть и завершений END_IF
« Last Edit: October 26, 2014, 08:48:45 PM by Oraven »

keepsv

  • Освоившийся
  • **
  • Posts: 34
    • View Profile
По этому сценарию процесс спотыкается на повторном поиске картинки arsenal.bmp
Code: (clickermann) [Select]
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
//--------------------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "arsenal.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
//--------------------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "da.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
//--------------------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "razmestit.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
//--------------------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "poisk.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
WAITMS(3000)
//--------------------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "arsenal.bmp", -1, 100)//эту картинку не ищет, она же чуть выше, там находит
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
//--------------------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "da.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
//--------------------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "rz.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
//--------------------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "kr.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
//--------------------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "ms.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
//--------------------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "vrag.bmp", -1, 100)
      $time = 0
      MOVE($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
//--------------------------------
Подскажите куда копать?

keepsv

  • Освоившийся
  • **
  • Posts: 34
    • View Profile
Еще пару вопросов . )
Code: (clickermann) [Select]
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "udz.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
      MOVER(1,33)
      WAITMS(100)     
      LCLICK   //не пойму как сделать клик в точке куда переместился курсор выполнив MOVER(1,33)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
Как внести в сценарий комбинацию клавиш" Ctrl+W"?
Как лучше реализовать ввод логина в соответствующее поле?
« Last Edit: October 26, 2014, 11:47:07 PM by keepsv »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
1 Ну значит что то изменилось тебе там виднее.

2
Code: (clickermann) [Select]
LCLICK(-1,-1) // клик без координатНо вообще у тебя можно так
Code: (clickermann) [Select]
LCLICK($_return1, $_return2)
WAITMS(100)
LCLICK($_return1+1, $_return2+33)
WAITMS(100)

Code: (clickermann) [Select]
KEYDOWN (#CTRL) // Ctrl+W
WAITMS (50)
KEYPRESS(#W)
KEYUP (#CTRL)

Все просто,
Клик по полю логина -> вставка через буфер Ctrl+V -> TAB -> вставка через буфер Ctrl+V пароля -> ENTER

Советую протестить отдельные части отдельными скриптами.

Code: (clickermann) [Select]
LCLICK(142,329)
WAITMS(100)

TOCLIP("ПАРОЛЬ") // копируем в буфер
WAITMS(50)

KEYDOWN (#CTRL) // Ctrl+V
WAITMS (50)
KEYPRESS(#V)
KEYUP (#CTRL)
WAITMS(100)

KEYPRESS(#TAB) // переход
WAITMS(100)

TOCLIP("ЛОГИН") // копируем в буфер
WAITMS(50)

KEYDOWN (#CTRL) // Ctrl+V
WAITMS (50)
KEYPRESS(#V)
KEYUP (#CTRL)
WAITMS(100)

KEYPRESS(#ENTER) // ввод
WAITMS(100)

« Last Edit: October 27, 2014, 03:32:51 AM by Oraven »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Совсем забыл сказать что такую процедуру нужно будет проделывать на разных акаунтах. Возможно будет правильным сделать ввод логина и пароля в соответствующие поля, вместо автозаполнения браузером.
Ещё лучше запускать страницу напрямую с передачей логина-пароля
Code: (clickermann) [Select]
$file_akk="список.txt" // файл с аккаунтами   логин: пароль
$akkaunt_line=0
FOR ($akkaunt_line, $akkaunt_line < TFCOUNT($file_akk))
   $akkaunt = StrReadln($file_akk, $akkaunt_line)
   WAITMS(30)
   $log = STRCUT2 ($akkaunt, 1, STRPOS ($akkaunt,":")-1)
   $pass = STRCUT2 ($akkaunt, STRPOS ($akkaunt,":")+1, 999)
   WAITMS(100)
   EXECUTE("firefox.exe", STRCONCAT ("login.vk.com/?act=login&from_host=vk.com&email=", $log, "&pass=", $pass))
   WAIT(3)
   
   //работаем над аккаунтом
END_CYC

HALT

По окончании действий над аккаунтом можно вкладку закрывать.


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
А у него там вроде телефонный номер, &email= будет работать в этой строчке вообще?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Будет. У меня тоже номер.
У них название с лохматых времён. По хорошему должны были переименовать в login но кому оно надо.
« Last Edit: October 27, 2014, 10:40:02 AM by Vint »


keepsv

  • Освоившийся
  • **
  • Posts: 34
    • View Profile
Всем кто откликнулся на просьбу ОГРОМНОЕ СПАСИБО. Сценарий созд, все работает как часы. )) Но есть пару моментов.
1. Иногда выскакивает такая штука (прикрепленный файл) эта штука нарушает ход выполнения сценария!
2. Периодически при обновлении страницы окно флеш плеера неактивно, соответственно кликер жмет но ничего не происходит. При переключении на другую вкладку и возврате обратно-проблема решается. Но ход выполнения сценария нарушается.
Подскажите как решить это?
Code: (clickermann) [Select]
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1vera.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
//--------------------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "arsenal.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
//--------------------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "da.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
//--------------------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "razmestit.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
//--------------------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "poisk.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(700)
      LCLICK($_return1-154, $_return2+1) //ñìåùåíèå
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
//--------------------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "da.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
//--------------------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "razmestit.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
//--------------------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "kr.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
//--------------------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "ms.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
//--------------------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "vrag.bmp", -1, 100)
      $time = 0
      MOVE($_return1, $_return2)
      WAITMS(100)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
//--------------------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "udz.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(300)
      LCLICK($_return1+2, $_return2+36)
  WAITMS(300)
LCLICK($_return1-1, $_return2+72)
WAITMS(300)     
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
WAIT(2)
//------ïîñëå ÷èñòêè ñòðàíèöû
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "plag.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
 WAIT(1)
//-----------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "out.bmp", -1, 100)
      $time = 0
      LCLICK($_return1, $_return2)
      WAITMS(5000)
      DBLCLICK($_return1-668, $_return2+75)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF
c
//______________________________________________________
TOCLIP("логин") //
//______________________________________________________
WAITMS(50)
KEYDOWN (#CTRL) // Ctrl+V
WAITMS (50)
KEYPRESS(#V)
KEYUP (#CTRL)
WAITMS(100)
KEYPRESS(#TAB) //
WAITMS(100)
//______________________________________________________
TOCLIP("пароль") //
//______________________________________________________
WAITMS(50)
KEYDOWN (#CTRL) // Ctrl+V
WAITMS (50)
KEYPRESS(#V)
KEYUP (#CTRL)                 
WAITMS(500)
KEYPRESS(#ENTER)
 WAIT(2)
//--------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "jh.bmp", -1, 100)
      $time = 0
      RCLICK($_return1, $_return2)
      WAITMS(500)
      LCLICK($_return1+86, $_return2+10)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
 WAIT(2)
IF($time ! 0)
END_IF
WAITMS(100)
//--------------------
$time = $_time_t + 60
WHILE($time > $_time_t)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "zkr.bmp", -1, 100)
      $time = 0
      LCLICK($_return1+2, $_return2+2)
      WAITMS(1000)
   ELSE
      WAITMS(500)
   END_IF
END_CYC
IF($time ! 0)
END_IF

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Переставить флеш.
Поменять Яндекс недобраузер на другой.
Другое.


Oraven

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

Code: (clickermann) [Select]
$time = $_time_t + 60
WHILE($time > $_time_t)
   
END_CYC
IF($time ! 0)
   HINTPOPUP("Ошибка")
   // а можно вставить и команду проигрывания звука SOUND("play.wav"), если ты рядом то сможешь подойти и разобраться в проблеме
   HALT // хотябы вставь остановку если не найдено
END_IF

В 4.11 версии появились "потоки". Вот как раз в твоем случаи их можно использовать.
Твой код будет работать в потоке THREAD(bot) а в основном потоке будет крутиться анализ на твою помеху. И если эту табличку обнаружит кликер то поставит выполнение твоего скрипта на паузу, уберет табличку и при её отсутствии снова запустит твой сценарий.
Хороший пример использования

Code: (clickermann) [Select]
///// Проверка флешки ///// основной поток
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "Flash.bmp", -1, 100) // ищем замерзшую флешку
   SETTHREAD (bot, 0) // останавливаем программу bot (Пауза)
   WAITMS(500)
   LCLICK($_return1, $_return2) // убираем сообщение жмем Да
   WAITMS(50)
   MOVE($_xmax,$_ymax) // убираем курсор
   WAITMS(1000)
ELSE
   SETTHREAD (bot, 1) // если не нашли то запускаем программу bot (если конечно она на паузе)
   WAITMS(50)
END_IF

// поток программы
THREAD(bot) // здесь код работает независимо от проверки
   $time = $_time_t + 60
   WHILE($time > $_time_t)
      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "1vera.bmp", -1, 100)
         $time = 0
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
         WAITMS(500)
      END_IF
   END_CYC
   IF($time ! 0)
   END_IF
   //--------------------------------
   $time = $_time_t + 60
   WHILE($time > $_time_t)
      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "arsenal.bmp", -1, 100)
         $time = 0
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
         WAITMS(500)
      END_IF
   END_CYC
   IF($time ! 0)
   END_IF
   //--------------------------------
   $time = $_time_t + 60
   WHILE($time > $_time_t)
      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "da.bmp", -1, 100)
         $time = 0
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
         WAITMS(500)
      END_IF
   END_CYC
   IF($time ! 0)
   END_IF
   //--------------------------------
   $time = $_time_t + 60
   WHILE($time > $_time_t)
      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "razmestit.bmp", -1, 100)
         $time = 0
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
         WAITMS(500)
      END_IF
   END_CYC
   IF($time ! 0)
   END_IF
   //--------------------------------
   $time = $_time_t + 60
   WHILE($time > $_time_t)
      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "poisk.bmp", -1, 100)
         $time = 0
         LCLICK($_return1, $_return2)
         WAITMS(700)
         LCLICK($_return1-154, $_return2+1) //смещение
         WAITMS(100)
      ELSE
         WAITMS(500)
      END_IF
   END_CYC
   IF($time ! 0)
   END_IF
   //--------------------------------
   $time = $_time_t + 60
   WHILE($time > $_time_t)
      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "da.bmp", -1, 100)
         $time = 0
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
         WAITMS(500)
      END_IF
   END_CYC
   IF($time ! 0)
   END_IF
   //--------------------------------
   $time = $_time_t + 60
   WHILE($time > $_time_t)
      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "razmestit.bmp", -1, 100)
         $time = 0
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
         WAITMS(500)
      END_IF
   END_CYC
   IF($time ! 0)
   END_IF
   //--------------------------------
   $time = $_time_t + 60
   WHILE($time > $_time_t)
      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "kr.bmp", -1, 100)
         $time = 0
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
         WAITMS(500)
      END_IF
   END_CYC
   IF($time ! 0)
   END_IF
   //--------------------------------
   $time = $_time_t + 60
   WHILE($time > $_time_t)
      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "ms.bmp", -1, 100)
         $time = 0
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
         WAITMS(500)
      END_IF
   END_CYC
   IF($time ! 0)
   END_IF
   //--------------------------------
   $time = $_time_t + 60
   WHILE($time > $_time_t)
      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "vrag.bmp", -1, 100)
         $time = 0
         MOVE($_return1, $_return2)
         WAITMS(100)
      ELSE
         WAITMS(500)
      END_IF
   END_CYC
   IF($time ! 0)
   END_IF
   //--------------------------------
   $time = $_time_t + 60
   WHILE($time > $_time_t)
      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "udz.bmp", -1, 100)
         $time = 0
         LCLICK($_return1, $_return2)
         WAITMS(300)
         LCLICK($_return1+2, $_return2+36)
         WAITMS(300)
         LCLICK($_return1-1, $_return2+72)
         WAITMS(300)
      ELSE
         WAITMS(500)
      END_IF
   END_CYC
   IF($time ! 0)
   END_IF
   WAIT(2)
   //------после чистки страницы
   $time = $_time_t + 60
   WHILE($time > $_time_t)
      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "plag.bmp", -1, 100)
         $time = 0
         LCLICK($_return1, $_return2)
      ELSE
         WAITMS(500)
      END_IF
   END_CYC
   IF($time ! 0)
   END_IF
   WAIT(1)
   //-----------
   $time = $_time_t + 60
   WHILE($time > $_time_t)
      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "out.bmp", -1, 100)
         $time = 0
         LCLICK($_return1, $_return2)
         WAITMS(5000)
         DBLCLICK($_return1-668, $_return2+75)
      ELSE
         WAITMS(500)
      END_IF
   END_CYC
   IF($time ! 0)
   END_IF
   
   WAIT(1)
   
   //______________________________________________________
   TOCLIP("логин") //
   //______________________________________________________
   WAITMS(50)
   KEYDOWN (#CTRL) // Ctrl+V
   WAITMS (50)
   KEYPRESS(#V)
   KEYUP (#CTRL)
   WAITMS(100)
   KEYPRESS(#TAB) //
   WAITMS(100)
   //______________________________________________________
   TOCLIP("пароль") //
   //______________________________________________________
   WAITMS(50)
   KEYDOWN (#CTRL) // Ctrl+V
   WAITMS (50)
   KEYPRESS(#V)
   KEYUP (#CTRL)
   WAITMS(500)
   KEYPRESS(#ENTER)
   WAIT(2)
   //--------
   $time = $_time_t + 60
   WHILE($time > $_time_t)
      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "jh.bmp", -1, 100)
         $time = 0
         RCLICK($_return1, $_return2)
         WAITMS(500)
         LCLICK($_return1+86, $_return2+10)
      ELSE
         WAITMS(500)
      END_IF
   END_CYC
   WAIT(2)
   IF($time ! 0)
   END_IF
   WAITMS(100)
   //--------------------
   $time = $_time_t + 60
   WHILE($time > $_time_t)
      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "zkr.bmp", -1, 100)
         $time = 0
         LCLICK($_return1+2, $_return2+2)
         WAITMS(1000)
      ELSE
         WAITMS(500)
      END_IF
   END_CYC
   IF($time ! 0)
   END_IF
END_THREAD
« Last Edit: October 27, 2014, 05:31:10 PM by Oraven »