Clickermann: задаем временные задержки в кликере

Работа со временем в Clickermann

Время — один из важнейших параметров при создании сценариев. Сами временные задержки для сценария не важны, а вот операционная система может просто не успеть среагировать должным образом. Особенно это важно в играх, где каждое действие как правило сопровождается анимацией, которая занимает некоторое время, и если его не выждать, то следующая команда сценария придет не вовремя и рискует не выполниться игрой.

WAIT(s)
Простейшая функция ожидания. В качестве параметра принимает числовое значение секунд, которые должны пройти прежде чем будет выполнена следующая команда сценария.

WAITMS(ms)
В дальнейшем была введена более точная функция, позволяющая раздробить секунду на миллисекунды. В одной секунде как известно тысяча миллисекунд. Поэтому чтоб организовать ожидание в полсекунды, надо указать в кач-ве параметра значение 500. Следует помнить что эти две функции имеют известную погрешность — 16 миллисекунд. Вызвано это исключительно особенностями ОС Windows. Мы могли бы ликвидировать эту погрешность в ущерб производительности, но она слишком незначительна чтоб идти на такие жертвы.

IF_TIME(h,m,s)
Эта условная конструкция пришла на помощь нашему не самому удачному планировщику задач. Она анализирует машинное время, и если оно соответствует ожидаемому, срабатывают инструкции внутри блока. Ожидаемое время задается тремя параметрами: часы, минуты, секунды. К примеру, этот сценарий проверяет соответствует ли время полудню, и если соответствует, щелкает мышкой.

IF_TIME(12, 00, 00)
lclick(10,20)
END_TIME

Важно понимать, что проверка времени осуществляется только когда выполняется инструкция IF_TIME. Если до этого у вас были WAIT, то далеко не факт что вам удастся попасть точно в полдень. Но эта проблема решаема. Параметры минут и секунд можно аннулировать IF_TIME(12, 00, #null) или IF_TIME(12, 00, -1). При таком подходе значение секунд не будет приниматься во внимание и событие будет срабатывать в течение всей минуты. Это полезно когда инструкция IF_TIME вызывается не каждую секунду для проверки. С другой стороны нужно учитывать и «лишние срабатывания» в течение минуты. Обычно их обходят классическим приемом программирования — использованием флагов.

Источник: ithelp.at.ua