From 586febfe813233aa833385095d2ac003ee6818dc Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 23 五月 2022 17:00:15 +0800
Subject: [PATCH] 9415 【BT】【后端】古神战场(战场帮助信息同步优化;个人buff支持触碰采集;去除复活后无法出战宠物多余提示)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossBattlefield.py |  242 ++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 183 insertions(+), 59 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossBattlefield.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossBattlefield.py
index 6f5553c..4c756f4 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossBattlefield.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossBattlefield.py
@@ -109,24 +109,34 @@
         
         self.RandSuperTask()
         self.__randEventList()
+        
+        self.crystalAtkedDict = {} # 被攻击中的水晶  {npcID:被攻击计数, ...}
+        self.worldHelpDict = {} # 未通知的世界变更信息
         return
     
-    def getWorldHelpInfo(self, tick):
+    def getWorldAllHelpInfo(self, tick):
         worldInfo = {"superItemInfo":self.superItemInfo, "crystalFactionInfo":self.crystalFactionInfo,
-                     "factionBuffNPCInfo":self.factionBuffNPCInfo, "eventNPCID":self.eventNPCID, "eventNPCPos":self.eventNPCPos}
-        if self.eventEndTick:
-            worldInfo["eventEndTick"] = max(0, self.eventEndTick - tick) # 事件结束剩余时间,单位毫秒
-        if self.eventNPCHP:
-            worldInfo["eventNPCHP"] = self.eventNPCHP
-        crystalAtkedList = []
-        for npcID in GetCrystalNPCIDList():
-            curNPC = GameWorld.FindNPCByNPCID(npcID)
-            if not curNPC:
-                continue
-            if curNPC.GetPlayerHurtList().GetHurtCount() > 0:
-                crystalAtkedList.append(npcID)
-        worldInfo["crystalAtkedList"] = crystalAtkedList
-        return {"worldInfo":worldInfo}
+                     "factionBuffNPCInfo":self.factionBuffNPCInfo, "crystalAtkedList":self.crystalAtkedDict.keys()}
+        worldInfo.update({"eventNPCID":self.eventNPCID, "eventNPCPos":self.eventNPCPos, 
+                          "eventEndTick":max(0, self.eventEndTick - tick), "eventNPCHP":self.eventNPCHP})
+        return worldInfo
+    
+    def updEventNPCHelp(self, tick):
+        self.worldHelpDict.update({"eventNPCID":self.eventNPCID, "eventNPCPos":self.eventNPCPos, 
+                                   "eventEndTick":max(0, self.eventEndTick - tick), "eventNPCHP":self.eventNPCHP})
+        return
+    
+    def updCrystalAtkedHelp(self, npcID, atkValue):
+        crystalAtkedList = self.crystalAtkedDict.keys()
+        
+        self.crystalAtkedDict[npcID] = self.crystalAtkedDict.get(npcID, 0) + atkValue
+        if self.crystalAtkedDict[npcID] <= 0:
+            self.crystalAtkedDict.pop(npcID)
+            
+        if self.crystalAtkedDict.keys() == crystalAtkedList:
+            return
+        self.worldHelpDict["crystalAtkedList"] = self.crystalAtkedDict.keys()
+        return True
     
     def RandSuperTask(self):
         # 随机生成大奖任务
@@ -182,7 +192,7 @@
         self.eventNPCHP = 0
         self.eventEndTick = 0
         self.lastEventEndTick = tick # 上个事件结束tick
-        FBCommon.NotifyCopyMapPlayerFBHelp(tick, DoFBHelp, 0, refreshCrossBattlefield)
+        self.updEventNPCHelp(tick)
         return
     
     
@@ -215,22 +225,24 @@
         self.superItemPlayerName = "" # 阵营大奖中奖者玩家名
         
         self.robotObjIDList = [] # 本阵营当前机器人实例ID列表
+        
+        self.factionHelpDict = {} # 未通知的阵营变更信息
         return
     
