43 lines
859 B
Lua
43 lines
859 B
Lua
local frame = CreateFrame("Frame")
|
|
|
|
LibStub("AceHook-3.0"):Embed(frame)
|
|
|
|
local strmatch = strmatch
|
|
|
|
-- GUILD_MOTD_TEMPLATE = "Guild Message of the Day: %s"; -- %s is the guild MOTD
|
|
|
|
local pattern = GUILD_MOTD_TEMPLATE:
|
|
gsub("[-%%+*.()%[%]]", "%%%1"):
|
|
gsub("%%%%s", "(.+)")
|
|
|
|
local gmotdData
|
|
|
|
function frame:AddMessage(frame, text, ...)
|
|
local gmotd
|
|
if text then
|
|
gmotd = strmatch(text, pattern)
|
|
end
|
|
if gmotd then
|
|
gmotdData={text,...}
|
|
self:UnhookAll()
|
|
else
|
|
return self.hooks[frame].AddMessage(frame, text, ...)
|
|
end
|
|
end
|
|
|
|
frame:RawHook(ChatFrame1, "AddMessage", true)
|
|
|
|
|
|
local delay=2.5
|
|
frame:SetScript("OnUpdate", function(self, expired)
|
|
delay=delay-expired
|
|
if delay<0 then
|
|
self:Hide()
|
|
self:UnhookAll()
|
|
if gmotdData then
|
|
ChatFrame1:AddMessage(unpack(gmotdData))
|
|
gmotdData=nil
|
|
end
|
|
end
|
|
end)
|