diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index ecddb04e..66316f18 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -2085,7 +2085,13 @@ void Room::RandRemoveAndroid() } if (hum) { if (hum->team_id != 0) { - team_hash_.erase(hum->team_id); + Team* team = GetTeam(hum->team_id); + if (team) { + team->RemoveMember(hum); + if (team->GetMemberNum() < 1) { + team_hash_.erase(hum->team_id); + } + } } if (hum->born_point) { DecBornPointHumanNum(hum->born_point, hum); @@ -2102,6 +2108,9 @@ void Room::RandRemoveAndroid() for (auto& pair : human_hash_) { pair.second->RemovePartObjects(hum); } + for (auto& pair : human_hash_) { + pair.second->RemoveObjects(hum); + } frame_event.AddExitGame(hum->GetWeakPtrRef()); } } diff --git a/server/gameserver/team.cc b/server/gameserver/team.cc index aac3c615..53a44792 100644 --- a/server/gameserver/team.cc +++ b/server/gameserver/team.cc @@ -566,3 +566,12 @@ int Team::GetPlayerNum() } return num; } + +void Team::RemoveMember(Human* member) +{ + members_.erase(member); + first_member_ = nullptr; + for (auto hum : members_) { + first_member_ = hum; + } +} diff --git a/server/gameserver/team.h b/server/gameserver/team.h index 595bb698..452dbde9 100644 --- a/server/gameserver/team.h +++ b/server/gameserver/team.h @@ -38,6 +38,7 @@ class Team int GetAliveNum(); int GetAlivePlayerNum(); void AddMember(Human* member); + void RemoveMember(Human* member); bool IsFull(); void CombineBornPoint(); void CombineTeam(Team* b_team); diff --git a/server/robotserver/android_agent.cc b/server/robotserver/android_agent.cc index 08aa0c96..208d1441 100644 --- a/server/robotserver/android_agent.cc +++ b/server/robotserver/android_agent.cc @@ -181,7 +181,7 @@ behaviac::EBTStatus AndroidAgent::CoJoin() msg.set_auto_fill(1); msg.set_name(""); msg.set_avatar_url(""); - msg.set_mapid(2007); + msg.set_mapid(2002); msg.set_hero_id(30800); //weapons msg.set_session_id(owner_->GetSessionId());