-    def getFactionHelpInfo(self):
+    def getFactionAllHelpInfo(self):
         if self.factionBuffInfo and time.time() >= self.factionBuffInfo[1]:
             self.factionBuffInfo = []
         factionInfo = {"faction":self.faction, "score":self.score, "superItemPlayerName":self.superItemPlayerName,
                        "superItemProgress":self.superItemProgress, "factionBuffInfo":self.factionBuffInfo}
-        if self.hurtBossValue:
-            factionInfo["hurtBossValue"] = self.hurtBossValue
-        return {"factionInfo_%s" % self.faction:factionInfo}
+        factionInfo["hurtBossValue"] = self.hurtBossValue
+        return factionInfo
     
     def addSuperItemProgress(self, addProgress):
         if self.superItemPlayerID:
             # 阵营大奖已开奖,不再增加阵营大奖进度,但是依然会增加个人大奖贡献
             return
         self.superItemProgress = max(0, self.superItemProgress + addProgress)
+        self.factionHelpDict["superItemProgress"] = self.superItemProgress
         GameWorld.DebugLog("    增加阵营大奖进度: faction=%s,addProgress=%s,superItemProgress=%s" 
                            % (self.faction, addProgress, self.superItemProgress), self.fbPropertyID)
         
@@ -255,15 +267,16 @@
         battleObj = GetBattlePlayerObj(superItemPlayerID)
         self.superItemPlayerID = superItemPlayerID
         self.superItemPlayerName = battleObj.name
+        self.factionHelpDict["superItemPlayerName"] = self.superItemPlayerName
         battleObj.superItemContribution = 0 # 重置贡献
+        battleObj.playerHelpDict["superItemContribution"] = battleObj.superItemContribution
         battleObj.superItemAwardCnt += 1
         
         itemID, itemCount = worldObj.superItemInfo[0], worldObj.superItemInfo[1]
         GameWorld.Log("阵营大奖开奖: faction=%s,weightList=%s,superItemPlayerID=%s,itemID=%s,itemCount=%s" 
                       % (self.faction, weightList, superItemPlayerID, itemID, itemCount), self.fbPropertyID)
         PlayerControl.FBNotify("CrossBattlefieldSuperItemPlayer", [battleObj.faction, battleObj.name, itemID, itemCount])
-        tick = GameWorld.GetGameWorld().GetTick()
-        FBCommon.NotifyCopyMapPlayerFBHelp(tick, DoFBHelp, 0, refreshCrossBattlefield)
+        NotifyBattlefieldHelp()
         return
     
     def __checkPerScoreAddSuperItemProgress(self, befScore):
@@ -290,6 +303,7 @@
             return
         befScore = self.score
         self.score = max(0, self.score + addValue)
+        self.factionHelpDict["score"] = self.score
         calcTime = 3471264000 #GameWorld.ChangeTimeStrToNum("2080-01-01 00:00:00")
         self.scoreSortTime = max(0, calcTime - int(time.time()))
         GameWorld.DebugLog("    增加阵营积分: faction=%s,addValue=%s,updScore=%s" % (self.faction, addValue, self.score), self.fbPropertyID)
@@ -380,6 +394,8 @@
         self.crystalCollCnt = 0 # 采集水晶资源次数
         self.wallCollCnt = 0 # 采集积分墙次数
         self.superItemContribution = 0 # 大奖进度贡献值,也是大奖获奖权重
+        
+        self.playerHelpDict = {} # 未通知的玩家变更信息
         return
     
     def getFactionObj(self):
@@ -387,12 +403,10 @@
             self.factionObj = GetBattleFactionObj(self.faction)
         return self.factionObj
     
-    def getPlayerHelpInfo(self, exInfo=None):
+    def getPlayerAllHelpInfo(self):
         helpInfo = {"score":self.score, "superItemContribution":self.superItemContribution, "itemRebornCount":self.itemRebornCount,
                     "killCount":self.killCount, "continueKillCount":self.continueKillCount}
