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