Mercurial > wow > inventory
view Plugins/ItemCountAddons/DataStore (all accounts).lua @ 176:26c750a10b14
Renamed Inventorium debug channel to IMDebug (so it?s easier to recognize only IM changes, not from other addons), write /im d to register this new channel.
Implemented stock alerts.
Added ?don?t alert at characters? option which allows you to track groups at characters without being bothered about low stock.
You can change the speed of the stock alert at the extra config tab.
author | Zerotorescue |
---|---|
date | Sun, 30 Jan 2011 15:39:18 +0100 |
parents | e136c99fe5bb |
children |
line wrap: on
line source
do local disabledGuilds = {}; local function GetGuildNames() local guilds = {}; local realm = GetRealmName(); -- Process all accounts for accountName in pairs(DataStore:GetAccounts()) do for guildName, guild in pairs(DataStore:GetGuilds(realm, accountName)) do if disabledGuilds[guildName] then guilds[guildName] = false; else guilds[guildName] = true; end end end return guilds; end local function SetGuildState(guildName, state) if guildName and type(guildName) == "table" then disabledGuilds = guildName; else if not state then disabledGuilds[guildName] = true; else disabledGuilds[guildName] = nil; end end end local function GetTotalCount(itemId) local realm = GetRealmName(); local totalCount = 0; local guilds = {}; -- Process all accounts for accountName in pairs(DataStore:GetAccounts()) do -- Process all charracters for characterName, character in pairs(DataStore:GetCharacters(realm, accountName)) do -- Get only useful info (currency / gear shouldn't contain the stuff we are interested in) local bag, bank = DataStore:GetContainerItemCount(character, itemId); bag = (bag or 0); bank = (bank or 0); local auctionHouse = DataStore:GetAuctionHouseItemCount(character, itemId) or 0; local mail = DataStore:GetMailItemCount(character, itemId) or 0; totalCount = totalCount + bag + bank + auctionHouse + mail; end -- Process all guilds for guildName, guild in pairs(DataStore:GetGuilds(realm, accountName)) do if not guilds[guildName] and not disabledGuilds[guildName] then -- We don't want itemcounts from a single guild to be counted twice, so first to present data wins guilds[guildName] = true; local guild = DataStore:GetGuildBankItemCount(guild, itemId) or 0; totalCount = totalCount + guild; end end end return totalCount or -1; end local function GetCharacterCount(itemId) local character = DataStore:GetCharacter(); local bag, bank = DataStore:GetContainerItemCount(character, itemId); bag = (bag or 0); bank = (bank or 0); local auctionHouse = DataStore:GetAuctionHouseItemCount(character, itemId) or 0; local mail = DataStore:GetMailItemCount(character, itemId) or 0; return bag, bank, auctionHouse, mail; end local function IsEnabled() return (DataStore and DataStore.GetContainerItemCount and DataStore.GetAuctionHouseItemCount and DataStore.GetMailItemCount); end IMRegisterItemCountAddon("DataStore (all accounts)", GetTotalCount, GetCharacterCount, IsEnabled, nil, GetGuildNames, SetGuildState); end