This commit is contained in:
aozhiwei 2021-09-01 19:19:41 +08:00
parent c900e1537b
commit 4a2a16d449
2 changed files with 50 additions and 52 deletions

View File

@ -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<cs::SMRollMsg> pb_msg = std::make_shared<cs::SMRollMsg>();
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<cs::SMRollMsg> pb_msg,
const char* fmt,
std::initializer_list<a8::XValue> 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<cs::SMRollMsg> pb_msg)
{
KillInfo* info_copy = new KillInfo;
*info_copy = *info;
std::shared_ptr<cs::SMRollMsg>* pb_msg_copy = new std::shared_ptr<cs::SMRollMsg>;
*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<cs::SMRollMsg>* pb_msg = (std::shared_ptr<cs::SMRollMsg>*)
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<cs::SMRollMsg>* pb_msg = (std::shared_ptr<cs::SMRollMsg>*)
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<cs::SMRollMsg> pb_msg)
{
dead_hum->room->TraversePlayerList
(a8::XParams(),

View File

@ -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<KillMgr>
void OnHumanDead(Human* dead_hum, KillInfo* info);
private:
void PreprocessRollMsg(cs::SMRollMsg* pb_msg,
void PreprocessRollMsg(std::shared_ptr<cs::SMRollMsg> pb_msg,
const char* fmt,
std::initializer_list<a8::XValue> args);
void BoradcastRollMsg(Human* dead_hum,
KillInfo* info,
int killer_team_id,
cs::SMRollMsg* pb_msg);
std::shared_ptr<cs::SMRollMsg> pb_msg);
void BoradcastRollMsgCb(Human* dead_hum,
KillInfo* info,
int killer_team_id,
cs::SMRollMsg* pb_msg);
std::shared_ptr<cs::SMRollMsg> pb_msg);
};