From 256e1c97cf082750fdfbf710d681e176dd19c66c Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期二, 04 六月 2019 14:24:14 +0800 Subject: [PATCH] 7095 【2.0】【后端】专精修改,选择专精显示在界面上 --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyBoss.py | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 54 insertions(+), 4 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyBoss.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyBoss.py index b975aea..717d12e 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyBoss.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamilyBoss.py @@ -24,6 +24,8 @@ import NetPackCommon import ShareDefine import IpyGameDataPY +import PlayerDBGSEvent +import PlayerControl import ChConfig import time @@ -35,9 +37,9 @@ def GetFamilyBossIsOpen(fActionData): return fActionData.GetValue2() def SetFamilyBossIsOpen(fActionData, isOpen): return fActionData.SetValue2(isOpen) -def GetFamilyBossLimitCnt(): +def GetFamilyBossLimitCnt(family): '''仙盟BOSS每周次数限制''' - return IpyGameDataPY.GetFuncCfg('FamilyBossOpen', 4) + return PlayerFamily.GetFamilySetting(family, ChConfig.Def_FamilySetting_BossFBCnt)#IpyGameDataPY.GetFuncCfg('FamilyBossOpen', 4) def GetFamilyBossCostFood(): '''仙盟BOSS开启消耗兽粮''' @@ -88,6 +90,7 @@ # @return None def OnLogin(curPlayer): NotifyFamilyBossFBInfo(curPlayer) + NotifyAllFamilyBossState(curPlayer) return @@ -125,7 +128,7 @@ curWeekOpenCnt = GetFamilyBossOpenCnt(familyBossFBData) # 次数判断 - maxOpenCnt = GetFamilyBossLimitCnt() + maxOpenCnt = GetFamilyBossLimitCnt(curFamily) if curWeekOpenCnt >= maxOpenCnt: GameWorld.Log(" 本周开启次数=%s >= 最大开启次数=%s" % (curWeekOpenCnt, maxOpenCnt)) return @@ -181,7 +184,8 @@ curFamily.Broadcast_FamilyChange() #通知地图服务器刷新 PlayerFamily.SendPack_MapServer_PlayerFamilyRefresh(curFamily) - GameWorld.Log(" __DoOpenCostLogic 扣除家族兽粮=%s OK!" % (foodCost)) + GameWorld.Log(" __DoOpenCostLogic 扣除家族兽粮=%s OK!, familyID=%s,playerFamilyLV=%s" + % (foodCost, curPlayer.GetFamilyID(), curMember.GetFamilyLV()), curPlayer.GetPlayerID()) return True @@ -271,4 +275,50 @@ +#############################多仙盟BOSS############################# +def OnAllFamilyBossStateChange(isOpen): + if isOpen: + #本次开启时间距离上次击杀时间超过1小时则重置 + lastKillTime = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_AllFamilyBossTime) + curTime = int(time.time()) + if abs(curTime-lastKillTime)> 3600: + PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_AllFamilyBossTime, 0) + #通知 + NotifyAllFamilyBossState() + return + +def AllFamilyBossKilled(): + if PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_AllFamilyBossTime): + GameWorld.Log('多仙盟Boss已被击杀,不可重复!!') + return + curTime = int(time.time()) + PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_AllFamilyBossTime, curTime) + GameWorld.Log('多仙盟Boss被击杀!!') + NotifyAllFamilyBossState() + return + +def NotifyAllFamilyBossState(curPlayer=None): + lastKillTime = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_AllFamilyBossTime) + bossInfo = ChPyNetSendPack.tagGCAllFamilyBossInfo() + bossInfo.IsEnd = 1 if lastKillTime else 0 + + if curPlayer == None: + playerManager = GameWorld.GetPlayerManager() + for i in xrange(playerManager.GetActivePlayerCount()): + curPlayer = playerManager.GetActivePlayerAt(i) + if curPlayer == None or not curPlayer.GetInitOK(): + continue + if PlayerControl.GetIsTJG(curPlayer): + continue + NetPackCommon.SendFakePack(curPlayer, bossInfo) + else: + if PlayerControl.GetIsTJG(curPlayer): + return + NetPackCommon.SendFakePack(curPlayer, bossInfo) + return + +#是否在仙盟BOSS活动中 +def IsInAllFamilyBoss(lineID=-1): + state1 = GameWorld.GetGameWorld().GetDictByKey(ShareDefine.Def_Notify_WorldKey_DailyActionState % ShareDefine.DailyActionID_FamilyBoss1) + return state1 \ No newline at end of file -- Gitblit v1.8.0