From 545986a8fdde345b28cf3004be84c6cfe79a3dc1 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 19 四月 2019 11:29:12 +0800 Subject: [PATCH] 6459 【后端】【2.0】缥缈仙域开发单(跨服分区逻辑优化,支持跨服妖王分区状态同步) --- ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py | 35 +++++++++++------------------------ 1 files changed, 11 insertions(+), 24 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py index 778f451..c29a919 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py @@ -55,11 +55,11 @@ return opName.decode('gbk').encode(GameWorld.GetCharacterEncoding()) + playerName -def GetCrossCommZoneIpyDataByZoneID(zoneID): - ## 获取跨服常规分区 +def GetCrossZoneIpyDataByZoneID(mapID, zoneID): + ## 获取跨服分区 + zoneTypeName = ChConfig.Def_CrossZoneTypeName.get(mapID, "CrossZoneComm") crossZoneName = GameWorld.GetCrossZoneName() - ipyData = IpyGameDataPY.GetIpyGameDataNotLog("CrossZoneComm", crossZoneName, zoneID) - return ipyData + return IpyGameDataPY.GetIpyGameData(zoneTypeName, crossZoneName, zoneID) def GetCrossZoneIpyDataByServerGroupID(mapID, serverGroupID): ## 获取跨服分区 @@ -77,30 +77,17 @@ GameWorld.ErrLog("没有找到跨服玩法对应分区! mapID=%s, serverGroupID=%s, zoneTypeName=%s" % (mapID, serverGroupID, zoneTypeName)) return -def GetCrossCommZoneIpyDataByServerGroupID(serverGroupID): - ## 获取跨服常规分区 - crossZoneName = GameWorld.GetCrossZoneName() - ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition("CrossZoneComm", {"CrossZoneName":crossZoneName}, True) - if not ipyDataList: - return - for ipyData in ipyDataList: - serverGroupIDList = ipyData.GetServerGroupIDList() - for serverGroupIDInfo in serverGroupIDList: - if (isinstance(serverGroupIDInfo, tuple) and serverGroupIDInfo[0] <= serverGroupID <= serverGroupIDInfo[1]) \ - or (isinstance(serverGroupIDInfo, int) and serverGroupIDInfo == serverGroupID): - return ipyData - return - -def GetCrossCommZoneIpyDataListByServerGroupID(serverGroupID): +def GetCrossZoneIpyDataListByServerGroupID(mapID, serverGroupID): ## 获取跨服常规分区列表 if serverGroupID: - ipyData = GetCrossCommZoneIpyDataByServerGroupID(serverGroupID) + ipyData = GetCrossZoneIpyDataByServerGroupID(mapID, serverGroupID) if not ipyData: return ipyDataList = [ipyData] else: crossZoneName = GameWorld.GetCrossZoneName() - ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition("CrossZoneComm", {"CrossZoneName":crossZoneName}, True) + zoneTypeName = ChConfig.Def_CrossZoneTypeName.get(mapID, "CrossZoneComm") + ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition(zoneTypeName, {"CrossZoneName":crossZoneName}, True) return ipyDataList def GetServerCrossZoneMapIpyData(mapID, serverGroupID=0): @@ -112,11 +99,11 @@ if GameWorld.IsCrossServer(): return serverGroupID = GameWorld.GetServerGroupID() - zoneIpyData = GetCrossCommZoneIpyDataByServerGroupID(serverGroupID) + zoneIpyData = GetCrossZoneIpyDataByServerGroupID(mapID, serverGroupID) if not zoneIpyData: return - commZoneID = zoneIpyData.GetZoneID() - return IpyGameDataPY.GetIpyGameDataByCondition(tableName, {"ZoneID":commZoneID}) + zoneID = zoneIpyData.GetZoneID() + return IpyGameDataPY.GetIpyGameDataByCondition(tableName, {"ZoneID":zoneID}) def IsCrossServerOpen(): ## 跨服服务器是否开放中 -- Gitblit v1.8.0