Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Разработчикам [PtokaX] _ Сдвиг таймеров для частного случая

Автор: Ksan 8.11.2011, 16:31

Товарищ один (Akvilon) попросил помощи, и вот кидаю частное решение (хотя расширить никто не мешает).
Цель - периодическая инициализация действий со сдвигом по времени (например, 2 сообщения в чат, разнесенных по времени на полчаса, то есть, общий период - 1 час)

Код
local iTime = 1 -- в данном случае - это 1 час

function OnStartup()
    tmr1 = TmrMan.AddTimer(iTime*3600000)
end

function OnTimer(tmr)
    if tmr == tmr1 then
        Core.SendToAll("Бла-бла-бла!")
        tmr2 = TmrMan.AddTimer(iTime*30000)
    elseif tmr == tmr2 then
        Core.SendToAll("Шурум-бурум-тяп-ляп!")
        TmrMan.RemoveTimer(tmr2)
    end
end

Возможно, решение уже где-то есть, а возможно, ещё кому-то пригодится. big_smile.gif

Автор: Vizunchik 8.11.2011, 16:33

ага спасибо

Автор: Alexey 8.11.2011, 21:30

Этот вариант проще и лучше масштабируется.

Раскрывающийся текст
Код
local sBot    = "Информер"    -- Имя бота-спамера
local nTimer    = 30        -- Минут между сообщениями
local nPos    = 1        -- Порядковый номер следующего сообщения

local tMsgs    = {
    [[Сообщение1]],
    [[Сообщение2]],
}

function OnStartup()
    for i, v in ipairs(tMsgs) do
        tMsgs[i] = "<"..sBot.."> "..v
    end
    TmrMan.AddTimer(nTimer * 60 * 1000)
end

function OnTimer()
    Core.SendToAll(tMsgs[nPos])
    if #tMsgs > nPos then
        nPos = nPos + 1
    else
        nPos = 1
    end
end

Автор: Ksan 9.11.2011, 11:37

Так я же писал для частного случая. big_smile.gif
Если бы я сам спонтанно захотел написать, я бы написал скрипт для общего случая.
Но не стал, пусть люди сами думают.
База есть (скриптик из первого сообщения). big_smile.gif