|
|
|
Задать таймер на выполнение строки кода |
|
|
CKA3KA |
13.12.2018, 7:56
|
Neophyte
Сообщений: 28
Регистрация: 17.11.2018 Группа: Пользователи Наличность: 0
Пользователь №: 19.119
Возраст: 33
|
(IMG: style_emoticons/default/smile.gif) Требуется в начале кода перед первой :меткой задать таймер к примеру 30мин. на переход к определенной :метке, по истечении этого времени независимо от выполняемой строки кода должен произойти переход на заданную в таймере метку. Как сделать?
|
|
|
|
DarkMaster |
13.12.2018, 8:36
|
Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27708
Пользователь №: 11.279
|
Для начала прекратить использовать метки. В целом это ОЧЕНЬ плохая практика. Именно из-за этой практики у вас появляются такие вопросы, которые в нормальной архитектуре возникнуть не должны.
В целом в данном случае вменяемо - никак. Не очень вменяемо - можно запсутить параллельный скрипт, который будет мониторить эти тайминги, останавливать основной и запускать его заново. В начале основного скрипта при этом должно проверяться состояние переменной в параллельном скрипте и в зависимости от ее значения прыгать на нужную вам метку. При этом, если вам необходимо сохранить какие-либо рабочие данные (значения переменных, массивов, которые существовали до остановки скрипта), то вам их придется предварительно сохранять хотя бы в тот же параллельный скрипт. Все эти телодвижения должны иметь очень серьезное обоснование, т.е. проблем очень много, работы тоже много, поддерживать данные скрипты будет крайне затруднительно и скорость разработки очень сильно снизится, так же очень резко возрастает вероятность появления багов из-за увеличения сложности кода. Если бы мне сказали создавать подобный цирк, то я хотя бы день потратил на поиски возможности соскочить с этого аттракциона.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
CKA3KA |
13.12.2018, 9:26
|
Neophyte
Сообщений: 28
Регистрация: 17.11.2018 Группа: Пользователи Наличность: 0
Пользователь №: 19.119
Возраст: 33
|
Цитата(DarkMaster @ 13.12.2018, 8:36) Для начала прекратить использовать метки. В целом это ОЧЕНЬ плохая практика. Именно из-за этой практики у вас появляются такие вопросы, которые в нормальной архитектуре возникнуть не должны.
У меня пока все через метки делается, к примеру есть три условных блока и одна метка на действие, и мой код имеет вид: :метка_all действие_2 //нужное для всех трех условных блоков, время выполнения к примеру 3сек за которые могут включиться условные блоки 1 или 2 или тот же 3 снова. условный блок 1 действие_1 goto метка_all //для второго действия условный блок 2 действие_1 goto метка_all //для второго действия условный блок 3 действие_1 goto метка_all //для второго действия Во-первых :метка расположенная перед блоками не дает потерять драгоценное время, если бы ее вообще не было и действие_2 мы бы прописывали в каждом условном блоке индивидуально (к примеру в условном блоке 3 сработало true, то без метка_all мы бы потеряли драгоценное время, т.к. пока будет дальше прокручиваться код у нас первый и второй блок могут за это время включиться и выключиться) во-вторых она сокращает размер кода. Ну и почему же метки это типа "ЗЛО"
|
|
|
|
DarkMaster |
13.12.2018, 9:49
|
Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27708
Пользователь №: 11.279
|
http://hosting.vspu.ac.ru/~chul/dijkstra/goto/goto.htmВот ничего за пол века не поменялось. Вообще. Если читать это слишком трудно, то: 1) Ухудшается читаемость. 2) Ухудшается предсказуемость поведения. 3) Ухудшается простота поддержки кода. 4) В конченом итоге увеличивается время разработки. 5) Увеличивается количество багов. Цитата и мой код имеет вид: Для всего этого существют конструкции if else end, switch case, while, for, вызов подпрограмм и т.д. https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%...%BA%D0%BE%D0%B4как совсем примитвный пример Сообщение отредактировал DarkMaster - 13.12.2018, 9:50
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
sutra |
13.12.2018, 16:59
|
Adept
Сообщений: 923
Регистрация: 10.8.2018 Группа: Пользователи Наличность: 0
Пользователь №: 19.007
|
Цитата Там может быть одной из строк wait 100000000 Таких операторов вообще быть не должно. В моих кодах вообще нет операторов wait. Чего ждать то? Я делаю код таким, что ничего никогда не жду. В lua я даже клики сделал без wait, анализируя происходящее на экране, а не жду "у моря погоды". Перегружается браузер - анализирую его готовность, в общем можете не верить, но у меня нет никаких wait-ов. Вот из-за таких вот wait-ов и бездумно организованных циклов ... жмёшь на Esc , а в ответ "тишина". А я так считаю, лучше убить своё время (как не скажет cirus - один раз) и сделать всё по уму, но потом уже никогда не ждать. Правда кто-то говорил, что надо делать wait 1, чтобы не было нагрузки на камень. Хотя и тут не факт, лучше иметь нормальный камень, ну разве что экономить электричество, но у себя я не замечал нагрузки на проц, хотя конечно мой проц загрузить - это надо сильно постараться. Сколько ни смотрел ... Пилот грузит 5-10% (это на 6 ядрах).
|
|
|
|
DarkMaster |
13.12.2018, 23:05
|
Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27708
Пользователь №: 11.279
|
Цитата Сколько ни смотрел ... Пилот грузит 5-10% (это на 6 ядрах). Там есть вранье. При включенном гипертрейдинге диспетчер будет показывать, что одно приложение жрет не более, чем 100/количество_ядер/2. Т.е. по факту занижается нагрузка в 2 раза. Цитата Таких операторов вообще быть не должно. В моих кодах вообще нет операторов wait. Чего ждать то? Я делаю код таким, что ничего никогда не жду. В lua я даже клики сделал без wait, анализируя происходящее на экране, а не жду "у моря погоды".
Попробуй так в wow сделать. Он от твоих кликов просто колом встанет. И анализируй потом хоть до 2 пришествия. Тебе на отправку left надо, скажем 5 тактов, ему на обработку клика 500 тактов. Пока не выключишь - не отвиснет никогда. К тому же есть всякие переключатели-тумблеры. 2 раза нажал - оно обратно выключилось. Учитывая задержки отрисовки ты никогда не узнаешь, что там было. Скорость безусловно важна и ее нужно бывает выжимать в некоторых моментах, но стабильность зачастую важна больше. У меня, например, не бывает желания вставать посреди ночи и искать, что же там забагалось, утром искать уже не получится - ситуация изменится, а запустить надо сейчас.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
sutra |
14.12.2018, 1:24
|
Adept
Сообщений: 923
Регистрация: 10.8.2018 Группа: Пользователи Наличность: 0
Пользователь №: 19.007
|
Цитата Тебе на отправку left надо Не думаю, точнее уверен, что отрисовка картинки происходит не быстрее, чем это может вызвать зависание. Кликнуло и анализирует пока не сработает, а не долбит постоянно. Теперь про гипертрейдинг и загрузку. Знаешь, когда я запускаю свою прогу, когда там тысячи файлов - грузится на 100% и не размазывает как ты говоришь между ядрами (потоками), а конкретно грузит на 100% одно ядро, что и температура ядра тут же покажет. Так что позволю не согласиться. У меня всё и всегда работает как часы. В чём чём а уж в "железе" я неплохо разбираюсь. Своими руками не один десяток компов собрал. И в многозадачности тоже собаку съел, потому и имею 6 ядер, в своё время было нужно, сейчас уже излишество. Со мной многие мои коллеги спорили и про гипертрейдинг, но я не верю синтетическим тестам - тыкал носом в реальные тесты, например сколько времени будет тот же севензип архивировать. У Сайруса машинка работает быстрее на конкретных однопоточных приложениях, но на многопоточных вряд ли.
|
|
|
|
sutra |
14.12.2018, 1:58
|
Adept
Сообщений: 923
Регистрация: 10.8.2018 Группа: Пользователи Наличность: 0
Пользователь №: 19.007
|
Кстати, пусть я не во многие игры играл, но всё-таки играл. Так вот моя нынешняя игра - самая капризная как раз на кликах. Только чаще всего наоборот - полно вариантов ложных срабатываний. И когда только начинал, мучался с этими ожиданиями. Сделаешь мало - ложное срабатывание, т.е. ты думаешь, что выбираешь что-то, а оно уже давно выбралось (на всплывающие менюшки). Сделаешь ожидание больше - просто не выбирается ничего (так сказать поезд ушёл). А вот теперь всё работает идеально. Хотя я не навязываю своё мнение, просто останусь при своём. Извини Дарк, если что не так сказал - плохое воспитание, вспыльчивый характер, теперь уж не переделать. Жизнь "весёлая" была.
|
|
|
|
DarkMaster |
14.12.2018, 2:21
|
Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27708
Пользователь №: 11.279
|
Цитата Не думаю, точнее уверен, что отрисовка картинки происходит не быстрее, чем это может вызвать зависание. Кликнуло и анализирует пока не сработает, а не долбит постоянно. Я тебе свою практику говорю. Попробуй скил поспамить без вейтов, даже с проверками. Тетил на личе 3.13. Цитата Знаешь, когда я запускаю свою прогу, когда там тысячи файлов - грузится на 100% Однопоточная задача не может грузить камень больше, чем на одно ядро. От этого не уйдешь. В целом это было протестировано на практике с пилотом, когда возникли подозрения, что из-за ГТ пилот шуршал медленнее (загрузка камня было 12% вместо должных 25%). Как оказалось - это лишь визуальный обман. Это просто опыт. Это не теоретические выкладки.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|