Wpis z mikrobloga

Noż do cholery podmieniłem ChatFrame.AddMessage, dałem if warunek then return nil; end
No i widać że się zatrzymuje bo print kontrolny wykonuje się tylko raz a lista ma 2 elementy.
Problem w tym że oryginalną funkcję wywołuję za returnem, a wiadomość i tak pojawia się w oknie czatu. Co jest?
#worldofwarcraft #lua #programowanie

local ji = i
cfam[i] = _G["ChatFrame" .. i].AddMessage
_G["ChatFrame" .. i].AddMessage = function(self, msg, ...)
local mm = msg
if ... ~= "+i" then
mm:gsub("|H([^|]+)|h", function(w)
ChatFrame3:AddMessage(w)
end)
ChatFrame3:AddMessage("|cffff0000" .. mm:gsub("|", "||") .. "|r", "+i");
mm:gsub("|Hplayer:([^|,]+):(%d+):([A-Z0-9:]+)|h%[([^|,]+)%]|h", function(p1, id, channel, p2)
print("Caught: ", p1, p2, id, channel)
for k, v in pairs(czarnolisto) do
print("#czarnolisto")
if p1 == v or p2 == v then return nil; end
end
end)
end
cfam[ji](self, mm, ...)
end