diff --git a/server/gameserver/matchmgr.cc b/server/gameserver/matchmgr.cc index 6a6112bb..d88fe43b 100644 --- a/server/gameserver/matchmgr.cc +++ b/server/gameserver/matchmgr.cc @@ -54,6 +54,9 @@ void MatchMgr::_CMJoin(f8::MsgHdr& hdr, const cs::CMJoin& msg) a8::XPrintf("newteam %s\n", {msg.team_uuid()}); #endif } else { + if (!team->IsValidMember(msg)) { + return; + } if (team->IsRawMember(msg.account_id())) { return; } @@ -117,13 +120,15 @@ bool MatchMgr::NeedMatch(const cs::CMJoin& msg) msg.team_mode() == 1 && msg.auto_fill() && msg.team_slot_num() > 1 && + msg.team_slot_num() == 3 && msg.team_slot_num() < MAX_TEAM_NUM && - msg.team_members().size() == msg.team_slot_num(); + msg.team_members().size() <= msg.team_slot_num(); if (need) { bool found = false; for (int i = 0; i < msg.team_members().size(); ++i) { if (msg.account_id() == msg.team_members(i).account_id()) { found = true; + break; } } if (found) {