-        if exInfo:
-            helpInfo.update(exInfo)
-        return {"playerInfo":helpInfo}
+        return helpInfo
     
     def addPlayerScore(self, curPlayer, addValue, scoreType=ScoreType_Default, scoreTimes=1, isCheckVictory=True):
         addValue *= scoreTimes
@@ -406,9 +420,8 @@
         if scoreType == ScoreType_Aura and addValue > 0:
             self.auraScore += addValue
             
-        if curPlayer:
-            FBCommon.Notify_FBHelp(curPlayer, self.getPlayerHelpInfo({"addScore":[addValue, scoreType, scoreTimes]}))
-            
+        self.playerHelpDict.update({"score":self.score, "addScore":[addValue, scoreType, scoreTimes]})
+        
         superScorePer = IpyGameDataPY.GetFuncCfg("CrossBattlefieldAwardSuper2", 1)
         if superScorePer:
             befTimes = befScore / superScorePer
@@ -431,6 +444,7 @@
         befContKillCount = self.continueKillCount
         self.killCount = max(0, self.killCount + addCount)
         self.continueKillCount = max(0, self.continueKillCount + addCount) # 同步增加连杀
+        self.playerHelpDict.update({"killCount":self.killCount, "continueKillCount":self.continueKillCount})
         
         superContKillPer = IpyGameDataPY.GetFuncCfg("CrossBattlefieldAwardSuper2", 2)
         if superContKillPer:
@@ -454,6 +468,7 @@
     
     def addSuperItemContribution(self, addProgress):
         self.superItemContribution = max(0, self.superItemContribution + addProgress)
+        self.playerHelpDict["superItemContribution"] = self.superItemContribution
         GameWorld.DebugLog("    更新玩家大奖贡献: playerID=%s,addProgress=%s,superItemContribution=%s" % (self.playerID, addProgress, self.superItemContribution), self.playerID)
         factionObj = self.getFactionObj()
         if factionObj:
@@ -621,26 +636,88 @@
         curPlayer.Sync_TimeTick(IPY_GameWorld.tttTowerTake, 0, max(notify_tick, 0), True)
         allotPlayerFaction(playerID, fightPower, curPlayer, fbStep, tick)
         
+    NotifyBattlefieldHelp(True, curPlayer)
+    return
+
+def NotifyBattlefieldHelp(isAllInfo=False, curPlayer=None, helpEx=None):
+    ## 广播战场帮助信息,针对所有玩家
+    gameWorld = GameWorld.GetGameWorld()
+    lineID = gameWorld.GetLineID()
+    
+    worldInfoKey = "worldInfo"
+    factionInfoKey = "factionInfo_%s"
+    playerInfoKey = "playerInfo"
+    
+    worldObj = GetBattleWorld()
+    
+    helpDict = {}
+    factionObjList = []
+    
+    # 通知完整内容
+    if isAllInfo:
+        tick = GameWorld.GetGameWorld().GetTick()
+        helpDict[worldInfoKey] = worldObj.getWorldAllHelpInfo(tick)
+        for faction in [ShareDefine.CampType_Justice, ShareDefine.CampType_Evil]:
+            factionObj = GetBattleFactionObj(faction)
+            helpDict[factionInfoKey % faction] = factionObj.getFactionAllHelpInfo()
+        helpDict[FBCommon.Help_robotJob] = PyGameData.g_fbRobotJobDict.get(lineID, {})
+        
+    # 通知未通知内容
+    else:
+        if worldObj.worldHelpDict:
+            helpDict[worldInfoKey] = worldObj.worldHelpDict
+            
+        for faction in [ShareDefine.CampType_Justice, ShareDefine.CampType_Evil]:
+            factionObj = GetBattleFactionObj(faction)
+            if factionObj.factionHelpDict:
+                factionObj.factionHelpDict["faction"] = faction
+                helpDict[factionInfoKey % faction] = factionObj.factionHelpDict
+                factionObjList.append(factionObj)
+                
+        if helpEx:
+            helpDict.update(helpEx)
+            
+    if curPlayer:
+        playerID = curPlayer.GetPlayerID()
+        battleObj = GetBattlePlayerObj(playerID)
+        if isAllInfo:
+            helpDict[playerInfoKey] = battleObj.getPlayerAllHelpInfo()
+        elif battleObj.playerHelpDict:
+            helpDict[playerInfoKey] = battleObj.playerHelpDict
+        if helpDict: 
+            FBCommon.Notify_FBHelp(curPlayer, helpDict)
+        battleObj.playerHelpDict = {}
+    else:
+        playerManager = GameWorld.GetMapCopyPlayerManager()
+        for index in xrange(playerManager.GetPlayerCount()):
+            player = playerManager.GetPlayerByIndex(index)
+            if not player:
+                continue
+            helpDict.pop(playerInfoKey, None)
+            playerID = player.GetPlayerID()
+            battleObj = GetBattlePlayerObj(playerID)
+            if isAllInfo:
+                helpDict[playerInfoKey] = battleObj.getPlayerAllHelpInfo()
+            elif battleObj.playerHelpDict:
+                helpDict[playerInfoKey] = battleObj.playerHelpDict
+            if helpDict:
+                FBCommon.Notify_FBHelp(player, helpDict)
+            battleObj.playerHelpDict = {}
+            
+    # 重置未通知的
+    if not curPlayer:
+        worldObj.worldHelpDict = {}
+        for factionObj in factionObjList:
+            factionObj.factionHelpDict = {}
+    return
+
+def OnRandomRobotJob(curNPC, lineRobotJobDict):
+    ## 随机机器人职业
+    NotifyBattlefieldHelp(helpEx={FBCommon.Help_robotJob:lineRobotJobDict})
     return
 
 ##获得副本帮助信息, 用于通知阵营比分条
 def DoFBHelp(curPlayer, tick):
