From 3ebbdf55a0713837f314d4c78201c3b56ad49586 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 23 Nov 2022 10:26:13 +0800 Subject: [PATCH] 1 --- server/gameserver/human.cc | 85 +++++++------------------------------- 1 file changed, 14 insertions(+), 71 deletions(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 7cd0bf4e..976080fd 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -980,66 +980,6 @@ void Human::FindPathInMapService() void Human::FillSMGameOver(cs::SMGameOver& msg) { int alive_team_num = room->GetAliveTeamNum(); - if (stats.rank <= 0) { - std::vector human_list; - room->TraverseHumanList(a8::XParams(), - [&human_list] (Human* hum, a8::XParams& param) -> bool - { - if (hum->leave_frameno_ == 0 || - hum->leave_frameno_ > hum->room->GetBattleStartFrameNo()) { - human_list.push_back(hum); - } - return true; - }); - std::sort(human_list.begin(), human_list.end(), - [] (Human* a, Human* b ) - { - if (a->real_dead && b->real_dead) { - if (a->dead_frameno == b->dead_frameno) { - return a->GetUniId() < b->GetUniId(); - } else { - return a->dead_frameno == 0 || - (b->dead_frameno != 0 && a->dead_frameno > b->dead_frameno); - } - } else { - if (a->real_dead) { - return false; - } - if (b->real_dead) { - return true; - } - return a->GetUniId() < b->GetUniId(); - } - }); - int rank = human_list.size(); - for (size_t i = 0; i < human_list.size(); ++i) { - if (human_list[i] == this) { - rank = i + 1; - break; - } - } - if (alive_team_num == 1) { - if (room->GetAliveTeam() == GetTeam()) { - rank = 1; - } - } - stats.rank = rank; - if (room->IsPveRoom()) { - } else { - stats.victory = stats.rank == 1; - if (GetTeam()->GetAliveNum() <= 0) { - GetTeam()->team_rank = room->GetAliveTeamNum(); - } - if (stats.victory) { - GetTeam()->team_rank = 1; - } - } - } - if (room->IsPveRoom()) { - if (stats.pve_kill_boss) { - stats.victory = true; - } - } if (stats.victory) { msg.set_watchable(false); @@ -1073,11 +1013,7 @@ void Human::FillSMGameOver(cs::SMGameOver& msg) ( [this, &msg] (Human* member) -> bool { -#if 1 { -#else - if (this != member) { -#endif member->FillMFTeamData(this, msg.add_team_data(), true); cs::MFPlayerStats* p = msg.add_player_stats(); member->FillMFPlayerStats(p); @@ -1085,12 +1021,6 @@ void Human::FillSMGameOver(cs::SMGameOver& msg) return true; }); } -#if 0 - { - cs::MFPlayerStats* p = msg.add_player_stats(); - FillMFPlayerStats(p); - } -#endif { msg.set_total_team_num(room->GetTeamNum()); if (room->IsPveRoom()) { @@ -2215,8 +2145,21 @@ void Human::GenBattleReportData(a8::MutableXObject* params) rank = 1; } } + stats.rank = rank; + if (room->IsPveRoom()) { + if (stats.pve_kill_boss) { + stats.victory = true; + } + } else { + stats.victory = stats.rank == 1; + if (GetTeam()->GetAliveNum() <= 0) { + GetTeam()->team_rank = room->GetAliveTeamNum(); + } + if (stats.victory) { + GetTeam()->team_rank = 1; + } + } } - stats.rank = rank; if (!stats.statemented) { stats.Statement(this); }