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

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

MyDC.ru _ Запросы скриптов для PtokaX _ Добавьте пожалуйста

Автор: denis 11.5.2010, 22:06

CODE
bot="xxx"

timer = 30 -- в минутах

messarray={
[[ ]],

}

function OnStartup()
tmr = TmrMan.AddTimer (timer*60*1000)
end

function OnTimer(tmr)
Core.SendToAll("<"..bot.."> "..messarray[math.random(1,#messarray)])
end



Можно сюда вставить ещё функцию запроса по команде?!

Автор: Ksan 12.5.2010, 5:07

Попробуй:

Раскрывающийся текст
Код
local sBot = "xxx"

local iTimer = 30 -- в минутах

tMessarray = {
[[ ]],

}

function OnStartup()
    tmr = TmrMan.AddTimer (iTimer*60*1000)
end

function OnTimer(tmr)
    Core.SendToAll("<"..sBot.."> "..tMessarray[math.random(1,#tMessarray)])
end

function UserConnected(tUser)
    Core.SendToUser(tUser, "$UserCommand 1 3 Запрос$<%[mynick]> !запрос|")
end
OpConnected,RegConnected = UserConnected,UserConnected

function ChatArrival(tUser, sData)
    local sData = sData:sub(1,-2)
    local s,e, sMsg = sData:find("%b<>%s(.*)$")
    if sMsg:find("!запрос") then
        Core.SendToAll("<"..sBot.."> "..tMessarray[math.random(1,#tMessarray)])  -- если надо отправить всем в чат
--        Core.SendToUser(tUser, "<"..bot.."> "..messarray[math.random(1,#messarray)])  --  если надо отправить только запрашивающему в чат
    end
end

Автор: denis 12.5.2010, 17:11

[17:09] Синтаксис G:\xxx\scripts\xxx.lua:11: attempt to perform arithmetic on global 'timer' (a nil value)

Автор: Alexey 12.5.2010, 17:43

Замени
tmr = TmrMan.AddTimer (timer*60*1000)
на
tmr = TmrMan.AddTimer (iTimer*60*1000)

Автор: Ksan 12.5.2010, 18:25

Оп-с, забыл в одном месте исправить переменную.
В предыдущем сообщении подправил.

Автор: denis 12.5.2010, 21:10

пропускает команды в чат

[21:08:29] <xxx> ыв
[21:08:29] <Bad> !запрос<Bad> !запрос


менюшка не работает + отвечает на все фразы в чате(лишнее)


Ksan можешь просто добавить команду (без менюшки)

Автор: Артём 12.5.2010, 22:33

Если меню не нужно, удали

Код
function UserConnected(tUser)
    Core.SendToUser(tUser, "$UserCommand 1 3 Запрос$<%[mynick]> !запрос|")
end
OpConnected,RegConnected = UserConnected,UserConnected

Автор: Ksan 12.5.2010, 22:33

Я не знаю, как ты базу заполнял, но у меня в таком виде работает нормально, и по запросу, и автоматом. Если попробуешь и снова не получится (не верю я, что не получится), то просто закомментишь строку отправления команды в меню.
А вот, собственно, и сам код:

Раскрывающийся текст
Код
local sBot = "xxx"

local iTimer = 30 -- в минутах

tMessarray = {
    " :huh: ",
    " :ignoring: ",
    " Через меню можно вызвать FAQ - ответы на частые вопросы.",
    " Желающие зарегистрироваться в хабе могут это сделать через меню \"Регистрация\"",
}
math.randomseed(os.time())

function OnStartup()
    tmr = TmrMan.AddTimer (iTimer*60*1000)
end

function OnTimer(tmr)
    Core.SendToAll("<"..sBot.."> "..tMessarray[math.random(1,#tMessarray)])
end

function UserConnected(tUser)
    Core.SendToUser(tUser, "$UserCommand 1 3 Запрос$<%[mynick]> !запрос&#*124;")   -- в этой строке в конце нужно удалить звездочку *
end
OpConnected,RegConnected = UserConnected,UserConnected

function ChatArrival(tUser, sData)
    local sData = sData:sub(1,-2)
    local s,e, sMsg = sData:find("^%b<>%s(.*)$")
    if sMsg:find("!запрос") then
        Core.SendToAll("<"..sBot.."> "..tMessarray[math.random(1,#tMessarray)])  -- если надо отправить всем в чат
--        Core.SendToUser(tUser, "<"..bot.."> "..messarray[math.random(1,#messarray)])  --  если надо отправить только запрашивающему в чат, открываешь спереди эту строку и аналогично закрываешь (ставишь 2 этих знака --) предыдущую строку
        return true
    end
end

Для большей степени случайности добавил ещё одну строку:
Цитата
math.randomseed(os.time())

Да, чуть не забыл, в это строке надо удалить в конце звёздочку:
Код
Core.SendToUser(tUser, "$UserCommand 1 3 Запрос$<%[mynick]> !запрос&#*124;")

Думаю, из-за этого конца у тебя и не работало меню (я сам забыл в предыдущем скрипте пририсовать звёздочку)