comparison Plugins/ItemCountAddons/DataStore (current account only).lua @ 160:08b887885bd5

Forgot to include guilds in the ?DataStore (current account only)? item count plugin.
author Zerotorescue
date Sat, 22 Jan 2011 21:30:02 +0100
parents de18ef96983b
children
comparison
equal deleted inserted replaced
159:d45806866255 160:08b887885bd5
1 do 1 do
2 local disabledGuilds = {};
3
4 local function GetGuildNames()
5 local guilds = {};
6
7 local realm = GetRealmName();
8
9 -- Process all accounts
10 for accountName in pairs(DataStore:GetAccounts()) do
11 for guildName, guild in pairs(DataStore:GetGuilds(realm, accountName)) do
12
13 if disabledGuilds[guildName] then
14 guilds[guildName] = false;
15 else
16 guilds[guildName] = true;
17 end
18
19 end
20 end
21
22 return guilds;
23 end
24
25 local function SetGuildState(guildName, state)
26 if guildName and type(guildName) == "table" then
27 disabledGuilds = guildName;
28 else
29 if not state then
30 disabledGuilds[guildName] = true;
31 else
32 disabledGuilds[guildName] = nil;
33 end
34 end
35 end
2 36
3 local function GetTotalCount(itemId) 37 local function GetTotalCount(itemId)
4 local realm = GetRealmName(); 38 local realm = GetRealmName();
5 39
6 local totalCount = 0; 40 local totalCount = 0;
12 bag = (bag or 0); bank = (bank or 0); 46 bag = (bag or 0); bank = (bank or 0);
13 local auctionHouse = DataStore:GetAuctionHouseItemCount(character, itemId) or 0; 47 local auctionHouse = DataStore:GetAuctionHouseItemCount(character, itemId) or 0;
14 local mail = DataStore:GetMailItemCount(character, itemId) or 0; 48 local mail = DataStore:GetMailItemCount(character, itemId) or 0;
15 49
16 totalCount = totalCount + bag + bank + auctionHouse + mail; 50 totalCount = totalCount + bag + bank + auctionHouse + mail;
51 end
52
53 local guilds = {};
54
55 -- Process all accounts
56 for accountName in pairs(DataStore:GetAccounts()) do
57 -- Process all guilds
58 for guildName, guild in pairs(DataStore:GetGuilds(realm, accountName)) do
59 if not guilds[guildName] and not disabledGuilds[guildName] then
60 -- We don't want itemcounts from a single guild to be counted twice, so first to present data wins
61
62 guilds[guildName] = true;
63
64 local guild = DataStore:GetGuildBankItemCount(guild, itemId) or 0;
65
66 totalCount = totalCount + guild;
67 end
68 end
17 end 69 end
18 70
19 return totalCount or -1; 71 return totalCount or -1;
20 end 72 end
21 73
32 84
33 local function IsEnabled() 85 local function IsEnabled()
34 return (DataStore and DataStore.GetContainerItemCount and DataStore.GetAuctionHouseItemCount and DataStore.GetMailItemCount); 86 return (DataStore and DataStore.GetContainerItemCount and DataStore.GetAuctionHouseItemCount and DataStore.GetMailItemCount);
35 end 87 end
36 88
37 IMRegisterItemCountAddon("DataStore (current account only)", GetTotalCount, GetCharacterCount, IsEnabled); 89 IMRegisterItemCountAddon("DataStore (current account only)", GetTotalCount, GetCharacterCount, IsEnabled, nil, GetGuildNames, SetGuildState);
38 90
39 end 91 end