WoWInterface SVN DirtyRecruit

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 5 to Rev 6
    Reverse comparison

Rev 5 → Rev 6

trunk/DirtyRecruit/DirtyRecruit.toc
2,8 → 2,11
 
## Title: DirtyRecruit
## Author: Dirtygurl
## Version: 1.0-a2
## Version: 1.0
## Notes: Automatic guild recruitment spam.
 
## DefaultState: Enabled
## LoadOnDemand: 0
## SavedVariables: DirtyRecruitGlobal
## SavedVariablesPerCharacter: DirtyRecruitPerPlayer
 
trunk/DirtyRecruit/DirtyRecruit.lua
35,8 → 35,7
 
function DirtyRecruit.Advertise()
local gName = GetGuildInfo("player")
local adPrint = 1
if adPrint then
if gName then
local iIndex = nil
local _, nGeneral = GetChannelName(1)
local _, nTrade = GetChannelName(2)
53,11 → 52,201
if iIndex ~= nil then
--DirtyRecruit.Print(iIndex..": "..DirtyRecruit.PerPlayer.Ad)
SendChatMessage(DirtyRecruit.PerPlayer.Ad, "CHANNEL", nil, iIndex)
SendAddonMessage("DirtyRecruit", "guildAdvertised:"..GetZoneText(), "GUILD")
SendAddonMessage("DirtyRecruit", "guildAdvertised:"..GetZoneText()..":"..UnitName("player"), "GUILD")
end
end
end
 
function DirtyRecruit.LoadPanel()
DirtyRecruit.Panel = CreateFrame("Frame", "DirtyRecruitPanel", UIParent)
DirtyRecruit.Panel.name = "DirtyRecruit"
DirtyRecruit.Panel.okay = function(self) DirtyRecruit.Panel_Okay() end
DirtyRecruit.Panel.default = function(self) DirtyRecruit.Panel_Default() end
 
