From 4a2a16d449cd7cfc7b6aaaa1e725ca531f6436d1 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 1 Sep 2021 19:19:41 +0800 Subject: [PATCH] 1 --- server/gameserver/killmgr.cc | 95 +++++++++++++++++------------------- server/gameserver/killmgr.h | 7 +-- 2 files changed, 50 insertions(+), 52 deletions(-) diff --git a/server/gameserver/killmgr.cc b/server/gameserver/killmgr.cc index b1599e5..99d6433 100644 --- a/server/gameserver/killmgr.cc +++ b/server/gameserver/killmgr.cc @@ -18,56 +18,52 @@ void KillMgr::UnInit() } +/* + master.name + killer.name + dead.name + weapon.name + weapon.text_icon + */ void KillMgr::OnHumanDead(Human* dead_hum, KillInfo* info) { - { - Entity* hum = dead_hum->room->GetEntityByUniId(info->killer_id); - if (hum && hum->IsEntityType(ET_Player)) { - Creature* killer = (Creature*)hum; - if (info->killer_id == dead_hum->GetUniId()) { - #if 0 - SendRollMsgEx(info, + std::shared_ptr pb_msg = std::make_shared(); + Entity* killer = dead_hum->room->GetEntityByUniId(info->killer_id); + if (killer && killer->IsEntityType(ET_Player)) { + if (info->killer_id == dead_hum->GetUniId()) { + PreprocessRollMsg(pb_msg, TEXT("battle_server_dead_specate", "%s 自杀").c_str(), { - killer_name + info->killer_name }); - #endif - } else { - #if 0 - SendRollMsgEx - (info, - TEXT("battle_server_dead_weapon", "%s 使用 ${weapon_text_icon} 干掉了 %s").c_str(), - { - killer_name, - name - } - ); - #endif - } } else { - #if 0 - switch (weapon_id) { - case VW_SafeArea: - { - SendRollMsgEx - (info, - TEXT("battle_server_dead_gas", "%s 被${weapon_text_icon}干掉").c_str(), - { - name - }); - } - break; - default: - { - } - break; - } - #endif + PreprocessRollMsg(pb_msg, + TEXT("battle_server_dead_weapon", "%s 使用 ${weapon_text_icon} 干掉了 %s").c_str(), + { + info->killer_name, + dead_hum->name + }); + } + } else { + Entity* root_master = dead_hum->room->GetEntityByUniId(info->root_master_id); + if (root_master && root_master->IsEntityType(ET_Player)) { } } + #if 0 + { +#if 0 + SendRollMsgEx + (info, + TEXT("battle_server_dead_gas", "%s 被${weapon_text_icon}干掉").c_str(), + { + name + }); +#endif + } + #endif } -void KillMgr::PreprocessRollMsg(cs::SMRollMsg* pb_msg, +void KillMgr::PreprocessRollMsg(std::shared_ptr pb_msg, const char* fmt, std::initializer_list args) { @@ -150,35 +146,36 @@ void KillMgr::PreprocessRollMsg(cs::SMRollMsg* pb_msg, void KillMgr::BoradcastRollMsg(Human* dead_hum, KillInfo* info, int killer_team_id, - cs::SMRollMsg* pb_msg) + std::shared_ptr pb_msg) { - KillInfo* info_copy = new KillInfo; - *info_copy = *info; + std::shared_ptr* pb_msg_copy = new std::shared_ptr; + *pb_msg_copy = pb_msg; dead_hum->room->xtimer.AddDeadLineTimerAndAttach ( 0, a8::XParams() .SetSender(dead_hum) - .SetParam1(info_copy) - .SetParam2(pb_msg) + .SetParam1(pb_msg_copy) .SetParam3(killer_team_id), [] (const a8::XParams& param) { Human* dead_hum = (Human*)param.sender.GetUserData(); KillInfo* info = (KillInfo*)param.param1.GetUserData(); - cs::SMRollMsg* pb_msg = (cs::SMRollMsg*)param.param2.GetUserData(); + std::shared_ptr* pb_msg = (std::shared_ptr*) + param.param2.GetUserData(); int killer_team_id = param.param3; KillMgr::Instance()->BoradcastRollMsgCb (dead_hum, info, killer_team_id, - pb_msg); + *pb_msg); }, &dead_hum->xtimer_attacher.timer_list_, [] (const a8::XParams& param) { KillInfo* info = (KillInfo*)param.param1.GetUserData(); - cs::SMRollMsg* pb_msg = (cs::SMRollMsg*)param.param2.GetUserData(); + std::shared_ptr* pb_msg = (std::shared_ptr*) + param.param2.GetUserData(); delete pb_msg; delete info; } @@ -188,7 +185,7 @@ void KillMgr::BoradcastRollMsg(Human* dead_hum, void KillMgr::BoradcastRollMsgCb(Human* dead_hum, KillInfo* info, int killer_team_id, - cs::SMRollMsg* pb_msg) + std::shared_ptr pb_msg) { dead_hum->room->TraversePlayerList (a8::XParams(), diff --git a/server/gameserver/killmgr.h b/server/gameserver/killmgr.h index 9d0390d..660878e 100644 --- a/server/gameserver/killmgr.h +++ b/server/gameserver/killmgr.h @@ -7,6 +7,7 @@ namespace cs struct KillInfo { + int root_master_id = 0; int killer_id = 0; std::string killer_name; int weapon_id = 0; @@ -27,15 +28,15 @@ class KillMgr : public a8::Singleton void OnHumanDead(Human* dead_hum, KillInfo* info); private: - void PreprocessRollMsg(cs::SMRollMsg* pb_msg, + void PreprocessRollMsg(std::shared_ptr pb_msg, const char* fmt, std::initializer_list args); void BoradcastRollMsg(Human* dead_hum, KillInfo* info, int killer_team_id, - cs::SMRollMsg* pb_msg); + std::shared_ptr pb_msg); void BoradcastRollMsgCb(Human* dead_hum, KillInfo* info, int killer_team_id, - cs::SMRollMsg* pb_msg); + std::shared_ptr pb_msg); };