Автор: Ahton 28.9.2013, 18:22
Всем привет! Нигде не могу найти скрипта, который бы раз в час выводил текст, который можно задать в скрипте, в общий чат. Может у кого нибудь есть такое? поделитесь?
Автор: Ksan 28.9.2013, 18:58
Ahton, по-моему, таких кусков кода (сообщение в чат по таймеру) в скриптах форума сотня, не меньше..
Но вот ради практики написал на скорую руку спешал фор ю небольшой скриптик, делающий только то, что вы просите.
Код
local iTime = 3600 -- это 1 час
tMessages = { -- при необходимости только одного сообщения, можно в списке оставить только одно, либо написать все одинаковыми текстами
[1] = "Тестовое сообщение номер 1",
[2] = "Тестовое сообщение номер 2",
[3] = "Тестовое сообщение номер 3",
}
function OnStartup()
TmrMan.AddTimer(iTime*1000, "MessageToChat")
end
function MessageToChat()
Core.SendToAll(tMessages[math.random(#tMessages)])
end
function OnError(s)
Core.SendToOpChat(s)
end
Примечание: в таблицу можно вписать любое количество любых сообщений (разных), будет выводить в случайном порядке через каждый час одно из них. Если надо только одно-единственное, то в списке оставьте только одно, либо в каждый пункт впишите одно и то же сообщение.
В конце скрипта функция, отправляющая в опчат сообщение с ошибкой скрипта, если по ходу работы свалится.
Скрипт мной не проверен, напишите сюда, как проверите.
Автор: Артём 28.9.2013, 19:33
Ksan, и он будет на верли работать?
Автор: Ksan 28.9.2013, 22:05
Опс, не заметил. :(
Впрочем, не первый раз уже..
Надо как-то иначе организовать названия тем - надо, чтоб обязательно присутствовало ключевое слово - Птока, Верли, Русхаб и т.д.
Вот, попытался первый раз в жизни сделать скриптик для Верлихаба. Переделка скрипта выше, написанного под Птоку.
Код
local iTime = 3600 -- это 1 час(в секундах)
tMessages = { -- при необходимости только одного сообщения, можно в списке оставить только одно, либо написать все одинаковыми текстами
[1] = "Тестовое сообщение номер 1",
[2] = "Тестовое сообщение номер 2",
[3] = "Тестовое сообщение номер 3",
}
math.randomseed(os.time())
function Main()
_, sBot = VH:GetConfig ("config", "hub_security")
iTimer = 0
end
function VH_OnTimer()
iTimer = iTimer + 1
if iTimer >= iTime then
VH:SendDataToAll(tMessages[math.random(#tMessages)]) -- но если надо от имени бота, то откройте строку ниже, закомментив эту (спереди строки написав два дефиса, как строкой ниже сейчас)
-- VH:SendDataToAll("<"..sBot.."> "..tMessages[math.random(#tMessages)])
iTimer = 0
end
end
Сам не проверял по причине отсутствия наличия Верли.