-    gameWorld = GameWorld.GetGameWorld()
-    playerID = curPlayer.GetPlayerID()
-    lineID = gameWorld.GetLineID()
-    
-    worldObj = GetBattleWorld()
-    battleObj = GetBattlePlayerObj(playerID)
-    
-    helpDict = {}
-    helpDict.update(battleObj.getPlayerHelpInfo())
-    helpDict.update(worldObj.getWorldHelpInfo(tick))
-    for faction in [ShareDefine.CampType_Justice, ShareDefine.CampType_Evil]:
-        factionObj = GetBattleFactionObj(faction)
-        helpDict.update(factionObj.getFactionHelpInfo())
-    helpDict[FBCommon.Help_robotJob] = PyGameData.g_fbRobotJobDict.get(lineID, {})
-    #GameWorld.DebugLog("DoFBHelp %s" % helpDict, playerID)
-    FBCommon.Notify_FBHelp(curPlayer, helpDict)
     return
 
 ##玩家退出副本
@@ -761,7 +838,7 @@
             continue
         allotPlayerFaction(playerID, fightPower, curPlayer, fbStep, tick)
         
-    FBCommon.NotifyCopyMapPlayerFBHelp(tick, DoFBHelp, 0, refreshCrossBattlefield)
+    NotifyBattlefieldHelp(True)
     PlayerControl.FBNotify("CrossBattlefieldStartFighting")
     return
 
@@ -849,12 +926,15 @@
     
     if rebornType == ChConfig.rebornType_UseItem:
         battleObj.itemRebornCount += 1
+        battleObj.playerHelpDict["itemRebornCount"] = battleObj.itemRebornCount
         GameWorld.DebugLog("更新使用道具复活次数! itemRebornCount=%s, 且不中断连杀=%s" 
                            % (battleObj.itemRebornCount, battleObj.continueKillCount), playerID)
     else:
         GameWorld.DebugLog("非原地复活,中断连杀!  %s" % battleObj.continueKillCount, playerID)
         battleObj.continueKillCount = 0 # 非原地复活的中断连杀数
+        battleObj.playerHelpDict["continueKillCount"] = battleObj.continueKillCount
         
