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

---
 ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmPK.py |   44 +++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 43 insertions(+), 1 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmPK.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmPK.py
index 39b927b..1a90d0e 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmPK.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmPK.py
@@ -46,6 +46,7 @@
         self.playerJob = 0
         self.playerLV = 0
         self.maxHP = 0
+        self.maxProDef = 0
         self.fightPower = 0
         self.realmLV = 0
         self.pkScore = 0
@@ -850,6 +851,7 @@
     job = playerInfoDict["playerJob"] # 职业
     playerLV = playerInfoDict["playerLV"] # 职业
     maxHP = playerInfoDict["maxHP"] # 职业
+    maxProDef = playerInfoDict["maxProDef"] # 护盾
     fightPower = playerInfoDict["fightPower"] # 战斗力
     realmLV = playerInfoDict["realmLV"] # 境界
     pkScore = playerInfoDict["pkScore"] # 当前积分
@@ -874,6 +876,7 @@
     pkPlayer.playerJob = job
     pkPlayer.playerLV = playerLV
     pkPlayer.maxHP = maxHP
+    pkPlayer.maxProDef = maxProDef
     pkPlayer.pkScore = pkScore
     pkPlayer.danLV = danLV
     pkPlayer.fightPower = fightPower
@@ -1015,7 +1018,7 @@
             pkZoneID = roomPlayer.pkZoneID
             roomGroupIDList.append(roomPlayer.serverGroupID)
             readyMemberDict[roomPlayerID] = {"ServerGroupID":roomPlayer.serverGroupID, "Name":roomPlayer.playerName, "Number":num,
-                                             "Job":roomPlayer.playerJob, "LV":roomPlayer.playerLV, "MaxHP":roomPlayer.maxHP}
+                                             "Job":roomPlayer.playerJob, "LV":roomPlayer.playerLV, "MaxHP":roomPlayer.maxHP, "MaxProDef":roomPlayer.maxProDef}
                     
         if not isAllReady:
             continue
@@ -1573,6 +1576,26 @@
 
 ##================================== 以下是子服逻辑 ==========================================
 
+def OnGameServerInitOK():
+    
+    if GameWorld.IsCrossServer():
+        return
+    
+    dbZoneID = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID)
+    dbSeasonID = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID)
+    dbSeasonState = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonState)
+    GameWorld.Log("OnGameServerInitOK dbZoneID=%s,dbSeasonID=%s,dbSeasonState=%s" % (dbZoneID, dbSeasonID, dbSeasonState))
+    
+    gameWorld = GameWorld.GetGameWorld()
+    zoneID = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID)
+    if not zoneID:
+        gameWorld.SetDict(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID, dbZoneID)
+        gameWorld.SetDict(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID, dbSeasonID)
+        gameWorld.SetDict(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonState, dbSeasonState)
+        GameWorld.Log("    服务器启动取DB值设置本服赛区赛季信息: ")
+        
+    return
+
 def OnMapServerInitOK():
     # 通知地图服务器状态
     
@@ -1612,6 +1635,20 @@
     gameWorld.SetDict(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID, seasonID)
     gameWorld.SetDict(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonState, seasonState)
     gameWorld.SetDict(ShareDefine.Def_Notify_WorldKey_CrossDailyActionState % ShareDefine.DailyActionID_CrossReamPK, matchState)
+    
+    # 强制覆盖存DB
+    dbZoneID = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID)
+    dbSeasonID = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID)
+    dbSeasonState = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonState)
+    GameWorld.Log("    before dbZoneID=%s,dbSeasonID=%s,dbSeasonState=%s" % (dbZoneID, dbSeasonID, dbSeasonState))
+    
+    PlayerDBGSEvent.SetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID, zoneID)
+    PlayerDBGSEvent.SetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID, seasonID)
+    PlayerDBGSEvent.SetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonState, seasonState)
+    dbZoneID = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_CrossPKZoneID)
+    dbSeasonID = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID)
+    dbSeasonState = PlayerDBGSEvent.GetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_CrossPKSeasonState)
+    GameWorld.Log("    update dbZoneID=%s,dbSeasonID=%s,dbSeasonState=%s" % (dbZoneID, dbSeasonID, dbSeasonState))
     
     if curSeasonState == 1 and seasonState == 2:
         pass
@@ -1701,6 +1738,10 @@
     GameWorld.Log("===收到跨服服务器通知已准备好的对战PK房间信息处理=== curServerGroupID=%s" % curServerGroupID)
     # serverGroupID, playerName, playerJob
     
+    if not CrossRealmPlayer.IsCrossServerOpen():
+        GameWorld.Log("跨服服务器维护中,不处理!")
+        return
+    
     for roomID, readyMemberDict in readyOKRoomList:
         for playerID, playerInfo in readyMemberDict.items():
             serverGroupID = playerInfo["ServerGroupID"]
@@ -1729,6 +1770,7 @@
                     matchPlayer.Job = readyPlayerInfo["Job"]
                     matchPlayer.LV = readyPlayerInfo["LV"]
                     matchPlayer.MaxHP = readyPlayerInfo["MaxHP"]
+                    matchPlayer.MaxProDef = readyPlayerInfo["MaxProDef"]
                     break
                 
             PlayerControl.SetCrossRealmState(player, 1)

--
Gitblit v1.8.0