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