From ee4705284b8064b4f3964dfd13c22386b7d5c20f Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 26 二月 2025 15:48:24 +0800 Subject: [PATCH] 10407 【越南】【英语】【BT】【GM】【砍树】周末BUG汇总(修复排行榜功能开启时同步开服活动榜数据异常bug;) --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py | 48 +++++++++++++++++++++--------------------------- 1 files changed, 21 insertions(+), 27 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py index ba4025e..08e1c29 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py @@ -45,7 +45,6 @@ import CrossRealmMsg import CommFunc import PyGameData -import PlayerGeTui import IPY_GameServer import PlayerTeam import CrossBoss @@ -391,6 +390,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 +431,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 +455,6 @@ break #此处只处理复活的 - PlayerGeTui.GeTuiBossReborn(bossID) __SetIsAlive(bossID, 1) syncBOSSIDList.append(bossID) @@ -461,29 +465,6 @@ if syncBOSSIDList: Sync_BossInfo(None, syncBOSSIDList) return - - -#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) - def GetBossIsAliveOrCanReborn(bossID): ##BOSS是否活着或者可重生 @@ -799,7 +780,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 +961,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 +981,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 +1018,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 +1090,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