Mercurial > wow > inventory
view Plugins/ItemCountAddons/DataStore (current account only).lua @ 249:fa21e06ca268 tip
Added tag v1.0.1-ALPHA for changeset 50aece0904ec
author | Zerotorescue |
---|---|
date | Tue, 08 Mar 2011 12:07:24 +0100 |
parents | 08b887885bd5 |
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; -- Process all charracters on this account (GetCharacters defaults to THIS_ACCOUNT) for characterName, character in pairs(DataStore:GetCharacters(realm, nil)) 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 local guilds = {}; -- Process all accounts for accountName in pairs(DataStore:GetAccounts()) do -- 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 (current account only)", GetTotalCount, GetCharacterCount, IsEnabled, nil, GetGuildNames, SetGuildState); end