WoW:ItemLink: Difference between revisions

From AddOn Studio
Jump to navigation Jump to search
m (Move page script moved page ItemLink to ItemLink without leaving a redirect)
 
(8 intermediate revisions by 7 users not shown)
Line 1: Line 1:
{{DISPLAYTITLE:itemLink}}
{{DISPLAYTITLE:itemLink}}
{{wowapitype}}<br>
{{wowapitype}}


== itemLink API Type (String) ==
[[ItemLink]]s are [[itemString]]s with additional formatting for embedding 'link' text for a [[item|game item]] link, typically used for display in the UI such as text boxes that can display them as clickable hyperlinks. See {{apif|GetAuctionItemLink}}, {{apif|GetContainerItemLink}}, {{apif|GetInventoryItemLink}}.
itemLinks are returned by several functions, e.g. [[API GetAuctionItemLink|GetAuctionItemLink]](), [[API GetContainerItemLink|GetContainerItemLink]](), [[API GetInventoryItemLink|GetInventoryItemLink]](), etc.


In essence, they are [[itemString]]s with additional formatting to make in-game text controls display them as clickable hyperlinks.
|cff9d9d9d|Hitem:3299::::::::20:257::::::|h[Fractured Canine]|h|r


|cff9d9d9d|Hitem:7073:0:0:0:0:0:0:0|h[Broken Fang]|h|r
== Format ==


Broken up in its components:
* |cff9d9d9d - Colorizes the link with a medium grey color (hex color code)
** The first two characters after '|c' may be the alpha level, where 'ff' is fully opaque.
** The next three sets of two characters represent the red, green, and blue levels, just like HTML.
* |H - Hyperlink link data starts here
* item:7073:0:0:0:0:0:0:0:0:0:0:0:0 or item:7073:::::::::::: -  the item string. See [[itemString]].
* |h - End of link, text follows
* [Broken Fang] - The actual text displayed
* |h - End of hyperlink
* |r - Restores color to normal


* <tt>"'''|cff9d9d9d'''"</tt> &ndash; Colorizes the link with a medium grey color (Broken Fang is vendortrash)
|cff9d9d9d|Hitem:7073::::::::::::|h[Broken Fang]|h|r
** The first two characters after pipe-c may be the alpha level, where <code>ff</code> is fully opaque.
** The next three sets of two characters represent the red, green, and blue levels, just like HTML.
* <tt>"'''|H'''"</tt> &ndash; "Hyperlink link data starts here"
* <tt>"'''item:7073:0:0:0:0:0:0:0'''"</tt> &ndash; Read more at [[itemString]].
* <tt>"'''|h'''"</tt> &ndash; "End of link, text follows"
* <tt>"'''[Broken Fang]'''"</tt> &ndash; The actual text displayed
* <tt>"'''|h'''"</tt> &ndash; "End of hyperlink"
* <tt>"'''|r'''"</tt> &ndash; Restores color to normal


You can extract the itemString from a given itemLink with the following pattern:
== Summary ==


  local found, _, itemString = string.find(itemLink, "^|c%x+|H(.+)|h%[.*%]")
=== Example ===
local itemLink =
    "|cff9d9d9d|Hitem:3299::::::::20:257::::::|h[Fractured Canine]|h|r"
  local itemString = string.match(itemLink, "item[%-?%d:]+")
Produces:
itemString == "item:3299::::::::20:257::::::"
This example extracts the itemString from a given itemLink using the string.match regex Lua function.


Note: The format of the link is similar for enchant, spell and quest links, with merely the "itemstring" changing. See [[spellString]], [[enchantString]] and [[questString]]
== Details ==


'''To obtain all the data within a hyperlink, you can use the following:'''
'''To obtain all the data within a hyperlink, you can use the following:'''
  local _, _, Color, Ltype, Id, Enchant, Gem1, Gem2, Gem3, Gem4, Suffix, Unique, LinkLvl, Name = string.find(itemLink, "|?c?f?f?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?")
  local _, _, Color, Ltype, Id, Enchant, Gem1, Gem2, Gem3, Gem4,
    Suffix, Unique, LinkLvl, Name = string.find(itemLink,
    "|?c?f?f?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*):?(%d*):?(%-?%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?")
Note that this will accept any hyperlink (item/spell/quest/talent/achievement/tradeskill/etc), it will take itemstrings alone, or even just a single number.
Note that this will accept any hyperlink (item/spell/quest/talent/achievement/tradeskill/etc), it will take itemstrings alone, or even just a single number.


== Printing links for debug ==
=== Printing links for debug ===
 
Printing out the contents of an item link is perhaps not so obvious; displaying it anywhere in-game will just show you a clickable link. Reformat it slightly to ruin the [[UI Escape Sequences|escape sequences]] and you'll see what it really looks like:
Printing out the contents of an item link is perhaps not so obvious; displaying it anywhere in-game will just show you a clickable link. Reformat it slightly to ruin the [[UI Escape Sequences|escape sequences]] and you'll see what it really looks like:


Line 39: Line 47:


