From fdc93e9592be7de1dff464c911aae6489f1a6eed Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 11 一月 2019 18:23:21 +0800
Subject: [PATCH] 5512 子 【开发】【1.4】跨服竞技场 / 【后端】【1.4】跨服竞技场开发 --  指定gameworld的npc管理

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/CrossRealmPlayer.py |   41 ++++++++++++++++++++++++++++++++++-------
 1 files changed, 34 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 361a3f3..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
@@ -85,6 +112,6 @@
     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