Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: kirill on November 10, 2012, 12:45:04 PM

Title: время
Post by: kirill on November 10, 2012, 12:45:04 PM
как сделать чтобы кликер начинал сценарий в 12.10 и в 16.10 по времени на компьютере
Title: Re: время
Post by: Oraven on November 10, 2012, 01:55:10 PM
Даже для 4.7 версии все еще работает IF_TIME("*:*:*"). Звездочка означает любой час, любую минуту и секунду.
IF_TIME в справке не описана

Code: [Select]
IF_TIME("12:10:*") // Включаем в 12.10
$t1 = 1
END_IF

IF_TIME("16:10:*") // Отключаем в 16.10
$t1 = 0
END_IF


IF_TIME("16:10:*") // Включаем в 16.10
$t2 = 1
END_IF

IF_TIME("12:10:*") // Отключаем в 12.10
$t2 = 0
END_IF


IF($t1 = 1) // 12.10
// здесь твой скрипт 
// Будет выполняться с 12.10 по 16.10
LOGWRITE("Задание в 12.10")
END_IF

IF($t2 = 1) // 16.10
// здесь твой скрипт
// Будет выполняться с 16.10 по 12.10
LOGWRITE("Задание в 16.10")
END_IF

WAITMS (500)
Title: Re: время
Post by: kirill on November 10, 2012, 02:24:48 PM
не работает кликер сразу начинает выполнять макрос
Title: Re: время
Post by: ЦИТРИН on November 10, 2012, 02:26:08 PM
Если не затруднит, перенесите  ваш скрипт в шапку стандартных примеров, чтобы не рыскать новичкам  по всему форуму в поисках нужного прототипа скрипта.
Title: Re: время
Post by: Oraven on November 10, 2012, 03:20:14 PM
не работает кликер сразу начинает выполнять макрос

У меня 4.7 версия и все работает!
Title: Re: время
Post by: Сергей on November 11, 2012, 08:16:32 AM
не работает кликер сразу начинает выполнять макрос
Если тебе нужно чтобы он выполнял программу только в 12:10 и 16:10, а не с 12:10 до 16:10, то попробуй так:
Code: (clickermann) [Select]
$break = 0
while($break = 0)
   IF_TIME("12:10:*")
      GOSUB(my_program_1)//Подпрограмма, которая будет вызвана в 12:10
      $break = 1
   end_if
   waitms(5000)
end_cyc

$break = 0
while($break = 0)
   IF_TIME("16:10:*")
      GOSUB(my_program_2)//Подпрограмма, которая будет вызвана в 16:10
      $break = 1
   end_if
   waitms(5000)
end_cyc
Title: Re: время
Post by: kirill on November 13, 2012, 03:19:34 PM
не работает кликер сразу начинает выполнять макрос
Если тебе нужно чтобы он выполнял программу только в 12:10 и 16:10, а не с 12:10 до 16:10, то попробуй так:
Code: (clickermann) [Select]
$break = 0
while($break = 0)
   IF_TIME("12:10:*")
      GOSUB(my_program_1)//Подпрограмма, которая будет вызвана в 12:10
      $break = 1
   end_if
   waitms(5000)
end_cyc

$break = 0
while($break = 0)
   IF_TIME("16:10:*")
      GOSUB(my_program_2)//Подпрограмма, которая будет вызвана в 16:10
      $break = 1
   end_if
   waitms(5000)
end_cyc
спасибо, так работает, только не пойму для чего эта функция  GOSUB, что за подпрограмма? откуда она вызывается?(из какой папки) и что это такое my_program_2 имя скрипта? или ещё что то
Title: Re: время
Post by: Oraven on November 13, 2012, 03:44:30 PM
спасибо, так работает, только не пойму для чего эта функция  GOSUB, что за подпрограмма? откуда она вызывается?(из какой папки) и что это такое my_program_2 имя скрипта? или ещё что то

SUB - это изолированный кусок кода, он находится в том же скрипте и вызывается по GOSUB. При этом происходит переход в вызываемый SUB, выполнение всего того что там написано и возвращение на следующую строку после GOSUB

Code: (clickermann) [Select]
$break = 0
while($break = 0)
   IF_TIME("12:10:*")
      GOSUB(my_program_1)//Подпрограмма, которая будет вызвана в 12:10
      $break = 1
   end_if
   waitms(5000)
end_cyc

$break = 0
while($break = 0)
   IF_TIME("16:10:*")
      GOSUB(my_program_2)//Подпрограмма, которая будет вызвана в 16:10
      $break = 1
   end_if
   waitms(5000)
end_cyc

SUB(my_program_1)
LOGWRITE("Программа 1")
// Здесь Программа 1
END_SUB

SUB(my_program_2)
LOGWRITE("Программа 2")
// Здесь Программа 2
END_SUB

Вот написал вариант с системными переменными, кажется по проще будет...

// $my_program_1 - переменная выполняет роль выключателя, чтобы условие сработало только 1 раз

Code: (clickermann) [Select]
IF(($_time_h = 12) & ($_time_m = 10) & ($my_program_1 = 0))
$my_program_1 = 1
// Здесь Программа 1
END_IF

IF(($_time_h = 16) & ($_time_m = 10) & ($my_program_2 = 0))
$my_program_2 = 1
// Здесь Программа 2
END_IF

WAITMS (100)
Title: Re: время
Post by: Сергей on November 13, 2012, 05:46:21 PM
В твоем варианте my_program будет выполняться, пока не кончится минута, а не единожды.
Ну и переменные-флаги надо потом не забыть обнулить.
Title: Re: время
Post by: Oraven on November 13, 2012, 06:44:38 PM
В твоем варианте my_program будет выполняться, пока не кончится минута, а не единожды.
Ну и переменные-флаги надо потом не забыть обнулить.

А для чего тогда я сделал переменную $my_program_1 = 1??? Когда этой переменной присваивается значение 1, то условие перестает срабатывать.
Title: Re: время
Post by: Сергей on November 13, 2012, 07:44:57 PM
Ах, да, точно. Название переменной ввело меня в заблуждение.