From 0ff8e21c92b39adfdf062b40c4e0147213bba70a Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期一, 26 十一月 2018 23:18:29 +0800 Subject: [PATCH] 4923 【后端】【1.3】神兵技能 --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py | 62 ++++++++++--------------------- 1 files changed, 20 insertions(+), 42 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py index 660ba6d..c0f96d8 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py @@ -348,7 +348,8 @@ # 玩家战盟名变更处理 __OnFamilyNameChange(jionPlayer.GetPlayerID(), curFamily.GetName()) - + #玩家缓存 + PlayerViewCache.OnPlayerFamilyChange(jionPlayer.GetPlayerID(), curFamily.GetID(), curFamily.GetName()) #加入仙盟联赛成员 GameWorldFamilyWar.AddFamilyWarMem(jionPlayer.GetPlayerID(), curFamily.GetID()) GameWorldFamilyWar.CheckPlayerJoinFamilyWarInfo(jionPlayer) @@ -749,7 +750,7 @@ 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() @@ -1265,7 +1266,8 @@ if GetFamilyMemberHasPow(tagMember, ChConfig.Def_PurviewDictKey_CanCall): tagPlayer.Sync_FamilyInfo() PlayerFamilyAction.ViewFamilyRequestInfo(tagPlayer) - + if isGMOP: + curFamily.SetBroadcast('') curFamily.Broadcast_FamilyChange() return True #--------------------------------------------------------------------- @@ -1523,7 +1525,7 @@ # 玩家战盟名变更处理 __OnFamilyNameChange(leavePlayerID, '') AddFamilyIDToFightPowerChangeList(curFamily.GetID()) - PlayerViewCache.OnPlayerLeaveFamily(leavePlayerID) + PlayerViewCache.OnPlayerFamilyChange(leavePlayerID, 0, "") return #////////////////////////////////////////////////////////////// @@ -2574,6 +2576,12 @@ SetFamilyBroadcastCnt(family, 0) #清除本周任务已获得资金数量 SetCurWeekMissionMoney(family, 0) + for j in xrange(family.GetCount()): + member = family.GetAt(j) + #原先是地图玩家上线后重置,导致玩家不上线周贡献显示之前的,固在此重置 + member.SetFamilyActiveValue(0) + + #通知地图服务器刷新家族属性 SendPack_MapServer_PlayerFamilyRefresh(family) #oss记录上周家族信息 @@ -2703,16 +2711,15 @@ 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): @@ -2720,17 +2727,14 @@ 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) @@ -3343,32 +3347,6 @@ 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 # -- Gitblit v1.8.0