From fc2b1c80a0c1a93030aacf5ba458d04f6179071f Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 13 十一月 2018 20:30:50 +0800 Subject: [PATCH] 2250 【1.2】队伍分线成员管理异常 --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py | 43 ++++++++++++++++++++++++++++++++++--------- 1 files changed, 34 insertions(+), 9 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py index cfcf366..819bdaf 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTeam.py @@ -913,6 +913,26 @@ DR_Team(eventName, teamID, drDict) return +def SyncMapServerPlayerNoTeam(curPlayer): + ## 同步地图玩家没有队伍,切图时调用 + teamInfo = ChGameToMapPyPack.tagGMTeamInfo() + teamInfo.PlayerID = curPlayer.GetPlayerID() + teamInfo.TeamID = 0 + teamInfo.TeamLV = 0 + teamInfo.MemInfoList = [] + teamInfo.MemCnt = len(teamInfo.MemInfoList) + NetPackCommon.SendPyPackToMapServer(curPlayer.GetLineNO(), curPlayer.GetRealMapID(), teamInfo) + return + +def SyncMapServerPlayerLeaveTeam(curPlayer, teamID): + ## 同步地图玩家离开队伍 + leavePack = ChGameToMapPyPack.tagGMPlayerLeaveTeam() + leavePack.PlayerID = curPlayer.GetPlayerID() + leavePack.CopyMapID = curPlayer.GetFBID() + leavePack.TeamID = teamID + NetPackCommon.SendPyPackToMapServer(curPlayer.GetLineNO(), curPlayer.GetRealMapID(), leavePack) + return + #--------------------------------------------------------------------- #// B9 03 修改队伍信息 #tagCGChangeTeamInfo @@ -1339,7 +1359,8 @@ #GameServer清除玩家队伍ID为空 delPlayer.SetTeam(None) #通知MapServerd队伍变更, 在mapserver构建目前队伍 - delPlayer.MapServer_Sync_Team(0) + #delPlayer.MapServer_Sync_Team(0) + SyncMapServerPlayerLeaveTeam(delPlayer, curTeam.GetTeamID()) #玩家离开副本 delPlayer.MapServer_LeaveFB() if IsTeamMatchingPlayer(curTeam.GetTeamID()): @@ -1393,7 +1414,8 @@ #GameServer玩家队伍为空 curPlayer.SetTeam(None) #通知MapServerd队伍变更 - curPlayer.MapServer_Sync_Team(0) + #curPlayer.MapServer_Sync_Team(0) + SyncMapServerPlayerLeaveTeam(curPlayer, curTeam.GetTeamID()) __DoLogic_PlayerTeamChange(curPlayer) if curMember.GetTeamLV() != IPY_GameServer.tmlLeader: @@ -1793,11 +1815,12 @@ if curTeam == None: return - if curTeam.GetTeamPlayerCount() <= 1: - #补救完毕, 队伍中只有一个人, 删除这个队伍 - GameWorld.Log('玩家(%s)仍然有队伍(%s), 补救完毕, 队伍中只有一个人, 删除这个队伍' % (playerID, curTeamID)) - DeleteTeam(curTeam, tick) - return + #允许存在单人队伍,暂屏蔽该逻辑 +# if curTeam.GetTeamPlayerCount() <= 1: +# #补救完毕, 队伍中只有一个人, 删除这个队伍 +# GameWorld.Log('玩家(%s)仍然有队伍(%s), 补救完毕, 队伍中只有一个人, 删除这个队伍' % (playerID, curTeamID)) +# DeleteTeam(curTeam, tick) +# return GameWorld.Log('玩家(%s)仍然有队伍(%s), 补救' % (playerID, curTeamID)) curPlayer.SetTeamID(curTeamID) @@ -1808,7 +1831,8 @@ curPlayer.SetTeam(None) curPlayer.Sync_LeaveTeam(1) #通知MapServer, 玩家已经队伍了, 刷新玩家的TeamID - curPlayer.MapServer_Sync_Team(0) + #curPlayer.MapServer_Sync_Team(0) + SyncMapServerPlayerLeaveTeam(curPlayer, curTeamID) gameMap = GameWorld.GetMap(curPlayer.GetMapID()) if gameMap and gameMap.GetMapFBType() == ChConfig.fbtTeam: curPlayer.MapServer_LeaveFB() @@ -1929,7 +1953,8 @@ # 玩家进入组队副本,则停止匹配 if gameMap.GetMapFBType() == ChConfig.fbtTeam: DelPlayerIDFromMatchingList(curPlayer) - + SyncMapServerPlayerNoTeam(curPlayer) # 没有队伍的时候切图也通知地图 + return def PlayerTeamMemberRefresh(curPlayer, refreshType, value, tick): -- Gitblit v1.8.0