From 56655f41fb1ed4af1f2aeb235892ae10fa5ffaf3 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 31 Mar 2020 14:05:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=88=E5=B9=B6=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/room.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 829f77b..255e8b4 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -1212,7 +1212,9 @@ void Room::CombineTeam() for (auto& pair : team_hash_) { for (Human* hum : pair.second) { if (hum->auto_fill && !hum->team_uuid.empty()) { - first_team_id = pair.first; + if (first_team_id == 0) { + first_team_id = pair.first; + } need_combine_teams[pair.first] = pair.second.size(); total_count += pair.second.size(); break; @@ -1266,6 +1268,7 @@ void Room::CombineTeam() } if (team_id1 != team_id2) { if (pair1.second + pair2.second <= MAX_TEAM_NUM) { + int new_team_num = pair1.second + pair2.second; { std::set& team1_members = team_hash_[team_id1]; std::set& team2_members = team_hash_[team_id2]; @@ -1290,6 +1293,8 @@ void Room::CombineTeam() if (pair1.second + pair2.second >= first_team_num) { need_combine_teams.erase(team_id1); need_combine_teams_copy.erase(team_id1); + } else { + pair1.second = new_team_num; } need_combine_teams.erase(team_id2); need_combine_teams_copy.erase(team_id2); @@ -1300,6 +1305,8 @@ void Room::CombineTeam() if (pair1.second + pair2.second >= MAX_TEAM_NUM) { need_combine_teams.erase(team_id1); need_combine_teams_copy.erase(team_id1); + } else { + pair1.second = new_team_num; } } else { need_combine_teams.erase(team_id1); @@ -1307,6 +1314,8 @@ void Room::CombineTeam() if (pair1.second + pair2.second >= MAX_TEAM_NUM) { need_combine_teams.erase(team_id2); need_combine_teams_copy.erase(team_id2); + } else { + pair2.second = new_team_num; } } }