WoWInterface SVN StopTradeSpam

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /trunk
    from Rev 48 to Rev 49
    Reverse comparison

Rev 48 → Rev 49

StopTradeSpam/StopTradeSpam_Options.lua
1,118 → 1,232
--function STS_ResetSV() -- reset anything except ignorelist
--function STS_InitSV()
--function STS_SetLanguage(setlang)
--local function STS_DelLanguage(setlang)
--function STS_List(...)
--function STS_Find(key, list)
--function STS_AddIgnore(ign_name, ign_reason)
--function STS_DelIgnore(ign_name)
--function STS_Add(key, list)
--function STS_Remove(key, list)
--function STS_ColoredNameLink(...)
--local function STS_Update(oldv) --TODO: were changes made to the SV?
--function STS_Statistic(...)
--function STS_Settings(...)
--function STS_GetNumIgnore()
if select(4,GetAddOnInfo("StopTradeSpam_Options")) == 1 then DisableAddOn("StopTradeSpam_Options") end
local version = 0.1
local lang = "enUS"
--[[
local pname = {
["STSOPanel"] = "StopTradeSpam",
["STSOPanel_white"] = "Whitelist",
["STSOPanel_black"] = "Blacklist",
["STSOPanel_ignore"] = "Trade-Ignorelist",
}--]]
local options = {
["enUS"] = true,
["STSOPanel"] = {
["enUS"] = "StopTradeSpam",
["headline"] = {
["headline1"] = {
["left"] = 0,
["top"] = -15,
["enUS"] = "StopTradeSpam Configuration",
},
},
["checkbutton"] = {
["enabletign"] = {
["left"] = 20,
["top"] = -30,
["def"] = true,
["enUS"] = "Enable adding spammers to t-ignorelist. (NYI)",
["enUS"] = "Enable adding spammers to t-ignorelist.",
},
["CHAT_MSG_CHANNEL_1"] = {
["complainchat"] = {
["left"] = 20,
["top"] = -60,
["def"] = true,
["enUS"] = "Enable automatic reporting spam to gamemasters.",
},
["blockgold"] = {
["left"] = 20,
["top"] = -80,
["def"] = true,
["enUS"] = "Automatically report obvious gold-seller messages.",
},
},
},
["STSOPanelChatMsg"] = {
["enUS"] = "Chat Messages",
["headline"] = {
["headline1"] = {
["left"] = 0,
["top"] = -15,
["enUS"] = "Enable Ignoring for different message types",
},
},
["checkbutton"] = {
["CHAT_MSG_SAY"] = {
["left"] = 20,
["top"] = -30,
["def"] = true,
["global"] = CHAT_MSG_SAY,
},
["CHAT_MSG_EMOTE"] = {
["left"] = 20,
["top"] = -50,
["def"] = true,
["global"] = CHAT_MSG_EMOTE,
},
["CHAT_MSG_TEXT_EMOTE"] = {
["left"] = 20,
["top"] = -70,
["def"] = true,
["global"] = CHAT_MSG_TEXT_EMOTE,
},
["CHAT_MSG_YELL"] = {
["left"] = 20,
["top"] = -90,
["def"] = true,
["global"] = CHAT_MSG_YELL,
},
["CHAT_MSG_ACHIEVEMENT"] = {
["left"] = 20,
["top"] = -110,
["def"] = true,
["global"] = CHAT_MSG_ACHIEVEMENT,
},
["CHAT_MSG_GUILD"] = {
["left"] = 20,
["top"] = -135,
["def"] = false,
["global"] = CHAT_MSG_GUILD,
},
["CHAT_MSG_OFFICER"] = {
["left"] = 20,
["top"] = -155,
["def"] = false,
["global"] = CHAT_MSG_OFFICER,
},
["CHAT_MSG_GUILD_ACHIEVEMENT"] = {
["left"] = 20,
["top"] = -175,
["def"] = false,
["global"] = CHAT_MSG_GUILD_ACHIEVEMENT,
},
["CHAT_MSG_WHISPER"] = {
["left"] = 20,
["top"] = -195,
["def"] = false,
["global"] = CHAT_MSG_WHISPER,
},
["CHAT_MSG_WHISPER_INFORM"] = {
["left"] = 20,
["top"] = -215,
["def"] = false,
["global"] = CHAT_MSG_WHISPER_INFORM,
},
["CHAT_MSG_PARTY"] = {
["left"] = 20,
["top"] = -235,
["def"] = false,
["global"] = CHAT_MSG_PARTY,
},
["CHAT_MSG_PARTY_LEADER"] = {
["left"] = 20,
["top"] = -255,
["def"] = false,
["global"] = CHAT_MSG_PARTY_LEADER,
},
["CHAT_MSG_RAID"] = {
["left"] = 20,
["top"] = -275,
["def"] = false,
["global"] = CHAT_MSG_RAID,
},
["CHAT_MSG_RAID_LEADER"] = {
["left"] = 20,
["top"] = -295,
["def"] = false,
["global"] = CHAT_MSG_RAID_LEADER,
},
["CHAT_MSG_RAID_WARNING"] = {
["left"] = 20,
["top"] = -315,
["def"] = false,
["global"] = CHAT_MSG_RAID_WARNING,
},
["CHAT_MSG_BATTLEGROUND"] = {
["left"] = 20,
["top"] = -335,
["def"] = false,
["global"] = CHAT_MSG_BATTLEGROUND,
},
["CHAT_MSG_BATTLEGROUND_LEADER"] = {
["left"] = 20,
["top"] = -355,
["def"] = false,
["global"] = CHAT_MSG_BATTLEGROUND_LEADER,
},
},
},
["STSOPanelCostumChannel"] = {
["enUS"] = "Costum Channels",
["headline"] = {
["headline1"] = {
["left"] = 0,
["top"] = -15,
["enUS"] = "Enable Ignoring for costum channels",
},
},
["checkbutton"] = {
["CHAT_MSG_CHANNEL_1"] = {
["left"] = 20,
["top"] = -30,
["def"] = true,
["enUS"] = "Enable ignoring players in Channel '1'",
},
["CHAT_MSG_CHANNEL_2"] = {
["left"] = 20,
["top"] = -70,
["top"] = -50,
["def"] = true,
["enUS"] = "Enable ignoring players in Channel '2'",
},
["CHAT_MSG_CHANNEL_3"] = {
["left"] = 20,
["top"] = -90,
["top"] = -70,
["def"] = true,
["enUS"] = "Enable ignoring players in Channel '3'",
},
["CHAT_MSG_CHANNEL_4"] = {
["left"] = 20,
["top"] = -110,
["top"] = -90,
["def"] = true,
["enUS"] = "Enable ignoring players in Channel '4'",
},
["CHAT_MSG_CHANNEL_5"] = {
["left"] = 20,
["top"] = -130,
["top"] = -110,
["def"] = true,
["enUS"] = "Enable ignoring players in Channel '5'",
},
["CHAT_MSG_CHANNEL_6"] = {
["left"] = 20,
["top"] = -150,
["top"] = -130,
["def"] = true,
["enUS"] = "Enable ignoring players in Channel '6'",
},
["CHAT_MSG_CHANNEL_7"] = {
["left"] = 20,
["top"] = -170,
["top"] = -150,
["def"] = true,
["enUS"] = "Enable ignoring players in Channel '7'",
},
["CHAT_MSG_CHANNEL_8"] = {
["left"] = 20,
["top"] = -190,
["top"] = -170,
["def"] = true,
["enUS"] = "Enable ignoring players in Channel '8'",
},
["CHAT_MSG_CHANNEL_9"] = {
["left"] = 20,
["top"] = -210,
["top"] = -190,
["def"] = true,
["enUS"] = "Enable ignoring players in Channel '9'",
},
["CHAT_MSG_CHANNEL_10"] = {
["left"] = 20,
["top"] = -230,
["top"] = -210,
["def"] = true,
["enUS"] = "Enable ignoring players in Channel '10'",
},
["complainchat"] = {
["left"] = 20,
["top"] = -250,
["def"] = true,
["enUS"] = "Enable automatic repoting spam to gamemasters",
},
["blockgold"] = {
["left"] = 20,
["top"] = -270,
["def"] = true,
["enUS"] = "Filter obvious gold-seller messages, and report them automatically. (no ignore here)",
},
},
},
}
if options[GetLocale()] then lang = GetLocale() end
function STSO_GetTableKey(frame)
local upperkey = strmatch(frame:GetName(),"^%w-_(.-)_%w-$")
local lowerkey = strmatch(frame:GetName(),"_(%w-)$")
local name = frame
if type(name) ~= "string" then name = frame:GetName() end
local upperkey = strmatch(name,"^%w-_(.-)_%d-$")
local lowerkey = strmatch(name,"^%w-_(.-)$")
if upperkey then lowerkey = strmatch(name,"_(%d-)$") end
if strlen(lowerkey) <= 2 then
lowerkey = tonumber(lowerkey)
end
136,29 → 250,52
STS_Settings("SET",upperkey,lowerkey,value)
end
end
function STSO_Build()
local newpanel = CreateFrame("Frame", "STSOPanel", UIParent)
STSO_Load(newpanel)
for panel,_ in pairs(options) do
if strfind(panel,"STSOPanel%w+$") then
local newpanel = CreateFrame("Frame", panel, UIParent)
STSO_Load(newpanel)
end
end
end
function STSO_Load(self)
if not strfind(self:GetName(),"_") then
self.name = options[self:GetName()][lang]
self.okay = STSO_Okay
self.cancel = STSO_Cancel
self.default = STSO_Default
-- if self:GetName() ~= "STSOPanel" then
-- self.parent = pname["STSOPanel"]
-- end
local newcb
local newtext = ""
local newfs
--TODO: Dynamically build frame
if self:GetName() ~= "STSOPanel" then
self.parent = options["STSOPanel"][lang]
end
local newcb
local newtext = ""
local newfs
local newloc = ""
--Dynamically build frame
--Checkbuttons
for cbname,cbstat in pairs(options[self:GetName()]["checkbutton"]) do
newcb = CreateFrame("CheckButton", "$parent_"..cbname, self, "ChatConfigCheckButtonTemplate")
newcb:SetPoint("TOPLEFT", self:GetName(), "TOPLEFT", cbstat["left"], cbstat["top"])
newcb.OnLoad = STSO_Load(newcb)
newtext = "$parent_static_"..cbname
newfs = self:CreateFontString(newtext,"OVERLAY","STSO_static_text")
newfs:SetText(cbstat[lang])
if cbstat["global"] then newloc = cbstat["global"]
else newloc = cbstat[lang] end
newfs:SetText(newloc)
newfs:SetPoint("TOPLEFT", self, "TOPLEFT", cbstat["left"]+25, cbstat["top"]-5);
end
 
--Headline(s) (fontstring)
for hlname,hlstat in pairs(options[self:GetName()]["headline"]) do
newtext = "$parent_static_"..hlname
newfs = self:CreateFontString(newtext,"OVERLAY","GameFontNormal")
if hlstat["global"] then newloc = hlstat["global"]
else newloc = hlstat[lang] end
newfs:SetText(newloc)
newfs:SetPoint("TOP", self, "TOP", hlstat["left"], hlstat["top"])
end
 
InterfaceOptions_AddCategory(self)
elseif self.GetChecked then
self:SetChecked(STSO_Get(self) == true)
188,55 → 325,8
for cbname,cbstat in pairs(options[self:GetName()]["checkbutton"]) do
getglobal(self:GetName().."_"..cbname):SetChecked(cbstat["def"])
end
-- print("Defaults aren't implemented yet.")
end
 
function STSO_CheckButton_OnClick(self)
 
end
--[[
local panel = CreateFrame("Frame", "STSO_Panel", UIParent)
panel.name = "StopTradeSpam"
panel.okay = STSO_Okay
panel.cancel = STSO_Cancel
panel.default = STSO_Default
InterfaceOptions_AddCategory(panel);
 
panel = CreateFrame("Frame", "STSO_Panel_white", STSO_Panel)
panel.parent = "StopTradeSpam"
panel.name = "Whitelist"
panel.okay = STSO_Okay
panel.cancel = STSO_Cancel
panel.default = STSO_Default
InterfaceOptions_AddCategory(panel);
 
panel = CreateFrame("Frame", "STSO_Panel_black", STSO_Panel)
panel.parent = "StopTradeSpam"
panel.name = "Blacklist"
panel.okay = STSO_Okay
panel.cancel = STSO_Cancel
panel.default = STSO_Default
InterfaceOptions_AddCategory(panel);
 
panel = CreateFrame("Frame", "STSO_Panel_ignore", STSO_Panel)
panel.parent = "StopTradeSpam"
panel.name = "Trade-Ignorelist"
panel.okay = STSO_Okay
panel.cancel = STSO_Cancel
panel.default = STSO_Default
InterfaceOptions_AddCategory(panel);
--]]
--[[
function STSO_ButtonClick()
DEFAULT_CHAT_FRAME:AddMessage(STSO_EditBox:GetText())
STSO_EditBox:SetText("")
end
 
function STSO_Close()
STS_Options:Hide()
end
 
-- DEFAULT_CHAT_FRAME:AddMessage(...)
 
-- Event Handler
--]]
StopTradeSpam/init.lua
199,6 → 199,23
["notify_new"] = "<is now T-ignored>",
["notify_tign"] = "<tign>",
["CHAT_MSG_CHANNEL"] = {true, true, true, true, true, true, true, true, true, true},
["CHAT_MSG_ACHIEVEMENT"] = true,
["CHAT_MSG_BATTLEGROUND"] = false,
["CHAT_MSG_BATTLEGROUND_LEADER"] = false,
["CHAT_MSG_EMOTE"] = true,
["CHAT_MSG_GUILD"] = false,
["CHAT_MSG_GUILD_ACHIEVEMENT"] = false,
["CHAT_MSG_OFFICER"] = false,
["CHAT_MSG_PARTY"] = false,
["CHAT_MSG_PARTY_LEADER"] = false,
["CHAT_MSG_RAID"] = false,
["CHAT_MSG_RAID_LEADER"] = false,
["CHAT_MSG_RAID_WARNING"] = false,
["CHAT_MSG_SAY"] = true,
["CHAT_MSG_TEXT_EMOTE"] = true,
["CHAT_MSG_WHISPER"] = false,
["CHAT_MSG_WHISPER_INFORM"] = false,
["CHAT_MSG_YELL"] = true,
}
if not STS_SV["ignore"] then
STS_SV["ignore"] = { }
353,6 → 370,25
},
}
end
if oldv <= 7.2 then
STS_SV["settings"]["CHAT_MSG_ACHIEVEMENT"] = true
STS_SV["settings"]["CHAT_MSG_BATTLEGROUND"] = false
STS_SV["settings"]["CHAT_MSG_BATTLEGROUND_LEADER"] = false
STS_SV["settings"]["CHAT_MSG_EMOTE"] = true
STS_SV["settings"]["CHAT_MSG_GUILD"] = false
STS_SV["settings"]["CHAT_MSG_GUILD_ACHIEVEMENT"] = false
STS_SV["settings"]["CHAT_MSG_OFFICER"] = false
STS_SV["settings"]["CHAT_MSG_PARTY"] = false
STS_SV["settings"]["CHAT_MSG_PARTY_LEADER"] = false
STS_SV["settings"]["CHAT_MSG_RAID"] = false
STS_SV["settings"]["CHAT_MSG_RAID_LEADER"] = false
STS_SV["settings"]["CHAT_MSG_RAID_WARNING"] = false
STS_SV["settings"]["CHAT_MSG_SAY"] = true
STS_SV["settings"]["CHAT_MSG_TEXT_EMOTE"] = true
STS_SV["settings"]["CHAT_MSG_WHISPER"] = false
STS_SV["settings"]["CHAT_MSG_WHISPER_INFORM"] = false
STS_SV["settings"]["CHAT_MSG_YELL"] = true
end
 
