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

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

MyDC.ru _ Запросы скриптов для PtokaX _ Скрипт для отключения скрипта

Автор: Dan Claimant 23.6.2010, 0:21

Здравствуйте.

Перелопатил множество тем форума, и поиском и мануальным поиском с применением терпения, но не нашёл такой банальности, как готового скрипта для отключения других скриптов по времени.

Объясню ситуацию. У нас так завелось в правилах, что ругаться матом (как и во многих других местах) нельзя. Но мы всем операторским корпусом пошли на некоторые уступки перед пользователями, и разрешили материться ночью (типа, дети спят уже - теперь можно).

Совсем недавно решил перейти на PtokaX за его безграничные возможности в плане фишек с различными скриптами. До этого у нас стоял YnHub, который исправно резал мат по времени в диапазоне с 6:00 до 00:00


Вот собственно и вопрос, не помог бы кто-нить мне (а может быть и ещё кому-нить), и создать скрип, который будет отключать скрипт антимата с 00:00 до 6:00

Спасибо вам огромное заранее ))


П.С. На данный момент используется в качестве антимата скрипт Janus_HS_light_API2.lua

Автор: alex82 23.6.2010, 2:28

Код
sName = "antimat.lua"    -- имя скрипта с которым работаем
iEnableHour = 16        -- час для включения скрипта
iDisableHour = 0        -- час для отключения

function OnStartup()
    TmrMan.AddTimer(60000)
    for _, tData in ipairs(ScriptMan.GetScripts()) do
        if tData.sName == sName then
            started,stopped = false,true
            if tData.bEnabled then
                started,stopped = true,false
            end
            return
        end
    end
    assert(nil, "Скрипт \""..sName.."\" найден не был! Проверьте правильность настройки.")
end

function OnError()
    ScriptMan.StopScript(ScriptMan.GetScript().sName)
end

function OnTimer()
    local T = os.date("*t")
    if stopped and T.hour == iEnableHour then
        ScriptMan.StartScript(sName)
        started,stopped = true,false
    elseif started and T.hour == iDisableHour then
        ScriptMan.StopScript(sName)
        started,stopped = false,true
    end
end


Старый код!!!
Код
sName = "antimat.lua"

function OnStartup()
    TmrMan.AddTimer(60000)
end

function OnTimer()
    local T = os.date("*t")
    if stopped and T.hour == 6 then
        ScriptMan.StartScript(sName)
        started,stopped = true,false
    elseif started and T.hour == 0 then
        ScriptMan.StopScript(sName)
        started,stopped = false,true
    end
end

Автор: Ksan 23.6.2010, 2:49

Это легко организовать и в самом антимате - отключение и включение слежения за матами.

Автор: Dan Claimant 23.6.2010, 10:17

alex82, в момент старта скрипта выдало вот что:

Код
autoshutdown.lua:9: 'then' expected near 'end'




Цитата(Ksan @ 23.6.2010, 3:49) *
Это легко организовать и в самом антимате - отключение и включение слежения за матами.

к сожалению, моих знаний в области lua (которых практически нет) маловато, чтобы организовать сие действие... при беглом просмотре Janus_HS_light_API2.lua никаких настроек по времени не нашёл...

Автор: Nickolya 23.6.2010, 12:11

Dan Claimant, я поправил код, попробуй теперь.

Автор: Dan Claimant 23.6.2010, 15:40

Nickolya, ну на сколько я понял алгоритм:
"если скрипт не запущен и время 6 - запустить "antimat.lua", а ежели запущен и время 0, тогда остановить "antimat.lua""

я установил время на "запустить в 16, если отключен", отключил антимат и оставил включённым этот скрипт - ничего не произошло... do nothing =)

Автор: Nickolya 23.6.2010, 19:08

А скрипт у тебя так и называется?

Код
sName = "antimat.lua"
Надо сменить эту настройку на имя твоего файла для работы скрипта. + Я внес 1 правку, скопируй код их поста alex82'а выше заново.

Автор: Dan Claimant 23.6.2010, 20:06

спасибо огромеднейшее ))) теперь заработало...

ессно, я поменял "antimat.lua" на "Janus_HS_light_API2.lua", и в последней версии скрипта iDisableHour = 21
ровно в 21:00 по моим часам, скрипт выключился...

ещё раз спасибо. буду дальше наблюдать... а скрипт в эфир =)