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

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


**

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



Добрый день!

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

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

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

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

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

Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Мащекус
сообщение 6.3.2025, 0:08
Сообщение #2


**

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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 6.3.2025, 12:55
Сообщение #3


***********

Модератор 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____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Мащекус
сообщение 6.3.2025, 13:17
Сообщение #4


**

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%.



Очень круто, спасибо Дарк!
я думаю это как раз то, что мне и нужно
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Мащекус
сообщение 6.3.2025, 13:50
Сообщение #5


**

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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 6.3.2025, 14:30
Сообщение #6


***********

Модератор 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____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Мащекус
сообщение 6.3.2025, 19:30
Сообщение #7


**

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': Не найден указанный модуль.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 7.3.2025, 0:03
Сообщение #8


***********

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



да етить. версия из разработки. не поубирал куски которые копаю. перезалью нужно 30 минут пока вне доступа. у меня просто все это прилинковывается я не вижу)


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


**

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



Цитата(DarkMaster @ 7.3.2025, 0:03) *

да етить. версия из разработки. не поубирал куски которые копаю. перезалью нужно 30 минут пока вне доступа. у меня просто все это прилинковывается я не вижу)


Спасибо, завтра продолжу тестирование!)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 7.3.2025, 0:36
Сообщение #10


***********

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



перезалил.


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


**

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::
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 7.3.2025, 17:48
Сообщение #12


***********

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



Цитата
sleep_random(time)

модуль time.
time.sleep_random(циферки/переменная)
и не переобъявляйте time, а то модуль будет не доступен

ну и я рекомендую все-таки с распределением по гауссу.
time.sleep_random_g()


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


**

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



Цитата(DarkMaster @ 7.3.2025, 17:48) *

ну и я рекомендую все-таки с распределением по гауссу.
time.sleep_random_g()


Отрабатывает. Чтобы проверить, как то можно вывести в лог получишвееся значение?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 7.3.2025, 18:37
Сообщение #14


***********

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



Цитата
Отрабатывает. Чтобы проверить, как то можно вывести в лог получишвееся значение?

Именно значение нет, но можно замерить время ожидания.
Код

local t = os.clock()
time.sleep_random(0, 1000)
log(os.clock()-t)

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


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


**

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)

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



Да это вам спасибо за помощь и предложенное решение!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 7.3.2025, 18:45
Сообщение #16


***********

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



Перезалил с фиксом упрощенного синтаксиса.


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


**

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?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 7.3.2025, 19:09
Сообщение #18


***********

Модератор 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____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Мащекус
сообщение 7.3.2025, 19:27
Сообщение #19


**

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 минут.


Отлично, спасибо! То, что нужно!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 7.3.2025, 21:01
Сообщение #20


***********

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



Цитата
Отлично, спасибо! То, что нужно!

Ну так для этого писал. Опыт так сказать, знаю, что нужно =) Рад, что пригодилось.


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

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

 

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