Софт RakSAMP Lite

serhiyrubin

Известный
396
106
Возможность создание дополнительных потоков по аналогии с RakBot клиентом имеется?
Я такое использую
Как отдельный модуль валяется, подключаю через require в основной скрипт
task:
_G.task = {}

function taskAdd(name, delay, rep, func, ...)
    local tab = {...}
    if task[name] == nil then
           task[name] = {
              start = os.clock() * 1000,
              delay = delay,
              rep = rep,
              func = func,
              tab = tab
          }
    end
end

function taskDel(name)
    if name ~= nil then
        task[name] = nil
        return
       end
       task = {}
end

function taskUpdate()
    if task ~= nil then
           for name, v in pairs(task) do
              if os.clock() * 1000 - v.start > v.delay then
                v.func(unpack(v.tab))
                if v.rep then
                    if task[name] ~= nil then
                        task[name].start = os.clock() * 1000
                    end
                 else
                    task[name] = nil
                end
              end
           end
    end
end

Func:
taskUpdate() - Поместить в беск. цикл onUpdate()

taskAdd("task1", 1000, true, function(number)
    print("Пишу вам цифру "..number.." которая была передана в параметры")
end, 100)

taskDel("task1") - Удалить задачу по названию, без названия - всё удаляет

Тупо записывает функцию в таблицу с параметрами её запуска
И удаляет после выполнения если не стоит повтор true

Аххаха вот оно в разделе C/C++ уже Lua добралось
 
  • Нравится
Реакции: Hatiko

Hatiko

Известный
Проверенный
1,490
616
Я такое использую
В принципе, модуль Tasking, который юзается в RB клиенте, по аналогии работает. Только там ещё дополнительно используется модуль coroutine, не знаю на сколько это продуктивнее выполняется и как влияет на загрузку ЦП.
 

Rei

Известный
Автор темы
Друг
1,610
1,667
Возможность создание дополнительных потоков по аналогии с RakBot клиентом имеется?
В ракботе нет многопоточности. Сюда хотел завезти, но пока не разобрался с рандомными крашами и забил

В принципе, модуль Tasking, который юзается в RB клиенте, по аналогии работает. Только там ещё дополнительно используется модуль coroutine, не знаю на сколько это продуктивнее выполняется и как влияет на загрузку ЦП.
Нормально все должно работать, но затратные по времени штуки ( чтение/запись/хттп запросы ) будут все равно блочить основной поток
 

The Spark

Известный
655
680
Нормально все должно работать, но затратные по времени штуки ( чтение/запись/хттп запросы ) будут все равно блочить основной поток
Добавь многопоточность бро, прошу тебя. Нормальный print, без костылей.
Ещё бы цвет в чат, френдли интерфейс и лаунчер. Я понимаю что до этого дойдёт когда всё основное работать будет, но всё же
 
Последнее редактирование:

Rei

Известный
Автор темы
Друг
1,610
1,667
Добавь многопоточность бро, прошу тебя. Нормальный print, без костылей.
Ещё бы цвет в чат, френдли интерфейс и лаунчер. Я понимаю что до этого дойдёт когда всё основное работать будет, но всё же
сделаю без крашей - добавлю. над всеми остальными фичами думал, но настолько нужно ли? учитывая, что такие фейк клиенты используют по принципу включил и забыл.
а с принтом-то что не так? кроме того, что нельзя выводить таблицы и прочую хрень
 

The Spark

Известный
655
680
а с принтом-то что не так? кроме того, что нельзя выводить таблицы и прочую хрень
Принт я люблю юзать как я привык. В ракботе вообще его нет, а у тебя он есть, но без вывода типа и без поддержки множества аргументов.
Поэтому опять юзаем костыли...
Lua:
local _print = print
function print(...)
    local str = ""
    local args = table.pack(...)
    for i = 1, args.n do
        str = str .. tostring(args[i]) .. "    "
    end
    _print(str)
end
Ещё забыл сказать про сбив скролла в чате при новом сообщении и добавлении вывода последних сообщений в чат на стрелочки.
"думал, но настолько нужно ли?" При разработке скриптов часто нужно что-то, а при обычном использовании согласен, никто это не будет юзать
 
Последнее редактирование:
  • Нравится
Реакции: Rei

Rei

