diff --git a/server/gameserver/mobabattle.cc b/server/gameserver/mobabattle.cc index 36fa7476..2ec3c83b 100644 --- a/server/gameserver/mobabattle.cc +++ b/server/gameserver/mobabattle.cc @@ -35,6 +35,11 @@ int MobaBattle::GetMemberNum() return member_id_hash_.size(); } +int MobaBattle::GetTeamNum() +{ + return uuid_hash_.size(); +} + void MobaBattle::TraverseMemberList(std::function func) { for (auto& pair : member_id_hash_) { diff --git a/server/gameserver/mobabattle.h b/server/gameserver/mobabattle.h index 3c22e63e..e6e36850 100644 --- a/server/gameserver/mobabattle.h +++ b/server/gameserver/mobabattle.h @@ -26,6 +26,7 @@ class MobaBattle std::shared_ptr GetTeamByTeamUuid(const std::string& team_uuid); bool AllIsJoined(); int GetMemberNum(); + int GetTeamNum(); void TraverseMemberList(std::function func); private: diff --git a/server/gameserver/roommgr.cc b/server/gameserver/roommgr.cc index 99f35c16..e5f63e22 100644 --- a/server/gameserver/roommgr.cc +++ b/server/gameserver/roommgr.cc @@ -1170,6 +1170,16 @@ void RoomMgr::_CMJoinMoba(f8::MsgHdr* hdr, const cs::CMJoin& msg) if (!member) { return; } + if (p->GetTeamNum() < 0 || + p->GetTeamNum() > 2) { + return; + } + p->TraverseMemberList + ( + [] (MobaMember* m) -> bool + { + return true; + }); }; SendGetMobaBattleData(join_msg, cb); }