Как отправлять кликабельные ссылки (предмет, квест, достижение) игрокам?

Как отправлять кликабельные ссылки (предмет, квест, достижение) игрокам?

Я имею в виду ссылку на элемент, например, когда вы Shift + щелкаете и вставляете ее в чат.


person Barbz_YHOOL    schedule 08.11.2020    source источник


Ответы (1)


Таким образом, вы можете просто отправить код чата, и он отобразит кликабельную ссылку, например:

achievementSTR = "|cffffff00|Hachievement:"+std::to_string(achievementEntry->ID)+":"+std::to_string(p->GetGUID())+":0:0:0:0:0:0:0:0|h"+std::string(*achievementEntry->name)+"|h|r";

Затем вы отправляете его с PSendSysMessage, например

Чтобы протестировать игру, используйте эту команду (вы должны использовать /script для ее отображения):

/script DEFAULT_CHAT_FRAME:AddMessage("\124cff000000\124Hcreature_entry:448\124h[Click here]\124h\124r");

Обратите внимание, что | были преобразованы в их эквивалент \124 специально для клиента.

Все коды, которые можно связать, перечислены в ChatLink. .cpp:

// Supported shift-links (client generated and server side)
// |color|Hachievement:achievement_id:player_guid:0:0:0:0:0:0:0:0|h[name]|h|r
//                                                                        - client, item icon shift click, not used in server currently
// |color|Harea:area_id|h[name]|h|r
// |color|Hcreature:creature_guid|h[name]|h|r
// |color|Hcreature_entry:creature_id|h[name]|h|r
// |color|Henchant:recipe_spell_id|h[prof_name: recipe_name]|h|r          - client, at shift click in recipes list dialog
// |color|Hgameevent:id|h[name]|h|r
// |color|Hgameobject:go_guid|h[name]|h|r
// |color|Hgameobject_entry:go_id|h[name]|h|r
// |color|Hglyph:glyph_slot_id:glyph_prop_id|h[%s]|h|r                    - client, at shift click in glyphs dialog, GlyphSlot.dbc, GlyphProperties.dbc
// |color|Hitem:item_id:perm_ench_id:gem1:gem2:gem3:0:0:0:0:reporter_level|h[name]|h|r
//                                                                        - client, item icon shift click
// |color|Hitemset:itemset_id|h[name]|h|r
// |color|Hplayer:name|h[name]|h|r                                        - client, in some messages, at click copy only name instead link
// |color|Hquest:quest_id:quest_level|h[name]|h|r                         - client, quest list name shift-click
// |color|Hskill:skill_id|h[name]|h|r
// |color|Hspell:spell_id|h[name]|h|r                                     - client, spellbook spell icon shift-click
// |color|Htalent:talent_id, rank|h[name]|h|r                              - client, talent icon shift-click
// |color|Htaxinode:id|h[name]|h|r
// |color|Htele:id|h[name]|h|r
// |color|Htitle:id|h[name]|h|r
// |color|Htrade:spell_id:cur_value:max_value:unk3int:unk3str|h[name]|h|r - client, spellbook profession icon shift-click

Вот скрипт, который помог разобраться в этом: http://www.ac-web.org/forums/showthread.php?197623-Trinity-C-Script-to-link-items-ingame

person Barbz_YHOOL    schedule 08.11.2020