All pastes #73598 Raw Edit

Untitled

public text v1 · immutable
#73598 ·published 2006-06-28 01:26 UTC
rendered paste body
MyAddon = AceLibrary("AceAddon-2.0"):new("AceHook-2.0") -- hooking mixin

function MyAddon:OnInitialize()
	self:Hook(DEFAULT_CHAT_FRAME, "AddMessage")
	self:Hook(ChatFrame2, "AddMessage")
	self:Hook(ChatFrame3, "AddMessage")
	self:Hook(ChatFrame4, "AddMessage")
	self:Hook(ChatFrame5, "AddMessage")
	self:Hook(ChatFrame6, "AddMessage")
	self:Hook(ChatFrame7, "AddMessage")
	-- those all hook the AddMessage method of the chat frames.
	-- They will be redirected to MyAddon:AddMessage(...)
end

function MyAddon:AddMessage(frame, text, r, g, b, id)
	-- frame is the object that was hooked (one of the ChatFrames)
	-- text, r, g, b, id are the other arguments provided to it.
	local h,m = GetGameTime()
	self.hooks[frame].AddMessage.orig(frame, string.format("[%02d:%02d] %s", h, m, text), r, g, b, id)
	-- self.hooks[object][method].orig holds the original method. This should be called every time you deal with hooking.
	-- be sure to provide all the arguments provided to you as well.
	-- In this case, we pass back the method with modified arguments (adding a timestamp).
end