From d984b10cc41a0fceadc595fe19994139328645f4 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 22 Apr 2020 16:44:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8C=B9=E9=85=8D=E5=88=B05?= =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/gameserver/room.cc | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index e0031e7..9380a96 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -1298,6 +1298,10 @@ void Room::CombineTeam() need_combine_teams_copy.erase(team_id1); } else { pair1.second = new_team_num; + if (need_combine_teams_copy.find(pair1.first) != + need_combine_teams_copy.end()) { + need_combine_teams_copy[pair1.first] = new_team_num; + } } need_combine_teams.erase(team_id2); need_combine_teams_copy.erase(team_id2); @@ -1308,6 +1312,10 @@ void Room::CombineTeam() need_combine_teams_copy.erase(team_id1); } else { pair1.second = new_team_num; + if (need_combine_teams_copy.find(pair1.first) != + need_combine_teams_copy.end()) { + need_combine_teams_copy[pair1.first] = new_team_num; + } } need_combine_teams.erase(team_id2); need_combine_teams_copy.erase(team_id2); @@ -1317,6 +1325,10 @@ void Room::CombineTeam() need_combine_teams_copy.erase(team_id2); } else { pair2.second = new_team_num; + if (need_combine_teams.find(pair2.first) != + need_combine_teams.end()) { + need_combine_teams[pair2.first] = new_team_num; + } } need_combine_teams.erase(team_id1); need_combine_teams_copy.erase(team_id1); @@ -1748,9 +1760,6 @@ void Room::SecondRandPoint() hum->born_point = AllocBornPoint(hum); } for (auto& pair : team_hash_) { - if (pair.second.size() < 2) { - continue; - } Human* target = nullptr; for (Human* hum : pair.second) { if (!target) { @@ -1761,18 +1770,20 @@ void Room::SecondRandPoint() DecBornPointHumanNum(hum->born_point, hum); } hum->born_point = target->born_point; - if (!hum->born_point) { - hum->SetX(DEFAULT_BORN_POINT_X + rand() % 100); - hum->SetY(DEFAULT_BORN_POINT_Y + rand() % 200); - } else { + if (hum->born_point) { IncBornPointHumanNum(hum->born_point, hum); - hum->SetPos(hum->born_point->RandPoint()); } - hum->FindLocation(); - hum->RefreshView(); - grid_service.MoveHuman(hum); } + } //end if + if (!hum->born_point) { + hum->SetX(DEFAULT_BORN_POINT_X + rand() % 100); + hum->SetY(DEFAULT_BORN_POINT_Y + rand() % 200); + } else { + hum->SetPos(hum->born_point->RandPoint()); } + hum->FindLocation(); + hum->RefreshView(); + grid_service.MoveHuman(hum); } } }