| | |
| | | PlayerFamilyEmblem.OnChangeFamilyEmblem(curPlayer, changeEmblemID)
|
| | | return
|
| | |
|
| | | #// A4 14 查看目标仙盟 #tagCGViewTagFamily
|
| | | #
|
| | | #struct tagCGViewTagFamily
|
| | | #{
|
| | | # tagHead Head;
|
| | | # DWORD TagFamilyID; // 目标仙盟ID,支持查看跨服仙盟
|
| | | #};
|
| | | def OnViewTagFamily(index, clientData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | tagFamilyID = clientData.TagFamilyID
|
| | | clientPack = __GetTagFamilyInfoPack(tagFamilyID)
|
| | | if not clientPack:
|
| | | # 发送跨服服务器查询,可能是跨服仙盟
|
| | | dataMsg = {"playerID":playerID, "tagFamilyID":tagFamilyID}
|
| | | CrossRealmMsg.SendMsgToCrossServer(ShareDefine.ClientServerMsg_QueryCrossFamily, dataMsg)
|
| | | return
|
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | return
|
| | |
|
| | | def __GetTagFamilyInfoPack(tagFamilyID):
|
| | | ## 获取查看目标仙盟同步封包
|
| | | familyManager = GameWorld.GetFamilyManager()
|
| | | family = familyManager.FindFamily(tagFamilyID)
|
| | | if not family:
|
| | | return
|
| | | clientPack = ChPyNetSendPack.tagGCTagFamilyInfo()
|
| | | clientPack.FamilyID = tagFamilyID
|
| | | clientPack.FamilyName = family.GetName()
|
| | | clientPack.FamilyLV = family.GetLV()
|
| | | clientPack.Broadcast = family.GetBroadcast()
|
| | | clientPack.BroadcastLen = len(clientPack.Broadcast)
|
| | | clientPack.Member = []
|
| | | for index in range(family.GetCount()):
|
| | | curMember = family.GetAt(index)
|
| | | mem = ChPyNetSendPack.tagGCTagFamilyMember()
|
| | | mem.PlayerID = curMember.GetPlayerID()
|
| | | mem.Name = curMember.GetName()
|
| | | mem.NameLen = len(mem.Name)
|
| | | mem.FamilyLV = curMember.GetFamilyLV()
|
| | | mem.LV = curMember.GetLV()
|
| | | mem.Job = curMember.GetJob()
|
| | | mem.Face = curMember.GetFace()
|
| | | mem.FacePic = curMember.GetFacePic()
|
| | | mem.OfficialRank = curMember.GetOfficialRank()
|
| | | fightPower = GetMemberFightPower(curMember)
|
| | | mem.FightPower = fightPower % ChConfig.Def_PerPointValue
|
| | | mem.FightPowerEx = fightPower / ChConfig.Def_PerPointValue
|
| | | clientPack.Member.append(mem)
|
| | | clientPack.MemberCount = len(clientPack.Member)
|
| | | familyFightPower = GetFamilyTotalFightPower(family)
|
| | | clientPack.FightPower = familyFightPower % ChConfig.Def_PerPointValue
|
| | | clientPack.FightPowerEx = familyFightPower / ChConfig.Def_PerPointValue
|
| | | clientPack.EmblemID = GetFamilyEmblemID(family)
|
| | | clientPack.ServerID = family.GetServerID()
|
| | | return clientPack
|
| | |
|
| | | #class IPY_CFamilyChangeBroadcast
|
| | | #{
|
| | | #public:
|
| | |
| | | return cmp(GetMemberJoinTime(member1), GetMemberJoinTime(member2))
|
| | | return ret
|
| | |
|
| | | def SortCrossFamily(serverIDList, top=0):
|
| | | def SortCrossFamily(serverIDList, getCnt=0, page=1):
|
| | | ''' 跨服仙盟排序, 排序规则: 总战力 > 等级 > ID
|
| | | @param serverIDList: 仙盟所属区服ID范围列表
|
| | | @param top: 返回排序靠前x个仙盟,0则全部返回
|
| | | @param getCnt: 返回排序靠前x个仙盟,0则全部返回
|
| | | @param page: 第几页
|
| | | '''
|
| | | familyList = []
|
| | | familyManager = GameWorld.GetFamilyManager()
|
| | |
| | | familyList.append(family)
|
| | | familyList.sort(key=lambda f: (GetFamilyTotalFightPower(f), f.GetLV(), f.GetID()), reverse=True)
|
| | | totalCnt = len(familyList)
|
| | | return familyList[:top] if top else familyList, totalCnt
|
| | | if getCnt:
|
| | | startIndex = (page - 1) * getCnt
|
| | | return familyList[startIndex:startIndex + getCnt], totalCnt
|
| | | return familyList, totalCnt
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | ##通知地图服务器, 玩家家族属性刷新
|
| | |
| | |
|
| | | return
|
| | |
|
| | | def ClientServerMsg_QueryCrossFamily(serverGroupID, msgData):
|
| | | ## 子服查询跨服仙盟
|
| | | playerID = msgData["playerID"]
|
| | | tagFamilyID = msgData.get("tagFamilyID", 0)
|
| | | if tagFamilyID:
|
| | | clientPack = __GetTagFamilyInfoPack(tagFamilyID)
|
| | | if clientPack:
|
| | | NetPackCommon.SendFakePackByCross({playerID:serverGroupID}, clientPack)
|
| | | else:
|
| | | PlayerControl.NotifyCodeCross(serverGroupID, playerID, "TagFamilyNotExist")
|
| | | return
|
| | | |
| | | # 可扩展查看跨服仙盟列表信息...
|
| | | |
| | | return
|