Здравствуйте, гость ( Вход | Регистрация )

> Счетчик для рандомных действий, счетчик
Мащекус
сообщение 5.3.2025, 19:55
Сообщение #1


**

Neophyte
Сообщений: 22
Регистрация: 13.2.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.486



Добрый день!

Есть основной скрипт на Lua, периодически совершающий действия в игре (внезапно), между действиями стоят рандомные вейты.

Чтобы внести еще больше рандомности и действия скрипта были еще больше похожи на действия игрока, хочу добавить рандомные вейты в несколько минут с рандомной периодичностью в несколько минут. Или нечто похожее настраиваемое, возможно какой то счетчик...

Сейчас у меня это реализовано дополнительным скриптом, который просто с периодичностью в несколько минут стопает основной скрипт. Пауза на Lua ,на сколько я понял, не работает. И именно то, что скрипт после остановки, потом при запуске начинается с начала - для меня критично.

Поэтому, видимо надо будет в тело основного скрипта добавить или счетчик или таймер. Или возможно сделать отдельные вейты с привязкой, может быть к реальному времени, типа если четная минута то такое-то значение...не могу пока придумать.

В общем, если кто-то сталкивался с подобным, буду рад помощи, второй день не могу найти решение.

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
DarkMaster
сообщение 15.3.2025, 18:25
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.745
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29677
Пользователь №: 11.279



распределение гаусса было мной выбрано наоборот как более близкое к человеческому, чем равномерное. Более того в стандартном виде вы не можете задать распределение от min до max. Там будет равномерное снижение вероятности при удалении от "центра", но она никогда не станет нулевой. Сигма фактически определяет насколько быстро/медленно снижается эта вероятность. В моем модуле значение искуственно генерируется заново, если оно вышло за рамки лимитов. Был где-то удобный на первый взгляд не казистый эмулятор вебовский. Там можно было бегунки крутить и смотреть изменение графика. Ну хотя бы тут посмотрите https://planetcalc.ru/4986/
Смысл в том, что вы можете при желании изменить степень "концентрированности".
В time.lua есть следующая строка:
Код
local time_to_sleep = sys.random_g(param[i], param[i+1])

у меня она 462, нумерация может чуть отличаться.
Если вы хотите изменить распределение - измените ее. Можно указать сигму _либо_ процент.
Код
local time_to_sleep = sys.random_g(param[i], param[i+1], sigma, perc)

Сейчас там стоит процент по умолчанию 99%. Если будете уменьшать - распределение будет более плавно "расползаться" в стоорны. Ну т.е. можете изменить на что-нибудь вроде:
Код
local time_to_sleep = sys.random_g(param[i], param[i+1], nil, 0.90)

При этом нужно понимать, что на краях графика будет происходить резкий обрыв. Что не очень хорошо может выглядеть при статистическом анализе, хотя визуально вряд ли это кто-то заметит. Именно поэтому текущее значение было выбрано, как некоторый компромисс, который по _моему_ мнению выглядит разумно.
Так же вы можете выключить "отброс" крайних значений, которые не входят в дипазон:
Код
local time_to_sleep = sys.random_g(param[i], param[i+1], nil, 0.90, false)

Вообще это вызов функции из system.lua который лежит рядом. Вы можете его модифицировать, как вам угодно. Полное описание находится в system.lua:
Код
-- random_g(min, max, sigma, prob, trim, round)
-- Генерирует псевдослучайно число с нормальным
-- с нормальным распределением по гауссу.
--
-- min   - минимальное значение.
--         Если не задан, то вернет значение
--         в диапазоне от 0 до 1.
--         Если max == nil, то диапазон считается
--         от 1 до min, т.е. min рассматривается,
--         как max. Логика поведения аналогичная
--         math.random().
--
-- max   - максимальное значение.
--         Если max == nil, то диапазон считается
--         от 1 до min, т.е. min рассматривается,
--         как max. Логика поведения аналогичная
--         math.random().
--
-- sigma - стандартное отклонение.
--
-- prob  - вероятность того, что сгенерированное
--         число будет лежать в пределах
--         между min и max.
--         По умолчанию: 0.986.
--         Из-за проблем с недостаточной точностью
--         в double функция имеет некторую погрешность
--         и минимальный шаг. В реальности генерируется
--         с вероятностью 0.993, значение 0.986
--         было подобрано экспериментальным путем.
--         long double, float80_t, float128_t
--         не поддерживаются luajit.
--
-- trim  - отбрасывать значения, которые не
--         входят в диапазон min - max.
--         Значение будет сгенерировано повторно.
--         Возможные значения true/false.
--         По умолчанию: true.
--
-- round - округлять до целого.
--         Возможные значения true/false.
--         По умолчанию: true.


