Hyperlinks

From Warcraft Wiki
Jump to navigation Jump to search

Hyperlinks are clickable (chat) links. They are implemented in SetItemRef(). Note that for use in SendChatMessage() it can reject invalid entries, as the server may expect certain combinations of color, payload and text.

Format

Each hyperlink has the following format:

|cffxxxxxx|Htype:payload|h[text]|h|r
Text Description
|cffxxxxxx The color code
|H Begins the hyperlink
type:payload The link type and any colon-delimited params
|h Marks the end of the payload
[text] Localized display text
|h Ends the hyperlink
|r Stops coloring

Inspecting

See also: ExtractHyperlinkString()

There are multiple ways to see the contents of a hyperlink:

  • From the in-game chat window.
/dump "[Flash Heal]"
> "|cff71d5ff|Hspell:2061:0|h[Flash Heal]|h|r"
  • From an addon, when clicking a hyperlink in-game.
hooksecurefunc("SetItemRef", function(link, text)
	print(link, text:gsub("|", "||"))
end)
> "spell:139:0", "|cff71d5ff|Hspell:139:0|h[Renew]|h|r"

Types

achievement

See also: AchievementLink
achievement : achievementID : guid : completed : month : day : year : criteria1 : criteria2 : criteria3 : criteria4
  • guid The player's GUID.
  • completed 1 for earned, 0 for unearned achievements.
  • month:day:year Date the achievement was earned or 0:0:-1 if not earned.
  • criteria1-4 32-bit bitmask fields for completed criteria, or 0:0:0:0 if not completed.
Example:
"|cffffff00|Hachievement:10671:Player-1096-06DF65C1:1:2:16:17:4294967295:4294967295:4294967295:4294967295|h[Level 110]|h|r"
"|cffffff00|Hachievement:12544:Player-1096-06DF65C1:0:0:0:-1:0:0:0:0|h[Level 120]|h|r"

addon

Generic link type for use by addons. Links with an "addon" type are local-only and cannot be sent in chat messages, and can be processed by addons by registering the "SetItemRef" callback in the EventRegistry, or by securely hooking SetItemRef().

addon : name : data
  • name Arbitrary addon data.
  • data Arbitrary colon-delimited addon data segments.
Example:
"|cff71d5ff|Haddon:SuperAuras:some:data:1234|h[SuperAuras: The Link!]|h|r"
EventRegistry:RegisterCallback("SetItemRef", function(_, link, text, button, chatFrame)
    local linkType, addonName, linkData = strsplit(":", link)
    if linkType == "addon" and addonName == "SomeAddon" then
        print("Link clicked: ", linkData)
    end
end)
-- the following is equivalent
hooksecurefunc("SetItemRef", function(link)
	local linkType, addonName, linkData = strsplit(":", link)
	if linkType == "addon" and addonName == "SomeAddon" then
        print("Link clicked: ", linkData)
	end
end)
print("|cFFFFFF00|Haddon:SomeAddon:foo|h[Some Clickable Message]|h|r")

api

See also: APILink

Shows API Documentation from the /api command.

api : type : name : [parentName]
Example:
"|cffff55dd|Hapi:system:MapUI:|hMapUI|h|r"
"|cff55ddff|Hapi:function:GetMapInfo:MapUI|hC_Map.GetMapInfo()|h|r"
"|cff77ff22|Hapi:event:ZoneChanged:MapUI|hEvent.MapUI.ZoneChanged|h|r"
"|cff55ffdd|Hapi:table:UiMapDetails:MapUI|hUiMapDetails|h|r"

azessence

Azerite Essence link

azessence : essenceID : rank
Example: "|cffa335ee|Hazessence:12:3|h[The Crucible of Flame]|h|r"
See also: C_AzeriteEssence.GetEssenceInfo()

battlepet

battlepet : speciesID : level : breedQuality : maxHealth : [power] : [speed] : [battlePetID] : [displayID]
Example: "|cff0070dd|Hbattlepet:202:25:3:1546:289:260:BattlePet-0-00000338F951:16189|h[Baby Blizzard Bear]|h|r"
Barebone example: /run SendChatMessage("\124cff1eff00\124Hbattlepet:202:1:2:1:::BattlePet--:\124h[Baby Blizzard Bear]\124h\124r")
See also: BattlePetSpeciesID

