annotate ItemCountAddons/DataStore (without guilds).lua @ 81:58617c7827fa
Item refilling should now be working. Probably very slow if your bags, bank or guild bank is filled with over 200 unique items or so (needs some real testing, but know that it is a known (possible) issue).
author |
Zerotorescue |
date |
Thu, 06 Jan 2011 01:01:25 +0100 |
parents |
06fee4208bf2 |
children |
|
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 -- Process all accounts
|
Zerotorescue@17
|
9 for accountName in pairs(DataStore:GetAccounts()) do
|
Zerotorescue@17
|
10
|
Zerotorescue@17
|
11 -- Process all charracters
|
Zerotorescue@17
|
12 for characterName, character in pairs(DataStore:GetCharacters(realm, accountName)) do
|
Zerotorescue@17
|
13 -- Get only useful info (currency / gear shouldn't contain the stuff we are interested in)
|
Zerotorescue@54
|
14 local bag, bank = DataStore:GetContainerItemCount(character, itemId) or 0, 0;
|
Zerotorescue@54
|
15 local auctionHouse = DataStore:GetAuctionHouseItemCount(character, itemId) or 0;
|
Zerotorescue@54
|
16 local mail = DataStore:GetMailItemCount(character, itemId) or 0;
|
Zerotorescue@17
|
17
|
Zerotorescue@17
|
18 totalCount = totalCount + bag + bank + auctionHouse + mail;
|
Zerotorescue@17
|
19 end
|
Zerotorescue@17
|
20 end
|
Zerotorescue@17
|
21
|
Zerotorescue@17
|
22 return totalCount or -1;
|
Zerotorescue@17
|
23 end
|
Zerotorescue@17
|
24
|
Zerotorescue@17
|
25 local function GetCharacterCount(itemId)
|
Zerotorescue@17
|
26 local character = DataStore:GetCharacter();
|
Zerotorescue@17
|
27
|
Zerotorescue@54
|
28 local bag, bank = DataStore:GetContainerItemCount(character, itemId) or 0, 0;
|
Zerotorescue@54
|
29 local auctionHouse = DataStore:GetAuctionHouseItemCount(character, itemId) or 0;
|
Zerotorescue@54
|
30 local mail = DataStore:GetMailItemCount(character, itemId) or 0;
|
Zerotorescue@17
|
31
|
Zerotorescue@17
|
32 return bag, bank, auctionHouse, mail;
|
Zerotorescue@17
|
33 end
|
Zerotorescue@17
|
34
|
Zerotorescue@17
|
35 local function IsEnabled()
|
Zerotorescue@17
|
36 return (DataStore and DataStore.GetContainerItemCount and DataStore.GetAuctionHouseItemCount and DataStore.GetMailItemCount);
|
Zerotorescue@17
|
37 end
|
Zerotorescue@17
|
38
|
Zerotorescue@17
|
39 IMRegisterItemCountAddon("DataStore (without guilds)", GetTotalCount, GetCharacterCount, IsEnabled);
|
Zerotorescue@17
|
40
|
Zerotorescue@17
|
41 end
|