|
Счетчик для рандомных действий, счетчик |
|
|
Мащекус |
5.3.2025, 19:55
|
 
Neophyte
Сообщений: 22
Регистрация: 13.2.2023 Группа: Пользователи Наличность: 0
Пользователь №: 20.486

|
Добрый день!
Есть основной скрипт на Lua, периодически совершающий действия в игре (внезапно), между действиями стоят рандомные вейты.
Чтобы внести еще больше рандомности и действия скрипта были еще больше похожи на действия игрока, хочу добавить рандомные вейты в несколько минут с рандомной периодичностью в несколько минут. Или нечто похожее настраиваемое, возможно какой то счетчик...
Сейчас у меня это реализовано дополнительным скриптом, который просто с периодичностью в несколько минут стопает основной скрипт. Пауза на Lua ,на сколько я понял, не работает. И именно то, что скрипт после остановки, потом при запуске начинается с начала - для меня критично.
Поэтому, видимо надо будет в тело основного скрипта добавить или счетчик или таймер. Или возможно сделать отдельные вейты с привязкой, может быть к реальному времени, типа если четная минута то такое-то значение...не могу пока придумать.
В общем, если кто-то сталкивался с подобным, буду рад помощи, второй день не могу найти решение.
|
|
|
|
Мащекус |
6.3.2025, 0:08
|
 
Neophyte
Сообщений: 22
Регистрация: 13.2.2023 Группа: Пользователи Наличность: 0
Пользователь №: 20.486

|
В общем, на текущий момент реализовал так. Делать общий большой цикл через repeat или while не варик, т.к. сам скрипт очень большой, много разных действий и проверок В блок кода выполнения одного из действий в игре вставил счетчик и теперь скрипт отрабатывает через рандомное количество этих действий и выдает рандомный "длинный" вейт. Получилось наверно топорно, но вроде работает: Код --lua ::metka:: --задаем значения через сколько действий произойдет пауза math.randomseed(os.clock()) hh = 0 jj = math.random (1, 8) ::start:: --тут код действия в игре hh = hh + 1 local str = "ход " log (str..hh) local strr = "выбрано " log (strr..jj)
if hh == jj then log ("сработка") --тут будет рандомный длинный вейт goto metka --уходим для обнуления начальных значений счетчика и присвоения рандома end -- само действие в игре left (x, y) -- goto start
|
|
|
|
DarkMaster |
6.3.2025, 12:55
|
          
Модератор UOPilot
Сообщений: 9.746
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 29725
Пользователь №: 11.279

|
Цитата Чтобы внести еще больше рандомности и действия скрипта были еще больше похожи на действия игрока, хочу добавить рандомные вейты в несколько минут с рандомной периодичностью в несколько минут. Или нечто похожее настраиваемое, возможно какой то счетчик... https://forum.uokit.com/index.php?showtopic=71536для этих целей создавался в массиве time: sleep_random_g - случайная пауза с распределением по гауссу Код -- sleep_random_g( time_min_1, [time_max_1, chance1], [time_min_2, time_max_2, chance2], ... ) -- sleep_random_g({time_min_1, [time_max_1, chance1], [time_min_2, time_max_2, chance2], ...}) -- Ждет рандомное время по Гауссу (нормальное распредение). -- В качесте параметра может принимать набор аргументов, -- либо таблицу с набором аргументов. -- -- time - время задержки -- chance - вероятность того, что задержка будет применена. -- Задается в виде числа от 0 до 1, где -- 0 - 0%, 1 - 100%, т.е. 0.6735 будет 67.35%.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
Мащекус |
6.3.2025, 13:17
|
 
Neophyte
Сообщений: 22
Регистрация: 13.2.2023 Группа: Пользователи Наличность: 0
Пользователь №: 20.486

|
Цитата(DarkMaster @ 6.3.2025, 12:55)  https://forum.uokit.com/index.php?showtopic=71536для этих целей создавался в массиве time: sleep_random_g - случайная пауза с распределением по гауссу Код -- sleep_random_g( time_min_1, [time_max_1, chance1], [time_min_2, time_max_2, chance2], ... ) -- sleep_random_g({time_min_1, [time_max_1, chance1], [time_min_2, time_max_2, chance2], ...}) -- Ждет рандомное время по Гауссу (нормальное распредение). -- В качесте параметра может принимать набор аргументов, -- либо таблицу с набором аргументов. -- -- time - время задержки -- chance - вероятность того, что задержка будет применена. -- Задается в виде числа от 0 до 1, где -- 0 - 0%, 1 - 100%, т.е. 0.6735 будет 67.35%. Очень круто, спасибо Дарк! я думаю это как раз то, что мне и нужно
|
|
|
|
Мащекус |
6.3.2025, 13:50
|
 
Neophyte
Сообщений: 22
Регистрация: 13.2.2023 Группа: Пользователи Наличность: 0
Пользователь №: 20.486

|
Цитата(DarkMaster @ 6.3.2025, 12:55)  для этих целей создавался в массиве time: sleep_random_g - случайная пауза с распределением по гауссу
Единственный вопрос по синтаксису... Выдает ошибку: a runtime error. .\lua_system\init.lua:114: attemp to index local 'f' (a nil value) Код --lua require"lua_system\\init"
::start::
-- sleep random local time_min_1 = 1000 local time_max_1 = 5000 local chance1 = 0.7 local time_min_2 = 6000 local time_max_2 = 8000 local chance2 = 0.7
sleep_random_g(time_min_1, time_max_1, chance1, time_min_2, time_max_2, chance2)
goto start
|
|
|
|
DarkMaster |
6.3.2025, 14:30
|
          