battlePetAbil

battlePetAbil : abilityID : maxHealth : power : speed
Example: "|cff4e96f7|HbattlePetAbil:348:1435:267:240|hBash|h|r"

calendarEvent

calendarEvent : monthOffset : monthDay : index
Example: "|HcalendarEvent:0:12:1|hSpring Balloon Festival|h"
See also: C_Calendar.GetDayEvent()

channel

Opens the chat window to a specific /channel.

channel : channelType : [channelID]
Example:
"|Hchannel:channel:2|h[2. Trade - City]|h"
"|Hchannel:PARTY|h[Party]|h"

clubFinder

Guild Finder (8.2.5) invite link.

clubFinder : clubFinderId
Example: "|cffffd100|HclubFinder:ClubFinder-1-19160-1598-53720920|h[Guild: Happy Leveling]|h|r"
See also: GetClubFinderLink()

clubTicket

WoW communities & Blizzard Groups invite link.

clubTicket : ticketId
Example: "|cffffd100|HclubTicket:oxPbMfv2R|h[Join: test]|h|r"
See also: GetClubTicketLink()

community

Community link in Quick Join requests.

community : clubId

conduit

Conduit link

conduit : id : [rank]
Example: "|cff71d5ff|Hconduit:5:1|h[Stalwart Guardian]|h|r"
See also: C_Soulbinds.GetConduitHyperlink()

currency

currency : id : [amount]
Example: "|cffffffff|Hcurrency:1744|h[Corrupted Memento]|h|r"
See also: C_CurrencyInfo.GetCurrencyLink()

death

Opens the Death recap overview.

death : recapID
Example: "|Hdeath:1|h[You died.]|h"

dungeonScore

Shows Mythic+ stats for a player in the tooltip.

Example: "|cffffd100|HdungeonScore:2723:Player-1403-068056BB:Numedain:6:278:60:124:2723:3:381:1:15:382:1:17:392:1:18:391:1:18:380:1:17:375:1:18:376:0:18:377:1:17:378:1:19:379:1:16|h[Mythic+ Rating]|h|r"
See also DisplayDungeonScoreLink()
Hyperlinks dungeonScore.png
 1: 2723  -- score
 2: Player-1403-068056BB -- guid
 3: Numedain -- name
 4: 6     -- classId: Death Knight
 5: 278   -- itemLevel
 6: 60    -- playerLevel
 7: 124   -- runsThisSeason
 8: 2723  -- bestSeasonScore
 9: 3     -- bestSeasonNumber
 
10: 381   -- mapChallengeModeID: Spires of Ascension
11: 1     -- completedInTime
12: 15    -- keystoneLevel

13: 382   -- Theater of Pain
14: 1
15: 17
16: 392	  -- Tazavesh: So'leah's Gambit
17: 1
18: 18
19: 391   -- Tazavesh: Streets of Wonder
20: 1
21: 18
22: 380   -- Sanguine Depths
23: 1
24: 17
25: 375   -- Mists of Tirna Scithe
26: 1
27: 18
28: 376   -- The Necrotic Wake
29: 0
30: 18
31: 377   -- De Other Side
32: 1
33: 17
34: 378   -- Halls of Atonement
35: 1
36: 19
37: 379   -- Plaguefall
38: 1
39: 16

enchant

Opens the Tradeskill window for a recipe.

enchant : spellID
Example: "|cffffd000|Henchant:162206|h[Draenor Engineering: World Shrinker]|h|r"

garrfollower

garrfollower : followerID : quality : level : itemLevel : ability1 : ability2 : ability3 : ability4 : trait1 : trait2 : trait3 : trait4 : spec1
Example: "|cffa335ee|Hgarrfollower:856:4:110:900:457:777:0:0:684:758:0:0:354|h[Calia Menethil]|h|r"

garrfollowerability

