From 149b773f4bea05fa4869d35c2f00a12cb2c395ed Mon Sep 17 00:00:00 2001 From: flswld Date: Fri, 14 Apr 2023 22:41:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gs/game/player_fight_sync.go | 6 +++++- gs/game/player_scene.go | 10 +++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/gs/game/player_fight_sync.go b/gs/game/player_fight_sync.go index 6d6e36a3..3e9981f5 100644 --- a/gs/game/player_fight_sync.go +++ b/gs/game/player_fight_sync.go @@ -260,7 +260,7 @@ func (g *Game) SceneBlockAoiPlayerMove(player *model.Player, world *World, scene if !world.GetMultiplayer() { // 单人世界直接卸载group g.RemoveSceneGroup(player, scene, groupConfig) - } else { + } else if !WORLD_MANAGER.IsBigWorld(world) { // 多人世界group附近没有任何玩家则卸载 remove := true for _, otherPlayer := range scene.GetAllPlayer() { @@ -418,6 +418,10 @@ func (g *Game) BigWorldAoiPlayerMove(player *model.Player, world *World, scene * } // 新格子添加玩家 bigWorldAoi.AddObjectToGrid(int64(player.PlayerID), activeWorldAvatar, newGid) + // aoi区域玩家数量限制 + if len(bigWorldAoi.GetObjectListByGid(newGid)) > 8 { + g.LogoutPlayer(player.PlayerID) + } } } diff --git a/gs/game/player_scene.go b/gs/game/player_scene.go index 246d25ba..cd4725e9 100644 --- a/gs/game/player_scene.go +++ b/gs/game/player_scene.go @@ -60,7 +60,7 @@ func (g *Game) EnterSceneReadyReq(player *model.Player, payloadMsg pb.Message) { if !world.GetMultiplayer() { // 单人世界直接卸载group g.RemoveSceneGroup(player, oldScene, groupConfig) - } else { + } else if !WORLD_MANAGER.IsBigWorld(world) { // 多人世界group附近没有任何玩家则卸载 remove := true for _, otherPlayer := range oldScene.GetAllPlayer() { @@ -343,6 +343,14 @@ func (g *Game) EnterSceneDoneReq(player *model.Player, payloadMsg pb.Message) { } g.JoinOtherWorld(otherPlayer, player) } + + if WORLD_MANAGER.IsBigWorld(world) { + // aoi区域玩家数量限制 + bigWorldAoi := world.GetBigWorldAoi() + if len(bigWorldAoi.GetObjectListByPos(float32(player.Pos.X), float32(player.Pos.Y), float32(player.Pos.Z))) > 8 { + g.LogoutPlayer(player.PlayerID) + } + } } func (g *Game) PostEnterSceneReq(player *model.Player, payloadMsg pb.Message) {