Тема: RakSAMP Lite
Показать сообщение отдельно

  #45  
Старый 10.12.2021, 13:42
serhiyrubin
Постоянный
Регистрация: 15.03.2016
Сообщений: 396
С нами: 5348345

Репутация: 98
По умолчанию

Цитата:
Сообщение от Hatiko  

Возможность создание дополнительных потоков по аналогии с 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 добралось
 
Ответить с цитированием