Известный
Автор темы
Друг
1,610
1,667
Принт я люблю юзать как я привык. В ракботе вообще его нет, а у тебя он есть, но без вывода типа и без поддержки множества аргументов.
Поэтому опять юзаем костыли...
Lua:
local _print = print
function print(...)
    local str = ""
    local args = table.pack(...)
    for i = 1, args.n do
        str = str .. tostring(args[i]) .. "    "
    end
    _print(str)
end

наверное, просто присру это прям луа кодом. вот мой вариант, чуть менее производительный с одним аргументом, но в разы лучше с несколькими
Lua:
local _print = print
function print(...)
    local args = table.pack(...)
    for i = 1, args.n do
        args[i] = tostring(args[i])
    end
    _print(table.concat(args, " "))
end

Ещё забыл сказать про сбив скролла в чате при новом сообщении и добавлении вывода последних сообщений в чат на стрелочки.
"думал, но настолько нужно ли?" При разработке скриптов часто нужно что-то, а при обычном использовании согласен, никто это не будет юзать
тоже знаю об этом, но винапи шнягу трудно гуглить, а сам ума не приложу как сделать. я вообще в консольном режиме всегда сижу, так что приоритет низкий всему этому
 
  • Нравится
Реакции: The Spark

Aleksаndr

Участник
130
7
А можно как то сделать автологин? Что бы если например интернет вылетает, он автоматически вводил пароль когда сам перезаходит.
 

Rei

Известный
Автор темы
Друг
1,610
1,667
А можно как то сделать автологин? Что бы если например интернет вылетает, он автоматически вводил пароль когда сам перезаходит.
под спойлерами в шапке пример
ну или в конфиге можно указать диалог и текст ( скорее всего будет выпилено в обновлении )
 

Hatiko

Известный
Проверенный
1,490
616
Кстати, заметил, что с использованием обычного клиента РБ, если стоять в зоне с повышенной динамикой, т.е. где постоянно машины появляются, игроки т.п., потребление ОЗУ возрастает,т.е. заполняется какой-то буфер. Вот к примеру бот у меня находится в инте, где редко кто заходит и т.п., потребление держалось 7-12 Мб, а вот как бот начал стоять в людных местах, потребление возрастало до 80-100 Мб. Вопрос, в данном клиенте твоем, такая херь наблюдается ли, что это за буфер, можно ли его как-то чистить и как?
 

Dozor

Потрачен
359
143
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Кстати, заметил, что с использованием обычного клиента РБ, если стоять в зоне с повышенной динамикой, т.е. где постоянно машины появляются, игроки т.п., потребление ОЗУ возрастает,т.е. заполняется какой-то буфер. Вот к примеру бот у меня находится в инте, где редко кто заходит и т.п., потребление держалось 7-12 Мб, а вот как бот начал стоять в людных местах, потребление возрастало до 80-100 Мб. Вопрос, в данном клиенте твоем, такая херь наблюдается ли, что это за буфер, можно ли его как-то чистить и как?
Не пробовал просто блокировать входящую синхру о игроках и машинах при их появлении?
 

Rei

Известный
Автор темы
Друг
1,610
1,667
Кстати, заметил, что с использованием обычного клиента РБ, если стоять в зоне с повышенной динамикой, т.е. где постоянно машины появляются, игроки т.п., потребление ОЗУ возрастает,т.е. заполняется какой-то буфер. Вот к примеру бот у меня находится в инте, где редко кто заходит и т.п., потребление держалось 7-12 Мб, а вот как бот начал стоять в людных местах, потребление возрастало до 80-100 Мб. Вопрос, в данном клиенте твоем, такая херь наблюдается ли, что это за буфер, можно ли его как-то чистить и как?
оставлял на пару часов стоять на респе аризоны и все ок было. а если луашный код сильно забивает память, то можно вручную вызывать сборщик мусора, не дожидаясь цикла очистки
 

#kweeZ

Известный
577
123
Есть возможность прикрутить сюда прокси, как сделал севен? Ибо как по мне, то прокси удобнее, чем юзать что-то через адаптер, и так же хотелось бы увидеть запуск нескольких аккаунтов
 

манку хлебал

Потрачен
305
122
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
зачем питон? можно просто батник написать же... для такого питон это черезчур мощный инструмент. можно конечно добавить туда управление ботами через сайт/телеграм бота, но для тупого запускатора батник вполне подойдет