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; } } }