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 | 36 +++++++++++++++++++++++++++++++-----
1 files changed, 31 insertions(+), 5 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 7bb2001..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
@@ -27,13 +28,38 @@
# 通过游戏账号中的平台标志获取名称,目前为spid
playerName = curPlayer.GetPlayerName()
- opName = ReadChConfig.GetPyMongoConfig("Merge", "OpName_%s_%s" % (GameWorld.GetPlayerPlatform(curPlayer)),
- GameWorld.GetPlayerServerSID(curPlayer))
+ opName = ReadChConfig.GetPyMongoConfig("Merge", "OpName_%s_%s" % (GameWorld.GetPlayerPlatform(curPlayer),
+ GameWorld.GetPlayerServerSID(curPlayer)))
if not opName:
return playerName
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
+
+ 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
#
@@ -61,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
@@ -86,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