From d1ad5d9c180f06127775498044c239d980689dbd Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期二, 14 八月 2018 09:52:14 +0800 Subject: [PATCH] fix:2385 boss复活调整 --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py | 61 +++++++++++------------------- 1 files changed, 23 insertions(+), 38 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py index 7c54f4a..97db3c6 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py @@ -888,7 +888,7 @@ return totalPoint = gameWorld.GetDictByKey(ChConfig.Def_WorldKey_BossRebornNeedPoint) if not totalPoint: - totalPoint = __SetBossRebornNeedPoint() + totalPoint = SetBossRebornNeedPoint() if not totalPoint: GameWorld.Log(' 增加boss复活点 没有总点数!!!!') return @@ -935,27 +935,35 @@ def ResetBossRebornPoint(): ## 重置boss复活点 PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BossRebornPoint, 0) - Sync_BossRebornPoint() - + # 活动开启时设置参数 服务器人数 + lvLimit = IpyGameDataPY.GetFuncCfg('ServerActivePlayerCnt') + yesterdayPlayerCnt = len([1 for lv in PyGameData.g_yesterdayPlayerLVDict.values() if lv >= lvLimit]) #参数昨日活跃人数 + serverActivePlayerCnt = eval(IpyGameDataPY.GetFuncCompileCfg('ServerActivePlayerCnt', 2)) + PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BRServerPlayerCnt, serverActivePlayerCnt) + GameWorld.Log(' boss复活活动开启时设置昨日活跃人数yesterdayPlayerCnt=%s'%yesterdayPlayerCnt) #重新计算需要总点数 - __SetBossRebornNeedPoint() + SetBossRebornNeedPoint() + + Sync_BossRebornPoint() return -def __SetBossRebornNeedPoint(): +def SetBossRebornNeedPoint(isSync=False): totalPointList = IpyGameDataPY.GetFuncEvalCfg('BossRebornTotalPoint') - worldLVList = IpyGameDataPY.GetFuncEvalCfg('BossRebornTotalPoint', 2) + playerCntList = IpyGameDataPY.GetFuncEvalCfg('BossRebornTotalPoint', 2) - actWorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OActWorldLV % ShareDefine.OperationActionName_BossReborn) + BRServerPlayerCnt = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BRServerPlayerCnt) - index = len(worldLVList)-1 - for i, lv in enumerate(worldLVList): - prelv = 0 if i ==0 else worldLVList[i-1] - if prelv <=actWorldLV < lv: + index = len(playerCntList)-1 + for i, cnt in enumerate(playerCntList): + preCnt = 0 if i ==0 else playerCntList[i-1] + if preCnt <=BRServerPlayerCnt < cnt: index = i break totalPoint = totalPointList[-1] if index >= len(totalPointList) else totalPointList[index] GameWorld.GetGameWorld().SetDict(ChConfig.Def_WorldKey_BossRebornNeedPoint, totalPoint) + if isSync: + Sync_BossRebornPoint() return totalPoint def BossRebornWorldNotify(curTime): @@ -974,6 +982,10 @@ ##通知BOSS复活点数 packData = ChPyNetSendPack.tagGCBossRebornPoint() packData.Point = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BossRebornPoint) + totalPoint = GameWorld.GetGameWorld().GetDictByKey(ChConfig.Def_WorldKey_BossRebornNeedPoint) + if not totalPoint: + totalPoint = SetBossRebornNeedPoint() + packData.TotalPoint = totalPoint playerManager = GameWorld.GetPlayerManager() if not curPlayer: for i in xrange(playerManager.GetActivePlayerCount()): @@ -989,30 +1001,3 @@ NetPackCommon.SendFakePack(curPlayer, packData) return - -def Sync_OperationAction_BossReborn(ipyData, curPlayer=None): - ## 通知boss复活活动信息 - if not ipyData: - return - - bossRebornInfo = ChPyNetSendPack.tagGCBossRebornInfo() - bossRebornInfo.Clear() - bossRebornInfo.StartDate = ipyData.GetStartDate() - bossRebornInfo.EndtDate = ipyData.GetEndDate() - bossRebornInfo.WorldLV = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_OActWorldLV % ShareDefine.OperationActionName_BossReborn) - bossRebornInfo.LimitLV = ipyData.GetLVLimit() - if not curPlayer: - # 全服广播在线玩家 - 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, bossRebornInfo) - else: - if PlayerControl.GetIsTJG(curPlayer): - return - NetPackCommon.SendFakePack(curPlayer, bossRebornInfo) - return -- Gitblit v1.8.0