myDC.ru

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

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

> Закрыть все таймеры

Теги
Нет тегов для показа
dimajak
сообщение 31.1.2011, 21:07
Сообщение #1


Продвинутый участник
****

Группа: Пользователи
Сообщений: 157
Регистрация: 19.1.2010
Из: Волгоград
Пользователь №: 5 756
Спасибо сказали: 77 раз




Во время работы скрипта добавляются таймеры, при срабатывании какого-то таймера он удаляется, но возникает ситуация когда нужно прервать и удалить все работающие в это время таймеры.
Есть ли такая возможность?
Go to the top of the page
+Quote Post
Ksan
сообщение 31.1.2011, 21:22
Сообщение #2


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

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




Добавь команды удаления таймеров по их индексам (когда ты их открывал, наверно, пишешь их индексы, вот оттуда и бери).
К примеру, отработал таймер tmr5 - удалил после себя все другие таймеры.
А при отработке таймеров tmr1-4 не будет таких строк (как пример говорю)
Вот пример:
Код
function OnTimer(tmr)
    if tmr == tmr5 then
        bFlag5 = false
        Core.SendToOps(sMsg5)
        TmrMan.RemoveTimer(tmr1)
        TmrMan.RemoveTimer(tmr2)
        TmrMan.RemoveTimer(tmr3)
        TmrMan.RemoveTimer(tmr4)
        TmrMan.RemoveTimer(tmr5)
    elseif tmr == tmr2 then
        bFlag2 = false
        Core.SendToOps(sMsg2)
        TmrMan.RemoveTimer(tmr2)
    end
end
Во втором случае в функции удаляется только таймер tmr2
(остальные варианты я не стал добавлять в код, так как для примера они уже лишни)
Go to the top of the page
+Quote Post
Nickolya
сообщение 31.1.2011, 21:58
Сообщение #3


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 727
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 776 раз




Можно, допустим, сделать свою обвязку на стандартные функции
вот что выходит у меня в наброске:
Код
TmrMan.AddTimerOld = TmrMan.AddTimer
TmrMan.RemoveTimerOld = TmrMan.RemoveTimer
TmrMan.tTimers = {}

function TmrMan.RemoveTimer(id)
    if id then
        if TmrMan.tTimers[id] then
            TmrMan.RemoveTimerOld(id)
            TmrMan.tTimers[id] = nil
        end
    else
        for i in pairs(TmrMan.tTimers) do
            TmrMan.RemoveTimerOld(i)
        end
        TmrMan.tTimers = {}
    end
end

function TmrMan.AddTimer(tmr, s)
    local s, id = s or false, 0
    if s then
        id = TmrMan.AddTimerOld(tmr, s)
    else
        id = TmrMan.AddTimerOld(tmr)
    end
    TmrMan.tTimers[id] = tmr
    return id
end
Вызов TmrMan.RemoveTimer() без айди удалит все таймеры.
Go to the top of the page
+Quote Post
dimajak
сообщение 1.2.2011, 0:52
Сообщение #4


Продвинутый участник
****

Группа: Пользователи
Сообщений: 157
Регистрация: 19.1.2010
Из: Волгоград
Пользователь №: 5 756
Спасибо сказали: 77 раз




причина оказалась в другом - http://mydc.ru/topic4632.html
Go to the top of the page
+Quote Post

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

Collapse

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

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts От: Закрыть все таймеры
От темы с ID: 4629
0 ScOol 4 111 3.2.2011, 8:10 Посл. сообщение: ScOol
No New Posts Topic has attachmentsКак в птохе закрыть ip-адреса админов/опов?
5 14m3r 11 485 3.11.2009, 14:07 Посл. сообщение: 14m3r
No New Posts Topic has attachmentsЗакрыть Поиск Пассивикам
4 *FoxMalder* 9 045 27.1.2009, 16:29 Посл. сообщение: *FoxMalder*
Closed Закрыть Поиск Пассивикам
2 *FoxMalder* 6 718 27.1.2009, 12:59 Посл. сообщение: Setuper

 



RSS Сейчас: 23.11.2024, 5:57