Trigger 0 Posted June 14, 2023 Share Posted June 14, 2023 Is there a way in c# (plugin code for example) to get the stats from an item (vanilla 1.12)? For example, I loot an item, I want to compare that item's stats, such as strength, intelligence, etc. and compare it against my equipped item. Also, I have code to get the item when the character loots, I just need the code to get the stats. I'm very comfortable with c#, not so comfortable with LUA. TIA! Link to comment https://wrobot.eu/forums/topic/15223-get-an-items-stats-strength-int-agi-etc/ Share on other sites More sharing options...
TechMecca 7 Posted June 15, 2023 Share Posted June 15, 2023 You need to build a tooltip reader, cache each line into a table then read the results . Link to comment https://wrobot.eu/forums/topic/15223-get-an-items-stats-strength-int-agi-etc/#findComment-68401 Share on other sites More sharing options...
Zer0 148 Posted June 15, 2023 Share Posted June 15, 2023 I'm not entirely sure it will work for vanilla, since I've used it on TBC/Wotlk, but even then, there's no easy way to do this. The only way I know to read item stats is to create a LUA Frame, set its hyperlink to the item link you want to check, and read its regions. You can check the LUASetup() method to get an idea how this works here https://github.com/Wholesome-wRobot/Wholesome-Inventory-Manager/blob/master/Helper/Toolbox.cs After you've ran this setup, all you need is to call is ParseItemInfo(itemLink) in LUA to get your item stats. You'll have to adapt the code to whatever you want to do, obviously. Link to comment https://wrobot.eu/forums/topic/15223-get-an-items-stats-strength-int-agi-etc/#findComment-68402 Share on other sites More sharing options...
TechMecca 7 Posted June 15, 2023 Share Posted June 15, 2023 Although untested due to my current lack of a vanilla World of Warcraft installation, the following code snippet should serve as a helpful starting point for constructing the necessary functions to manage item states. public class ToolTipReader { private static string TooltipName { get; set; } static ToolTipReader() { TooltipName = Others.GetRandomString(12); } public static void CreateTooltip() { Lua.LuaDoString($@" if not {TooltipName} then {TooltipName} = CreateFrame('GameTooltip', '{TooltipName}', nil, 'GameTooltipTemplate'); {TooltipName}:SetOwner(UIParent, 'ANCHOR_NONE'); end "); } public static void DestroyTooltip() { Lua.LuaDoString($"{TooltipName} = nil;"); } public static string[] ItemStates(string itemLink) { return Lua.LuaDoString<string[]>($@" local StatsTable = {{}} {TooltipName}:ClearLines() {TooltipName}:SetHyperlink('{itemLink}') for i = 1, {TooltipName}:NumLines() do local text = _G['ItemPurseTextLeft'..i]:GetText() table.insert(StateTable, text) end return unpack(StatsTable); "); } } Link to comment https://wrobot.eu/forums/topic/15223-get-an-items-stats-strength-int-agi-etc/#findComment-68403 Share on other sites More sharing options...
Trigger 0 Posted June 28, 2023 Author Share Posted June 28, 2023 Thanks so much for answering this, I posted, then stepped away from it for a bit, just coming back. I'll try that out, thanks again! Link to comment https://wrobot.eu/forums/topic/15223-get-an-items-stats-strength-int-agi-etc/#findComment-68460 Share on other sites More sharing options...
Matenia 628 Posted June 29, 2023 Share Posted June 29, 2023 Just wanted to pop in and say for Vanilla it's really worth finding some of the older wiki entries regarding Tooltip handling in general. Tooltip handling in vanilla is very different from later expansions and honestly such a mess. I don't think you can just destroy tooltips. For example, as far as I know, you can not get ToolTips to be garbage collected by just setting them back to 'nil'. They will continue to exist and you're just dumping your memory full of new tooltips eventually. You absolutely need to reuse the tooltip and clear all lines as well as assigning a new owner. As far as I remember, in Vanilla you even need to manually delete some sub texts on the tooltip because it's such a rudimentary (buggy) implementation in 1.12. The old wiki entries should have more info. A code snippet from my own TBC+ code: List<int> containerSlot = Bag.GetItemContainerBagIdAndSlot(bagItem.Entry); if (!containerSlot.IsNullOrEmpty()) { Lua.LuaDoString($@" {TooltipName}:Hide(); {TooltipName}:SetOwner(UIParent, 'ANCHOR_NONE'); {TooltipName}:ClearLines(); {TooltipName}:SetBagItem({containerSlot[0]}, {containerSlot[1]}); "); ParsedItem parsedBagItem = ItemParser.ParseCurrentTooltip(TooltipName); ... Link to comment https://wrobot.eu/forums/topic/15223-get-an-items-stats-strength-int-agi-etc/#findComment-68461 Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now