+    NotifyBattlefieldHelp(False, curPlayer)
     return
 
 def OnPlayerReborn():
@@ -928,7 +1008,13 @@
         __RefreshPersonBuff(tick, passSeconds)
         __RefreshFactionBuff(tick, passSeconds)
         __RefreshBattlefieldEvent(tick, passSeconds)
-        FBCommon.NotifyCopyMapPlayerFBHelp(tick, DoFBHelp, FightRefreshInterval, refreshCrossBattlefield)
+        
+        gameFB = GameWorld.GetGameFB()
+        lastTick = gameFB.GetGameFBDictByKey(ChConfig.Def_FB_NotifyFBHelpTick)
+        if tick - lastTick >= FightRefreshInterval:
+            gameFB.SetGameFBDict(ChConfig.Def_FB_NotifyFBHelpTick, tick)
+            refreshCrossBattlefield(tick)
+            NotifyBattlefieldHelp()
         return
     
     jFactionObj = GetBattleFactionObj(ShareDefine.CampType_Justice)
@@ -1065,10 +1151,11 @@
         return
     
     worldObj.factionBuffNPCInfo = [randBuffNPCID, posX, posY]
+    worldObj.worldHelpDict["factionBuffNPCInfo"] = worldObj.factionBuffNPCInfo
     GameWorld.DebugLog("刷新阵营buff: randBuffNPCID=%s,nearFaction=%s,nearFactionWeightList=%s" 
                        % (randBuffNPCID, nearFaction, nearFactionWeightList), fbPropertyID)
     PlayerControl.FBNotify("CrossBattlefieldBuff_%s" % randBuffNPCID, [randBuffNPCID])
-    FBCommon.NotifyCopyMapPlayerFBHelp(tick, DoFBHelp, 0, refreshCrossBattlefield)
+    NotifyBattlefieldHelp()
     return
 
 def __GetRandPos(posList):
@@ -1109,6 +1196,7 @@
                 NPCCommon.SetDeadEx(auraNPC)
                 
             worldObj.setEventEnd(tick)
+            NotifyBattlefieldHelp()
             
         return
     
@@ -1209,7 +1297,8 @@
             wallScore = IpyGameDataPY.GetFuncCfg("CrossBattlefieldScoreWall", 3)
             PlayerControl.FBNotify("CrossBattlefieldEventWall", [npcID, wallScore, worldObj.eventNPCHP])
             
-        FBCommon.NotifyCopyMapPlayerFBHelp(tick, DoFBHelp, 0, refreshCrossBattlefield)
+        worldObj.updEventNPCHelp(tick)
+        NotifyBattlefieldHelp()
         
     return
 
@@ -1236,6 +1325,7 @@
     #GameWorld.DebugLog("积分光环给玩家加积分: addValue=%s,auraScoreRange=%s" % (addValue, auraScoreRange), playerID)
     battleObj = GetBattlePlayerObj(playerID)
     battleObj.addPlayerScore(curPlayer, addValue, ScoreType_Aura)
+    NotifyBattlefieldHelp(False, curPlayer)
     return
 
 def __DoLogic_FB_Leave(tick):
@@ -1361,6 +1451,9 @@
         
     #factionScore += ... # 其他加分
     atkFactionObj.addFactionScore(factionScore)
+    
+    if atkObjType == IPY_GameWorld.gotPlayer:
+        NotifyBattlefieldHelp(False, atkObj) # 击杀的暂只实时通知自己
     return
 
 def DoFB_NPCDead(curNPC):
@@ -1520,7 +1613,7 @@
     GameWorld.Log("跨服战场结算! zoneID=%s,funcLineID=%s,winnerFaction=%s" % (zoneID, funcLineID, winnerFaction), fbPropertyID)
     
     refreshCrossBattlefield(tick, False) # 结算前强刷一次
