-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathWowMailGetter - Copy mid.lua
146 lines (67 loc) · 1.81 KB
/
WowMailGetter - Copy mid.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
Profile mailbox
Starting work = 1;
inbox_items = getinboxitems();
local slots taken up = 0;
for i= 1-inbox_items do -- all mail items
, , , hasitems = getmessage(#)
if hasItems
for j= 1-12 do
profile[i][j] = {ItemId, quantity};
if mailProfilebyID[ItemID] then
mailProfilebyID[ItemID] = mailProfilebyID[ItemID] + quantity;
else
mailProfilebyID[ItemID] = quantity;
end
slots taken up ++;
end
end
end
return mailProfilebyID; -- since the loop might want new versions.
profile bags
for i= 1-#bag do
for for j = 1-#slots do
itemID, quantity = get ID()
if localbagprofilebyID[itemId] then
localbagprofilebyname[itemId] = quantity
end
end
end
return localbagprofilebyname -- since this is used both to get a starting profile, and an evaluation profile.
predicted bags afterwards
for k, v in pairs(mailProfilebyID[ItemID]) do
bagprofilebyID[itemID] = bagprofilebyID[itemID]) or 0;
predictedprofilebyID[itemID] = bagprofilebyID[itemID] + v;
end
pull all items
if slots taken up => get bag space() then
take items(get bag space() - 3);
end
function take items()
for k, v in pairs(profile) do
for i, j in pairs(profile[k]) do
if (type(j) == "table") then
take inboxitem(i, j);
end
end
end
end
evaluate
-- possibly the most complicated part.
local discrepancies = 0;
local newbagprofilebyID = getbagprofile();
for k, v in predictedprofilebyID do
newbagprofilebyID[k] = newbagprofilebyID[k] or 0;
if v == newbagprofilebyID[k] then
ZLM:RecordDonation(nameRealmCombo,itemId,quantity)
elseif v == startingbagprofile[k] then
--not taken
else
discrepancies = discrepancies + 1;
end
end
pull all items
evaluate
pull all items
evaluate
Loop in progress tracking variable.
ZLM:UpdateScoreboard()