Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: belousov on July 19, 2017, 06:10:30 AM
-
Здравствуйте!
При использовании таймера поиск и клик по найденному не прекращаются до истечения времени.
Можно ли как-то принудительно остановить таймер, после нахождения, например, картинки?
Поиск картинки-1 в течение 60сек., но она может появиться и через 5сек, и через 10сек. и т.д.
Вот только таймер ищет и кликает до окончания времени, такой цикл долгий, а нужно прекратить после нахождения и клика.
пример1:
Если картинка-1 найдена, то клик по ней, прекращение поиска и работы таймера, и переход к действию-1.
Если НЕ найдена картинка-1, то поиск картинки-2.
Если найдена картинка-2, то клик, прекращение поиска и работы таймера, и переход к действию-2.
Если НЕ найдена картинка-2, то снова ищем картинку-1.
И так по кругу в течение 60сек., но по нахождению картинки-1 или 2 прекращать отсчет таймера.
пример2:
Если картинка-1 найдена, то клик по ней, прекращение поиска и работы таймера, и переход к действию-1.
Если НЕ найдена картинка-1, то переход к действию-2.
И так по кругу в течение 60сек., но по нахождению картинки-1 прекращать отсчет таймера.
-
Как это работает:
$time - это обычная переменная, может иметь любое имя. Если внутри цикла по времени есть еще один цикл то эти переменные должны иметь разные имена.
$_time_t - это системная переменная возвращающая текущее время Unix в секундах
$time = $_time_t + 60 - здесь мы прибавляем к времени Unix значение 60 и записываем это в переменную $time
WHILE($time > $_time_t) - цикл проверяет условие, и если значение в $time больше времени Unix то цикл выполняется. Чтобы при следующей проверке условия прервать цикл, достаточно обнулить значение в переменной $time
$time = 0
$time = $_time_t + 60 // таймер на 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
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 100)
$time = 0
LCLICK($_return1, $_return2)
WAITMS(100)
ELSE
WAITMS(50)
END_IF
END_IF
END_CYC
IF($time ! 0) // это необязательное условие
// Здесь действия если за 60 секунд картинки не были найдены
END_IF
-
Oraven, спасибо за подробное разъяснение. Буду пробовать. :)
-
Еще раз обращаюсь к вам за помощью.
Запутался с поиском картинок, с переходом одних картинок к другим, в одном цикле с таймером 60сек. на каждый поиск, с его принудительным отключением при обнаружении.
Пример:
Поиск картинки-1, клик.
Если найдена картинка-1, то поиск картинки-2, клик.
Если НЕ найдена картинка-1, то поиск картинки-3, клик.
Если найдена картинка-3, то поиск картинки-4, клик.
Если найдена картинка-4, то поиск картинки-3, клик.
Если НЕ найдена картинка-4, то перезагрузка ПК.
Если НЕ найдена картинка-3, то перезагрузка ПК.
С картинки-2 начинается уже другой цикл...
-
...
Запутался с поиском картинок, с переходом одних картинок к другим, в одном цикле с таймером 60сек. на каждый поиск, с его принудительным отключением при обнаружении.
...
А вот тут я могу посоветовать очень хорошую бесплатную браузерную программу для рисования диаграмм (блок-схем и прочего):
draw.io (https://www.draw.io/)
Прекрасные возможности для оформления. При желании, можно установить и десктопную версию.
Имеющиеся в распоряжении фигуры-контейнеры, которые можно сворачивать/разворачивать, позволяют хранить внутри них ФРАГМЕНТЫ КОДА того действия, которое Вы обозначите на фигуре.
Я бы даже предложил рассмотреть В ОТДЕЛЬНОЙ ТЕМЕ работу над логикой программ с помощью такого-вот редактора диаграмм... Понятная визуализация логики, возможность обмена файлами и ОДНОВРЕМЕННОЙ СОВМЕСТНОЙ РАБОТЫ над блок-схемой снимает мно-о-ого головной боли ;)
-
...
Запутался с поиском картинок, с переходом одних картинок к другим, в одном цикле с таймером 60сек. на каждый поиск, с его принудительным отключением при обнаружении.
...
А вот тут я могу посоветовать очень хорошую бесплатную браузерную программу для рисования диаграмм (блок-схем и прочего):
Evgenij_M, спасибо, конечно, за подсказку, но не блок-схемы мне сейчас нужны, а в каком порядке где ставить IF...ELSE... и тд. и тп. в моём примере. Может не так излагаю мысли, извините)
Если, честно, то я и не знаю как правильно составлять блок-схемы. Могу, конечно, для себя как-нибудь набросать на листочке, но вряд ли вы поймёте)
При таком раскладе порой таймер не считает, то поиск перепрыгивает какую-нибудь картинку...волшебная палочка вроде бы и выровняла всё, а всё равно где-нибудь косяк у меня.
-
Взгляните, пожалуйста, правильно ли всё расставил? Что-то я с таймером не так сделал...
Эти строки перед поиском каждой картинки вставлять?
$time = $_time_t + 60
WHILE($time > $_time_t)
Например:
для картинки-3:
$time2 = $_time_t + 60
WHILE($time2 > $_time_t)
...
$time2 = 0
для картинки-4
$time3 = $_time_t + 60
WHILE($time3 > $_time_t)
...
$time3 = 0
И так далее?
Тогда вот эту строку для таймера, в самый низ или под поиском каждой картинки?
END_CYC
$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)
HINTPOPUP("НАЙДЕНО 1")
WAITMS(1000)
ELSE
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "3.bmp", -1, 100)
$time = 0
LCLICK($_return1, $_return2)
HINTPOPUP("НАЙДЕНО 3")
WAITMS(1000)
ELSE
HINTPOPUP("НЕ НАЙДЕНО 3")
WAITMS(50)
EXECUTE ("shutdown.exe", "/r /t 00")
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "4.bmp", -1, 100)
$time = 0
LCLICK($_return1, $_return2)
HINTPOPUP("НАЙДЕНО 4")
WAITMS(1000)
ELSE
HINTPOPUP("НЕ НАЙДЕНО 4")
WAITMS(50)
EXECUTE ("shutdown.exe", "/r /t 00")
END_IF
END_IF
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 100)
$time = 0
LCLICK($_return1, $_return2)
HINTPOPUP("НАЙДЕНО 2")
WAITMS(1000)
ELSE
HINTPOPUP("НЕ НАЙДЕНО 2")
WAITMS(1000)
END_IF
END_CYC
HALT
-
Evgenij_M, спасибо, конечно, за подсказку, но не блок-схемы мне сейчас нужны, а в каком порядке где ставить IF...ELSE... и тд. и тп. в моём примере...
Ох, как Вы заблуждаетесь, уважаемый...
Если бы у Вас была диаграмма, какую я себе сейчас представляю для Вашей задачи, то у Вас и вопросов бы, наверняка, не было.
Расстановка IF...ELSE... и прочего, это КОДИРОВАНИЕ, а не программирование. А у Вас, похоже, именно ПРОГРАММЫ то и нет.
Нет ничего лучше создания ПРОГРАММЫ с помощью визуальных методов и инструментов 8)
-
Evgenij_M, спасибо, конечно, за подсказку, но не блок-схемы мне сейчас нужны, а в каком порядке где ставить IF...ELSE... и тд. и тп. в моём примере...
Ох, как Вы заблуждаетесь, уважаемый...
Если бы у Вас была диаграмма, какую я себе сейчас представляю для Вашей задачи, то у Вас и вопросов бы, наверняка, не было.
Расстановка IF...ELSE... и прочего, это КОДИРОВАНИЕ, а не программирование. А у Вас, похоже, именно ПРОГРАММЫ то и нет.
Нет ничего лучше создания ПРОГРАММЫ с помощью визуальных методов и инструментов 8)
Послушайте, я прошу проверить правильность написанного и подсказать, что не так.
Не нужно мне читать лекции.
Я искренне рад , что вы во всём этом прекрасно разбираетесь. Для меня же это пока что тёмный лес.
Если вы набросали диаграмму, так выкладывайте.
Если есть что-то по делу - пишите.
Можете помочь - помогите.
Пожалуйста, не засоряйте тему.
-
Послушайте, я прошу проверить правильность написанного и подсказать, что не так.
Не нужно мне читать лекции.
Я искренне рад , что вы во всём этом прекрасно разбираетесь. Для меня же это пока что тёмный лес.
Если вы набросали диаграмму, так выкладывайте.
Если есть что-то по делу - пишите.
Можете помочь - помогите.
Пожалуйста, не засоряйте тему.
Да я, вообще-то, как-раз помочь и пытался :-[
Я Вам инструментпредлагал, который навсегда избавил бы Вас от возникновения вот таких-вот проблем. А Вы...
Вам сейчас люди напишут, что куда в этом коде поставить. Но, на следующих задачах Вы ОПЯТЬ же упрётесь в точно такие же тупики.
А жаль... :-[ (исчезаю...)
-
Судя по всему здесь у тебя начинается бесконечный цикл
Если найдена картинка-3, то поиск картинки-4, клик.
Если найдена картинка-4, то поиск картинки-3, клик.
Тогда пишем так
$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)
HINTPOPUP("НАЙДЕНО 1")
WAITMS(1000)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "2.bmp", -1, 100)
LCLICK($_return1, $_return2)
HINTPOPUP("НАЙДЕНО 2")
WAITMS(1000)
ELSE
HINTPOPUP("НЕ НАЙДЕНО 2")
WAITMS(1000)
END_IF
ELSE
WHILE(1)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "3.bmp", -1, 100)
LCLICK($_return1, $_return2)
HINTPOPUP("НАЙДЕНО 3")
WAITMS(1000)
ELSE
HINTPOPUP("НЕ НАЙДЕНО 3")
WAITMS(50)
EXECUTE ("shutdown.exe", "/r /t 00")
HALT
END_IF
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "4.bmp", -1, 100)
LCLICK($_return1, $_return2)
HINTPOPUP("НАЙДЕНО 4")
WAITMS(1000)
ELSE
HINTPOPUP("НЕ НАЙДЕНО 4")
WAITMS(50)
EXECUTE ("shutdown.exe", "/r /t 00")
HALT
END_IF
END_CYC
END_IF
END_CYC
HALT