-    FBCommon.NotifyCopyMapPlayerFBHelp(tick, DoFBHelp, 0)
+    NotifyBattlefieldHelp(True)
     
     #awardOnlineTimes = IpyGameDataPY.GetFuncCfg("CrossBattlefieldAward", 1) # 结算奖励需参与活动时长,秒钟
     winnerOrderAwardDict = IpyGameDataPY.GetFuncEvalCfg("CrossBattlefieldAward", 2, {})
@@ -1689,13 +1782,36 @@
 
 ## 开始采集
 def OnBeginCollect(curPlayer, curNPC):
-    tick = GameWorld.GetGameWorld().GetTick()
-    FBCommon.NotifyCopyMapPlayerFBHelp(tick, DoFBHelp, 0, refreshCrossBattlefield)
+    npcID = curNPC.GetNPCID()
+    if npcID in GetCrystalNPCIDList():
+        worldObj = GetBattleWorld()
+        if worldObj.updCrystalAtkedHelp(npcID, 1):
+            NotifyBattlefieldHelp()
+    return
+
+## 退出采集
+def OnExitCollect(curPlayer, curNPC):
+    if not curNPC or not hasattr(curNPC, "GetNPCID"):
+        return
+    npcID = curNPC.GetNPCID()
+    if npcID in GetCrystalNPCIDList():
+        worldObj = GetBattleWorld()
+        if worldObj.updCrystalAtkedHelp(npcID, -1):
+            NotifyBattlefieldHelp()
+    return
+
+def OnMoveTouchNPC(curPlayer, curNPC, tick):
+    ## 触碰NPC处理逻辑
+    npcID = curNPC.GetNPCID()
+    GameWorld.DebugLog("OnMoveTouchNPC npcID=%s" % npcID, curPlayer.GetPlayerID())
+    # 个人buff
+    if npcID in GetPersonBuffIDList():
+        __OnCollectOK_PersonBuff(curPlayer, curNPC, tick)
     return
 
 ##玩家收集成功(塔, 旗)
 def OnCollectOK(curPlayer, npcID, tick):
-    GameWorld.DebugLog("OnCollectOK npcID=%s" % npcID, curPlayer.GetPlayerID())
+    #GameWorld.DebugLog("OnCollectOK npcID=%s" % npcID, curPlayer.GetPlayerID())
     tagObj = curPlayer.GetActionObj()
     if not tagObj:
         return
@@ -1711,8 +1827,8 @@
         __OnCollectOK_Crystal(curPlayer, curNPC, tick)
         
     # 个人buff
-    elif npcID in GetPersonBuffIDList():
-        __OnCollectOK_PersonBuff(curPlayer, curNPC, tick)
+    #elif npcID in GetPersonBuffIDList():
+    #    __OnCollectOK_PersonBuff(curPlayer, curNPC, tick)
         
     # 阵营buff
     elif npcID in GetFactionBuffIDList():
@@ -1742,6 +1858,7 @@
     # 更新归属信息
     worldObj.crystalFactionInfo[npcID] = faction
     worldObj.crystalAwardTick[npcID] = tick
