PDA

View Full Version : Hooking Chat Messages


bigblue
27-06-2006, 08:50 PM
The function "HookTest_ChatFrame_OnEvent(event)" is carried out up to 7 times if a message arrives.
Why? How can I prevent that?



local lOriginalChatFrame_OnEvent;

function HookTest_OnLoad()

this:RegisterEvent("CHAT_MSG_CHANNEL");
lOriginalChatFrame_OnEvent = ChatFrame_OnEvent;
ChatFrame_OnEvent = HookTest_ChatFrame_OnEvent;

end

function HookTest_ChatFrame_OnEvent(event)
if (event == "CHAT_MSG_CHANNEL" and arg9 == "mmetestchan") then

local msg = arg1;
local plr = arg2;
local cha = arg9;

DEFAULT_CHAT_FRAME:AddMessage("["..cha.."]["..plr.."] "..msg, 1, 1, 1);
return;
end
lOriginalChatFrame_OnEvent(event);
end



4 times with this change



local lOriginalChatFrame_OnEvent;
local hooktest=0;

function HookTest_OnLoad()

this:RegisterEvent("CHAT_MSG_CHANNEL");
lOriginalChatFrame_OnEvent = ChatFrame_OnEvent;
ChatFrame_OnEvent = HookTest_ChatFrame_OnEvent;

end

function HookTest_ChatFrame_OnEvent(event)
if (event == "CHAT_MSG_CHANNEL" and arg9 == "mmetestchan" and hooktest==0) then

local msg = arg1;
local plr = arg2;
local cha = arg9;

hooktest=1;

DEFAULT_CHAT_FRAME:AddMessage("["..cha.."]["..plr.."] "..msg, 1, 1, 1);
return;
end
lOriginalChatFrame_OnEvent(event);
hooktest=0;
end