DirtyRecruit.Font_Title = DirtyRecruit.Panel:CreateFontString(nil, "OVERLAY", "GameFontNormalLarge")
DirtyRecruit.Font_Title:SetPoint("TOPLEFT", DirtyRecruit.Panel, "TOPLEFT", 15, -15)
DirtyRecruit.Font_Title:SetText("DirtyRecruit v"..DirtyRecruit.Version)
--
DirtyRecruit.Font_Desc = DirtyRecruit.Panel:CreateFontString(nil, "OVERLAY", "GameFontHighlightSmall")
DirtyRecruit.Font_Desc:SetPoint("TOPLEFT", DirtyRecruit.Font_Title, "BOTTOMLEFT", 0, -10)
DirtyRecruit.Font_Desc:SetText("I did it all for the nookie.")
-- Active
DirtyRecruit.Font_Active = DirtyRecruit.Panel:CreateFontString(nil, "OVERLAY", "GameFontNormal")
DirtyRecruit.Font_Active:SetPoint("TOPLEFT", DirtyRecruit.Font_Desc, "TOPLEFT", 0, -25)
DirtyRecruit.Font_Active:SetText("Enable:")
DirtyRecruit.CheckBox_Active = CreateFrame("CheckButton", "DirtyRecruitCheckBox_Active", DirtyRecruit.Panel, "InterfaceOptionsCheckButtonTemplate")
DirtyRecruit.CheckBox_Active:SetPoint("TOPLEFT", DirtyRecruit.Font_Active, "TOPRIGHT", 10, 5)
-- Spam
DirtyRecruit.Font_Spam = DirtyRecruit.Panel:CreateFontString(nil, "OVERLAY", "GameFontNormal")
DirtyRecruit.Font_Spam:SetPoint("TOPLEFT", DirtyRecruit.Font_Active, "TOPLEFT", 0, -25)
DirtyRecruit.Font_Spam:SetText("Spam:")
DirtyRecruit.Menu_Spam = CreateFrame("Frame", "DirtyRecruitMenu_Spam", DirtyRecruit.Panel, "UIDropDownMenuTemplate")
DirtyRecruit.Menu_Spam:SetPoint("TOPLEFT", DirtyRecruit.Font_Spam, "TOPRIGHT", 10, 5)
UIDropDownMenu_SetWidth(DirtyRecruit.Menu_Spam, 125)
-- UpdateInterval
DirtyRecruit.Font_UpdateInterval = DirtyRecruit.Panel:CreateFontString(nil, "OVERLAY", "GameFontNormal")
DirtyRecruit.Font_UpdateInterval:SetPoint("TOPLEFT", DirtyRecruit.Font_Spam, "TOPLEFT", 0, -30)
DirtyRecruit.Font_UpdateInterval:SetText("Spam Interval:")
DirtyRecruit.EditBox_UpdateInterval = CreateFrame("EditBox", "DirtyRecruitEditBox_UpdateInterval", DirtyRecruit.Panel)
DirtyRecruit.EditBox_UpdateInterval:SetPoint("TOPLEFT", DirtyRecruit.Font_UpdateInterval, "TOPRIGHT", 10, 5)
DirtyRecruit.EditBox_UpdateInterval:SetWidth(60)
DirtyRecruit.EditBox_UpdateInterval:SetHeight(20)
DirtyRecruit.EditBox_UpdateInterval:SetAutoFocus(false)
DirtyRecruit.EditBox_UpdateInterval:SetFontObject(GameFontHighlightSmall)
DirtyRecruit.EditBox_UpdateInterval:SetTextInsets(8, 8, 8, 8)
DirtyRecruit.EditBox_UpdateInterval:SetBackdrop
{
bgFile = "Interface\\ChatFrame\\ChatFrameBackground",
edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
edgeSize = 16,
insets =
{
left = 4,
right = 4,
top = 4,
bottom = 4
},
}
DirtyRecruit.EditBox_UpdateInterval:SetBackdropColor(.1, .1, .1, 1)
DirtyRecruit.EditBox_UpdateInterval:SetNumeric(true)
-- Ad
DirtyRecruit.Font_Ad = DirtyRecruit.Panel:CreateFontString(nil, "OVERLAY", "GameFontNormal")
DirtyRecruit.Font_Ad:SetPoint("TOPLEFT", DirtyRecruit.Font_UpdateInterval, "TOPLEFT", 0, -30)
DirtyRecruit.Font_Ad:SetText("Ad:")
DirtyRecruit.EditBox_Ad = CreateFrame("EditBox", "DirtyRecruitEditBox_Ad", DirtyRecruit.Panel)
DirtyRecruit.EditBox_Ad:SetPoint("TOPLEFT", DirtyRecruit.Font_Ad, "TOPRIGHT", 10, 5)
DirtyRecruit.EditBox_Ad:SetWidth(300)
DirtyRecruit.EditBox_Ad:SetHeight(160)
DirtyRecruit.EditBox_Ad:SetMaxLetters(255)
DirtyRecruit.EditBox_Ad:SetMultiLine(true)
DirtyRecruit.EditBox_Ad:SetAutoFocus(false)
DirtyRecruit.EditBox_Ad:SetFontObject(GameFontHighlightSmall)
DirtyRecruit.EditBox_Ad:SetTextInsets(8, 8, 8, 8)
DirtyRecruit.EditBox_Ad:SetBackdrop
{
bgFile = "Interface\\ChatFrame\\ChatFrameBackground",
edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
edgeSize = 16,
insets =
{
left = 4,
right = 4,
top = 4,
bottom = 4
},
}
DirtyRecruit.EditBox_Ad:SetBackdropColor(.1, .1, .1, 1)
--
DirtyRecruit.Panel:SetScript("OnShow", DirtyRecruit.Panel_OnShow)
DirtyRecruit.Panel.show = false
InterfaceOptions_AddCategory(DirtyRecruit.Panel)
end
 
function DirtyRecruit.Panel_OnShow()
-- Active
DirtyRecruit.CheckBox_Active:SetChecked(DirtyRecruit.PerPlayer.Active)
-- Spam
UIDropDownMenu_Initialize(DirtyRecruit.Menu_Spam, DirtyRecruit.Panel_Menu_Spam)
UIDropDownMenu_SetSelectedValue(DirtyRecruit.Menu_Spam, DirtyRecruit.PerPlayer.Spam)
-- UpdateInterval
DirtyRecruit.EditBox_UpdateInterval:SetNumber(DirtyRecruit.PerPlayer.UpdateInterval)
-- Ad
DirtyRecruit.EditBox_Ad:SetText(DirtyRecruit.PerPlayer.Ad)
--
DirtyRecruit.Panel.shown = true
end
 
function DirtyRecruit.Panel_Menu_Spam()
local level = level or 1
local info = UIDropDownMenu_CreateInfo()
 
