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/GameWorldLogic/GameWorldBoss.py | 25 +++++++++++++++---------- 1 files changed, 15 insertions(+), 10 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py index ac1538e..848c439 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py @@ -467,6 +467,7 @@ state = gameWorld.GetDictByKey(ChConfig.Def_WorldKey_OperationActionState % ShareDefine.OperationActionName_BossReborn) if state: Sync_BossRebornPoint(curPlayer) + Sync_DogzNPCRefreshTime(curPlayer) return ## 地图启动ok通知 @@ -618,7 +619,8 @@ return onlineCnt = __GetBossOnlineHeroCnt(bossid)[0] LVLimit = ipyData.GetLVLimit() - if PyGameData.g_yesterdayPlayerLVDict: + openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay) + if openServerDay != 0 and LVLimit and len(LVLimit) == 2: yesterdayCnt = len([1 for lv in PyGameData.g_yesterdayPlayerLVDict.values() if LVLimit[0]<=lv <= LVLimit[1]]) #参数昨日活跃人数 else: yesterdayCnt = IpyGameDataPY.GetFuncCfg('FirstDayActivePlayerCnt') @@ -948,8 +950,10 @@ refreshTime = 0 PyGameData.g_sortBOSSRefreshList[i] = [bossID, killedTime, refreshTime] bossIDList.append(bossID) + curTime = int(time.time()) + PyGameData.g_sortBOSSRefreshList.sort(key=lambda asd:max(0, asd[2] - (curTime - asd[1]))) GameWorld.Log(' boss复活活动 重生boss bossIDList=%s'%bossIDList) - g_lastBossRebornTime = int(time.time()) + g_lastBossRebornTime = curTime else: #广播 needNotifyPointPerList = IpyGameDataPY.GetFuncEvalCfg('BossRebornNotify') @@ -1035,23 +1039,24 @@ NetPackCommon.SendFakePack(curPlayer, packData) return -def Sync_DogzNPCRefreshTime(msgList): +def Sync_DogzNPCRefreshTime(curPlayer=None): #同步神兽副本NPC刷新时间 - playerID, refreshTimeDict = msgList - curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID) if playerID else None - if playerID and not curPlayer: - return + refreshTimeDict = PyGameData.g_dogzNPCRefreshTimeDict + if not refreshTimeDict: return + curTime = int(time.time()) packData = ChPyNetSendPack.tagGCDogzNPCRefreshTime() packData.InfoList=[] - for npcid, rTime in refreshTimeDict.items(): + for npcid, timeinfo in refreshTimeDict.items(): + lastRefreshTime, nextNeedTime = timeinfo + remainTime = max(0, nextNeedTime - curTime + lastRefreshTime) timeInfo = ChPyNetSendPack.tagDogzTimeInfoObj() timeInfo.NPCID = npcid - timeInfo.RefreshSecond = rTime + timeInfo.RefreshSecond = remainTime packData.InfoList.append(timeInfo) packData.Cnt = len(packData.InfoList) - if not playerID: + if not curPlayer: playerManager = GameWorld.GetPlayerManager() for i in xrange(playerManager.GetActivePlayerCount()): curPlayer = playerManager.GetActivePlayerAt(i) -- Gitblit v1.8.0