From aee2a8a5b40285d7751aaa2813a230c099d94eff Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 6 Nov 2019 20:32:21 +0800 Subject: [PATCH] 1 --- server/gameserver/human.cc | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 6a209be..5e12d29 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -2363,16 +2363,23 @@ void Human::OnDie() } } } + std::set sent_over_humans; if (!leave_) { if (!HasNoDownedTeammate()) { if (team_members) { for (auto& member : *team_members) { + if (sent_over_humans.find(member) != sent_over_humans.end()) { + continue; + } if (member == this) { member->SendGameOver(); + sent_over_humans.insert(member); } else { if (member->real_dead) { member->SendGameOver(); + sent_over_humans.insert(member); } else if (member->downed) { + #if 0 a8::XParams* timer_param = room->xtimer.MutableParams(member->downed_timer); member->stats.killer_id = timer_param->param1; member->stats.killer_name = timer_param->param2.GetString(); @@ -2388,24 +2395,34 @@ void Human::OnDie() room->xtimer.DeleteTimer(member->downed_timer); } member->downed_timer = nullptr; + sent_over_humans.insert(member); + #endif } } } } else { SendGameOver(); + sent_over_humans.insert(this); } } else { SendGameOver(); + sent_over_humans.insert(this); } } if (room->GetAliveTeamNum() == 1) { std::set* alive_team = room->GetAliveTeam(); if (team_members != alive_team) { - SendGameOver(); + if (sent_over_humans.find(this) == sent_over_humans.end()) { + SendGameOver(); + sent_over_humans.insert(this); + } } if (alive_team) { for (Human* member : *alive_team) { - member->SendGameOver(); + if (sent_over_humans.find(member) == sent_over_humans.end()) { + member->SendGameOver(); + sent_over_humans.insert(member); + } } } }