WoW API type: SpellLink

From AddOn Studio
Jump to navigation Jump to search

Warning: Display title "WoW API type: SpellLink" overrides earlier display title "spellLink".API types

spellLinks are returned by several functions, e.g. GetSpellLink(), etc.

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

|cff71d5ff|Hspell:10060|h[Power Infusion]|h|r

Broken up in its components:

  • "|cff71d5ff" – Colorizes the link with a blue/cyan color (all spell links are blue)
    • 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"
  • "spell:10060" – Read more at spellString.
  • "|h" – "End of link, text follows"
  • "[Power Infusion]" – The actual text displayed
  • "|h" – "End of hyperlink"
  • "|r" – Restores color to normal

You can extract the spellString from a given spellLink with the following pattern:

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

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

Printing links for debug[edit]

Printing out the contents of an spell 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 = GetSpellLink(spell);
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.