From 22febc1eb7917e361ddb2eca263f371c3dac32c8 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 27 May 2024 16:28:52 +0800 Subject: [PATCH] 1 --- server/gameserver/mt/Param.h | 2 ++ server/gameserver/pbutils.cc | 35 ++++++++++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/server/gameserver/mt/Param.h b/server/gameserver/mt/Param.h index 399a1a7d..e68254fb 100644 --- a/server/gameserver/mt/Param.h +++ b/server/gameserver/mt/Param.h @@ -78,6 +78,8 @@ namespace mt int self_kill_color = 0xFFFF00; int self_bekill_color = 0xFF0000; + int other_bekill_color = 0xFFFFFF; + int map_cell_width = 64 * 8; int bullet_planck_step_length = 15; const mt::Hero* human_meta = nullptr; diff --git a/server/gameserver/pbutils.cc b/server/gameserver/pbutils.cc index d18edd91..e6a1a58f 100644 --- a/server/gameserver/pbutils.cc +++ b/server/gameserver/pbutils.cc @@ -338,11 +338,44 @@ void KillMgr::BoradcastRollMsgCb(Human* dead_hum, int killer_team_id, std::shared_ptr pb_msg) { + std::vector elements; + for (int i = 0; i < pb_msg->elements_size(); ++i) { + auto element = pb_msg->mutable_elements(i); + if (element->element_type() == kTextElement) { + elements.push_back(element); + } + } + auto proc_dead = + [dead_hum, info, killer_team_id] (cs::MFRichTextElement* element, Human* hum) + { + if (dead_hum == hum) { + auto color = mt::Param::s().self_bekill_color; + element->mutable_union_obj_1()->set_color(color); + } else if (dead_hum->team_id == hum->team_id) { + auto color = mt::Param::s().teammate_bekill_color; + element->mutable_union_obj_1()->set_color(color); + } else { + auto color = mt::Param::s().other_bekill_color; + element->mutable_union_obj_1()->set_color(color); + } + }; + auto proc_killer = + [dead_hum, info, killer_team_id] (cs::MFRichTextElement* element, Human* hum) + { + + }; dead_hum->room->TraversePlayerList ( - [dead_hum, info, &pb_msg, killer_team_id] + [dead_hum, info, &pb_msg, killer_team_id, &elements, proc_dead, proc_killer] (Player* hum) -> bool { + if (elements.size() == 1) { + proc_dead(elements.at(0), hum); + } else if (elements.size() == 2) { + proc_killer(elements.at(1), hum); + proc_dead(elements.at(0), hum); + } else { + } for (int i = 0; i < pb_msg->elements_size(); ++i) { auto element = pb_msg->mutable_elements(i); if (element->element_type() == kTextElement) {