Thread Tools Display Modes
11-18-22, 07:26 PM   #1
briskman3000
A Flamescale Wyrmkin
 
briskman3000's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2009
Posts: 108
10.0.2, GetItem() and Comparison tooltips.

Greetings,


I am attempting to update my addon to work with the new tooltip system introduced with the latest patch. I was able to get it to mostly work by replacing all of the old hookscript lines with the new TooltipDataProcessor.AddTooltipPostCall function.


For the most part, this allows my code to run properly. The only issue that seems to remain is when an item comparison tooltip is on the screen, the code does not run and errors out. The error I am getting is stating that the GetItem() call is a nil value.

Code:
    5x Interface/AddOns/ConvertRatings/ConvertRatings.lua:296: attempt to call method 'GetItem' (a nil value)
    [string "@Interface/AddOns/ConvertRatings/ConvertRatings.lua"]:296: in function <Interface/AddOns/ConvertRatings/ConvertRatings.lua:228>
    [string "=(tail call)"]: ?
    [string "=[C]"]: in function `securecallfunction'
    [string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:60: in  function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:55>
    [string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:80: in function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:76>
    [string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:116: in function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:106>
    [string "=[C]"]: in function `SetAttribute'
    [string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:141: in function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:134>
    [string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:282: in function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:240>
    [string "=[C]"]: in function `securecallfunction'
    [string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:237: in function `ProcessInfo'
    [string "@Interface/SharedXML/Tooltip/TooltipComparisonManager.lua"]:249: in function `SetItemTooltip'
    ...
    [string "@Interface/SharedXML/Tooltip/TooltipDataRules.lua"]:161: in function `func'
    [string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:49: in function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:44>
    [string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:71: in function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:67>
    [string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:135: in function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:134>
    [string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:282: in function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:240>
    [string "=[C]"]: in function `securecallfunction'
    [string "@Interface/SharedXML/Tooltip/TooltipDataHandler.lua"]:237: in function <Interface/SharedXML/Tooltip/TooltipDataHandler.lua:236>
    [string "=(tail call)"]: ?
    [string "@Interface/FrameXML/PaperDollFrame.lua"]:1738: in function `UpdateTooltip'
    [string "@Interface/FrameXML/GameTooltip.lua"]:498: in function       <Interface/FrameXML/GameTooltip.lua:491>

    Locals:
    self = ShoppingTooltip1 {
     0 = <userdata>
     SetQuestLogRewardSpell = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetQuestPartyProgress = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     ProcessLineData = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:303
     SetPvpTalent = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetExistingSocketGem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetHyperlink = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetUnit = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetAzeriteEssence = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetVoidDepositItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetVoidWithdrawalItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetInfoBackdropStyle = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:338
     SetSocketGem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetLootCurrency = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetSlottedKeystone = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetItemInteractionItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetLootItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetOwnedItemByID = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetQuestLogSpecialItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetRecipeReagentItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetBuybackItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     hasMoney = 1
     SetWeeklyReward = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetMerchantItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetPvpBrawl = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     shownMoneyFrames = 1
     BottomOverlay = Texture {
     }
     SetSpellByID = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     numMoneyFrames = 1
     SetSocketedRelic = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     ProcessInfo = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:236
     ProcessLines = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:293
     NineSlice = Frame {
     }
     SetInventoryItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     info = <table> {
     }
     updateTooltipTimer = 0.200000
     SetLootRollItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     InternalProcessInfo = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:240
     SetPossession = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetUnitDebuffByAuraInstanceID = <function> defined  @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetBagItem = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     TextRight1 = ShoppingTooltip1TextRight1 {
     }
     SetAction = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetLineDataAttribute = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:232
     SetAchievementByID = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetInventoryItemByID = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetQuestCurrency = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetCurrencyByID = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetQuestLogCurrency = <function> defined @Interface/SharedXML/Tooltip/TooltipDataHandler.lua:444
     SetBagItemChild = <function> defined @
Link to full code
https://github.com/mynian/ConvertRat...ertRatings.lua
__________________
My Addons: Convert Ratings Honor Track
  Reply With Quote
11-18-22, 07:33 PM   #2
briskman3000
A Flamescale Wyrmkin
 
briskman3000's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2009
Posts: 108
And as I posted this, someone submitted an answer on my github page.

Apparently GetItem() is no longer supported on comparison tooltips and as such in order to get the itemlink of the item in the comparison tooltip, you need to use the new C_Item.GetItemLinkByGUID function.
__________________
My Addons: Convert Ratings Honor Track
  Reply With Quote
11-20-22, 04:21 AM   #3
SDPhantom
A Pyroguard Emberseer
 
SDPhantom's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2006
Posts: 2,326
There's also TooltipUtil.GetDisplayedItem() as the more official way to grab item info from a tooltip.
Note this doesn't handle tooltips targeting macros and the ID in .info.tooltipData for the macro type is spitting out random numbers instead of the macro slot ID.
__________________
WoWInterface AddOns
"All I want is a pretty girl, a decent meal, and the right to shoot lightning at fools."
-Anders (Dragon Age: Origins - Awakening)

Last edited by SDPhantom : 11-20-22 at 04:24 AM.
  Reply With Quote

WoWInterface » Developer Discussions » Lua/XML Help » 10.0.2, GetItem() and Comparison tooltips.


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off