WoW:ItemLink: Difference between revisions

From AddOn Studio
Jump to navigation Jump to search
(Modified pattern for extracting itemString. Sporadically, GetContainerItemLink(bagID, slotID) returns a link with no text between brackets. The new pattern extracts the item string nevertheless.)
m (Cleanup)
Line 3: Line 3:


== itemLink API Type (String) ==
== itemLink API Type (String) ==
itemLinks are returned by several functions, e.g. [[API GetAuctionItemLink|GetAuctionItemLink]](), [[API GetContainerItemLink|GetContainerItemLink]](), [[API GetInventoryItemLink|GetInventoryItemLink]](), etc.
itemLinks are returned by several functions, e.g. [[API GetAuctionItemLink|GetAuctionItemLink]](), [[API GetContainerItemLink|GetContainerItemLink]](), [[API GetInventoryItemLink|GetInventoryItemLink]](), etc.


Line 21: Line 20:
* <tt>"'''|h'''"</tt> &ndash; "End of hyperlink"
* <tt>"'''|h'''"</tt> &ndash; "End of hyperlink"
* <tt>"'''|r'''"</tt> &ndash; Restores color to normal
* <tt>"'''|r'''"</tt> &ndash; Restores color to normal


You can extract the itemString from a given itemLink with the following pattern:
You can extract the itemString from a given itemLink with the following pattern:
Line 30: Line 28:


== 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:



Revision as of 04:50, 12 January 2009

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

itemLink API Type (String)

itemLinks are returned by several functions, e.g. GetAuctionItemLink(), GetContainerItemLink(), GetInventoryItemLink(), etc.

In essence, they are itemStrings with additional formatting to make in-game text controls display them as clickable hyperlinks.

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

Broken up in its components:

  • "|cff9d9d9d" – Colorizes the link with a medium grey color (Broken Fang is vendortrash)
    • The first two characters after pipe-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" – Read more at itemString.
  • "|h" – "End of link, text follows"
  • "[Broken Fang]" – The actual text displayed
  • "|h" – "End of hyperlink"
  • "|r" – Restores color to normal

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

local found, _, itemString = string.find(itemLink, "^|c%x+|H(.+)|h%[.*%]")

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

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 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.