info.text = "All Channels"
info.value = "all"
info.func = function() DirtyRecruit.Panel_ClickMenu() end
info.owner = this:GetParent()
info.checked = nil
info.icon = nil
UIDropDownMenu_AddButton(info, level)
 
info.text = "Guild Recruitment"
info.value = "guild"
info.func = function() DirtyRecruit.Panel_ClickMenu() end
info.owner = this:GetParent()
info.checked = nil
info.icon = nil
UIDropDownMenu_AddButton(info, level)
 
info.text = "Trade Channel"
info.value = "trade"
info.func = function() DirtyRecruit.Panel_ClickMenu() end
info.owner = this:GetParent()
info.checked = nil
info.icon = nil
UIDropDownMenu_AddButton(info, level)
 
info.text = "Major City: General"
info.value = "major"
info.func = function() DirtyRecruit.Panel_ClickMenu() end
info.owner = this:GetParent()
info.checked = nil
info.icon = nil
UIDropDownMenu_AddButton(info, level)
 
info.text = "General"
info.value = "general"
info.func = function() DirtyRecruit.Panel_ClickMenu() end
info.owner = this:GetParent()
info.checked = nil
info.icon = nil
UIDropDownMenu_AddButton(info, level)
end
 
function DirtyRecruit.Panel_ClickMenu()
UIDropDownMenu_SetSelectedValue(this.owner, this.value);
end
 
function DirtyRecruit.Panel_Okay()
if DirtyRecruit.Panel.shown then
-- Active
if DirtyRecruit.CheckBox_Active:GetChecked() then
DirtyRecruit.PerPlayer.Active = true
else
DirtyRecruit.PerPlayer.Active = nil
end
-- Spam
DirtyRecruit.PerPlayer.Spam = UIDropDownMenu_GetSelectedValue(DirtyRecruit.Menu_Spam)
local id = GetChannelName(4)
if DirtyRecruit.PerPlayer.Spam == "all" or DirtyRecruit.PerPlayer.Spam == "guild" then
if id == 0 then
JoinChannelByName("GuildRecruitment")
end
elseif id > 0 then
LeaveChannelByName("GuildRecruitment")
end
-- UpdateInterval
local UpdateInterval = DirtyRecruit.EditBox_UpdateInterval:GetNumber()
if UpdateInterval >= 60 then
DirtyRecruit.PerPlayer.UpdateInterval = DirtyRecruit.EditBox_UpdateInterval:GetNumber()
end
-- Ad
DirtyRecruit.PerPlayer.Ad = DirtyRecruit.EditBox_Ad:GetText()
DirtyRecruit.UpdateSettings()
end
end
 
function DirtyRecruit.Panel_Default()
DirtyRecruit.PerPlayer =
{
Active = nil,
InCombat = nil,
Spam = "guild",
UpdateInterval = 300.0, -- 5 minutes
Ad = "--MyGuild-- is recruiting any level players for groups and end game content. We have a Guild Tabard, Vent, and Website PST if you want to join some of the best players in the game."
}
DirtyRecruit.UpdateSettings()
DirtyRecruit.Panel_OnShow()
end
 
function DirtyRecruit.OnUpdateSpam(self, elapsed)
--DirtyRecruit.Print("OnUpdate")
local UpdateInterval = tonumber(DirtyRecruit.PerPlayer.UpdateInterval)
82,10 → 271,21
 
function DirtyRecruit.OnChatMsgAddOn(action)
--DirtyRecruit.Print("OnEvent:CHAT_MSG_ADDON")
local a, b = strsplit(":", action)
if a == "guildAdvertised" and b == GetZoneText() then
local a, b, c = strsplit(":", action)
if a == "guildAdvertised" and b == GetZoneText() and c ~= UnitName("player") then
DirtyRecruit.Print("Guild Advertised, Reset on timer has been issued")
DirtyRecruit.TimeSinceLastUpdate = 0
end
if a == "guildSync" and b then
DirtyRecruit.Print("Sync request from "..b)
SendAddonMessage("DirtyRecruit", "guildSynced:"..DirtyRecruit.PerPlayer.Ad, "WHISPER", b)
end
if a == "guildSynced" and b then
DirtyRecruit.PerPlayer.Ad = b
DirtyRecruit.EditBox_Ad:SetText(DirtyRecruit.PerPlayer.Ad)
DirtyRecruit.UpdateSettings()
DirtyRecruit.Panel_OnShow()
end
end
 
