diff --git a/server/hallserver/room/room.go b/server/hallserver/room/room.go index dfddf6b2..b8ac6a9e 100644 --- a/server/hallserver/room/room.go +++ b/server/hallserver/room/room.go @@ -165,6 +165,10 @@ func (this *room) canJoin(member common.Player, msg *cs.CMJoinRoom) bool { return true } +func (this *room) isTeamFull() bool { + return this.getTeamNum() >= this.config.maxTeamNum +} + func (this *room) join(hum common.Player, msg *cs.CMJoinRoom) bool { if !this.canJoin(hum, msg) { return false diff --git a/server/hallserver/room/roommgr.go b/server/hallserver/room/roommgr.go index 5c930a42..0667eb0b 100644 --- a/server/hallserver/room/roommgr.go +++ b/server/hallserver/room/roommgr.go @@ -248,6 +248,13 @@ func (this *roomMgr) CMLeaveObserver(hdr *f5.MsgHdr, msg *cs.CMLeaveObserver) { return; } + if roomPtr.isTeamFull() { + rspMsg.Errcode = proto.Int32(3) + rspMsg.Errmsg = proto.String("room team is full") + hum.SendMsg(&rspMsg) + return + } + t := memberPtr.team roomPtr.removeObTeam(t) roomPtr.addTeam(t)