|
|
|
команда set timer, помогите |
|
|
Guest4r |
21.11.2017, 2:20
|
Registred
Сообщений: 1
Регистрация: 21.11.2017 Группа: Пользователи Наличность: 0
Пользователь №: 18.693
Возраст: 30
|
Привествую всех. Есть несколько макросов. Необходимо объеденить их в 1. Прочитал про переменную timer, в частности, что Код set timer // устанавливает значение timer в 0 Для примера Код MOUSEMOVE 536 361 0 0 SYSKEYUP 14354 32824 187 0 KEYUP 21037 32850 187 0 MOUSEMOVE 536 359 406 0 MOUSEMOVE 278 310 3000 0 MOUSEMOVE 278 311 3172 0 LBUTTONDOWN 278 311 3187 2687760 MOUSEMOVE 278 311 3187 0 LBUTTONUP 278 311 3234 2687760 MOUSEMOVE 278 311 3234 0 MOUSEMOVE 668 360 7219 0 MOUSEMOVE 667 360 7266 0 SYSKEYDOWN 14354 32824 8172 0 set timer MOUSEMOVE 718 504 0 0 SYSKEYUP 14354 32824 141 0 KEYUP 21037 32850 203 0 MOUSEMOVE 718 503 610 0 MOUSEMOVE 529 405 4594 0 MOUSEMOVE 531 391 4594 0 MOUSEMOVE 535 379 4610 0 MOUSEMOVE 542 365 4610 0 MOUSEMOVE 747 431 5157 0 MOUSEMOVE 748 431 5172 0 LBUTTONDOWN 748 431 5328 2687760 MOUSEMOVE 748 431 5172 0 LBUTTONUP 748 431 5438 2687760 MOUSEMOVE 748 431 5438 0 MOUSEMOVE 747 433 5532 0 MOUSEMOVE 745 435 5547 0 MOUSEMOVE 743 436 5547 0 MOUSEMOVE 741 438 5563 0 MOUSEMOVE 739 441 5563 0 MOUSEMOVE 737 443 5578 0 MOUSEMOVE 735 446 5578 0 MOUSEMOVE 733 447 5594 0 MOUSEMOVE 732 449 5594 0 MOUSEMOVE 731 451 5610 0 MOUSEMOVE 730 452 5625 0 MOUSEMOVE 730 453 5625 0 MOUSEMOVE 730 454 5641 0 MOUSEMOVE 730 453 5797 0 SYSKEYDOWN 14354 32824 6532 0 SYSKEYDOWN 14354 32824 7032 0 SYSKEYDOWN 14354 32824 7063 0 SYSKEYDOWN 14354 32824 7094 0 SYSKEYDOWN 14354 32824 7125 0 SYSKEYDOWN 14354 32824 7157 0 SYSKEYDOWN 14354 32824 7188 0 SYSKEYDOWN 14354 32824 7219 0
После set timer мышка чуть дёргается и выполнение макроса прекращается. А мне нужно, что бы выполнение проходило дальше, но с "нулевой" отметки времени, так как все макросы, которые нужно объеденить начинаются с нулевой отметки. Что я делаю не так? Сильно не бейте, первый раз пишу макрос, нужно автоматизировать кое-чё.
|
|
|
|
FREEON |
3.4.2018, 3:31
|
Journeyman
Сообщений: 365
Регистрация: 14.2.2017 Группа: Пользователи Наличность: 1320
Пользователь №: 18.346
Возраст: 25
|
Цитата Код set $current_time TimeNow // запоминаем время начала работы скрипта
while 1 = 1 set #a SubDate(TimeNow $current_time) // отнимает от текущего времени время начала работы скрипта hint TimeStamp (#a) wait 1 end_while Первый вариант прикольный задумка нравиться отображает как секундомер, но мне не подходит так как нужно вписывать в цикл, а подчастую скрипты работают в ночное время. Цитата Через таймер: Код set %time[1] mod(div(timer 3600000) 24) set %time[2] mod(div(timer 60000) 60) set %time[3] mod(div(timer 1000) 60) for #i 1 3 if size(%time[#i 1]) = 1 set %time[#i] 0%time[#i] end_if end_for hint %time[1]:%time[2]:%time[3] wait 1 А второй вариант пожалуй то что нужно. Благодарю за наводку сам бы не справился!
|
|
|
|
Cockney |
3.4.2018, 23:54
|
Master
Сообщений: 1.394
Регистрация: 22.6.2013 Группа: Пользователи Наличность: 20894
Пользователь №: 16.156
|
Все что пишется должно быть читабельно и закомментировано. Вопрос тут не в том, что ее можно написать и забыть, а в том, что вот таких функций порой - море. Забыл какой-то момент в работе - полез посмотреть и что видишь ? Комментов нет, куча ифов, флаги какие-то. Иногда переписываешь, ибо забыл, что ты городил когда-то. Да что говорить, если, например, в том же рантайме с++ мелкомягких стоят коменты практически ко всему. Вплоть до каждой строчки. Хотя код такого уровня меняется довольно редко. Плохая практика это, если короче.
|
|
|
|
DarkMaster |
4.4.2018, 11:05
|
Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27707
Пользователь №: 11.279
|
Забавно. Показалось очень странным, что вызов виде функции так сильно садит производительность. Оказалось, что не именн вызов садит, а что-то еще. Тем не менее некторая разница осталась: 2,09899999999999 - короткий вариант 1,096 - мой вариант в функции 1,25900000000001 - мой вариант вызванный не из функции Что так вниз то тянет? о.О Код --lua local launch_time = 135.12353 --os.clock() -- Эту строку в начало скрипта.
local function timer_f(ms_flag) local time_delta = os.clock() - launch_time local h = math.floor(time_delta/3600) if h < 10 then h = "0" .. h end local m = math.floor(time_delta/60)%60 if m < 10 then m = "0" .. m end local s = math.floor(time_delta)%60 if s < 10 then s = "0" .. tostring(s) end if ms_flag then local ms = math.modf(time_delta%1*1000) if ms < 100 then if ms > 9 then ms = "0" .. ms else ms ="00" .. ms end end s = s .. "." .. ms end return h..":"..m..":"..s end
local function timer_f2(ms_flag) local time_delta = os.clock() - launch_time local h = math.floor(time_delta/3600) local m = string.format("%02d", math.floor(time_delta/60)%60) local s = string.format("%02d", math.floor(time_delta)%60) if ms_flag then s = s .. "." .. string.format("%03d", math.modf(time_delta%1*1000)) end return h..":"..m..":"..s end
time = os.clock() for i=1, 1000000 do -- вызываем timer_f() timer_f() end log (os.clock()-time)
time = os.clock() for i=1, 1000000 do -- вызываем timer_f2() timer_f2() end log (os.clock()-time)
time = os.clock() for i=1, 1000000 do -- вызываем timer_f2() local time_delta = os.clock() - launch_time local h = math.floor(time_delta/3600) if h < 10 then h = "0" .. h end local m = math.floor(time_delta/60)%60 if m < 10 then m = "0" .. m end local s = math.floor(time_delta)%60 if s < 10 then s = "0" .. tostring(s) end if nil then local ms = math.modf(time_delta%1*1000) if ms < 100 then if ms > 9 then ms = "0" .. ms else ms ="00" .. ms end end s = s .. "." .. ms end end log (os.clock()-time) Сообщение отредактировал DarkMaster - 4.4.2018, 11:07
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
DarkMaster |
4.4.2018, 11:24
|
Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27707
Пользователь №: 11.279
|
Код --lua local time = os.clock() local time_delta = 135.12353 for i = 1, 100000000 do local time_delta = os.clock() local s = math.floor(time_delta)%60 if s < 10 then s = "0" .. tostring(s) end end log(os.clock() - time) время выполненеия: 8,75599999999997 при этом вызывает интерес то, что если мы изменим тело цикла на: Код local s = math.floor(time_delta)%60 if s < 10 then s = "0" .. tostring(s) end то время выполенения займет: 0,0310000000001764 в то же время, если мы вполним только удаленную часть: Код local time_delta = os.clock() то время выполенения составит 4,471. Как не турдно догадаться 4.471 + 0.031 != 8,75 даже близко. Дабы исключить непосредственное влияение и возможные оптимизации изменим: Код local time_delta = os.clock() local s = math.floor(time_delta)%60 if s < 10 then s = "0" .. tostring(s) end на Код local _ = os.clock() local s = math.floor(time_delta)%60 if s < 10 then s = "0" .. tostring(s) end однако это результата не принесло. Время выполнения все так же 8.75.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
DarkMaster |
4.4.2018, 13:22
|
Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27707
Пользователь №: 11.279
|
Цитата Добавь в цикл: Дык другие тесты тоже без него. Тест последний был вот этого маленького кусочка. Речь о том что: local _ = os.clock() 4 local s = math.floor(time_delta)%60 if s < 10 then s = "0" .. tostring(s) end 0.03 а вместе 8.7 как? о.О
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|