Софт RakSAMP Lite

Nakadaro

Новичок
5
0
а через какое приложения надо скрипты писать?
чтобы например каждые несколько сек сообщение отправлялось

или где находится то где надо прописать скрипт
 
Последнее редактирование:

IlyaFontonov

Активный
213
57
а через какое приложения надо скрипты писать?
чтобы например каждые несколько сек сообщение отправлялось

или где находится то где надо прописать скрипт
notepad++ можно сохраняя файл .lua в windows-1251, скрипт поместить в папку scripts просто
 

Rei

Известный
Автор темы
Друг
1,620
1,682
@Rei, короче такая проблема

если создать 2 потока, первый поток создается по необходимости, то есть должно сохранить os.clock(), в таск ставится задержка на 1000 мс. второй поток постоянный с wait(300) с проверкой на секунда os.time(). дальше ставим print перед wait и после wait. как и видим, что тикается не так как должно быть.

почему? объясняю, что если я создал поток в 0.5 секунд, то таск с задержкой должно постоянно тикаться в разном времени, но не должно тикать ровно секунда

например:
Java:
[19:36:14.035] [LUA] Ticked!
[19:36:14.038] [LUA] COR - WAITING...
[19:36:15.091] [LUA] COR - WAITED!
[19:36:15.095] [LUA] Ticked!
[19:36:15.097] [LUA] COR - WAITING...
[19:36:16.150] [LUA] COR - WAITED!
[19:36:16.154] [LUA] Ticked!
[19:36:16.155] [LUA] COR - WAITING...
!test
[19:36:16.814] [LUA] CHAT: Sended chat... (#1 test flood!1)
[19:36:16.819] [LUA] CHAT: Waiting >> (1000)
[19:36:16.821] [LUA] COR - WAITING...
[19:36:17.208] [LUA] COR - WAITED!
[19:36:17.211] [LUA] Ticked!
[19:36:17.213] [LUA] COR - WAITING...
[19:36:18.267] [LUA] COR - WAITED!
[19:36:18.270] [LUA] Ticked!
[19:36:18.272] [LUA] COR - WAITING...
[19:36:18.274] [LUA] COR - WAITED!
[19:36:18.276] [LUA] CHAT: << Waited!
[19:36:18.278] [LUA] CHAT: Sended chat... (#1 test flood!2)
[19:36:18.283] [LUA] CHAT: Waiting >> (1000)
[19:36:18.286] [LUA] COR - WAITING...
[19:36:19.338] [LUA] COR - WAITED!
[19:36:19.340] [LUA] Ticked!
[19:36:19.343] [LUA] COR - WAITING...
[19:36:19.345] [LUA] COR - WAITED!
[19:36:19.348] [LUA] CHAT: << Waited!
[19:36:19.350] [LUA] CHAT: Sended chat... (#1 test flood!3)
[19:36:19.354] [LUA] CHAT: Waiting >> (1000)
[19:36:19.360] [LUA] COR - WAITING...
[19:36:20.416] [LUA] COR - WAITED!
[19:36:20.419] [LUA] Ticked!
[19:36:20.421] [LUA] COR - WAITING...
[19:36:20.423] [LUA] COR - WAITED!
[19:36:20.426] [LUA] CHAT: << Waited!
[19:36:21.479] [LUA] COR - WAITED!
[19:36:21.483] [LUA] Ticked!
[19:36:21.486] [LUA] COR - WAITING...
[19:36:22.539] [LUA] COR - WAITED!
[19:36:22.543] [LUA] Ticked!

Посмотреть вложение 267723

Примеры, но не буду скидывать полностью:
Lua:
---@class Chat
---@field data string[]
---@field task function|nil
---@field rate integer
local Chat = {
    data = {},
    task = nil,
    rate = 1000, -- 1000 = 1 sec
}
Chat.__index = Chat

function Chat:isUpdated()
    return #self.data ~= 0
end

function Chat:getDataAndRemove()
    local data = self.data
    self.data = {}
    return data
end

function Chat:start()
    if self.task then
        return
    end

    self.task = newTask(function()
        repeat
            local data = Chat:getDataAndRemove()
            for _, str in ipairs(data) do
                printf('CHAT: Sended chat... (%s)', str)
                sendInput(str)
                printf('CHAT: Waiting >> (%d)', self.rate)
                wait(self.rate)
                print('CHAT: << Waited!')
            end
        until not Chat:isUpdated()
        self.task = nil
    end)
end

function Chat:input(str)
    table.insert(self.data, str)
    if not self.task then
        self:start()
    end
end

function Chat:inputf(pattern, ...)
    local fmt = string.format(pattern, ...)
    table.insert(self.data, fmt)
    if not self.task then
        self:start()
    end
end








---@class TimerData
---@field unix integer
---@field callback function

---@class Timer
---@field data TimerData[]
---@field task any
local Timer = {
    data = {},
    task = nil,
}
Timer.__index = Timer

function Timer:get()
    return self.data
end

---@param unix integer
---@param callback function
function Timer:add(unix, callback)
    table.insert(self.data, {
        unix = unix,
        callback = callback
    })
end

---@param unix integer
function Timer:tick(unix)
    for _, t in ipairs(self:get()) do
        if unix % t.unix == 0 then
            t.callback()
        end
    end
end

function Timer:start()
    if self.task then
        return
    end

    local unix = os.time()
    self.task = newTask(function()
        while true do
            wait(300)
            local currentUnix = os.time()
            if unix ~= currentUnix then
                unix = currentUnix
                Timer:tick(currentUnix)
                print('Ticked!')
            end
        end
    end)
end

function Timer:stop()
    self.task = nil
end
 
  • Эм
Реакции: kyrtion

GAUSS

Участник
21
5
А если есть серверная команда типа !admin, скрипт не даёт написать. Сделали бы типо !!admin, или !say !admin
 

kyrtion

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