From 490aeb49ba64a080efbca0a884c9c6cdd8dcf8a2 Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期四, 10 一月 2019 19:50:32 +0800 Subject: [PATCH] 5740 境界(还原) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossRealmPlayer.py | 43 ++++++++++++++++++++++++++++++++++++------- 1 files changed, 36 insertions(+), 7 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossRealmPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossRealmPlayer.py index 11bd325..13c75db 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossRealmPlayer.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossRealmPlayer.py @@ -17,6 +17,7 @@ import GameWorld import ReadChConfig import PlayerControl +import IpyGameDataPY import IPY_GameWorld import ShareDefine import ChConfig @@ -26,13 +27,39 @@ def GetCrossPlayerName(curPlayer): # 通过游戏账号中的平台标志获取名称,目前为spid playerName = curPlayer.GetPlayerName() - nameFormat = ReadChConfig.GetPyMongoConfig("Merge", "NameFormat", True) - if not nameFormat: + + opName = ReadChConfig.GetPyMongoConfig("Merge", "OpName_%s_%s" % (GameWorld.GetPlayerPlatform(curPlayer), + GameWorld.GetPlayerServerSID(curPlayer))) + + if not opName: return playerName - opName = ReadChConfig.GetPyMongoConfig("Merge", "OpName_%s" % GameWorld.GetPlayerPlatform(curPlayer)) + return opName.decode('gbk').encode(GameWorld.GetCharacterEncoding()) + playerName + +def GetServerCrossZoneIpyData(mapID, serverGroupID=0): + ## 获取本服对应跨服玩法分区地图信息 + if mapID not in ChConfig.Def_CrossZoneTableName: + return + if not serverGroupID: + serverGroupID = GameWorld.GetServerGroupID() + + tableName = ChConfig.Def_CrossZoneTableName[mapID] + ipyDataMgr = IpyGameDataPY.IPY_Data() + if not hasattr(ipyDataMgr, "Get%sCount" % tableName): + return - return (nameFormat%{"opname":opName, "sid":GameWorld.GetPlayerServerID(curPlayer)}).decode('gbk').encode(GameWorld.GetCharacterEncoding()) + playerName + for i in xrange(getattr(ipyDataMgr, "Get%sCount" % tableName)()): + ipyData = getattr(ipyDataMgr, "Get%sByIndex" % tableName)(i) + 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 IsCrossServerOpen(): + ## 跨服服务器是否开放中 + return GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_CrossServerOpen) #// C1 04 主动退出跨服 #tagCMExitCrossRealm # @@ -60,7 +87,7 @@ GameWorld.SendMsgToClientServer(ShareDefine.CrossServerMsg_ExitCrossServer, playerID, [serverGroupID]) # 设置非跨服状态,踢下线 - PlayerControl.SetCrossRealmState(curPlayer, 0) + PlayerControl.SetCrossMapID(curPlayer, 0) curPlayer.Kick(IPY_GameWorld.disMapServerClose) GameWorld.Log("PlayerExitCrossServer...", curPlayer.GetPlayerID()) return @@ -78,11 +105,13 @@ ## 玩家退出跨服处理,本服的逻辑处理 GameWorld.Log("DoExitCrossRealm...", curPlayer.GetPlayerID()) curPlayer.SetVisible(True) + curPlayer.SetSight(1) + curPlayer.RefreshView() curPlayer.SetSight(ChConfig.Def_PlayerSight_Default) curPlayer.RefreshView() curPet = curPlayer.GetPetMgr().GetFightPet() if curPet: curPet.SetVisible(True) - if PlayerControl.GetCrossRealmState(curPlayer): - PlayerControl.SetCrossRealmState(curPlayer, 0) + if PlayerControl.GetCrossMapID(curPlayer): + PlayerControl.SetCrossMapID(curPlayer, 0) return -- Gitblit v1.8.0