Compare with Previous | Blame | View Log
local ADDON_NAME = "AutoGuildWelcome"
local ADDON_AUTHOR = "|c990000CaffeinatedMayhem,Phobus11|r"
local ADDON_VERSION = "1.0"
local ADDON_TITLE = "Auto Welcome Guild Members"
local ADDON_TITLE_DISPLAY = "|c00FF20Auto Welcome Guild Members|r"
local ADDON_SAVEDVARS = "AutoGuildWelcome_Settings"
AGW = {}
local AGW = AGW
AGW.Settings = {}
AGW.Defaults = {
welcome = {false, false, false, false, false},
message = {
"Welcome %1 to guild 1",
"Welcome %1 to guild 2",
"Welcome %1 to guild 3",
"Welcome %1 to guild 4",
"Welcome %1 to guild 5"
}
}
local GuildCount = GetNumGuilds()
local GuildNames = {}
local GuildNumbers = {}
local LAM = LibAddonMenu2
-- ===============================================================================
-- Load guild names and IDs into tables
-- ===============================================================================
local function GatherGuildInfo()
if GuildCount < 1 then return end
for i = 1, GuildCount do
local guildID = GetGuildId(i)
GuildNames[guildID] = GetGuildName(guildID)
GuildNumbers[guildID] = i
d(GuildNumbers[guildID] .. ": " ..guildID .. " " .. GuildNames[guildID])
end
end
-- ===============================================================================
-- Welcome our newest member
-- ===============================================================================
function addWelcomeToChat(_, gId, pName)
local gNum = GuildNumbers[gId]
local msg = AGW.Settings.message[gNum]
if AGW.Settings.welcome[gNum] == true then
--d("Welcoming for this guild")
local welcome = "/g" .. gNum .. " " .. string.gsub(msg, "%%1", pName)
ZO_ChatWindowTextEntryEditBox:SetText(welcome)
--else
--d("No guild match")
end
end
-- ===============================================================================
-- Build options menu
-- ===============================================================================
local function buildMenu()
local bval = 1
local msg = 1
local panelData = {
type = "panel",
name = ADDON_TITLE,
displayName = ADDON_TITLE_DISPLAY,
author = ADDON_AUTHOR,
version = ADDON_VERSION,
registerForRefresh = true,
registerForDefaults = true,
}
LAM:RegisterAddonPanel(ADDON_NAME .. "Options", panelData)
local optionsTable = {}
for i = 1, GuildCount do
local gId = GetGuildId(i)
optionsTable[#optionsTable+1] = {
type = "checkbox",
name = GuildNames[gId],
tooltip = "Enable welcome message for this guild",
getFunc = function() return AGW.Settings.welcome[i] end,
setFunc = function(choice) AGW.Settings.welcome[i] = choice end,
width = "half",
default = AGW.Defaults.welcome[i],
}
optionsTable[#optionsTable+1] = {
type = "editbox",
name = "",
tooltip = "Text to place in guild chat",
isMultiline = true,
isExtraWide = true,
getFunc = function() return AGW.Settings.message[i] end,
setFunc = function(text) AGW.Settings.message[i] = text end,
width = "half",
default = AGW.Defaults.message[i],
}
end
LAM:RegisterOptionControls(ADDON_NAME .. "Options", optionsTable)
end
-- ===============================================================================
-- Load addon into memory
-- ===============================================================================
function OnAddonLoaded(event, addon)
if addon ~= ADDON_NAME then return end
GatherGuildInfo()
AGW.Settings = ZO_SavedVars:NewAccountWide(ADDON_SAVEDVARS, ADDON_VERSION, "Settings", AGW.Defaults)
buildMenu()
EVENT_MANAGER:UnregisterForEvent(ADDON_NAME, EVENT_ADD_ON_LOADED)
end
EVENT_MANAGER:RegisterForEvent(ADDON_NAME, EVENT_GUILD_MEMBER_ADDED, addWelcomeToChat)
EVENT_MANAGER:RegisterForEvent(ADDON_NAME, EVENT_ADD_ON_LOADED, OnAddonLoaded)