sts_quiet = 0
return version
StopTradeSpam/StopTradeSpam.lua
1,4 → 1,4
local version = 7.2
local version = tonumber(strmatch(GetAddOnMetadata("StopTradeSpam","Version"),"^%d+.(%d+.%d+)"))
sts_session_all = 0
sts_session_filtered = 0
sts_last_action = 0
11,31 → 11,27
tignlist = ""
sts_numignore = -1
 
-- Events where author is ignored, but msg should not be filtered out (only notify)
tign_notify = {
["CHAT_MSG_BATTLEGROUND"] = true,
["CHAT_MSG_BATTLEGROUND"] = true,
["CHAT_MSG_BATTLEGROUND_LEADER"] = true,
["CHAT_MSG_GUILD"] = true, --TODO: Maybe unignore if this is seen.
["CHAT_MSG_OFFICER"] = true, --TODO: Same as guild?
["CHAT_MSG_PARTY"] = true,
["CHAT_MSG_PARTY_LEADER"] = true,
["CHAT_MSG_RAID"] = true,
["CHAT_MSG_RAID_LEADER"] = true,
["CHAT_MSG_RAID_WARNING"] = true,
["CHAT_MSG_SAY"] = true,
["CHAT_MSG_WHISPER"] = true,
["CHAT_MSG_WHISPER_INFORM"] = true,
local tign_events = {
"CHAT_MSG_BATTLEGROUND",
"CHAT_MSG_BATTLEGROUND_LEADER",
"CHAT_MSG_GUILD", --TODO: Maybe unignore if this is seen.
"CHAT_MSG_OFFICER", --TODO: Same as guild?
"CHAT_MSG_PARTY",
"CHAT_MSG_PARTY_LEADER",
"CHAT_MSG_RAID",
"CHAT_MSG_RAID_LEADER",
"CHAT_MSG_RAID_WARNING",
"CHAT_MSG_SAY",
"CHAT_MSG_WHISPER",
"CHAT_MSG_WHISPER_INFORM",
-- "CHAT_MSG_CHANNEL_JOIN", TODO: maybe add again
-- "CHAT_MSG_CHANNEL_LEAVE", TODO: maybe add again
"CHAT_MSG_EMOTE",
"CHAT_MSG_ACHIEVEMENT",
"CHAT_MSG_GUILD_ACHIEVEMENT",
"CHAT_MSG_TEXT_EMOTE",
"CHAT_MSG_YELL",
}
--Events where author is ignored and should be filtered
tign_filterthis = {
["CHAT_MSG_CHANNEL_JOIN"] = true,
["CHAT_MSG_CHANNEL_LEAVE"] = true,
["CHAT_MSG_EMOTE"] = true,
["CHAT_MSG_GUILD_ACHIEVEMENT"] = true,
["CHAT_MSG_TEXT_EMOTE"] = true,
["CHAT_MSG_YELL"] = true,
}
 
function dcfa(...)
if sts_quiet > 0 then
192,7 → 188,10
end
 
function STS_AddIgnore(ign_name, ign_reason)
if not STS_SV["ignore"][tignlist][ign_name] then
if not STS_SV["settings"]["enabletign"] then
dcfa("Ignoring not possible! Ignorelist disabled in settings.")
return false
elseif not STS_SV["ignore"][tignlist][ign_name] then
if not ign_reason then
ign_reason = ""
end
458,21 → 457,7
spamfound = spamfound + lv
end
end
--[[ rewritten
for _,wle in pairs(STS_SV[sts_lang]["whitelist"]) do
if strfind(msg, wle) then
spamfound = spamfound - 2 --TODO: evaluate numbers
--sp = sp..wle.." # " --debug
end
end
for _,ble in pairs(STS_SV[sts_lang]["blacklist"]) do
if strfind(msg, ble) then
spamfound = spamfound + 1
--sp = sp..ble.." # " --debug
end
end
--sp = sp.."# #" --debug
]]--
if STS_SV["settings"]["blockgold"] and spamfound > 7 then
ComplainChat(select(11,...))
sts_last_action = 1
505,11 → 490,11
--debug w/: return false,sts_last_msgtext,select(2,...),select(3,...),select(4,...),select(5,...),select(6,...),select(7,...),select(8,...),select(9,...),select(10,...),select(11,...),select(12,...)
end
end
elseif tign_notify[event] and STS_SV["ignore"][tignlist][select(2,...)] then
elseif STS_SV["settings"][event] and STS_SV["ignore"][tignlist][select(2,...)] then
sts_last_action = -1
sts_last_msgtext = strsub(sts_notify..STS_SV["settings"]["notify_tign"].."\124r "..select(1,...),1,255)
return false, sts_last_msgtext,select(2,...),select(3,...),select(4,...),select(5,...),select(6,...),select(7,...),select(8,...),select(9,...),select(10,...),select(11,...),select(12,...)
elseif tign_filterthis[event] and STS_SV["ignore"][tignlist][select(2,...)] then
elseif STS_SV["ignore"][tignlist][select(2,...)] then --not STS_SV["settings"][event]
sts_last_action = 1
return true
else
559,12 → 544,9
f:RegisterEvent("CHAT_MSG_ADDON")
if STS_SV["debug"] then f:RegisterEvent("WHO_LIST_UPDATE") end
ChatFrame_AddMessageEventFilter("CHAT_MSG_CHANNEL", STS_ChatFilter)
for event,_ in pairs(tign_notify) do
for _,event in pairs(tign_events) do
ChatFrame_AddMessageEventFilter(event, STS_ChatFilter)
end
for event,_ in pairs(tign_filterthis) do
ChatFrame_AddMessageEventFilter(event, STS_ChatFilter)
end
STSO_Build()
elseif event == "CHAT_MSG_ADDON" and strsub(select(1,...),1,3) == "STS" then
if strsub(select(1,...),4,12) == "_?Version" then
585,7 → 567,7
type = "launcher",
icon = "Interface\\Icons\\Spell_Nature_StormReach",
OnClick = function(clickedframe, button)
print(clickedframe, button)
STS_Options()
if button == "LeftButton" then STS_Options() end
--elseif TODO other buttons
end,
})
StopTradeSpam/StopTradeSpam.toc
2,7 → 2,7
## Title: StopTradeSpam
## Notes: Detect spam in trade-channel based on a blacklist and a whitelist, adding a trade-ignorelist.
## Author: Meredy-Das Syndikat (EU)
## Version: 0.7.2.wowi:revision
## Version: 0.7.3.wowi:revision
## eMail: zam@abwesend.de
## DefaultState: Enabled
## SavedVariables: STS_SV