"124" is the ascii value of the "|" character. If you are writing this in a regular .lua file, feel free to go ahead and just use "|" and "||". However, if you're typing it in an in-game editor, it's better to use the ascii code escape to avoid problems.
"124" is the ascii value of the "|" character. If you are writing this in a regular .lua file, feel free to go ahead and just use "|" and "||". However, if you're typing it in an in-game editor, it's better to use the ascii code escape to avoid problems.
== Simple ingame item look-up ==
For calling up an item in the game that is not available via shift+left-click (such as something on the AH or in the professions tab), follow these very easy steps:
*Look up the item on wowhead
*Click on the "Links" button in the top right of the item page
*Select the "Ingame link" section (usually already selected); copy the information
*Enter the game and paste the information into the chat window
*A clickable link for that item should appear
== Changes ==
* Patch 5.0.4 - changed the number of [[itemString]] parameters from 10 to 11
* Patch 7.0.3 - in the 'itemString' portion place holder 0s can be removed or left blank to be assumed 0. For example ''|cff9d9d9d|Hitem:7073:0:0:0:0:0:0:0:80:0:0:0:0|h[Broken Fang]|h|r'' becomes ''|cff9d9d9d|Hitem:7073:::::::0:80::::|h[Broken Fang]|h|r''. See [[itemString]]
== Notes ==
* The format of the link is similar for enchant, spell and quest links, with merely the "itemstring" changing. See [[spellString]], [[enchantString]] and [[questString]]
== See Also ==
* [[itemString]]
* {{apif|GetContainerItemLink}}
* [[item|game item (item)]]
* [[questString]], [[spellString]], [[enchantString]]

Latest revision as of 04:48, 15 August 2023

Warning: Display title "WoW API type: ItemLink" overrides earlier display title "itemLink".API types

ItemLinks are itemStrings with additional formatting for embedding 'link' text for a game item link, typically used for display in the UI such as text boxes that can display them as clickable hyperlinks. See GetAuctionItemLink(), GetContainerItemLink(), GetInventoryItemLink().

|cff9d9d9d|Hitem:3299::::::::20:257::::::|h[Fractured Canine]|h|r

Format[edit]

  • |cff9d9d9d - Colorizes the link with a medium grey color (hex color code)
    • The first two characters after '|c' may be the alpha level, where 'ff' is fully opaque.
    • The next three sets of two characters represent the red, green, and blue levels, just like HTML.
  • |H - Hyperlink link data starts here
  • item:7073:0:0:0:0:0:0:0:0:0:0:0:0 or item:7073:::::::::::: - the item string. See itemString.
  • |h - End of link, text follows
  • [Broken Fang] - The actual text displayed
  • |h - End of hyperlink
  • |r - Restores color to normal
|cff9d9d9d|Hitem:7073::::::::::::|h[Broken Fang]|h|r

Summary[edit]

Example[edit]

local itemLink =
    "|cff9d9d9d|Hitem:3299::::::::20:257::::::|h[Fractured Canine]|h|r"
local itemString = string.match(itemLink, "item[%-?%d:]+")

Produces:

itemString == "item:3299::::::::20:257::::::"

This example extracts the itemString from a given itemLink using the string.match regex Lua function.

Details[edit]

To obtain all the data within a hyperlink, you can use the following:

local _, _, Color, Ltype, Id, Enchant, Gem1, Gem2, Gem3, Gem4,
    Suffix, Unique, LinkLvl, Name = string.find(itemLink,
    "|?c?f?f?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*):?(%d*):?(%-?%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?")

Note that this will accept any hyperlink (item/spell/quest/talent/achievement/tradeskill/etc), it will take itemstrings alone, or even just a single number.

Printing links for debug[edit]

Printing out the contents of an item link is perhaps not so obvious; displaying it anywhere in-game will just show you a clickable link. Reformat it slightly to ruin the escape sequences and you'll see what it really looks like:

link = GetContainerItemLink(0, 1);
printable = gsub(link, "\124", "\124\124");
ChatFrame1:AddMessage("Here's what it really looks like: \"" .. printable .. "\"");

"124" is the ascii value of the "|" character. If you are writing this in a regular .lua file, feel free to go ahead and just use "|" and "||". However, if you're typing it in an in-game editor, it's better to use the ascii code escape to avoid problems.

Simple ingame item look-up[edit]

For calling up an item in the game that is not available via shift+left-click (such as something on the AH or in the professions tab), follow these very easy steps:

  • Look up the item on wowhead
  • Click on the "Links" button in the top right of the item page
  • Select the "Ingame link" section (usually already selected); copy the information
  • Enter the game and paste the information into the chat window
  • A clickable link for that item should appear

Changes[edit]

  • Patch 5.0.4 - changed the number of itemString parameters from 10 to 11
  • Patch 7.0.3 - in the 'itemString' portion place holder 0s can be removed or left blank to be assumed 0. For example |cff9d9d9d|Hitem:7073:0:0:0:0:0:0:0:80:0:0:0:0|h[Broken Fang]|h|r becomes |cff9d9d9d|Hitem:7073:::::::0:80::::|h[Broken Fang]|h|r. See itemString

Notes[edit]

See Also[edit]