diff --git a/server/gameserver/constant.h b/server/gameserver/constant.h index 144c7ff8..69bc7cdf 100644 --- a/server/gameserver/constant.h +++ b/server/gameserver/constant.h @@ -382,14 +382,17 @@ enum HpOpt_e enum RichTextElementType { kTextElement = 1, - kImageElement = 2 + kImageElement = 2, + kHeroHeadElement = 3 }; enum KillTextFieldIdx { kFieldIdxMasterName = 1000, kFieldIdxKillerName, + kFieldIdxKillerHeroId, kFieldIdxDeadName, + kFieldIdxDeadHeroId, kFieldIdxWeaponName, kFieldIdxWeaponTextIcon, }; diff --git a/server/gameserver/killmgr.cc b/server/gameserver/killmgr.cc index 0d568792..0d560988 100644 --- a/server/gameserver/killmgr.cc +++ b/server/gameserver/killmgr.cc @@ -21,11 +21,21 @@ bool RollMsgHintInfo::Replace(int idx, std::string& text) text = killer_name; } break; + case kFieldIdxKillerHeroId: + { + text = killer_name; + } + break; case kFieldIdxDeadName: { text = dead_name; } break; + case kFieldIdxDeadHeroId: + { + text = dead_name; + } + break; case kFieldIdxWeaponTextIcon: { text = weapon_text_icon; diff --git a/server/gameserver/mt/Text.cc b/server/gameserver/mt/Text.cc index e2744dd1..bc384b93 100644 --- a/server/gameserver/mt/Text.cc +++ b/server/gameserver/mt/Text.cc @@ -20,8 +20,12 @@ static void ParseElemets(const std::string& textid, elements.push_back(std::make_tuple(kFieldIdxMasterName, "")); } else if (var_name == "${killer.name}") { elements.push_back(std::make_tuple(kFieldIdxKillerName, "")); + } else if (var_name == "${killer.heroid}") { + elements.push_back(std::make_tuple(kFieldIdxKillerHeroId, "")); } else if (var_name == "${dead.name}") { elements.push_back(std::make_tuple(kFieldIdxDeadName, "")); + } else if (var_name == "${dead.heroid}") { + elements.push_back(std::make_tuple(kFieldIdxDeadHeroId, "")); } else if (var_name == "${weapon.name}") { elements.push_back(std::make_tuple(kFieldIdxWeaponName, "")); } else if (var_name == "${weapon.text_icon}") { diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index ab28cb16..36de5245 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -204,6 +204,13 @@ void KillMgr::PreprocessRollMsg(std::shared_ptr pb_msg, e->mutable_union_obj_2()->set_id(a8::XValue(el_val)); } break; + case kHeroHeadElement: + { + auto e = pb_msg->add_elements(); + e->set_element_type(el_type); + e->mutable_union_obj_2()->set_id(a8::XValue(el_val)); + } + break; default: { std::string text; diff --git a/server/tools/protobuild/cs_proto.proto b/server/tools/protobuild/cs_proto.proto index 27384ea1..f856f747 100755 --- a/server/tools/protobuild/cs_proto.proto +++ b/server/tools/protobuild/cs_proto.proto @@ -982,12 +982,18 @@ message MFImageElement optional int32 id = 1; //装备id } +message MFHeroHeadElement +{ + optional int32 id = 1; //英雄id +} + message MFRichTextElement { - //1:TextElement 2:ImageElement + //1:TextElement 2:ImageElement 3:HeroHeadElement optional int32 element_type = 1; //富文本类型 optional MFTextElement union_obj_1 = 2; //文本元素 optional MFImageElement union_obj_2 = 3; //图片元素 + optional MFImageElement union_obj_3 = 4; //英雄头像元素 } message MFMatchTeamMember