garrfollowerability : abilityID
Example:
"|cff4e96f7|Hgarrfollowerability:354|h[Discipline]|h|r"
"|cff4e96f7|Hgarrfollowerability:457|h[Holy Nova]|h|r"

garrmission

garrmission : missionID : missionDBID
Example: "|cffffff00|Hgarrmission:1610:000000000238f82d|h[Withered Straining]|h|r"

instancelock

Opens the /raidinfo list.

instancelock : guid : instanceID : difficulty : defeatedEncounters
  • guid The player's GUID.
  • instanceID The instance's InstanceID
  • difficulty The instance's DifficultyID
  • defeatedEncounters Bitfield indicating the encounters that have been defeated. e.g. 7 means that the first 3 encounters have been cleared.
Example: "|cffff8000|Hinstancelock:Player-3296-000957C8:543:2:4|h[Hellfire Citadel: Ramparts]|h|r"

item

Main article: ItemLink
item : itemString
Example: "|cffffffff|Hitem:2592::::::::::::::::::|h[Wool Cloth]|h|r"

journal

Opens the Adventure Guide.

journal : journalType : journalID : difficulty
Example:
"|cff66bbff|Hjournal:0:1031:14|h[Uldir]|h|r"
"|cff66bbff|Hjournal:1:2147:14|h[G'huun]|h|r"
"|cff66bbff|Hjournal:2:18068:14|h[Titan Spark]|h|r"
See also: EJ_HandleLinkPath()

keystone

Used for  [Mythic Keystone].

keystone : itemID : challengeModeID : level : affix1 : affix2 : affix3 : affix4
Example:
"|cffa335ee|Hkeystone:180653:381:2:10:0:0:0|h[Keystone: Spires of Ascension (2)]|h|r"
"|cffa335ee|Hkeystone:180653:375:15:10:8:12:121|h[Keystone: Mists of Tirna Scithe (15)]|h|r"
"|cffa335ee|Hkeystone:180653:379:18:10:8:12:121|h[Keystone: Plaguefall (18)]|h|r"
See also: MapChallengeMode.db2, KeystoneAffix.db2
	[138019] = "Mythic Keystone", -- Legion Keystone
	[151086] = "Mythic Invitational Keystone", -- Tournament Stone
	[158923] = "Mythic Keystone", -- BFA Keystone
	[180653] = "Mythic Keystone", -- SL & DF Keystone
	[187786] = "Timeworn Keystone", -- Legion Timestone

levelup

levelup : level : levelUpType : [petName]
Example:
"|cffFF4E00|Hlevelup:2:LEVEL_UP_TYPE_CHARACTER|h[Level 2]|h|r"
"|cffFF4E00|Hlevelup:2:LEVEL_UP_TYPE_PET:Bear|h[Level 2]|h|r"

lootHistory

Opens the /loot window.

lootHistory : rollID

mawpower

mawpower : id
Example: "|cff71d5ff|Hmawpower:358|h[Icy Heartcrust]|h|r"
See also: MawPower.db2

outfit

Shows a transmog in the dressing room.

