From 8cde6fcb2806974b7c35de295ce03f73c2c92bfe Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 09 六月 2025 11:18:36 +0800
Subject: [PATCH] 10263 【英文】【越南】【BT】【砍树】后端支持NPC仿真实玩家战斗和快速战斗(防范剩余血量计算报错;)

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py |   31 +++++++++++++++----------------
 1 files changed, 15 insertions(+), 16 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py
index 9a0007d..c68b666 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py
@@ -149,6 +149,17 @@
     CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_CrossServerState, {"isOpen":isOpen})
     return
 
+def OnCrossServerClose():
+    '''关服时处理
+        注意关服只需设置关闭状态即可,不调用 DoChangeCrossServerState 改变db状态及其他额外处理
+    db存储的关闭状态为维护状态(可能跨服服务器正常开着,但是运维后台GM手动设置处于维护状态)
+    通知关服状态主要目的是让子服不再发送消息到跨服服务器了,等待跨服服务器重新开启即可
+    '''
+    isOpen = 0
+    GameWorld.GetGameWorld().SetDict(ShareDefine.Def_Notify_WorldKey_CrossServerOpen, isOpen)
+    CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_CrossServerState, {"isOpen":isOpen})
+    return
+
 def CrossServerMsg_CrossServerState(msgData):
     ## 子服收到跨服服务器状态变更,子服不存DB,默认跨服维护中,连接跨服成功后由跨服同步状态直接更新到字典即可,没连上就默认维护中
     if "crossZoneName" in msgData:
@@ -167,7 +178,9 @@
             if curPlayer == None:
                 continue
             PlayerControl.SetCrossMapID(curPlayer, 0)
-            
+    else:
+        CrossRealmMsg.OnCrossServerStateOpen()
+        
     GameWorld.GetGameWorld().SendCrossServerStateToLoginServer(isOpen)
     # 通知地图
     GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_CrossServerOpen, isOpen)
@@ -241,21 +254,7 @@
     
     # 跨服PK上传数据完毕,通知跨服服务器,准备完毕
     if registerMap == ChConfig.Def_FBMapID_CrossRealmPK:
-        regVSRoomID = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MergeRegisterRoomID) 
-        vsRoomID = curPlayer.GetVsRoomId()
-        
-        if regVSRoomID != vsRoomID:
-            GameWorld.Log("上传跨服服务器的 regVSRoomID=%s 与玩家当前的 roomID=%s 不同!不发送准备完毕!" 
-                          % (regVSRoomID, vsRoomID), playerID)
-            return
-        
-        dataMsg = {
-                   "accID":curPlayer.GetAccID(), # 角色账号ID
-                   "playerID":playerID, # 角色ID
-                   "vsRoomID":vsRoomID, # 所属对战房间ID
-                   }
-        CrossRealmMsg.SendMsgToCrossServer(ShareDefine.ClientServerMsg_PKPrepareOK, dataMsg)
-        GameWorld.Log("通知跨服服务器, 玩家匹配PK准备完毕!%s" % str(dataMsg), playerID)
+        pass
         
     # 其他的,在上传数据完毕后,使用通用的通知可进入跨服
     else:

--
Gitblit v1.8.0