Как сделать таймер на If внутри цикла? --Lua
if условие
and () -- условие 1
and () -- условие 2
and () -- условие 3
then
Где-то здесь должен быть таймер на исполнение по истечении которого выполнение отменяется и ищется заново, иначе происходит задержка выполнения и клавиша нажимается когда все условия уже прошли.
send217 ("клавиша")
wait (0)
else
Покопавшись в Lua увидел что при написании
Timer = os.clock()
if условие
таймаут
выполнение
else
if условие
таймаут
выполнение
else
if условие
таймаут
выполнение
else
в каждом условии в конце нужно сбрасывать значение времени запуска пилота как я понимаю?
присвоить время значения для таймера 500 мс
while 1 do
[code]if условие
таймаут
выполнение
однако, если после первой проверки условий прошло заданное время - то условия проверяются еще раз или переходят ниже
Как двойное else создать
--время на выполнение команды и отправка проверки по новой
else
if условие
таймаут
выполнение
else
if условие
таймаут
выполнение
else
end
end
end
end
Подсветилось потому что это https://uopilot.uokit.com/wiki/index.php?title=%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5,_%D0%B7%D0%B0%D1%80%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5.
local timer = 0
while 1 do
if условие
if timer > 500
return false
else
выполнение
else
if условие
if timer > 500
return false
else
выполнение
else
if условие
if timer > 500
return false
else
выполнение
else
end
end
end
end
Знаю что технически это неправильно но т.к. никто других вариантов не предложил...то предлагаю следующее. Сделать все шиворот на выворот, то есть плясать от таймера.
set #timeout timer + 10000 // время таймера 10 секунд
while #timeout > timer // будем выполнять цикл 10 сек
start_script 2 // выполняем скрипт из вкладки 2(написанный на lua)
end_while
end_script
--lua
local x = os.clock() --Возвращает примерное количество времени в секундах,которое скрипт запущен
local s = 0
for i=1,2000 do s = s + i
log (string.format("время работы скрипта: %.1f\n", os.clock() - x)) --%.f отображение целого счетчика, если указать %.1f %.2f %.3f то столько цифр будет выводиться после целого числа
end
--lua
local x = os.clock() --Возвращает примерное количество времени в секундах,которое скрипт запущен
local timer = 5000/2 -- время работы таймера подставить вместо звездочки */2
for i=1,timer do
log (string.format("время работы скрипта: %.1f\n", os.clock() - x)) --%.f отображение целого счетчика, если указать %.1f %.2f %.3f то столько цифр будет выводиться после целого числа
end
все разобрался вот готовый таймер
--lua
log ()
local startTime = os.clock() -- таймер работы скрипта
log (startTime)
local Time = 5 --продолжительность работы таймера, 5 это значит 5 секунд (не миллисекунд)!!!
log (Time)
local endTimer = startTime + Time --расчитываем конечный параметр работы цикла
log (endTimer)
while os.clock() <= endTimer do --сравниваем текущее время с конечным
wait (500)
hint ((string.format("время работы цикла: %.1f\n", os.clock() - startTime)) ) --выводим сообщение
--действие
end
если совсем ужать то получим
--lua
local Time = 4.235 --время работы таймера 4 секунды 235 миллисекунд
local endTimer = os.clock() + Time while os.clock() <= endTimer do
wait (100)
log (" работаем")--действие
end
--lua
local Time = 4.235 --время работы таймера 4 секунды 235 миллисекунд
local endTimer = os.clock() + Time while os.clock() <= endTimer do
wait (100)
log (" работаем")--действие
end
while 1 do
local == изначальный таймер(Time)
if условие
if timer > 500 --Время на выполнение
return false
else
выполнение
else
if условие
if timer > 300 --Время на выполнение
return false
else
выполнение
else
if условие
if timer > 400 --Время на выполнение
return false
else
выполнение
else
end
end
end
end
Что можно выполнить за 200-300 миллисекунд? задержка на lua пишется в скобках wait (200).
Если все же нужен таймер то из приведённых примеров готовый код можете написать сами просто подставьте свое условие и действие.
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)