outfit : payload
Example: [[|cffff80ff|Houtfit:"a;"aA%ib"a>!.h&Ul"uH"a8"v""a@"v<"a"!!!!5o!!!!!!!!!|h[|T1598183:13:13:-1:0|tOutfit]|h|r]]
Decoding the payload  
-- tries to do partly what C_TransmogCollection.GetItemTransmogInfoListFromOutfitHyperlink() already does
-- it doesn't map to the proper inventorySlotIDs and appearanceID/secondaryAppearanceID/illusionID keys
-- there is no practical reason to actually do this

--local key = [[!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{]]
local keySize = 91
local asciiOffset = 33
local groupSize = 3

local function ParseOutfitLink(link)
	local payload = link:match("|Houtfit:(.-)|h")
	local t = {}
	for i = 1, #payload, groupSize do
		local group = payload:sub(i, i+groupSize-1)
		local sum = 0
		for j = 1, #group do
			local a = group:byte(j) - asciiOffset 
			local b = math.pow(keySize, groupSize-j)
			sum = sum + a*b
		end
		table.insert(t, sum)
	end
	return t
end

local info = ParseOutfitLink([[|cffff80ff|Houtfit:"a;"aA%ib"a>!.h&Ul"uH"a8"v""a@"v<"a"!!!!5o!!!!!!!!!|h[|T1598183:13:13:-1:0|tOutfit]|h|r]])
DevTools_Dump(info)
--[[
	[1] = 14131,  --  1: INVSLOT_HEAD						Cowl of Absolution
	[2] = 14137,  -- 13: INVSLOT_SHOULDER					Mantle of Absolution
	[3] = 39741,  -- 15: INVSLOT_BACK						Cloak of the Darkmoon Faire
	[4] = 14134,  --  5: INVSLOT_CHEST						Vestments of Absolution
	[5] = 1254,   --  4: INVSLOT_BODY						Stylish Black Shirt
	[6] = 35447,  -- 19: INVSLOT_TABARD						Theramore Tabard
	[7] = 15964,  --  9: INVSLOT_WRIST						Cuffs of Absolution
	[8] = 14128,  -- 10: INVSLOT_HAND						Gloves of Absolution
	[9] = 16017,  --  6: INVSLOT_WAIST						Belt of Absolution
	[10] = 14136, --  7: INVSLOT_LEGS						Breeches of Absolution
	[11] = 16043, --  8: INVSLOT_FEET						Boots of Absolution
	[12] = 14106, -- 16: INVSLOT_MAINHAND	appearanceID	Staff of the Redeemer
	[13] = 0,     -- 17: INVSLOT_OFFHAND	appearanceID
	[14] = 1898,  -- 16: INVSLOT_MAINHAND	illusionID		Illusion: Lifestealing
	[15] = 0,     -- 17: INVSLOT_OFFHAND	illusionID
	[16] = 0,     -- 16: INVSLOT_MAINHAND	secondaryAppearanceID
	[17] = 0      --  3: INVSLOT_SHOULDER	secondaryAppearanceID
]]

This can also be in a non-hyperlink format.

/outfit v1 14131,14137,0,39741,14134,1254,46212,15964,14128,16017,14136,16043,14106,-1,1898,0,0
See also: C_TransmogCollection.GetItemTransmogInfoListFromOutfitHyperlink(), TransmogUtil.ParseOutfitSlashCommand()

player

Left-click: starts a whisper message
Right-click: opens the player context menu
Shift-click: sends a /who query
player : name : [lineID] : [chatType] : [chatTarget]
  • lineID Message ID for reporting.
Example:
"|Hplayer:Fadeshift|h[Fadeshift]|h"
"|Hplayer:Aquadoll-MoonGuard|h[Aquadoll]|h"
"|Hplayer:Ketho-Anasterian:8:PARTY:|h[|cfffefefeKetho|r]|h"
"|Hplayer:Kilastra-DefiasBrotherhood:90:CHANNEL:2|h[|cff8686ecKilastra|r]|h"
See also: GetPlayerLink()

playerCommunity

playerCommunity : name : communityClubID : communityStreamID : communityEpoch : communityPosition
Example: "|HplayerCommunity:Ketho-Anasterian:333281:1:1557794365297000:5886997898769|h[|cfffefefeKetho|r]|h"

BNplayer

Battle.net friend links.

BNplayer : name : bnetIDAccount : lineID : chatType : chatTarget

BNplayerCommunity

BNplayerCommunity : name : bnetIDAccount : communityClubID : communityStreamID : communityEpoch : communityPosition

quest

quest : questID : questLevel : unknown1 : unknown2 : unknown3
Example:
"|cffffff00|Hquest:53370:-1:110:120:3|h[Hour of Reckoning]|h|r"
"|cffff8040|Hquest:40746:113:110:255:0|h[One of the People]|h|r"
See also: QuestLink

spell

spell : spellId : glyphId : [event]
Example:
"|cff71d5ff|Hspell:2096:0|h[Mind Vision]|h|r"
"|Hspell:589:0:SPELL_DAMAGE|hShadow Word: Pain|h" (as printed in Blizzard_CombatLog)
See also: GetSpellLink()

storecategory

Opens the In-Game Store.

storecategory : category
Example: "|cffffd000|Hstorecategory:games|h[Click To Upgrade]|h|r"

talent

talent : talentID
Example: "|cff71d5ff|Htalent:21754|h[Circle of Healing]|h|r"
See also: GetTalentInfoByID()
WoW Icon update.png talent : talentID : points
Note that -1 = 0 points, 0 = 1 point, 1 = 2 points, etc.
Example: "|cff4e96f7|Htalent:406:1|h[Improved Renew]|h|r"

talentbuild

Dragonflight-Icon-Inline.png Opens the Talent Tree UI with a read-only view of the linked loadout.

talentbuild : specializationID : level : talentLoadoutImportString
  • specializationID The loadout's SpecializationID.
  • level The loadout's level.
  • talentLoadoutImportString The loadout import string.
Example: "|cffa330c9|Htalentbuild:577:70:BEkAAAAAAAAAAAAAAAAAAAAAAIBkQKRSaJJJSEIAAAAAAAaJJQLFSSKSi0QRSSSSSA|h[Talents: Havoc Demon Hunter]|h|r"
See also: Dragonflight Talent System

trade

Shows the tradeskill window (from another player).

trade : guid : spellID : skillLineID
Example: "|cffffd000|Htrade:Player-3296-000957C8:195128:185|h[Cooking]|h|r"
See also: TradeSkillLink

transmogappearance

Shows the transmog item in the Appearances tab.

transmogappearance : id
Example: |cffff80ff|Htransmogappearance:112825|h[Staff of the Penitent]|h|r

transmogillusion

Previews a weapon enchant in the Dressing room.

transmogillusion : sourceID
Example: "|cffff80ff|Htransmogillusion:5862|h[Titanguard]|h|r"
See also: C_TransmogCollection.GetIllusionSourceInfo()

transmogset

Shows the transmog set in the Appearances tab.

transmogset : setID
Example: "|cffff80ff|Htransmogset:1414|h[Fierce Gladiator's Satin Armor (Gladiator)]|h|r"
See also: C_TransmogSets.GetSetInfo()

unit

Shows the unit tooltip. Opens the combat log context menu on right-click.

unit : guid : [name]
Example: "|Hunit:Creature-0-2083-0-7-299-00005A0F91:Young Wolf|hYoung Wolf|h"

Implemented in Blizzard_CombatLog.lua

urlIndex

Opens a URL in the default web browser.

urlIndex : index
Example: "|HurlIndex:25|h|cff006995Frequently Asked Questions|r|h"

worldmap

Opens the World Map to display a pinned waypoint.

 worldmap : uiMapID : x : y
  • uiMapID The UiMapID for the waypoint.
  • x The X coordinate of the waypoint, multiplied by 10000.
  • y The Y coordinate of the waypoint, multiplied by 10000.
Example: "|cffffff00|Hworldmap:84:7222:2550|h[|A:Waypoint-MapPin-ChatIcon:13:13:0:0|a Map Pin Location]|h|r"
enUS globalstring: MAP_PIN_HYPERLINK = "|A:Waypoint-MapPin-ChatIcon:13:13:0:0|a Map Pin Location"
See also: C_Map.SetUserWaypoint()

See also

Patch changes

  • Dragonflight-Icon-Inline.png Patch 10.1.0 (2023-05-02): Added the addon and talentbuild link types.
  • Dragonflight-Icon-Inline.png Patch 10.0.5 (2022-02-07): shareachieve, shareitem, and sharess removed due to Twitter API changes.[1]
  • Legion-Logo-Small.png Patch 7.0.3 (2016-07-19): Unused delimited segments can be empty rather than 0, e.g. ":::" instead of ":0:0:0"

References

 
  1. ^ Archimtiros 2022-02-07. Twitter Integration to be Removed from World of Warcraft - Blizzard Bluepost. Wowhead. Retrieved on 2024-12-17.