+    worldObj.worldHelpDict["crystalFactionInfo"] = worldObj.crystalFactionInfo
     
     battleObj.crystalCollCnt += 1
     GameWorld.Log("玩家占领水晶: objID=%s,npcID=%s,lastOwnerFaction=%s,playerID=%s,faction=%s" 
@@ -1753,7 +1870,7 @@
     PlayerControl.FBFactionNotify(curPlayer.GetFaction(), "CrossBattlefieldOccupiedSelf", [battleObj.name],
                                   "CrossBattlefieldOccupiedOther", [battleObj.name])
     
-    FBCommon.NotifyCopyMapPlayerFBHelp(tick, DoFBHelp, 0, refreshCrossBattlefield)
+    NotifyBattlefieldHelp()
     return
 
 def __OnCollectOK_PersonBuff(curPlayer, curNPC, tick):
@@ -1797,6 +1914,7 @@
     worldObj = GetBattleWorld()
     if worldObj.factionBuffNPCInfo and npcID == worldObj.factionBuffNPCInfo[0]:
         worldObj.factionBuffNPCInfo = []
+        worldObj.worldHelpDict["factionBuffNPCInfo"] = []
     worldObj.factionBuffCalcTick = tick
     
     # 增加buff效果
@@ -1840,12 +1958,13 @@
     buffTime = buffSkill.GetLastTime()
     endTime = int(time.time()) + int(buffTime / 1000)
     gainBuffFactionObj.factionBuffInfo = [addSkillID, endTime]
+    gainBuffFactionObj.factionHelpDict["factionBuffInfo"] = gainBuffFactionObj.factionBuffInfo
     
     if npcID == 30908112:
         gainBuffFactionObj.crystalScorePlusRate = buffSkill.GetEffect(0).GetEffectValue(0)
         gainBuffFactionObj.crystalScorePlusEndTick = tick + buffTime
         
-    FBCommon.NotifyCopyMapPlayerFBHelp(tick, DoFBHelp, 0, refreshCrossBattlefield)
+    NotifyBattlefieldHelp()
     NPCCommon.SetDeadEx(curNPC)
     return
 
@@ -1881,7 +2000,8 @@
     if worldObj.eventNPCHP <= 0:
         worldObj.setEventEnd(tick)
     else:
-        FBCommon.NotifyCopyMapPlayerFBHelp(tick, DoFBHelp, 0, refreshCrossBattlefield)
+        worldObj.worldHelpDict["eventNPCHP"] = worldObj.eventNPCHP
+    NotifyBattlefieldHelp()
     return
 
 def DoFBOnNPCKill_Player(curNPC, curPlayer, tick):
@@ -1961,6 +2081,8 @@
     battleObj = GetBattlePlayerObj(ownerPlayerID)
     battleObj.addKillCount(1)
     battleObj.addPlayerScore(ownerPlayer, guardKillPlayerScore, ScoreType_GuardKillPlayer)
+    if ownerPlayer:
+        NotifyBattlefieldHelp(False, ownerPlayer)
     return
 
 def __OnPlayerKillEventBoss(curPlayer, curNPC, tick):
@@ -1985,6 +2107,7 @@
         # 伤害相同时,归属最后一击玩家所属阵营
         ownerFaction = jFactionObj if killerFaction == jFactionObj.faction else eFactionObj
         ownerFaction.hurtBossValue += 100 # 随机归属方额外增加伤害
+        ownerFaction.factionHelpDict["hurtBossValue"] = ownerFaction.hurtBossValue
         GameWorld.Log("    伤害相同,归属最后一击玩家阵营! ", fbPropertyID)
     GameWorld.Log("    Boss归属阵营: faction=%s" % ownerFaction.faction, fbPropertyID)
     ownerFactionScore = IpyGameDataPY.GetFuncCfg("CrossBattlefieldBoss", 3)    
@@ -2003,7 +2126,7 @@
     worldObj = GetBattleWorld()
     worldObj.setEventEnd(tick)
     if not checkBattleOver(tick):
-        FBCommon.NotifyCopyMapPlayerFBHelp(tick, DoFBHelp, 0, refreshCrossBattlefield)
+        NotifyBattlefieldHelp()
     return
 
 def GetFBPlayerHurtNPCMultiValue(curPlayer, curNPC):
@@ -2035,6 +2158,7 @@
         
         # 累加伤害
         factionObj.hurtBossValue = factionObj.hurtBossValue + hurtHP
+        factionObj.factionHelpDict["hurtBossValue"] = factionObj.hurtBossValue
         factionObj.hurtBossPlayerDict[playerID] = factionObj.hurtBossPlayerDict.get(playerID, 0) + hurtHP
         GameWorld.DebugLog("玩家攻击boss: faction=%s,hurtHP=%s,factionHurtBossValue=%s,playerHurtBossValue=%s,npcHP=%s" 
                            % (faction, hurtHP, factionObj.hurtBossValue, factionObj.hurtBossPlayerDict[playerID], GameObj.GetHP(curNPC)), playerID)

--
Gitblit v1.8.0