From e3120a145fc56ca559b548aecc539fa297670a5b Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期日, 30 十二月 2018 17:50:59 +0800
Subject: [PATCH] 5424 【后端】【1.4】跨服竞技场开发(GM工具增加子服服务器维护)

---
 ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py              |    3 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py          |    1 
 ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/GMT_CrossClientServerMaintain.py |   69 ++++++++++++++++++++++++++++++++++
 ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py                               |    1 
 4 files changed, 74 insertions(+), 0 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/GMT_CrossClientServerMaintain.py b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/GMT_CrossClientServerMaintain.py
new file mode 100644
index 0000000..c76cf70
--- /dev/null
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/GMT_CrossClientServerMaintain.py
@@ -0,0 +1,69 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package GM.Commands.GMT_CrossClientServerMaintain
+#
+# @todo:跨服子服维护
+# @author hxp
+# @date 2018-12-30
+# @version 1.0
+#
+# 详细描述: 跨服子服维护
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2018-12-30 18:00"""
+#-------------------------------------------------------------------------------
+
+import ShareDefine
+import DataRecordPack
+import CrossRealmMsg
+import GameWorld
+import GMCommon
+
+#---------------------------------------------------------------------
+
+## 执行逻辑
+#  @param curPlayer 当前玩家
+#  @param gmCmdDict: 命令字典
+#  @return None
+#  @remarks 函数详细说明.
+def OnExec(orderId, gmCmdDict):
+    
+    GameWorld.Log("GMT_CrossClientServerMaintain gmCmdDict=%s" % str(gmCmdDict))
+    operate = gmCmdDict.get('operate', '')
+    
+    strMsg = ""
+    if GameWorld.IsCrossServer():
+        strMsg = "this server is cross server. can not do!"
+        
+    # 查询跨服状态
+    elif operate == "cross_server_state":
+        isOpen = GameWorld.GetGameWorld().GetDictByKey(ShareDefine.Def_Notify_WorldKey_CrossServerOpen)
+        isConn = GameWorld.GetGameWorld().GetDictByKey(ShareDefine.Def_Notify_WorldKey_CrossServerConnState)
+        strMsg = {"OpenState":isOpen, "ConnState":isConn}
+        
+    # 查询跨服PK状态        
+    elif operate == "cross_pk_state":
+        gameWorld = GameWorld.GetGameWorld()
+        zoneID = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID)
+        seasonID = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID)
+        seasonState = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonState)
+        matchState = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_CrossDailyActionState % ShareDefine.DailyActionID_CrossReamPK)
+        
+        strMsg = {"GroupID":GameWorld.GetServerGroupID(), "ZoneID":zoneID, "SeasonID":seasonID, "SeasonState":seasonState, "MatchState":matchState}
+        
+    # 重新同步跨服状态
+    elif operate == "reconn_cross_Server":
+        CrossRealmMsg.OnGameServerInitOK()
+        
+    else:
+        GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr)
+        return
+    
+    # 记录流向
+    DataRecordPack.DR_ToolGMOperate(0, '', '', 'GMT_CrossClientServerMaintain', str(gmCmdDict))
+    # 回复
+    GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_Success, strMsg=strMsg) 
+    return
+    
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py
index 68fc0cc..2acf04c 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py
@@ -171,6 +171,9 @@
     ## 子服收到跨服服务器信息
     dataPack = IPY_GameServer.IPY_LGCrossLoginResult()
     result = dataPack.GetResult()
+    connState = 1 if result == 1 else 0
+    GameWorld.GetGameWorld().SetDict(ShareDefine.Def_Notify_WorldKey_CrossServerConnState, connState)
+    
     if result != 1:
         GameWorld.Log("--OnClientServerReceiveMsg  disconn")
         CrossRealmPlayer.CrossServerMsg_CrossServerState({"isOpen":0})
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 7698495..ab8a4c2 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -167,6 +167,7 @@
 
 Def_Notify_WorldKey_FamilyPartyInfo = "FamilyPartyInfo"  # 仙盟宴会数据
 
+Def_Notify_WorldKey_CrossServerConnState = "CrossServerConnState"  # 跨服服务器链接状态
 Def_Notify_WorldKey_CrossServerOpen = "CrossServerOpen"  # 跨服服务器是否开启中
 
 Def_Notify_WorldKey_CrossPKZoneID = "CrossPKZoneID"  # 本服跨服PK所属赛区
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index e58e34e..f7ca7ff 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -167,6 +167,7 @@
 
 Def_Notify_WorldKey_FamilyPartyInfo = "FamilyPartyInfo"  # 仙盟宴会数据
 
+Def_Notify_WorldKey_CrossServerConnState = "CrossServerConnState"  # 跨服服务器链接状态
 Def_Notify_WorldKey_CrossServerOpen = "CrossServerOpen"  # 跨服服务器是否开启中
 
 Def_Notify_WorldKey_CrossPKZoneID = "CrossPKZoneID"  # 本服跨服PK所属赛区

--
Gitblit v1.8.0