Lore archive · Warcraft Wiki, 2023 dump
GetItemInfoDelayed
Last wiki revision 2011-02-23
Process item info and take into account whether it is in the local cache or not.
GetItemInfoDelayed(itemID or "itemString" or "itemName" or "itemLink")
- Change the print(...) line in the process function to do what you want with the info, then call the function.
- As it is written below, the item info will be printed to the chat frame.
local f -- the OnUpdate frame. local itemName, itemLink, itemRarity, itemLevel, itemMinLevel, itemType, itemSubType, itemStackCount, itemEquipLoc, itemTexture, itemSellPrice
-- #table only works if all the indexes are in sequential order and there are no breaks. -- This function 1 if there are more than 0 elements. It does not return the actual number of elements. This is to save processing time. local function count(tab) for _ in pairs(tab) do return 1 end return 0 end
-- Data processor. -- self == f local function process(self, item, ...) itemName, itemLink, itemRarity, itemLevel, itemMinLevel, itemType, itemSubType, itemStackCount, itemEquipLoc, itemTexture, itemSellPrice = ... if itemName then -- This is where you want to do stuff to the information you requested. -- Change this line and leave everything else as-is. print(itemName, itemLink, itemRarity, itemLevel, itemMinLevel, itemType, itemSubType, itemStackCount, itemEquipLoc, itemTexture, itemSellPrice) -- remove the item from the queue self.itemQueue[item] = nil end end
-- OnUpdate function. -- self == f local function update(self, e) self.updateTimer = self.updateTimer - e if self.updateTimer <= 0 then for _, item in pairs(self.itemQueue) do process(self, item, GetItemInfo(item)) end self.updateTimer = 1 -- Hide the OnUpdate frame if there are no items in the queue. if count(self.itemQueue) == 0 then self:Hide end end end
-- Add the requested item to the queue. -- If the item is in the local cache, it will be available immediately. -- If the item is not in the local cache, wait in one second increments and try again. -- Call this in place of GetItemInfo(item). -- This function does not return any data. function GetItemInfoDelayed(item) -- Create the frame only when it's needed and don't create it again. if not f then f = CreateFrame("Frame") f:SetScript("OnUpdate", update) f.itemQueue = {} end -- Set the timer to 0, add the item to the queue, and show the OnUpdate frame. f.updateTimer = 0 f.itemQueue[item] = item f:Show end
Source
https://warcraft.wiki.gg/wiki/GetItemInfoDelayed · retrieved 2023-11-13 · CC BY-SA 4.0
Converted from wikitext with templates, tables and images removed, so some sentences may be missing values.
This archive predates WoW: Forever. For collected gameplay facts see the Forever database. Search the archive.