WoWInterface

WoWInterface (https://www.wowinterface.com/forums/index.php)
-   Lua/XML Help (https://www.wowinterface.com/forums/forumdisplay.php?f=16)
-   -   10.0.2, GetItem() and Comparison tooltips. (https://www.wowinterface.com/forums/showthread.php?t=59357)

briskman3000 11-18-22 07:26 PM

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

briskman3000 11-18-22 07:33 PM

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.

SDPhantom 11-20-22 04:21 AM

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.


All times are GMT -6. The time now is 10:53 PM.

vBulletin © 2024, Jelsoft Enterprises Ltd
© 2004 - 2022 MMOUI