|  |  |  | 
|---|
|  |  |  | pack = IPY_GameServer.IPY_CFamilyChangeBroadcast() | 
|---|
|  |  |  | #更改家族公告 | 
|---|
|  |  |  | curFamily.SetBroadcast(pack.GetMsg()) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | GameWorld.Log('更改仙盟公告 Family=%s,公告=%s'%(GameWorld.CodeToGBK(curFamily.GetName()), GameWorld.CodeToGBK(pack.GetMsg())), curPlayerID) | 
|---|
|  |  |  | #通知客户端家族信息改变 | 
|---|
|  |  |  | curFamily.Broadcast_FamilyChange() | 
|---|
|  |  |  | playerManager = GameWorld.GetPlayerManager() | 
|---|
|  |  |  | 
|---|
|  |  |  | if GetFamilyMemberHasPow(tagMember, ChConfig.Def_PurviewDictKey_CanCall): | 
|---|
|  |  |  | tagPlayer.Sync_FamilyInfo() | 
|---|
|  |  |  | PlayerFamilyAction.ViewFamilyRequestInfo(tagPlayer) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if isGMOP: | 
|---|
|  |  |  | curFamily.SetBroadcast('') | 
|---|
|  |  |  | curFamily.Broadcast_FamilyChange() | 
|---|
|  |  |  | return True | 
|---|
|  |  |  | #--------------------------------------------------------------------- | 
|---|
|  |  |  | 
|---|
|  |  |  | SetFamilyBroadcastCnt(family, 0) | 
|---|
|  |  |  | #清除本周任务已获得资金数量 | 
|---|
|  |  |  | SetCurWeekMissionMoney(family, 0) | 
|---|
|  |  |  | for j in xrange(family.GetCount()): | 
|---|
|  |  |  | member = family.GetAt(j) | 
|---|
|  |  |  | #原先是地图玩家上线后重置,导致玩家不上线周贡献显示之前的,固在此重置 | 
|---|
|  |  |  | member.SetFamilyActiveValue(0) | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #通知地图服务器刷新家族属性 | 
|---|
|  |  |  | SendPack_MapServer_PlayerFamilyRefresh(family) | 
|---|
|  |  |  | #oss记录上周家族信息 | 
|---|
|  |  |  | 
|---|
|  |  |  | return 0 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | leaderID = curFamily.GetLeaderID() | 
|---|
|  |  |  | # 帮主在线 | 
|---|
|  |  |  | if GameWorld.GetPlayerManager().FindPlayerByID(leaderID) != None: | 
|---|
|  |  |  | return 0 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | curMember = curFamily.FindMember(leaderID) | 
|---|
|  |  |  | if curMember == None: | 
|---|
|  |  |  | GameWorld.Log("GetLeaderOfflineTime->FindMember, None;%s" % leaderID) | 
|---|
|  |  |  | return 0 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | offLineTime = GameWorld.ChangeTimeNumToStr(curMember.GetExattr2()) | 
|---|
|  |  |  | offLineTimeNum = curMember.GetExattr2() | 
|---|
|  |  |  | if not offLineTimeNum: | 
|---|
|  |  |  | return 0 | 
|---|
|  |  |  | offLineTime = GameWorld.ChangeTimeNumToStr(offLineTimeNum) | 
|---|
|  |  |  | return GameWorld.GetPastHour(offLineTime) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetLastOnlineMemberOfflineTime(family): | 
|---|
|  |  |  | 
|---|
|  |  |  | offLineTime = 0 | 
|---|
|  |  |  | for i in range(0, family.GetCount()): | 
|---|
|  |  |  | member = family.GetAt(i) | 
|---|
|  |  |  | playerID = member.GetPlayerID() | 
|---|
|  |  |  | tagPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID) | 
|---|
|  |  |  | if tagPlayer: | 
|---|
|  |  |  | return 0 | 
|---|
|  |  |  | if not member.GetExattr2(): | 
|---|
|  |  |  | offLineTimeNum = member.GetExattr2() | 
|---|
|  |  |  | if not offLineTimeNum: | 
|---|
|  |  |  | #有人在线直接返回 | 
|---|
|  |  |  | return 0 | 
|---|
|  |  |  | if not offLineTime: | 
|---|
|  |  |  | offLineTime = member.GetExattr2() | 
|---|
|  |  |  | offLineTime = offLineTimeNum | 
|---|
|  |  |  | else: | 
|---|
|  |  |  | offLineTime = max(offLineTime, member.GetExattr2()) | 
|---|
|  |  |  | offLineTime = max(offLineTime, offLineTimeNum) | 
|---|
|  |  |  | if not offLineTime: | 
|---|
|  |  |  | return 0 | 
|---|
|  |  |  | offLineTime = GameWorld.ChangeTimeNumToStr(offLineTime) | 
|---|
|  |  |  | 
|---|
|  |  |  | return ret | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return 0 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def UpdFamilyWarRank(): | 
|---|
|  |  |  | '''更新仙盟联赛排名 | 
|---|
|  |  |  | 注意:该逻辑在仙盟联赛周期中不可执行,仅在下周分组定级状态下可更新 | 
|---|
|  |  |  | 仙盟联赛新一周期开始时、仙盟解散时 会触发该逻辑 | 
|---|
|  |  |  | ''' | 
|---|
|  |  |  | gameWorld = GameWorld.GetGameWorld() | 
|---|
|  |  |  | state = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_FBFuncState % ChConfig.Def_FBMapID_FamilyWar) | 
|---|
|  |  |  | if state != GameWorldFamilyWar.FamilyWarState_NextWeekGroupRank: | 
|---|
|  |  |  | GameWorld.DebugLog("非下周分组定级阶段不可更新仙盟联赛排名!") | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | familyMgr = GameWorld.GetFamilyManager() | 
|---|
|  |  |  | sortFamilyIDList = GetSortFamilyIDList() | 
|---|
|  |  |  | for rank, familyID in enumerate(sortFamilyIDList, 1): | 
|---|
|  |  |  | family = familyMgr.FindFamily(familyID) | 
|---|
|  |  |  | if not family: | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | curRank = GetFamilyWarRank(family) | 
|---|
|  |  |  | if not curRank: | 
|---|
|  |  |  | break | 
|---|
|  |  |  | if curRank != rank: | 
|---|
|  |  |  | SetFamilyWarRank(family, rank) | 
|---|
|  |  |  | GameWorld.Log("更新仙盟联赛仙盟排名: familyID=%s,rank=%s" % (family.GetID(), rank)) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #// A4 11 一键申请入盟 #tagCGOneKeyJoinFamily | 
|---|
|  |  |  | # | 
|---|