From cc1f0cf4835adc4ac99e05d6fc718b65291bb476 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 27 五月 2024 11:58:10 +0800 Subject: [PATCH] 10162 后台优化(查询玩家增加 代金券显示) --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py | 64 +++++++++++++++++++++----------- 1 files changed, 42 insertions(+), 22 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py index 135c987..79bce76 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py @@ -57,7 +57,7 @@ ShareDefine.Def_UniversalGameRecType_BossFirstKill value1:bossID StrValue2:killedTimeStr -StrValue3:playerName|playerName|... +StrValue3:playerName,playerName,... ''' @@ -391,6 +391,9 @@ # % (bossInfoObj.BossID, bossInfoObj.IsAlive, bossInfoObj.KillRecord, # killedTime, bossInfoObj.RefreshSecond)) + if not bossInfo.BossInfoList: + return + bossInfo.BossCnt = len(bossInfo.BossInfoList) if not curPlayer: # 全服广播在线玩家 @@ -429,6 +432,9 @@ if mapID in ChConfig.Def_CrossMapIDList: continue bossPrizeRec = __GetBossRecDataByID(bossID) + refreshTimeStr = ipyData.GetRefreshTime() + if not refreshTimeStr or refreshTimeStr == "0": + continue killedTime = bossPrizeRec.GetValue2() refreshTime = __GetBossRefreshTime(bossID) PyGameData.g_sortBOSSRefreshList.append([bossID, killedTime, refreshTime]) @@ -450,7 +456,7 @@ break #此处只处理复活的 - PlayerGeTui.GeTuiBossReborn(bossID) + #PlayerGeTui.GeTuiBossReborn(bossID) __SetIsAlive(bossID, 1) syncBOSSIDList.append(bossID) @@ -465,24 +471,25 @@ #BOSS个推提前倒计时通知处理, 复活由DoCheckWorldBossReborn处理 def ProcessBossGeTui(tick): - if not GameWorld.SetWorldDictKey(ChConfig.TYPE_WorldBossGeTuiTick, tick): - #间隔未到 - return - if GameWorld.IsCrossServer(): - return - curTime = int(time.time()) - for bossInfo in PyGameData.g_sortBOSSRefreshList: - bossID, killedTime, refreshTime = bossInfo - isAlive = __GetIsAlive(bossID) - if isAlive: - #GameWorld.DebugLog(" bossID=%s,未被击杀!" % bossID) - continue - rebornSecond = max(0, refreshTime - (curTime - killedTime)) - if not rebornSecond: - #不处理复活BOSS - continue - - PlayerGeTui.GeTuiBoss(bossID, rebornSecond) + return +# if not GameWorld.SetWorldDictKey(ChConfig.TYPE_WorldBossGeTuiTick, tick): +# #间隔未到 +# return +# if GameWorld.IsCrossServer(): +# return +# curTime = int(time.time()) +# for bossInfo in PyGameData.g_sortBOSSRefreshList: +# bossID, killedTime, refreshTime = bossInfo +# isAlive = __GetIsAlive(bossID) +# if isAlive: +# #GameWorld.DebugLog(" bossID=%s,未被击杀!" % bossID) +# continue +# rebornSecond = max(0, refreshTime - (curTime - killedTime)) +# if not rebornSecond: +# #不处理复活BOSS +# continue +# +# PlayerGeTui.GeTuiBoss(bossID, rebornSecond) def GetBossIsAliveOrCanReborn(bossID): @@ -799,7 +806,7 @@ cnt += 1 savaData += attentionData.getBuffer() - GameWorld.Log("SaveBossAttention cnt :%s" % cnt) + GameWorld.Log("SaveBossAttention cnt :%s len=%s" % (cnt, len(savaData))) return CommFunc.WriteDWORD(cntData, cnt) + savaData # 从数据库载入数据 @@ -980,6 +987,11 @@ NetPackCommon.SendFakePack(curPlayer, bossShuntLineInfo) return +def BossRebornOnDayEx(): + ## boss复活过天 + PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BossRebornCnt, 0) + Sync_BossRebornPoint() + return def AddBossRebornPoint(addPoint): ## 增加boss复活点 @@ -995,13 +1007,18 @@ if not totalPoint: GameWorld.Log(' 增加boss复活点 没有总点数!!!!') return + rebornCnt = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BossRebornCnt) + maxRebornCnt = IpyGameDataPY.GetFuncCfg('BossRebornTotalPoint', 3) + if maxRebornCnt and rebornCnt >= maxRebornCnt: + GameWorld.DebugLog(' boss复活已达到最大次数! maxRebornCnt=%s' % maxRebornCnt) + return + curPoint = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BossRebornPoint) updPoint = (curPoint+addPoint)%totalPoint PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BossRebornPoint, updPoint) if curPoint+addPoint >= totalPoint: #重生boss - rebornCnt = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BossRebornCnt) PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BossRebornCnt, rebornCnt+1) killBossCntLimitDict = IpyGameDataPY.GetFuncEvalCfg('KillBossCntLimit', 1, {}) @@ -1027,6 +1044,8 @@ PyGameData.g_sortBOSSRefreshList.sort(key=lambda asd:max(0, asd[2] - (curTime - asd[1]))) GameWorld.Log(' boss复活活动 重生boss bossIDList=%s'%bossIDList) g_lastBossRebornTime = curTime + + GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_ActionBossRebornSign % ShareDefine.OperationActionName_BossReborn, int(time.time())) else: #广播 needNotifyPointPerList = IpyGameDataPY.GetFuncEvalCfg('BossRebornNotify') @@ -1097,6 +1116,7 @@ totalPoint = SetBossRebornNeedPoint() packData.TotalPoint = totalPoint packData.RebornCnt = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BossRebornCnt) + packData.TotalRebornCnt = IpyGameDataPY.GetFuncCfg('BossRebornTotalPoint', 3) playerManager = GameWorld.GetPlayerManager() if not curPlayer: for i in xrange(playerManager.GetActivePlayerCount()): -- Gitblit v1.8.0