From ba876e7e57df7e24f15a65c246d3f0dcf34ca33a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 13 二月 2026 16:18:11 +0800
Subject: [PATCH] 66 【公会】基础主体-服务端(后台查询公会、转让会长、解散公会支持跨服;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_FamilyTransfer.py |   34 +++++++++++++++++++++++++---------
 1 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_FamilyTransfer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_FamilyTransfer.py
index bc8c11f..8269b70 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_FamilyTransfer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/PyMongoDB/GMToolLogicProcess/Commands/GMT_FamilyTransfer.py
@@ -18,6 +18,7 @@
 import GMCommon
 import GameWorld
 import PlayerFamily
+import CrossPlayer
 import PlayerMail
 import DBDataMgr
 
@@ -32,6 +33,11 @@
     if familyName == '':
         return GMCommon.Def_ParamErr
     
+    if GameWorld.IsMainServer():
+        crossServerID = DBDataMgr.GetFamilyMgr().GetCurCrossServerID()
+        if crossServerID:
+            return GMCommon.Def_ParamErr, "公会已经跨服了,跨服ID=%s" % crossServerID
+        
     familyMgr = DBDataMgr.GetFamilyMgr()
     if queryType == "FamilyID":
         familyID = GameWorld.ToIntDef(familyName)
@@ -39,34 +45,44 @@
             return GMCommon.Def_ParamErr
         curFamily = familyMgr.FindFamily(familyID)
     else:
-        curFamily = familyMgr.FindFamilyByName(familyName)
-        
+        curFamily = None
+        for zoneID in familyMgr.GetZoneIDListThisServer():
+            zoneMgr = familyMgr.GetZoneFamilyMgr(zoneID)
+            curFamily = zoneMgr.FindFamilyByName(familyName)
+            if curFamily:
+                break
+            
     if not curFamily:
         GameWorld.DebugLogEx("目标工会不存在")
         return GMCommon.Def_NoTag, "no tag family"
     
     familyID = curFamily.GetID()
-    tagPlayer = None
+    tagCrossPlayer = None
     queryTagType = gmCmdDict.get("queryTagType", '')  
     queryTag = gmCmdDict.get("queryTag", '')
     if queryTagType == "PlayerName":
-        tagPlayer = GameWorld.GetPlayerManager().FindPlayerByName(queryTag)
+        tagCrossPlayer = None #GameWorld.GetPlayerManager().FindPlayerByName(queryTag)
     else:
-        tagPlayer = GameWorld.GetPlayerManager().FindPlayerByID(GameWorld.ToIntDef(queryTag))
+        tagCrossPlayer = CrossPlayer.GetCrossPlayerMgr().FindCrossPlayer(GameWorld.ToIntDef(queryTag))
         
-    if not tagPlayer:
+    if not tagCrossPlayer:
         GameWorld.DebugLogEx("目标玩家不在线")
         return GMCommon.Def_NoTag, "tagPlayer is offLine"
     
-    tagPlayerID = tagPlayer.GetPlayerID()
+    leaderID = curFamily.GetLeaderID()
+    tagPlayerID = tagCrossPlayer.GetPlayerID()
     toMember = curFamily.FindMember(tagPlayerID)
     if not toMember:
         GameWorld.DebugLogEx("目标玩家非该工会成员: tagPlayerID=%s", tagPlayerID)
         return GMCommon.Def_NoTag, "tagPlayer is not this family member"
     
     PlayerFamily.ChangeFamilyLeader(curFamily, toMember)
-    PlayerFamily.Broadcast_FamilyChange(familyID, PlayerFamily.FamilyChangeType_LeaderChange)
+    PlayerFamily.Broadcast_FamilyInfo(familyID, changeMemIDList=[leaderID, tagPlayerID])
     
     # 邮件通知
-    PlayerMail.SendMailByKey("FamilyLeaderAutoChange", tagPlayerID, [], [curFamily.GetName()])
+    toServerID = 0
+    if GameWorld.IsCrossServer():
+        toServerID = toMember.GetServerID()
+    PlayerMail.SendMailByKey("FamilyLeaderAutoChange", tagPlayerID, [], [curFamily.GetName()], toServerID=toServerID)
+    
     return GMCommon.Def_Success

--
Gitblit v1.8.0