function DirtyRecruit.OnVariablesLoaded()
111,6 → 311,7
 
function DirtyRecruit.OnAddOnLoaded()
--DirtyRecruit.Print("OnEvent:ADDON_LOADED")
DirtyRecruit.LoadPanel()
SlashCmdList["DIRTYRECRUIT"] = DirtyRecruit.SlashHandler
SLASH_DIRTYRECRUIT1 = "/dirtyrecruit"
DirtyRecruit.Print("DirtyRecruit Loaded. Type /dirtyrecruit for more information.")
145,50 → 346,12
if cmd == "version" or cmd == "v" then
DirtyRecruit.Print("Name: DirtyRecruit, Version: "..DirtyRecruit.Version)
elseif cmd == "help" then
DirtyRecruit.Print("Type |cffffff7f/dirtyrecruit set <advertisement>|r and set your advertising message.")
elseif cmd == "disable" then
DirtyRecruit.Print("disabled")
DirtyRecruit.PerPlayer.Active = nil
DirtyRecruit.UpdateSettings()
elseif cmd == "enable" then
DirtyRecruit.Print("enabled")
DirtyRecruit.PerPlayer.Active = 1
DirtyRecruit.UpdateSettings()
elseif cmd == "set" and arg then
DirtyRecruit.Print("Ad: "..arg)
DirtyRecruit.PerPlayer.Ad = arg
DirtyRecruit.UpdateSettings()
elseif cmd == "unset" then
DirtyRecruit.Print("unset")
DirtyRecruit.PerPlayer.Ad = nil
DirtyRecruit.UpdateSettings()
elseif cmd == "interval" and arg then
local uInterval = tonumber(arg)
-- Note: We're gonna set this to 1 minute for spam sake
if uInterval >= 60 then
DirtyRecruit.Print("interval set to "..arg)
DirtyRecruit.PerPlayer.UpdateInterval = arg
DirtyRecruit.UpdateSettings()
else
DirtyRecruit.Print("interval could not be set")
end
elseif cmd == "spam" and arg then
local uSpam = strlower(arg)
if uSpam == "all" or uSpam == "guild" or uSpam == "trade" or uSpam == "major" or uSpam == "general" then
local id = GetChannelName(4)
if uSpam == "all" or uSpam == "guild" then
if id == 0 then
JoinChannelByName("GuildRecruitment")
end
elseif id > 0 then
LeaveChannelByName("GuildRecruitment")
end
DirtyRecruit.Print("spam set to "..uSpam)
DirtyRecruit.PerPlayer.Spam = uSpam
DirtyRecruit.UpdateSettings()
else
DirtyRecruit.Print("spam could not be set")
end
DirtyRecruit.Print("Open interface addon options to configure settings.")
elseif cmd == "reset" then
DirtyRecruit.Panel_Default()
elseif cmd == "sync" then
DirtyRecruit.Print("Requested sync from "..arg)
SendAddonMessage("DirtyRecruit", "guildSync:"..UnitName("player"), "WHISPER", arg)
elseif cmd == "test" then
if DirtyRecruit.PerPlayer.Ad then
DirtyRecruit.Print(DirtyRecruit.PerPlayer.Ad)
199,10 → 362,7
DirtyRecruit.Print("DirtyRecruit v"..DirtyRecruit.Version)
DirtyRecruit.Print("Syntax: |cffffff7f/dirtyrecruit <command> <args>|r")
DirtyRecruit.Print(" |cff00ff00v|version|r - Shows addon version.")
DirtyRecruit.Print(" |cff00ff00enable|disable|r - Enables/Disables addon. default: disabled")
DirtyRecruit.Print(" |cff00ff00set|unset|r - Set/Unset addon advertisement message.")
DirtyRecruit.Print(" |cff00ff00interval|r - Sets the interval (in seconds) for advertising. default: 5 mins (300 seconds)")
DirtyRecruit.Print(" |cff00ff00spam|r - Sets where you will advertise. options: all, major, general")
DirtyRecruit.Print(" |cff00ff00sync <character>|r - Syncs data from a character.")
DirtyRecruit.Print(" |cff00ff00test|r - Prints out a test advertisement for private viewing.")
DirtyRecruit.Print(" |cff00ff00help|r - Shows addon help.")
end