Mercurial > wow > inventory
view Plugins/ItemCountAddons/DataStore (with guilds).lua @ 111:41f0689dfda1
This implementation of vendor buying did not work well. Too many customizations were needed that made the code hard to read and understand and eventually it was found that vendor buying should be based on refill target, not local stock. The mover/refiller is not meant for this, we should just do this somewhere else.
author | Zerotorescue |
---|---|
date | Fri, 14 Jan 2011 23:31:12 +0100 |
parents | 3bec0ea44607 |
children | de18ef96983b |
line wrap: on
line source
do 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) or 0, 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] 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) or 0, 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 (with guilds)", GetTotalCount, GetCharacterCount, IsEnabled); end