--[[ GuildInfoTable WoW Addon Author: Greg Version: 0.9.2 Last Modified: 2006-02-05 Adapted from: GuildRoster WoW Addon Author: Heross Version: 0.1.0.3 Last Modified: 2005-08-16 ]] git_VERSION = "0.9.2"; git_NAME = "GuildInfoTable"; --git_LOADED = 1; -- Successful load of the script git_VERTEXT = "Version: "..git_VERSION; git_DEBUG = 0; git_lastScriptTime = 0; -- To avoid stack overflows. RealmName = GetCVar("realmName"); if not GuildInfo_GuildInfoTable then GuildInfo_GuildInfoTable = { [RealmName] = { } }; end if not GuildInfo_GuildInfoTable[RealmName] then GuildInfo_GuildInfoTable[RealmName] = {}; end --------------------------------- -- OnLoad Initializer Function --------------------------------- function GuildRosterFrame_OnLoad() --if(not IsInGuild()) then -- DEFAULT_CHAT_FRAME:AddMessage("GuildInfoTable: You are not in a guild",1,1,1); -- return; --end --this:RegisterEvent("UNIT_NAME_UPDATE"); --this:RegisterEvent("GUILD_MOTD"); --this:RegisterEvent("PLAYER_QUITTING"); --GuildInfoTable_GetMembers(); -- auto save on load SlashCmdList["GuildInfoTableToggleDebug"] = GuildInfoTable_ToggleDebug; SLASH_GuildInfoTableToggleDebug1 = "/gitdebug"; DEFAULT_CHAT_FRAME:AddMessage("GuildInfoTable "..git_VERSION.." loaded.",0,0.65,0); git_lastScriptTime = 0; end ------------------------------ -- GetMembers ------------------------------ function GuildInfoTable_GetMembers() -- If we're processing already, don't start again. local curTime = time() if ((curTime - git_lastScriptTime < 5) and curTime ~= 0) then debug("Already in script: exiting (lastTime is "..git_lastScriptTime..", curTime is "..curTime); return else git_lastScriptTime = curTime; end local showOffline = GetGuildRosterShowOffline(); if (showOffline ~= 1) then SetGuildRosterShowOffline( true ); debug("Setting Show Offline Members: true"); end local charname = UnitName("player"); if (not GuildInfo_GuildInfoTable[RealmName]["Data"]) then GuildInfo_GuildInfoTable[RealmName]["Data"] = {}; end if (not GuildInfo_GuildInfoTable[RealmName]["Data"][charname]) then GuildInfo_GuildInfoTable[RealmName]["Data"][charname] = {}; end local name, rank, rankIndex, level, class, zone, note, officernote, online, status, year, month, day, hour; local numGuildMembers = GetNumGuildMembers(); local gname = GetGuildInfo("player"); local motd = GetGuildRosterMOTD(); local num = 0; local time = time(); local pvprank = UnitPVPRank("player"); local pvprankname = GetPVPRankInfo(pvprank, "player"); local pvprankprogress = GetPVPRankProgress(); local pvpweekhk, pvpweekhonor = GetPVPThisWeekStats(); local pvplastweekhk, pvplastweekdk, pvplastweekcontribution, pvplastweekrank = GetPVPLastWeekStats(); local pvplifetimehk, pvplifetimedk, pvplifetimehighestRank = GetPVPLifetimeStats(); local pvplifetimehighestRankName = GetPVPRankInfo(pvplifetimehighestRank, "player"); local numSkills = GetNumSkillLines(); local i, inProfessions; inProfessions = false; if (not GuildInfo_GuildInfoTable[RealmName]["Data"][charname]["Professions"]) then GuildInfo_GuildInfoTable[RealmName]["Data"][charname]["Professions"] = {} end for i=1, numSkills do local skillName, header, isExpanded, skillRank, numTempPoints, skillModifier, skillMaxRank, isAbandonable, stepCost, rankCost, minLevel, skillCostType, skillDescription = GetSkillLineInfo(i); debug("Got skill"..skillName); if (inProfessions and header) then inProfessions = false; end if (inProfessions) then GuildInfo_GuildInfoTable[RealmName]["Data"][charname]["Professions"][skillName] = {} GuildInfo_GuildInfoTable[RealmName]["Data"][charname]["Professions"][skillName]["Rank"] = skillRank GuildInfo_GuildInfoTable[RealmName]["Data"][charname]["Professions"][skillName]["MaxRank"] = skillMaxRank end if (not inProfessions and header and skillName == "Professions") then inProfessions = true; end end if (gname == nil or motd == nil or numGuildMembers == nil) then DEFAULT_CHAT_FRAME:AddMessage("GuildInfoTable: Export Aborted",0.3,0.3,1); debug("One of guild name, motd or number of members was nil."); return; end debug("Found "..numGuildMembers.." members of "..gname); GuildInfo_GuildInfoTable[RealmName]["Data"][charname]["Time"] = time; GuildInfo_GuildInfoTable[RealmName]["Data"]["Time"] = time; GuildInfo_GuildInfoTable[RealmName]["Data"][charname]["PVPRank"] = pvprank; GuildInfo_GuildInfoTable[RealmName]["Data"][charname]["PVPRankName"] = pvprankname; GuildInfo_GuildInfoTable[RealmName]["Data"][charname]["PVPRankProgress"] = pvprankprogress; GuildInfo_GuildInfoTable[RealmName]["Data"][charname]["PVPWeekHK"] = pvpweekhk; GuildInfo_GuildInfoTable[RealmName]["Data"][charname]["PVPWeekHonor"] = pvpweekhonor; GuildInfo_GuildInfoTable[RealmName]["Data"][charname]["PVPLastWeekHK"] = pvplastweekhk; GuildInfo_GuildInfoTable[RealmName]["Data"][charname]["PVPLastWeekHonor"] = pvplastweekcontribution; GuildInfo_GuildInfoTable[RealmName]["Data"][charname]["PVPLastWeekRank"] = pvplastweekrank; GuildInfo_GuildInfoTable[RealmName]["Data"][charname]["PVPLifetimeHK"] = pvplifetimehk; GuildInfo_GuildInfoTable[RealmName]["Data"][charname]["PVPLifetimeDK"] = pvplifetimedk; GuildInfo_GuildInfoTable[RealmName]["Data"][charname]["PVPLifetimeHighestRank"] = pvplifetimehighestRank; GuildInfo_GuildInfoTable[RealmName]["Data"][charname]["PVPLifetimeHighestRankName"] = pvplifetimehighestRankName; GuildInfo_GuildInfoTable[RealmName]["Guild"] = {}; GuildInfo_GuildInfoTable[RealmName]["Guild"]["Name"] = gname; GuildInfo_GuildInfoTable[RealmName]["Guild"]["MOTD"] = motd; GuildInfo_GuildInfoTable[RealmName]["Guild"]["NumMembers"] = numGuildMembers; if (numGuildMembers > 0) then GuildInfo_GuildInfoTable[RealmName]["Guild"]["Members"] = {}; end for i=1, numGuildMembers do name, rank, rankIndex, level, class, zone, note, officernote, online, status = GetGuildRosterInfo(i); year, month, day, hour = GetGuildRosterLastOnline(i); debug("About to export: "..name..","..rank..","..rankIndex..","..level.."," ..class..","..zone..","..note.."|&"); GuildInfo_GuildInfoTable[RealmName]["Guild"]["Members"][name] = {}; GuildInfo_GuildInfoTable[RealmName]["Guild"]["Members"][name]["Name"] = name; GuildInfo_GuildInfoTable[RealmName]["Guild"]["Members"][name]["Rank"] = rank; GuildInfo_GuildInfoTable[RealmName]["Guild"]["Members"][name]["RankIndex"] = rankIndex; GuildInfo_GuildInfoTable[RealmName]["Guild"]["Members"][name]["Level"] = level; GuildInfo_GuildInfoTable[RealmName]["Guild"]["Members"][name]["Class"] = class; GuildInfo_GuildInfoTable[RealmName]["Guild"]["Members"][name]["Zone"] = zone; GuildInfo_GuildInfoTable[RealmName]["Guild"]["Members"][name]["Note"] = note; if ( online == nil ) then --debug(" Adding offline: "..year..","..month..","..day..","..hour..",".."|&"); GuildInfo_GuildInfoTable[RealmName]["Guild"]["Members"][name]["Online"] = 0; GuildInfo_GuildInfoTable[RealmName]["Guild"]["Members"][name]["LastOnline"] = {}; GuildInfo_GuildInfoTable[RealmName]["Guild"]["Members"][name]["LastOnline"]["year"] = year; GuildInfo_GuildInfoTable[RealmName]["Guild"]["Members"][name]["LastOnline"]["month"] = month; GuildInfo_GuildInfoTable[RealmName]["Guild"]["Members"][name]["LastOnline"]["day"] = day; GuildInfo_GuildInfoTable[RealmName]["Guild"]["Members"][name]["LastOnline"]["hour"] = hour; else GuildInfo_GuildInfoTable[RealmName]["Guild"]["Members"][name]["Online"] = 1; GuildInfo_GuildInfoTable[RealmName]["Guild"]["Members"][name]["LastOnline"] = {}; end num=i; end -- Restore user preference if (showOffline ~= 1) then SetGuildRosterShowOffline( false ); debug("Setting Show Offline Members: false"); end -- Completion message DEFAULT_CHAT_FRAME:AddMessage("GuildInfoTable: Exported "..num.." guild members",0.3,0.3,1); end ------------------------------ -- OnEvent Handler ------------------------------ --function GuildInfoTableFrame_OnEvent(event, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) --GuildInfoTable_GetMembers() -- debug("got event: "..event); -- debug("event data:"..arg1); -- -- -- crapout if we're not ready to process, or if not enabled -- if ( arg1 ~= "player" or not UnitName("player") or UnitName("player") == "Unknown Entity" or UnitName("player") == "Unknown Being" or not RealmName) then -- debug("Ready for event..."); -- return; -- end -- -- -- Got a unit name, now we're loaded -- if (event == "UNIT_NAME_UPDATE" and not git_LOADED) then -- git_LOADED = 1; -- debug("GuildInfoTable Loaded Successfully"); -- elseif (event == "UNIT_NAME_UPDATE" and git_LOADED) then -- debug("GuildInfoTable Failed to Load, exiting"); -- return; -- end -- -- -- Event -- if ( event == "GUILD_MOTD" ) then -- --GuildInfoTable_saveGMOTD(arg1, arg2, arg3); -- end --end ------------------------------ -- Debug Functions ------------------------------ function debug(msg) if( git_DEBUG == 1 ) then DEFAULT_CHAT_FRAME:AddMessage("GIT Debug: "..msg,1,0,0.35); end end function GuildInfoTable_ToggleDebug(msg) if( git_DEBUG == 1 ) then git_DEBUG = 0; DEFAULT_CHAT_FRAME:AddMessage("GuildInfoTable Debugging: Disabled",1,0.65,1); return; end git_DEBUG = 1; DEFAULT_CHAT_FRAME:AddMessage("GuildInfoTable Debugging: Enabled",1,0.65,1); end