forked from John-The-Baptist/OctoAuctionator
118 lines
2.7 KiB
Lua
118 lines
2.7 KiB
Lua
-----------------------------------------
|
|
|
|
AtrQuery = {};
|
|
AtrQuery.__index = AtrQuery;
|
|
|
|
-----------------------------------------
|
|
|
|
function Atr_NewQuery ()
|
|
|
|
local query = {};
|
|
setmetatable (query, AtrQuery);
|
|
|
|
query.prevPage = nil;
|
|
query.numDupPages = 0;
|
|
query.pagenum = -1;
|
|
|
|
return query;
|
|
end
|
|
|
|
-----------------------------------------
|
|
|
|
function AtrQuery:CheckForDuplicatePage (pagenum)
|
|
|
|
local numBatchAuctions = GetNumAuctionItems("list");
|
|
|
|
local thisPage = {};
|
|
thisPage.numOnPage = numBatchAuctions;
|
|
thisPage.items = {};
|
|
thisPage.pagenum = pagenum;
|
|
|
|
|
|
if (self.prevPage) then
|
|
-- zc.msg_atr ("Comparing page ", pagenum, " to pge ", self.prevPage.pagenum);
|
|
|
|
if (self.prevPage.pagenum == pagenum) then
|
|
return false;
|
|
end
|
|
end
|
|
|
|
if (numBatchAuctions == 0) then
|
|
self.prevPage = thisPage;
|
|
return false;
|
|
end
|
|
|
|
local x;
|
|
local prevPage = self.prevPage;
|
|
local dupPageFound = true;
|
|
local numDupItems = 0;
|
|
local allItemsIdentical = true;
|
|
|
|
for x = 1, numBatchAuctions do
|
|
|
|
local name, texture, count, quality, canUse, level, minBid, minIncrement, buyoutPrice, bidAmount, highBidder, owner = GetAuctionItemInfo("list", x);
|
|
|
|
thisPage.items[x] = self:BuildItemIDstr (name, count, minBid, buyoutPrice, bidAmount);
|
|
|
|
if (prevPage == nil or (thisPage.items[x] ~= prevPage.items[x])) then
|
|
|
|
dupPageFound = false;
|
|
else
|
|
numDupItems = numDupItems + 1;
|
|
end
|
|
|
|
if (x > 1 and allItemsIdentical and thisPage.items[x] ~= thisPage.items[x-1]) then -- handle those numnuts who post 200 identical auctions
|
|
allItemsIdentical = false;
|
|
end
|
|
|
|
|
|
end
|
|
|
|
if (prevPage ~= nil and prevPage.numOnPage ~= thisPage.numOnPage) then
|
|
|
|
-- zc.msg_pink ("page is unique - numauctions didn't match");
|
|
dupPageFound = false;
|
|
|
|
elseif (dupPageFound and allItemsIdentical) then
|
|
|
|
-- zc.msg_red ("Dup page found but all items identical: thisPage.numOnPage: ", thisPage.numOnPage);
|
|
dupPageFound = false;
|
|
|
|
elseif (not dupPageFound) then
|
|
|
|
-- zc.msg_pink ("page is unique");
|
|
end
|
|
|
|
|
|
if (dupPageFound) then
|
|
|
|
self.numDupPages = self.numDupPages + 1;
|
|
-- zc.msg_atr ("DUPLICATE PAGE FOUND: thisPage.numOnPage: ", thisPage.numOnPage, " numDupItems: ", numDupItems);
|
|
else
|
|
self.prevPage = thisPage;
|
|
end
|
|
|
|
return dupPageFound;
|
|
end
|
|
|
|
|
|
-----------------------------------------
|
|
|
|
function AtrQuery:IsLastPage (pagenum)
|
|
|
|
local _, totalAuctions = GetNumAuctionItems("list");
|
|
|
|
return (((pagenum + 1) * 50) >= totalAuctions);
|
|
end
|
|
|
|
-----------------------------------------
|
|
|
|
function AtrQuery:BuildItemIDstr(name, count, minBid, buyoutPrice, bidAmount)
|
|
|
|
if (name) then
|
|
return name.."_"..count.."_"..minBid.."_"..buyoutPrice.."_"..bidAmount;
|
|
end
|
|
|
|
return "";
|
|
end
|