From 0bca2d57958c042d06e0ed2e26c42cbd8444e265 Mon Sep 17 00:00:00 2001 From: "Erik L. Vonderscheer" Date: Sat, 22 Nov 2008 06:24:36 +0000 Subject: [PATCH] TradeFilter v1.1r11 --- TradeFilter.lua | 86 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 54 insertions(+), 32 deletions(-) diff --git a/TradeFilter.lua b/TradeFilter.lua index 02a850c..f0dde03 100644 --- a/TradeFilter.lua +++ b/TradeFilter.lua @@ -43,8 +43,8 @@ local L = Rock("LibRockLocale-1.0"):GetTranslationNamespace("TradeFilter") TradeFilter = Rock:NewAddon("TradeFilter", "LibRockDB-1.0", "LibRockConfig-1.0", "LibRockEvent-1.0", "LibRockHook-1.0", "LibRockTimer-1.0", "LibRockConsole-1.0") -local MAJOR_VERSION = "1.0" -local MINOR_VERSION = 000 + tonumber(("$Revision: 8 $"):match("%d+")) +local MAJOR_VERSION = "1.1b" +local MINOR_VERSION = 000 + tonumber(("$Revision: 11 $"):match("%d+")) TradeFilter.version = MAJOR_VERSION .. "r" .. MINOR_VERSION TradeFilter.date = string.sub("$Date: 2008-11-21 12:00:00 -0800 (Fri, 21 Nov 2008) $", 8, 17) @@ -53,6 +53,9 @@ TradeFilter:SetDatabaseDefaults('profile', { turnOn = true, redirect = false, debug = false, + filterLFG = false, + filterGeneral = false, + filterTrade = true, addfilter = false, addfilter1 = "Add Custom Filter 1", addfilter2 = "Add Custom Filter 2", @@ -106,6 +109,14 @@ function TradeFilter:SetAddFilter3(v) self.db.profile.addfilter3 = ""..v.."" end +function TradeFilter:IsFilterLFG() + return self.db.profile.filterLFG +end + +function TradeFilter:ToggleFilterLFG() + self.db.profile.filterLFG = not self.db.profile.filterLFG +end + function TradeFilter:IsFilterGeneral() return self.db.profile.filtergeneral end @@ -228,6 +239,15 @@ local optionsTable = { get = "IsFilterGeneral", set = "ToggleFilterGeneral", }, + LFGChannel = { + type = 'boolean', + order = 3, + disabled = false, + name = "LFG Chat", + desc = "LFG Chat", + get = "IsFilterLFG", + set = "ToggleFilterLFG", + }, }, }, addFilterGroup = { @@ -291,6 +311,7 @@ end --[[ Locals ]]-- local _G = getfenv() +local filtered = false local redirectFrame = nil local debugFrame = nil local lastArg1 @@ -347,7 +368,7 @@ function TradeFilter:SendMessageToChat(frame, message) end end -local function TradeFilter_OnEvent(...) +local function PreFilter_OnEvent(...) --[[ Taken from SpamMeNot arg1: chat message arg2: author @@ -368,14 +389,30 @@ local function TradeFilter_OnEvent(...) zone is always current zone even if not the same as the channel name arg11: spam id - ]]-- - local event = select(1, ...) - local msg = select(2, ...) - local author = select(3, ...) - local status = select(7, ...) + ]] local zoneID = select(8, ...) - local lineID = select(12, ...) - local showIt = true + if (zoneID == 2 and TradeFilter:IsFilterTrade()) then + TradeFilter:TradeFilter_OnEvent() + elseif (zoneID == 2 and not TradeFilter:IsFilterTrade()) then + filtered = false + end + + if (zoneID == 1 and TradeFilter:IsFilterGeneral()) then + TradeFilter:TradeFilter_OnEvent() + elseif (zoneID == 1 and not TradeFilter:IsFilterGeneral()) then + filtered = false + end + + if (zoneID == 4 and TradeFilter:IsFilterLFG()) then + TradeFilter:TradeFilter_OnEvent() + elseif (zoneID == 1 and not TradeFilter:IsFilterLFG()) then + filtered = false + end + + return filtered +end + +function TradeFilter:TradeFilter_OnEvent(...) local filterFuncList = ChatFrame_GetMessageEventFilters("CHAT_MSG_CHANNEL") if (TradeFilter:IsDebug() and debugFrame == nil) then debugFrame = TradeFilter:FindOrCreateChatWindow("DEBUG", true) @@ -386,22 +423,7 @@ local function TradeFilter_OnEvent(...) TradeFilter:SendMessageToChat(redirectFrame,"*** Redirect is ON ***") end if (filterFuncList and TradeFilter:IsTurnOn()) then - --[[ - if (TradeFilter:IsFilterGeneral()) then - if (zoneID == 2) then - showIt = false - end - elseif (TradeFilter:IsFilterTrade()) then - if (zoneID == 1) then - showIt = false - end - elseif (TradeFilter:IsFilterTrade() and TradeFilter:IsFilterGeneral()) then - if (zoneID == 1) or (zoneID == 2) then - showIt = false - end - ]]-- - if (zoneID == 2) then - showIt = false + filtered = true if (TradeFilter:IsDebug()) then TradeFilter:SendMessageToChat(debugFrame, "arg1: " .. arg1 .. " arg2: " .. arg2) end @@ -419,18 +441,18 @@ local function TradeFilter_OnEvent(...) if (TradeFilter:IsDebug()) then TradeFilter:SendMessageToChat(debugFrame, "|cff00ff00**** Matched ***|r") end - showIt = true + filtered = false end elseif(TradeFilter:GetAddFilter()) then if matchIt[2] and string.find(arg1, matchIt[1]) or string.find(arg1, TradeFilter.db.profile.addfilter1) or string.find(arg1, TradeFilter.db.profile.addfilter2) or string.find(arg1, TradeFilter.db.profile.addfilter3) then if (TradeFilter:IsDebug()) then TradeFilter:SendMessageToChat(debugFrame, "|cff00ff00**** Matched ***|r") end - showIt = true + filtered = false end end end - if showIt == false then + if filtered == true then if lastArg1 ~= arg1 or lastArg2 ~= arg2 then if (TradeFilter:IsDebug()) then TradeFilter:SendMessageToChat(debugFrame, "|cff00ff00*** NO Match - Redirected ***|r") @@ -439,11 +461,11 @@ local function TradeFilter_OnEvent(...) TradeFilter:SendMessageToChat(redirectFrame, string.format(CHAT_CHANNEL_GET, arg8) .. string.format(CHAT_CHANNEL_GET, arg2) .. arg1) end lastArg1, lastArg2 = arg1, arg2 - return true + return end end end - end + return filtered end -ChatFrame_AddMessageEventFilter("CHAT_MSG_CHANNEL", TradeFilter_OnEvent) +ChatFrame_AddMessageEventFilter("CHAT_MSG_CHANNEL", PreFilter_OnEvent) -- 1.7.9.5