#!/usr/bin/python # -*- coding: GBK -*- #------------------------------------------------------------------------------- # ##@package PyMongoDB.GMToolLogicProcess.Commands.GMT_FamilyTransfer # # @todo:GM¹¤¾ßÃüÁî - תÈû᳤ # @author hxp # @date 2025-12-21 # @version 1.0 # # ÏêϸÃèÊö: GM¹¤¾ßÃüÁî - תÈû᳤ # #------------------------------------------------------------------------------- #"""Version = 2025-12-21 17:30""" #------------------------------------------------------------------------------- import GMCommon import GameWorld import PlayerFamily import PlayerMail import DBDataMgr ## ÊÕµ½gmÃüÁîÖ´ÐÐ # @param gmCmdDict:gmÃüÁî×Öµä # @return None def OnExec(gmCmdDict): queryType = gmCmdDict.get(GMCommon.Def_GMKey_QueryType, '') familyName = gmCmdDict.get(GMCommon.Def_GMKey_FamilyName, '') if familyName == '': return GMCommon.Def_ParamErr familyMgr = DBDataMgr.GetFamilyMgr() if queryType == "FamilyID": familyID = GameWorld.ToIntDef(familyName) if not familyID: return GMCommon.Def_ParamErr curFamily = familyMgr.FindFamily(familyID) else: curFamily = familyMgr.FindFamilyByName(familyName) if not curFamily: GameWorld.DebugLogEx("Ä¿±ê¹¤»á²»´æÔÚ") return GMCommon.Def_NoTag, "no tag family" familyID = curFamily.GetID() tagPlayer = None queryTagType = gmCmdDict.get("queryTagType", '') queryTag = gmCmdDict.get("queryTag", '') if queryTagType == "PlayerName": tagPlayer = GameWorld.GetPlayerManager().FindPlayerByName(queryTag) else: tagPlayer = GameWorld.GetPlayerManager().FindPlayerByID(GameWorld.ToIntDef(queryTag)) if not tagPlayer: GameWorld.DebugLogEx("Ä¿±êÍæ¼Ò²»ÔÚÏß") return GMCommon.Def_NoTag, "tagPlayer is offLine" tagPlayerID = tagPlayer.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) # Óʼþ֪ͨ PlayerMail.SendMailByKey("FamilyLeaderAutoChange", tagPlayerID, [], [curFamily.GetName()]) return GMCommon.Def_Success