Как сделать, так, чтобы скрипт отвечал всем с задержкой, если репорты отправили в одну секунду

Mico

Активный
Автор темы
251
48
Версия MoonLoader
.026-beta
Снова приветствую! Хотел бы спросить еще одно, допустим несколько человек в одну секунду написали в /rep 04, и я с помощью скрипта отвечаю, но как устранить проблему, у меня он ответит на 1 репорт, а дальше идет "Не флуди", то есть, нужно как то сделать, чтобы он отвечал на репорты, которые высылались в одну секунду с задержкой. Надеюсь на вашу помощь.
Lua:
function sampev.onServerMessage(color, text)
    if text:find('Жалоба от (%w+_?%w+)%[(%d+)%]: {FFCD00}04') then
        lua_thread.create(function()
            nickRep, idRep = text:match('Жалоба от (%w+_?%w+)%[(%d+)%]: {FFCD00}04')
                wait(500)
            sampSendChat("/pm "..idRep.." Желаю приятной игры, "..nickRep.."!")
        end)
    end
end
 
  • Нравится
Реакции: Vintik
Решение
Lua:
local answers = {}

function sampev.onServerMessage(color, text)
    if text:find('Жалоба от (%w+_?%w+)%[(%d+)%]: {FFCD00}04') then
        local nickRep, idRep = text:match('Жалоба от (%w+_?%w+)%[(%d+)%]: {FFCD00}04')
        answers[#answers + 1] = ('/pm ' .. idRep .. ' Желаю приятной игры, ' .. nickRep .. '!')
    end
end

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    local pm_timer = os.clock()
    while true do
        if #answers > 0 and os.clock() - pm_timer > 1.5 then -- вместо 1.5 ставишь задержку антифлуда (в секундах)
            pm_timer = os.clock()
            sampSendChat(answers[1])
            table.remove(answers, 1)...

wulfandr

Известный
636
260
Снова приветствую! Хотел бы спросить еще одно, допустим несколько человек в одну секунду написали в /rep 04, и я с помощью скрипта отвечаю, но как устранить проблему, у меня он ответит на 1 репорт, а дальше идет "Не флуди", то есть, нужно как то сделать, чтобы он отвечал на репорты, которые высылались в одну секунду с задержкой. Надеюсь на вашу помощь.
Lua:
function sampev.onServerMessage(color, text)
    if text:find('Жалоба от (%w+_?%w+)%[(%d+)%]: {FFCD00}04') then
        lua_thread.create(function()
            nickRep, idRep = text:match('Жалоба от (%w+_?%w+)%[(%d+)%]: {FFCD00}04')
                wait(500)
            sampSendChat("/pm "..idRep.." Желаю приятной игры, "..nickRep.."!")
        end)
    end
end
записывай жалобы в таблицу, после чего работай с таблицей. в таблицу прежде всего занести причину по которой пошло обращение и удалять по ключу из таблицы после всех нужных действий.
 
  • Нравится
Реакции: Vintik

masikmasik31

Участник
30
2
Снова приветствую! Хотел бы спросить еще одно, допустим несколько человек в одну секунду написали в /rep 04, и я с помощью скрипта отвечаю, но как устранить проблему, у меня он ответит на 1 репорт, а дальше идет "Не флуди", то есть, нужно как то сделать, чтобы он отвечал на репорты, которые высылались в одну секунду с задержкой. Надеюсь на вашу помощь.
Lua:
function sampev.onServerMessage(color, text)
    if text:find('Жалоба от (%w+_?%w+)%[(%d+)%]: {FFCD00}04') then
        lua_thread.create(function()
            nickRep, idRep = text:match('Жалоба от (%w+_?%w+)%[(%d+)%]: {FFCD00}04')
                wait(500)
            sampSendChat("/pm "..idRep.." Желаю приятной игры, "..nickRep.."!")
        end)
    end
end
не ЕТРП случайно? :D
 

Vintik

Через тернии к звёздам
Проверенный
1,528
1,011
Снова приветствую! Хотел бы спросить еще одно, допустим несколько человек в одну секунду написали в /rep 04, и я с помощью скрипта отвечаю, но как устранить проблему, у меня он ответит на 1 репорт, а дальше идет "Не флуди", то есть, нужно как то сделать, чтобы он отвечал на репорты, которые высылались в одну секунду с задержкой. Надеюсь на вашу помощь.
Lua:
function sampev.onServerMessage(color, text)
    if text:find('Жалоба от (%w+_?%w+)%[(%d+)%]: {FFCD00}04') then
        lua_thread.create(function()
            nickRep, idRep = text:match('Жалоба от (%w+_?%w+)%[(%d+)%]: {FFCD00}04')
                wait(500)
            sampSendChat("/pm "..idRep.." Желаю приятной игры, "..nickRep.."!")
        end)
    end
end
записывай, как уже было сказано, в массив и оттуда читай. могу код сделать, надо?
 

Mico

Активный
Автор темы
251
48
wait(3000) после sampSendChat ставил?
Не сработало, вот скриншот.
Screenshot_2.png

записывай, как уже было сказано, в массив и оттуда читай. могу код сделать, надо?
Да, если можно.
 

Vintik

Через тернии к звёздам
Проверенный
1,528
1,011
Lua:
local answers = {}

function sampev.onServerMessage(color, text)
    if text:find('Жалоба от (%w+_?%w+)%[(%d+)%]: {FFCD00}04') then
        local nickRep, idRep = text:match('Жалоба от (%w+_?%w+)%[(%d+)%]: {FFCD00}04')
        answers[#answers + 1] = ('/pm ' .. idRep .. ' Желаю приятной игры, ' .. nickRep .. '!')
    end
end

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    local pm_timer = os.clock()
    while true do
        if #answers > 0 and os.clock() - pm_timer > 1.5 then -- вместо 1.5 ставишь задержку антифлуда (в секундах)
            pm_timer = os.clock()
            sampSendChat(answers[1])
            table.remove(answers, 1)
        end
        wait(0)
    end
end
вроде бы так...
проверь и скажи, работает ли.
Не буду говорить название, но это Бонусник :)
Скрытое содержимое для пользователя(ей):
 
Последнее редактирование:
  • Нравится
Реакции: Mico

Mico

Активный
Автор темы
251
48
Lua:
local answers = {}

function sampev.onServerMessage(color, text)
    if text:find('Жалоба от (%w+_?%w+)%[(%d+)%]: {FFCD00}04') then
        local nickRep, idRep = text:match('Жалоба от (%w+_?%w+)%[(%d+)%]: {FFCD00}04')
        answers[#answers + 1] = ('/pm ' .. idRep .. ' Желаю приятной игры, ' .. nickRep .. '!')
    end
end

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    local pm_timer = os.clock()
    while true do
        if #answers > 0 and os.clock() - pm_timer > 1.5 then -- вместо 1.5 ставишь задержку антифлуда (в секундах)
            pm_timer = os.clock()
            sampSendChat(answers[1])
            table.remove(answers, 1)
        end
        wait(0)
    end
end
вроде бы так...
проверь и скажи, работает ли.

*** Скрытый текст не может быть процитирован. ***
Вроде бы работает! Спасибо за помощь. Есть же люди, которые объясняют.


(и да, это не Capital)