Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: showtime on October 22, 2014, 03:29:10 PM
-
Здравствуйте.Ламмер я еще тот. Не могу разобраться в следующем:
есть 2 подпрограммы- нужно, что бы программа 1 выполнялась до принудительной остановки.
при этом - программа 2 должна включаться каждые 30 мин и выполняться, после ее выполнения - продолжение работы программы 1.
к примеру, программа 1:
сLCLICK(1294,378) // 16777215
WAITMS(500)
LCLICK(342,345) // 8355711
WAITMS(500)
LCLICK(342,345) // 8355711
WAITMS(500)
LCLICK(342,345) // 8355711
WAITMS(1000)
LCLICK(420,872) // 8146958
WAITMS(500)
программа 2 - такая же (для простоты примера)
подскажите, люди добрые!
зы. при первом запуске - программа 2 должна сработать сразу после программы 1. далее - каждые пол часа
-
Одно и тоже...
// работает бесконечно
LCLICK(1294,378) // 16777215
WAITMS(500)
LCLICK(342,345) // 8355711
WAITMS(500)
LCLICK(342,345) // 8355711
WAITMS(500)
LCLICK(342,345) // 8355711
WAITMS(1000)
LCLICK(420,872) // 8146958
WAITMS(500)
// сработает через 30 мин и каждые 30 мин
DEFINE($time1, $_time_t + 1800)
IF($time1 < $_time_t)
LCLICK(1294,378) // 16777215
WAITMS(500)
LCLICK(342,345) // 8355711
WAITMS(500)
LCLICK(342,345) // 8355711
WAITMS(500)
LCLICK(342,345) // 8355711
WAITMS(1000)
LCLICK(420,872) // 8146958
WAITMS(500)
$time1 = $_time_t + 1800
END_IF
-
Большое спасибо. А программа 2 первый раз сработает только через пол часа?
Возможно ли срабатывание при запуске и далее каждые пол часа?
-
Большое спасибо. А программа 2 первый раз сработает только через пол часа?
Возможно ли срабатывание при запуске и далее каждые пол часа?
убераешь строку 14
DEFINE($time1, $_time_t + 1800)
-
Cильно не бейте. Пытаюсь разобраться.. вопрос такой:
Одно и тоже...
// сработает через 30 мин и каждые 30 мин
DEFINE($time1, $_time_t + 1800)
IF($time1 < $_time_t)
//какая-то программа
$time1 = $_time_t + 1800
END_IF
в строке 2 задаем переменную, которая будет равна $_time_t + 1800 ?
условие в строке 3 не выполняется, конец. здесь точно должен быть знак меньше?
поясните, что происходит на самом деле?..
-
в строке 2 задаем переменную, которая будет равна $_time_t + 1800 ?
Да.
условие в строке 3 не выполняется, конец. здесь точно должен быть знак меньше?
Не выполняется. Не конец, а повтор скрипта с начала. Условие не сработает пока не пройдёт 30 минут.
В этом скрипте:
Запуск. Работа основной части. //какая-то программа запустится ТОЛЬКО через 30 минут. Отработает и опять через 30 мин.
Если строку 2 убрать (не задавать начальное $time1). То первый раз сработает сразу же. И дальше через 30 мин.
-
поясните, что происходит на самом деле?..
// сработает через 30 мин и каждые 30 мин
DEFINE($time1, $_time_t + 1800)//задаем значение $time1, оно станет равным $_time_t + 1800. $_time_t это количество секунд, прошедших с полуночи 1 января 1970 года, но это неважно.
//допустим $_time_t=1000 в данный момент, значит $time1=$_time_t + 1800=2800
IF($time1 < $_time_t) //проверяем - $time1 меньшн $_time_t или нет, а оно то больше(значит условие невыполняется).....идут секуды.....идут.....$_time_t увеличивается, через 1800 сек $_time_t=2800, еще сек и 2801, и тут $time1 становится меньше чем $_time_t, значит условие выполнится
//какая-то программа
$time1 = $_time_t + 1800 //в конце программы опять присваеваем значение $time1, опятьже оно равно $_time_t + 1800, и опять условие небудет выполняться 1800 сек
END_IF
хочу добавить, что DEFINE($time1, $_time_t + 1800) сработает только 1 раз в начале выполнения сценария, далее она будет игнорироваться, далее $time1 будет присваеваться значение с помощью $time1 = $_time_t + 1800
-
$_time_t - это системная переменная возвращающая текущее время Unix в секундах
мы берем время Unix, прибавляем к нему 1800 секунд и записываем значение в переменную $time1
В условии переменная $time1 будет сравниваться с $_time_t и по началу $time1 будет больше но со временем $_time_t нагонит записанное значение и условие наконец сработает.
-
// сработает через 30 мин и каждые 30 мин
DEFINE($time1, $_time_t + 1800)
IF($time1 < $_time_t)
//какая-то программа
$time1 = $_time_t + 1800
END_IF
DEFINE($time1, $_time_t + 1800) // объясните как это работает в теле скрипта?
это похоже на морковку у ослика перед носом. Пока выполняется скрипт $_time_t никогда не догонит $time1. оно каждый раз увеличиваться должно, но почему-то скрипт работает.
или DEFINE($time1, $_time_t + 1800) срабатывает только при ПЕРВОМ цикле выполнения, а $time1 = $_time_t + 1800 при КАЖДОМ ??
-
Vint, dramster, Oraven, спасибо за разъяснения.
не понимал, т.к думал что при невыполнении условия, возвращаясь в
DEFINE($time1, $_time_t + 1800)
$time1 задается заново (ведь $_time_t у нас постоянно увеличивается)
-
// сработает через 30 мин и каждые 30 мин
DEFINE($time1, $_time_t + 1800)
IF($time1 < $_time_t)
//какая-то программа
$time1 = $_time_t + 1800
END_IF
DEFINE($time1, $_time_t + 1800) // объясните как это работает в теле скрипта?
это похоже на морковку у ослика перед носом. Пока выполняется скрипт $_time_t никогда не догонит $time1. оно каждый раз увеличиваться должно, но почему-то скрипт работает.
или DEFINE($time1, $_time_t + 1800) срабатывает только при ПЕРВОМ цикле выполнения, а $time1 = $_time_t + 1800 при КАЖДОМ ??
Инструкция сработает только если переменная не была объявлена раньше. В противном случае инструкция игнорируется.(это из справки км)
-
Если строку 2 убрать (не задавать начальное $time1). То первый раз сработает сразу же. И дальше через 30 мин.
IF сработает если переменная $time1 не была объявлена?
-
Если строку 2 убрать (не задавать начальное $time1). То первый раз сработает сразу же. И дальше через 30 мин.
IF сработает если переменная $time1 не была объявлена?
да, $time1 в этом случае будет приравнена к "0"
-
Если строку 2 убрать (не задавать начальное $time1). То первый раз сработает сразу же. И дальше через 30 мин.
IF сработает если переменная $time1 не была объявлена?
Переменные объявляются автоматически при первом упоминании. Значение у них будет 0
-
Назрел вопрос. в скрипте работает такая подпрограмма:
// СБОР ЛУТА
SUB(search, $e, $t, $k, $u, $c, $h)
$check = 1
WHILE($check < 14) // количество текстур для поиска (n-1)
GETSCREEN
IF_PICTURE_IN ($e,$t, $k,$u, STRCONCAT($check, ".bmp"), -1, 85)
WAITMS(10)
MOVE($_return1, $_return2)
WAITMS(50)
LCLICK($_return1, $_return2) // выделение
WAITMS(10)
MOVE($c,$h)
WAITMS(100)
LCLICK($c,$h) // !!!ЗАБРАТЬ
WAITMS(50)
INC($check, -1)
END_IF
WAITMS(50)
INC($check)
END_CYC
END_SUB
осуществляется поиск текстур, в случае нахождения какой-либо - ищет еще раз такую же и только потом переходит к поиску следующей.
вопрос: возможно ли сделать так, что в случае нахождения одной и той же текстуры и попытке ее взять эдак раз 20 - он перестанет ее искать 21-ый раз и перейдет к поиску следующей. на деле невозможно найти больше 20ти раз одну и ту же текстуру при обращении к подпрограмме и, если такое случается, имеет место тех.неполатка (игровой момент) и нужно "скипнуть" поиск этой текстуры и перейти к поиску следующей
-
И еще. возможно ли задать IF от системного времени?
что-то вроде
IF ($_system_time = 14)
halt
END_IF
::)
-
Назрел вопрос. в скрипте работает такая подпрограмма:
...
осуществляется поиск текстур, в случае нахождения какой-либо - ищет еще раз такую же и только потом переходит к поиску следующей.
вопрос: возможно ли сделать так, что в случае нахождения одной и той же текстуры и попытке ее взять эдак раз 20 - он перестанет ее искать 21-ый раз и перейдет к поиску следующей. на деле невозможно найти больше 20ти раз одну и ту же текстуру при обращении к подпрограмме и, если такое случается, имеет место тех.неполатка (игровой момент) и нужно "скипнуть" поиск этой текстуры и перейти к поиску следующей
SUB(search, $e, $t, $k, $u, $c, $h)
$akk = 0
$num_akk = 0
$check = 1
WHILE($check < 14) // количество текстур для поиска (n-1)
GETSCREEN
IF_PICTURE_IN ($e,$t, $k,$u, STRCONCAT($check, ".bmp"), -1, 85)
WAITMS(10)
MOVE($_return1, $_return2)
WAITMS(50)
LCLICK($_return1, $_return2) // выделение
WAITMS(10)
MOVE($c,$h)
WAITMS(100)
LCLICK($c,$h) // !!!ЗАБРАТЬ
WAITMS(50)
INC($akk)
IF($num_akk ! $check)
$akk = 1
$num_akk = $check
END_IF
IF($akk < 20)
INC($check, -1)
END_IF
END_IF
WAITMS(50)
INC($check)
END_CYC
END_SUB
-
И еще. возможно ли задать IF от системного времени?
что-то вроде
IF ($_system_time = 14)
halt
END_IF
::)
Справка
-
IF($num_akk ! $check)
$akk = 1
$num_akk = $check
END_IF
IF($akk < 20)
INC($check, -1)
END_IF
долго понимал. вроде понял.. спасибо. едва ли бы додумался завернуть так сам