Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local addonName, addonTable = ...
- WowheadBagScannerBankData = {}
- local stringVersion = 2
- local fullitemlist = ''
- local eventframe = CreateFrame("FRAME",addonName.."Events");
- local scanningguildbank = 0
- local function buildItemLink(itemName,itemQuantity,itemID)
- --[[
- -- |cff9d9d9d|Hitem:7073:0:0:0:0:0:0:0:80:0|h[Broken Fang]|h|r
- local tr = string.match(itemLink,"item:([%d:-]+)",13)
- if not tr then return '' end
- tr = ','..qty..':'..tr
- return tr
- ]]
- local rep = string.gsub(itemName,'\"','\\\"')
- local ret = '"'..rep..'",'..itemQuantity..','..itemID.."\n"
- return ret
- end
- local function recalcitemlist()
- local _, realmServer = pcall(function() return GetCVar('realmList') end)
- if not _ then realmServer = '' end
- if not realmServer then realmServer = '' end
- fullitemlist = '"Realm","Faction","Character","Location","Item Class","Item Subclass","Item Name","Item Quantity","Item ID"\n'
- for bag = 0,NUM_BAG_SLOTS,1 do
- for slot = 1,GetContainerNumSlots(bag),1 do
- local item = GetContainerItemLink(bag,slot)
- if item then
- fullitemlist = fullitemlist..'"'..GetRealmName()..'","'..UnitFactionGroup("player")..'","'..UnitName("player")..'",'..'"Bags","'..select(6,GetItemInfo(GetContainerItemLink(bag,slot)))..'","'..select(7,GetItemInfo(GetContainerItemLink(bag,slot)))..'",'..buildItemLink(select(1,GetItemInfo(GetContainerItemLink(bag,slot))), select(2,GetContainerItemInfo(bag,slot)),select(10,GetContainerItemInfo(bag,slot)))
- else
- --fullitemlist = fullitemlist..','
- end
- end
- end
- --fullitemlist = fullitemlist..'!'
- if WowheadBagScannerBankData.bank then
- fullitemlist = fullitemlist..WowheadBagScannerBankData.bank
- end
- if stringVersion > 1 then
- -- fullitemlist = fullitemlist..'!'
- if WowheadBagScannerBankData.reagentbank then
- fullitemlist = fullitemlist..WowheadBagScannerBankData.reagentbank
- end
- end
- --[[fullitemlist = fullitemlist..'!'
- if WowheadBagScannerBankData.voidstorage then
- fullitemlist = fullitemlist..WowheadBagScannerBankData.voidstorage
- end]]
- --[[if WowheadBagScannerBankData.guild then
- for banktab = 1,9,1 do
- if WowheadBagScannerBankData.guild[banktab] then
- fullitemlist = fullitemlist..WowheadBagScannerBankData.guild[banktab]
- end
- end
- end]]
- --fullitemlist = "~" .. stringVersion .. "~" .. strlen(fullitemlist) .. "~" .. fullitemlist
- end
- local function handler(...)
- local function NOP() return end
- StaticPopupDialogs["WOWHEADBAGSCANNERCOPYPASTEDIALOG"] = StaticPopupDialogs["WOWHEADBAGSCANNERCOPYPASTEDIALOG"] or {
- text = "Copy the following to the clipboard (Ctrl-C): ",
- button1 = OKAY,
- hasEditBox = 1,
- OnShow = function(self, data)
- recalcitemlist()
- self.editBox:SetScript('OnEditFocusGained', function(thisbox)
- thisbox:HighlightText(0,-1)
- end)
- self.editBox:SetText(fullitemlist)
- end,
- OnHide = NOP,
- OnAccept = NOP,
- OnCancel = NOP,
- EditBoxOnEscapePressed = function(self, ...) self:GetParent():Hide() end,
- EditBoxOnTextChanged = function(self, ...)
- self:SetText(fullitemlist)
- self:SetFocus()
- self:HighlightText()
- end,
- timeout = 0,
- whileDead = 1,
- hideOnEscape = 1
- };
- StaticPopup_Show("WOWHEADBAGSCANNERCOPYPASTEDIALOG");
- end
- local function onEvent(self,event)
- local partitemlist, gotitem, tabname, tabicon, _ = '',false
- --print(addonName,event)
- if (event == 'ADDON_LOADED') then
- if (not WowheadBagScannerBankData.version) or (not WowheadBagScannerBankData.version == stringVersion) then
- wipe(WowheadBagScannerBankData)
- WowheadBagScannerBankData.version = stringVersion
- end
- return
- end
- if (string.sub(event,1,9) == 'BANKFRAME') then
- if (select("#",GetContainerNumFreeSlots(-1)) > 1) then
- for bagidx = NUM_BAG_SLOTS,NUM_BAG_SLOTS+NUM_BANKBAGSLOTS,1 do
- local bag = bagidx;
- if (bag == NUM_BAG_SLOTS) then bag = -1 end
- for slot = 1,GetContainerNumSlots(bag),1 do
- local item = GetContainerItemLink(bag,slot)
- if item then
- partitemlist = partitemlist..'"'..GetRealmName()..'","'..UnitFactionGroup("player")..'","'..UnitName("player")..'",'..'"Bank","'..select(6,GetItemInfo(GetContainerItemLink(bag,slot)))..'","'..select(7,GetItemInfo(GetContainerItemLink(bag,slot)))..'",'..buildItemLink(select(1,GetItemInfo(GetContainerItemLink(bag,slot))), select(2,GetContainerItemInfo(bag,slot)),select(10,GetContainerItemInfo(bag,slot)))
- gotitem = true
- else
- --partitemlist = partitemlist..','
- end
- end
- end
- if gotitem then
- WowheadBagScannerBankData.bank = partitemlist
- end
- end
- partitemlist = ''
- gotitem = false
- bag = REAGENTBANK_CONTAINER
- for slot = 1,GetContainerNumSlots(bag),1 do
- local item = GetContainerItemLink(bag,slot)
- if item then
- partitemlist = partitemlist..'"'..GetRealmName()..'","'..UnitFactionGroup("player")..'","'..UnitName("player")..'",'..'"Reagent Bank","'..select(6,GetItemInfo(GetContainerItemLink(bag,slot)))..'","'..select(7,GetItemInfo(GetContainerItemLink(bag,slot)))..'",'..buildItemLink(select(1,GetItemInfo(GetContainerItemLink(bag,slot))), select(2,GetContainerItemInfo(bag,slot)),select(10,GetContainerItemInfo(bag,slot)))
- gotitem = true
- else
- --partitemlist = partitemlist..','
- end
- end
- if gotitem then
- WowheadBagScannerBankData.reagentbank = partitemlist
- end
- end
- if (string.sub(event,1,4) == 'VOID') then
- --[[
- local iid, linkstring, tab
- for tab = 1,2,1 do
- for row = 1,8,1 do
- for slot = row,80,8 do
- linkstring = nil
- iid, _, _, _, _ = GetVoidItemInfo(tab,slot)
- if (iid) then
- linkstring = GetVoidItemHyperlinkString(slot+(80*(tab - 1)))
- end
- if (linkstring) then
- -- The following line is totally wrong.
- partitemlist = partitemlist..'"'..GetRealmName()..'","'..UnitFactionGroup("player")..'","'..UnitName("player")..'",'..'"Void Storage","'..select(6,GetItemInfo(GetContainerItemLink(bag,slot)))..'","'..select(7,GetItemInfo(GetContainerItemLink(bag,slot)))..'",'..buildItemLink(select(1,GetItemInfo(GetContainerItemLink(bag,slot))), select(2,GetContainerItemInfo(bag,slot)),select(10,GetContainerItemInfo(bag,slot)))
- gotitem = true
- else
- --partitemlist = partitemlist..','
- end
- end
- end
- end
- if gotitem then
- WowheadBagScannerBankData.voidstorage = partitemlist
- end
- ]]
- end
- if (event == 'GUILDBANKBAGSLOTS_CHANGED') then
- if not WowheadBagScannerBankData.guild then WowheadBagScannerBankData.guild = {} end
- local banktab
- if (scanningguildbank > 0) then banktab = scanningguildbank else banktab = GetCurrentGuildBankTab() end
- tabname,tabicon,gotitem,_ = GetGuildBankTabInfo(banktab)
- if (gotitem) then
- gotitem = false
- for row = 1,7,1 do
- for slot = row,98,7 do
- local item = GetGuildBankItemLink(banktab,slot)
- if item then
- partitemlist = partitemlist..'\"'..GetRealmName()..'\",\"'..UnitFactionGroup("player")..'\",\"'..UnitName("player")..'\",'..'"Guild Bank","'..select(6,GetItemInfo(GetContainerItemLink(bag,slot)))..'","'..select(7,GetItemInfo(GetContainerItemLink(bag,slot)))..'",'..buildItemLink(select(1,GetItemInfo(GetGuildBankItemLink(banktab,slot))), select(2,GetGuildBankItemInfo(banktab,slot)),select(10,GetGuildBankItemInfo(banktab,slot)))
- gotitem = true
- else
- --partitemlist = partitemlist..','
- end
- end
- end
- end
- if (gotitem) then
- guildname = GetGuildInfo("player")
- WowheadBagScannerBankData.guild[banktab] = '"<'..string.gsub(guildname,'"','')..'> '..string.gsub(tabname,'"','')..'""'..string.gsub(tabicon,'"','')..'"'..partitemlist
- end
- if ((scanningguildbank > 0) or (not WowheadBagScannerBankData.guildscanned) or ((time() - WowheadBagScannerBankData.guildscanned) > 1800)) then
- scanningguildbank = scanningguildbank + 1
- if scanningguildbank > GetNumGuildBankTabs() then
- for x = scanningguildbank,9,1 do
- WowheadBagScannerBankData.guild[x] = nil
- end
- scanningguildbank = 0
- WowheadBagScannerBankData.guildscanned = time()
- banktab = GetCurrentGuildBankTab()
- else
- banktab = scanningguildbank
- end
- QueryGuildBankTab(banktab)
- end
- end
- end
- eventframe:RegisterEvent("ADDON_LOADED")
- eventframe:RegisterEvent("BANKFRAME_CLOSED")
- eventframe:RegisterEvent("BANKFRAME_OPENED")
- eventframe:RegisterEvent("VOID_STORAGE_OPEN")
- eventframe:RegisterEvent("VOID_STORAGE_UPDATE")
- eventframe:RegisterEvent("VOID_STORAGE_CONTENTS_UPDATE")
- eventframe:RegisterEvent("VOID_TRANSFER_DONE")
- eventframe:RegisterEvent("GUILDBANKBAGSLOTS_CHANGED")
- eventframe:SetScript("OnEvent", onEvent)
- SLASH_WHBAGSCANNER1 = '/whbagscanner'
- SLASH_WHBAGSCANNER2 = '/whbs'
- SlashCmdList["WHBAGSCANNER"] = handler
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement