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

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


**

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



Добрый день!

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

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

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

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

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

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


***********

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



Можно использовать несколько иную сигму. Вы знаете что такое распределение по гаусу? Я очень сильно не уверен, что данные задержки являются статистически ошибочными.

Цитата
math.randomseed(os.time()) -- это должно быть вызвано только один раз. в цикле не использовать.
...
-- этот кусок добавьте перед вызовом time.sleep_random_g
for i=1, math.random(100) + 50 do
math.random()
end

Вот этот кусок имхо надежно исключил возможные корелляции генераций рандома. Дальше это уже нужно рассматривать в несколько ином русле.
Если чтобы уж совсем наверняка попробуйте так:
Код
do
    local random_back = math.random
    math.random = function(...)
        for i=1, random_back (100) + 50 do
           random_back()
        end
        return random_back(...)
    end
end

Данный код поместить в шапку, вызвать только один раз.

Сообщение отредактировал DarkMaster - 13.3.2025, 4:35


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


**

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



Цитата(DarkMaster @ 12.3.2025, 22:36) *

Данный код поместить в шапку, вызвать только один раз.


На сколько я понимаю, при распредлелении Гаусса, при принятии крайних значений, например от 700 до 8000, то чаще будут выпадать значения в промежутке от (ну примерно) 3000 до 6000?
У меня получается именно так и видимо поэтому много повторов с числами с одинаковым первым знаком, через сравнительно небольшие промежутки по времени:

10:22:17 27 (autosaved_27.txt, 0): 4.6
10:22:21 27 (autosaved_27.txt, 0): 4.852
10:22:26 27 (autosaved_27.txt, 0): 4.098
...
10:24:10 27 (autosaved_27.txt, 0): 3.454
10:24:13 27 (autosaved_27.txt, 0): 3.438
...
10:24:34 27 (autosaved_27.txt, 0): 3.497
10:24:37 27 (autosaved_27.txt, 0): 3.164
...
10:24:50 27 (autosaved_27.txt, 0): 2.321
10:24:53 27 (autosaved_27.txt, 0): 2.434
...
10:33:01 27 (autosaved_27.txt, 0): 3.297
10:33:04 27 (autosaved_27.txt, 0): 3.2620000000001
...
10:35:07 27 (autosaved_27.txt, 0): 6.361
10:35:13 27 (autosaved_27.txt, 0): 6.3199999999999

В случае задачи, когда в игре ты делаешь одно и то же действие 20 раз подряд (например рыбалка), то такие повторы, с такой частотой наверно палевны... Хотя может я загоняюсь - так как человек наоборот, будет стараться как можно быстрее совершить откатившееся действие

Мой код:

Код

--lua
require"lua_system\\init"

math.randomseed(os.time()) -- это должно быть вызвано только один раз. в цикле не использовать.
do
    local random_back = math.random
    math.random = function(...)
        for i=1, random_back (100) + 50 do
           random_back()
        end
        return random_back(...)
    end
end

::start::

time_min_1 = 733
time_max_1 = 8351
chance1 = 1
time_min_2 = 2123
time_max_2 = 50212
chance2 = 0.2
time_min_3 = 35123
time_max_3 = 160012
chance3 = 0.05

local t = os.clock()
    -- этот кусок добавьте перед вызовом time.sleep_random_g
    for i=1, math.random(100) + 50 do
        math.random()
    end

    time.sleep_random_g(time_min_1, time_max_1, chance1, time_min_2, time_max_2, chance2, time_min_3, time_max_3, chance3)
log(os.clock()-t)

goto start
Пользователь в офлайне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   распределение гаусса было мной выбрано наоборот ка...   15.3.2025, 18:25
Мащекус   Ну т.е. можете изменить на что-нибудь вроде: 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:48
Designed by Nickostyle