myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
 
Ответить в данную темуНачать новую тему

> Сдвиг таймеров для частного случая, Периодическая инициализация действий со сдвигом по времени

Теги
Нет тегов для показа
Ksan
сообщение 8.11.2011, 16:31
Сообщение #1


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




Товарищ один (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


Спасибо сказали:
Go to the top of the page
+Quote Post
Vizunchik
сообщение 8.11.2011, 16:33
Сообщение #2


Постоялец
******

Группа: Пользователи
Сообщений: 403
Регистрация: 4.11.2008
Из: Город Уфа
Пользователь №: 994
Спасибо сказали: 115 раз




ага спасибо
Go to the top of the page
+Quote Post
Alexey
сообщение 8.11.2011, 21:30
Сообщение #3


7 квадратиков
*******

Группа: Модераторы
Сообщений: 793
Регистрация: 21.1.2009
Пользователь №: 1 895
Спасибо сказали: 301 раз




Этот вариант проще и лучше масштабируется.
Раскрывающийся текст
Код
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
Go to the top of the page
+Quote Post
Ksan
сообщение 9.11.2011, 11:37
Сообщение #4


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




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

Ответить в данную темуНачать новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts От: Сдвиг таймеров для частного случая
От темы с ID: 5037
2 Davrik 5 386 14.11.2011, 14:35 Посл. сообщение: Ksan
Closed Реализация Таймеров
1 Berkut 5 419 26.1.2009, 22:59 Посл. сообщение: Setuper

 



RSS Сейчас: 23.11.2024, 0:34