Automated updating of API pages at this location, to reflect patch changes, has ceased from 10.1.7 onwards. |
Queries all auctions listed on the Auction House.
C_AuctionHouse.ReplicateItems()
Details[]
- There's a 15 min account-wide throttle between each successful C_AuctionHouse.ReplicateItems() call, which triggers REPLICATE_ITEM_LIST_UPDATE.
- Afterwards item information can be queried with C_AuctionHouse.GetReplicateItemInfo() which accepts an index from 0 up to C_AuctionHouse.GetNumReplicateItems()-1
- REPLICATE_ITEM_LIST_UPDATE will also fire for each auction item that was cached from the server after calling
C_AuctionHouse.GetReplicateItemInfo()
- This disconnected clients on busy servers with more than 80k auctions, even with throttling.[1] But was hotfixed during patch 9.0.2 to not include player names anymore.
- As of 2022-12-10, there seems to be a limit on how many REPLICATE_ITEM_LIST_UPDATE fire per frame, about 2000. Hence, if more C_AuctionHouse.GetReplicateItemInfo() calls are made recently, they'll be ignored or cause unnecessary slowdowns.
Example[]
Attempts to query the auction house when opened and loads any uncached items from the server.
local initialQuery
local auctions = {}
local function ScanAuctions()
local beginTime = debugprofilestop()
local continuables = {}
wipe(auctions)
for i = 0, C_AuctionHouse.GetNumReplicateItems()-1 do
auctions[i] = {C_AuctionHouse.GetReplicateItemInfo(i)}
if not auctions[i][18] then -- hasAllInfo
local item = Item:CreateFromItemID(auctions[i][17]) -- itemID
continuables[item] = true
item:ContinueOnItemLoad(function()
auctions[i] = {C_AuctionHouse.GetReplicateItemInfo(i)}
continuables[item] = nil
if not next(continuables) then
print(format("Scanned %d auctions in %d milliseconds", #auctions+1, debugprofilestop()-beginTime))
-- do something with `auctions` or fire some callback
end
end)
end
end
end
local function OnEvent(self, event)
if event == "AUCTION_HOUSE_SHOW" then
C_AuctionHouse.ReplicateItems()
initialQuery = true
elseif event == "REPLICATE_ITEM_LIST_UPDATE" then
if initialQuery then
ScanAuctions()
initialQuery = false
end
end
end
local f = CreateFrame("Frame")
f:RegisterEvent("AUCTION_HOUSE_SHOW")
f:RegisterEvent("REPLICATE_ITEM_LIST_UPDATE")
f:SetScript("OnEvent", OnEvent)
> Scanned 81338 auctions in 2644 milliseconds
Patch changes[]
Patch 9.0.2 (2020-11-17): Hotfixed owner
and ownerFullName
to always return nil (except for your own auctions) as that seemed to be the cause of disconnects.
Patch 8.3.0 (2020-01-14): Added. Replaces performing a "getall" QueryAuctionItems()[2]
See also[]
References[]
- ^ plusmouse 2020-12-06. Remove C_AuctionHouse.ReplicateItems scan #928.
- ^ Deprecated_8_3_0.lua, patch 8.3.0, near line 13, archived at Townlong-Yak
|