| | |
| | | import GMCommon
|
| | | import GameWorld
|
| | | import PlayerFamily
|
| | | import CrossPlayer
|
| | | import PlayerMail
|
| | | import DBDataMgr
|
| | |
|
| | |
| | | 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)
|
| | |
| | | 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
|