Сообщение отредактировал DarkMaster - 17.3.2025, 10:37


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
Мащекус   Счетчик для рандомных действий   5.3.2025, 19:55
Мащекус   В общем, на текущий момент реализовал так. Делать ...   6.3.2025, 0:08
DarkMaster   https://forum.uokit.com/index.php?showtopic=71536...   6.3.2025, 12:55
Мащекус   https://forum.uokit.com/index.php?showtopic=71536...   6.3.2025, 13:17
Мащекус   для этих целей создавался в массиве time: sleep_r...   6.3.2025, 13:50
DarkMaster   Обновил. Скачайте, пожалуйста, 3.0.4b Там в хелпе...   6.3.2025, 14:30
Мащекус   Обновил. Скачайте, пожалуйста, 3.0.4b Скрипт: -...   6.3.2025, 19:30
DarkMaster   да етить. версия из разработки. не поубирал куски ...   7.3.2025, 0:03
Мащекус   да етить. версия из разработки. не поубирал куски...   7.3.2025, 0:36
DarkMaster   перезалил.   7.3.2025, 0:36
Мащекус   перезалил. код: --lua require"lua_system...   7.3.2025, 17:15
DarkMaster   модуль time. time.sleep_random(циферки/переменная...   7.3.2025, 17:48
Мащекус   ну и я рекомендую все-таки с распределением по га...   7.3.2025, 18:30
DarkMaster   Именно значение нет, но можно замерить время ожид...   7.3.2025, 18:37
Мащекус   Именно значение нет, но можно замерить время ожид...   7.3.2025, 18:40
Мащекус   Именно значение нет, но можно замерить время ожид...   7.3.2025, 18:54
DarkMaster   Перезалил с фиксом упрощенного синтаксиса.   7.3.2025, 18:45
DarkMaster   Можно указать только вермя - всего один параметр. ...   7.3.2025, 19:09
Мащекус   Можно указать только вермя - всего один параметр....   7.3.2025, 19:27
DarkMaster   Ну так для этого писал. Опыт так сказать, знаю, ч...   7.3.2025, 21:01
Мащекус   Ну так для этого писал. Опыт так сказать, знаю, ч...   10.3.2025, 19:46
Мащекус   Хотя, если сделать пошире разбросы, то очень даже ...   10.3.2025, 23:14
DarkMaster   хммм. возможно как-то связано с math.randomseed() ...   11.3.2025, 0:35
Мащекус   хммм. возможно как-то связано с math.randomseed()...   12.3.2025, 13:11
DarkMaster   Не до конца уверен в причинах корелляции, тем не м...   11.3.2025, 4:47
DarkMaster   попробуйте в качестве эксперимента перед вызовом т...   12.3.2025, 17:19
Мащекус   попробуйте в качестве эксперимента перед вызовом ...   12.3.2025, 21:58
DarkMaster   Можно использовать несколько иную сигму. Вы знаете...   12.3.2025, 22:36
Мащекус   Данный код поместить в шапку, вызвать только один...   15.3.2025, 10:46
Мащекус   Ну т.е. можете изменить на что-нибудь вроде: loca...   16.3.2025, 20:04
DarkMaster   Поправил пример. 90% задается, как 0.9   17.3.2025, 1:30
Мащекус   Поправил пример. 90% задается, как 0.9 Не помог...   17.3.2025, 22:12
DarkMaster   local t = os.clock() time.sleep_random_g...   18.3.2025, 0:35
DarkMaster   это кстати устаревший кусок. В уже зарелизеном ви...   23.3.2025, 18:57


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 19.7.2025, 22:54
Designed by Nickostyle