Модератор UOPilot
Сообщений: 9.746
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 29725
Пользователь №: 11.279

|
Обновил. Скачайте, пожалуйста, 3.0.4b Там в хелпе чуть кривой синтаксис был описан. Правильно так: -- sleep_random_g( time_min_1, [time_max_1, chance1, [time_min_2, time_max_2, chance2, ... ]) -- sleep_random_g({time_min_1, [time_max_1, chance1, [time_min_2, time_max_2, chance2, ...}]) перезаливать уже не стал. Не там стояли скобочки [] указывающие на то, что параметры не обязательные. Код -- sleep_random( time ) -- без рандома, просто задержка -- sleep_random( time_min_1, [time_max_1, chance1, time_min_2, time_max_2, chance2, ... ]) -- sleep_random({time_min_1, [time_max_1, chance1, time_min_2, time_max_2, chance2, ...]}) -- Ждет рандомное время. -- В качесте параметра может принимать набор аргументов, -- либо таблицу с набором аргументов. -- -- time_min_n - минимальное время задержки -- time_min_n - максимальное время задержки -- chance - вероятность того, что задержка будет применена. -- Задается в виде числа от 0 до 1, где -- 0 - 0%, 1 - 100%, т.е. 0.6735 будет 67.35%.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
Мащекус |
6.3.2025, 19:30
|
 
Neophyte
Сообщений: 22
Регистрация: 13.2.2023 Группа: Пользователи Наличность: 0
Пользователь №: 20.486

|
Цитата(DarkMaster @ 6.3.2025, 14:30)  Обновил. Скачайте, пожалуйста, 3.0.4b
Скрипт: Код --lua require"lua_system\\init"
::start::
time = 2000 sleep_random( time ) log (time) wait (5000)
goto start выдает ошибку: a runtime error. .\lua_system\color.lua:35: cannot load module 'E:\backup 37.6\system\RAD\drive\J\projects\find_dll_release\find_dll_release.dll': Не найден указанный модуль.
|
|
|
|
Мащекус |
7.3.2025, 17:15
|
 
Neophyte
Сообщений: 22
Регистрация: 13.2.2023 Группа: Пользователи Наличность: 0
Пользователь №: 20.486

|
Цитата(DarkMaster @ 7.3.2025, 0:36)  перезалил.
код: Код --lua require"lua_system\\init"
::start::
time = 2000 sleep_random(time) log (time) wait (5000)
goto start выдает: 17:15:07 27 (autosaved_27.txt, 0): a runtime error. 7: attempt to call global 'sleep_random' (a nil value) --lua require"lua_system\\init" ::start::
|
|
|
|
Мащекус |
7.3.2025, 18:40
|
 
Neophyte
Сообщений: 22
Регистрация: 13.2.2023 Группа: Пользователи Наличность: 0
Пользователь №: 20.486

|
Цитата(DarkMaster @ 7.3.2025, 18:37)  Именно значение нет, но можно замерить время ожидания. Код local t = os.clock() time.sleep_random(0, 1000) log(os.clock()-t)
В упрощенном сиснтаксисе где-то косяк, пошел смотреть. Спасибо вам огромное за баг репорты и терпение. Да это вам спасибо за помощь и предложенное решение!
|
|
|
|
Мащекус |
7.3.2025, 18:54
|
 
Neophyte
Сообщений: 22
Регистрация: 13.2.2023 Группа: Пользователи Наличность: 0
Пользователь №: 20.486

|
Цитата(DarkMaster @ 7.3.2025, 18:37)  Именно значение нет, но можно замерить время ожидания.
Еще вопрос, как правильно читать синтаксис? sleep_random_g( time_min_1, [time_max_1, chance1], [time_min_2, time_max_2, chance2], ... ) time_min_1, time_max_1, принимают значение от 1 до заданного? chance1 - это вероятность срабатывания именно максимального значения или вообще всей задержки от time_min_1 до time_max_1?
|
|
|
|
DarkMaster |
7.3.2025, 19:09
|
          
Модератор UOPilot
Сообщений: 9.746
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 29725
Пользователь №: 11.279

|
Можно указать только вермя - всего один параметр. Тогда подождет от 0 до указанного времени с шансом 100% Шанс на сработку задержки для каждой группы min, max, chance. допустим у нас задано: Код time.sleep_random_g( 0, 1000, 1, 5000, 8000, 0.5, 60000, 120000, 0.003 ) это значит, что скрипт всегда подождет от 0 до 1000мс, с шансом 50% будет _дополнительно_ выполнено ожидание от 5 до 8 сек, и с шансом 0.3% _дополнительно_ подождет от 1 до 2 минут.
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
Мащекус |
7.3.2025, 19:27
|
 
Neophyte
Сообщений: 22
Регистрация: 13.2.2023 Группа: Пользователи Наличность: 0
Пользователь №: 20.486

|
Цитата(DarkMaster @ 7.3.2025, 19:09)  Можно указать только вермя - всего один параметр. Тогда подождет от 0 до указанного времени с шансом 100% Шанс на сработку задержки для каждой группы min, max, chance. допустим у нас задано: Код time.sleep_random_g( 0, 1000, 1, 5000, 8000, 0.5, 60000, 120000, 0.003 ) это значит, что скрипт всегда подождет от 0 до 1000мс, с шансом 50% будет _дополнительно_ выполнено ожидание от 5 до 8 сек, и с шансом 0.3% _дополнительно_ подождет от 1 до 2 минут. Отлично, спасибо! То, что нужно!
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|