From bc5f3f1c88d225109fa39a85b209ef13f5fb52a9 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 06 二月 2026 21:28:13 +0800
Subject: [PATCH] 66 【公会】基础主体-服务端(跨服公会所有基本功能支持、跨服砍价支持;修改查看目标公会、查看目标玩家方式;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py |   45 +++++++++++++++++++++++++++++++++++++++------
 1 files changed, 39 insertions(+), 6 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
index 37590a0..1fb8f02 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorld.py
@@ -1371,6 +1371,22 @@
     ## 是否跨服中心服务器
     return GetServerType() == ShareDefine.serverType_CrossCenter
 
+def CheckCrossCenterUniquenessErr():
+    ## 检查跨服中心唯一性
+    # @return: 是否异常
+    if not IsCrossCenter():
+        return
+    serverCnt = 0
+    serverDict = ReadChConfig.GetServerConfigDict()
+    for serverInfo in serverDict.values():
+        serverType = serverInfo[ShareDefine.serverCfgIndex_ServerType]
+        if serverType == ShareDefine.serverType_CrossCenter:
+            serverCnt += 1
+            if serverCnt > 1:
+                SendGameErrorEx("CrossCenterUniquenessErr", "跨服中心只允许配置一台", isRaiseErr=True)
+                return
+    return
+
 def IsMainServer():
     ## 是否游戏服
     return GetServerType() == ShareDefine.serverType_Main
@@ -1407,7 +1423,7 @@
     #    MainServerDict = {} # 所属主服ID {子服ID:主服ID, ...}
     #    groupName = GetServerGroupName()
     #    serverDict = ReadChConfig.GetServerConfigDict()
-    #    for serverInfo in serverDict:
+    #    for serverInfo in serverDict.values():
     #        groupName = serverInfo[ShareDefine.serverCfgIndex_GroupName]
     #        serverMapID = serverInfo[ShareDefine.serverCfgIndex_MapID]
     #        serverType = serverInfo[ShareDefine.serverCfgIndex_ServerType]
@@ -2445,15 +2461,32 @@
 
 
 def DebugAnswer(curPlayer, text):
-    '''转码后再发DebugAnswer'''
+    '''转码后再发DebugAnswer
+    @param curPlayer: 跨服服务器时支持直接传入 crossPlayer
+    '''
     #===========================================================================
     # if not GetGameWorld().GetDebugLevel():
     #    return
     #===========================================================================
-    
-    DebugLog(text, curPlayer.GetPlayerID())
+    playerID = curPlayer.GetPlayerID()
+    if IsCrossServer():
+        crossPlayer = curPlayer
+        mainServerID = crossPlayer.GetMainServerID()
+        if not mainServerID:
+            return
+        import CrossMsg
+        CrossMsg.SendToClientServer(ShareDefine.C2S_GMDebugAnswer, {"text":text}, [mainServerID], playerID)
+        return
+    DebugLog(text, playerID)
     text = text.decode(ShareDefine.Def_Game_Character_Encoding).encode(GetCharacterEncoding())
     curPlayer.DebugAnswer(text)
+    return
+
+def C2S_GMDebugAnswer(dataMsg, playerID):
+    text = dataMsg["text"]
+    curPlayer = GetPlayerManager().FindPlayerByID(playerID)
+    if curPlayer:
+        DebugAnswer(curPlayer, text)
     return
 
 def RaiseException(errorMsg, playerID=0):
@@ -2465,10 +2498,10 @@
         SendGameError("MapServerRaiseException", errorMsg)
     return
 
-def SendGameErrorEx(errType, msgInfo="", playerID=0):
+def SendGameErrorEx(errType, msgInfo="", playerID=0, isRaiseErr=False):
     ErrLog("SendGameErrorEx: %s -> %s" % (errType, msgInfo), playerID)
     SendGameError(errType, msgInfo)
-    if GetGameWorld().GetDebugLevel():
+    if isRaiseErr or GetGameWorld().GetDebugLevel():
         raise Exception("%s -> %s" % (errType, msgInfo))
     return
 

--
Gitblit v1.8.0