annotate Plugins/ItemCountAddons/DataStore (with guilds).lua @ 89:a12d22ef3f39

AceSerializer has been enabled again as it?s used when exporting/importing groups. All other unused libraries are now really removed. Adjusted debug function to format only when a debug channel is available. Fixed moving from guild banks, checking if items are locked is different then with banks. Now unregistering the item locking event so it doesn?t continue to try to move every time an item is switched after the automated cycle has finished. (geeezus, this description is a total overkill) Fixed item queueing. Queue all when there?s a group without any items inside no longer crashes. Removing cached container data after closing a container.
author Zerotorescue
date Fri, 07 Jan 2011 22:19:03 +0100
parents 3bec0ea44607
children de18ef96983b
rev   line source
Zerotorescue@17 1 do
Zerotorescue@17 2
Zerotorescue@17 3 local function GetTotalCount(itemId)
Zerotorescue@17 4 local realm = GetRealmName();
Zerotorescue@17 5
Zerotorescue@17 6 local totalCount = 0;
Zerotorescue@17 7
Zerotorescue@17 8 local guilds = {};
Zerotorescue@17 9
Zerotorescue@17 10 -- Process all accounts
Zerotorescue@17 11 for accountName in pairs(DataStore:GetAccounts()) do
Zerotorescue@17 12
Zerotorescue@17 13 -- Process all charracters
Zerotorescue@17 14 for characterName, character in pairs(DataStore:GetCharacters(realm, accountName)) do
Zerotorescue@17 15 -- Get only useful info (currency / gear shouldn't contain the stuff we are interested in)
Zerotorescue@54 16 local bag, bank = DataStore:GetContainerItemCount(character, itemId) or 0, 0;
Zerotorescue@54 17 local auctionHouse = DataStore:GetAuctionHouseItemCount(character, itemId) or 0;
Zerotorescue@54 18 local mail = DataStore:GetMailItemCount(character, itemId) or 0;
Zerotorescue@17 19
Zerotorescue@17 20 totalCount = totalCount + bag + bank + auctionHouse + mail;
Zerotorescue@17 21 end
Zerotorescue@17 22
Zerotorescue@17 23 -- Process all guilds
Zerotorescue@17 24 for guildName, guild in pairs(DataStore:GetGuilds(realm, accountName)) do
Zerotorescue@17 25 if not guilds[guildName] then
Zerotorescue@17 26 -- We don't want itemcounts from a single guild to be counted twice, so first to present data wins
Zerotorescue@17 27
Zerotorescue@17 28 guilds[guildName] = true;
Zerotorescue@17 29
Zerotorescue@54 30 local guild = DataStore:GetGuildBankItemCount(guild, itemId) or 0;
Zerotorescue@17 31
Zerotorescue@17 32 totalCount = totalCount + guild;
Zerotorescue@17 33 end
Zerotorescue@17 34 end
Zerotorescue@17 35 end
Zerotorescue@17 36
Zerotorescue@17 37 return totalCount or -1;
Zerotorescue@17 38 end
Zerotorescue@17 39
Zerotorescue@17 40 local function GetCharacterCount(itemId)
Zerotorescue@17 41 local character = DataStore:GetCharacter();
Zerotorescue@17 42
Zerotorescue@54 43 local bag, bank = DataStore:GetContainerItemCount(character, itemId) or 0, 0;
Zerotorescue@54 44 local auctionHouse = DataStore:GetAuctionHouseItemCount(character, itemId) or 0;
Zerotorescue@54 45 local mail = DataStore:GetMailItemCount(character, itemId) or 0;
Zerotorescue@17 46
Zerotorescue@17 47 return bag, bank, auctionHouse, mail;
Zerotorescue@17 48 end
Zerotorescue@17 49
Zerotorescue@17 50 local function IsEnabled()
Zerotorescue@17 51 return (DataStore and DataStore.GetContainerItemCount and DataStore.GetAuctionHouseItemCount and DataStore.GetMailItemCount);
Zerotorescue@17 52 end
Zerotorescue@17 53
Zerotorescue@17 54 IMRegisterItemCountAddon("DataStore (with guilds)", GetTotalCount, GetCharacterCount, IsEnabled);
Zerotorescue@17 55
Zerotorescue@17 56 end