From bf0562bdddb65952b4e59c4911fa26c6996b748d Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期二, 22 一月 2019 14:40:10 +0800
Subject: [PATCH] 5919 【后端】【1.5.100】诛仙塔功能开发(排行榜修改)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_ElderBattlefield.py |   32 ++++++++++++++++++++++++++------
 1 files changed, 26 insertions(+), 6 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_ElderBattlefield.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_ElderBattlefield.py
index 5b41f03..09ce446 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_ElderBattlefield.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_ElderBattlefield.py
@@ -35,6 +35,7 @@
 import SkillShell
 import EventReport
 import SkillCommon
+import PlayerWeekParty
 
 import random
 import time
@@ -69,8 +70,10 @@
 FB_Step_Over,  # 副本结束
 ) = range(3)
 
-def OnLogin(curPlayer):
-    OnElderBattlefieldFBResult(curPlayer, True)
+def OnFBPlayerOnLogin(curPlayer):
+    mapID = GameWorld.GetMap().GetMapID()
+    if mapID != ChConfig.Def_FBMapID_ElderBattlefield:
+        OnElderBattlefieldFBResult(curPlayer, True)
     return
 
 def OnElderBattlefieldStateChange(state, tick):
@@ -156,6 +159,10 @@
         return
     curPlayer.Sync_TimeTick(IPY_GameWorld.tttTowerTake, 0, closeFB_RemainTick, True) 
     
+    if not FBCommon.GetHadSetFBPropertyMark():
+        lineID = GameWorld.GetGameWorld().GetPropertyID() - 1
+        FBCommon.SetFBPropertyMark(lineID)
+        
     if not FBCommon.GetHadDelTicket(curPlayer):
         FBCommon.SetHadDelTicket(curPlayer)
         if FBCommon.AddEnterFBCount(curPlayer, ChConfig.Def_FBMapID_ElderBattlefield):
@@ -164,6 +171,7 @@
             GameWorld.GetGameWorld().SetGameWorldDict(FBPlayerDict_TotalExp % playerID, 0)
             GameWorld.GetGameWorld().SetGameWorldDict(FBPlayerDict_TotalExpPoint % playerID, 0)
             EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_ElderBattlefield, 0, ChConfig.CME_Log_Start)
+            PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_ElderBattlefield, 1)
     else:
         rebornBuffLV = GameWorld.GetGameFB().GetPlayerGameFBDictByKey(playerID, FBPlayerDict_RebornBuffLV)
         __DoAddRebornBuff(curPlayer, rebornBuffLV, tick)
@@ -202,6 +210,7 @@
     
     skillBuffID = IpyGameDataPY.GetFuncCfg('ElderBattlefieldRobot', 3)
     BuffSkill.DelBuffBySkillID(curPlayer, skillBuffID, tick)
+    FBCommon.UpdFBLineNPCStrengthenLV(curPlayer.GetPlayerID(), True)
     return
 
 
@@ -222,6 +231,7 @@
     gameFB = GameWorld.GetGameFB()
     gameFB.SetPlayerGameFBDict(playerID, FBPlayerDict_ContKillCntEx, 0)
     gameFB.SetPlayerGameFBDict(playerID, FBPlayerDict_EnemyID, 0)
+    gameFB.SetPlayerGameFBDict(playerID, FBPlayerDict_RebornBuffLV, 0)
     return
 
 
@@ -306,6 +316,10 @@
     lineID = GameWorld.GetGameWorld().GetPropertyID() - 1
     if lineID not in robotCfgDict:
         return
+    robotMaxLV = gameFB.GetGameFBDictByKey(ChConfig.Def_FB_NPCStrengthenMaxLV)
+    if GameWorld.GetMapCopyPlayerManager().GetPlayerCount() <= 0 or not robotMaxLV:
+        #GameWorld.DebugLog("没玩家,不刷机器人! ")
+        return
     rmarkList = IpyGameDataPY.GetFuncEvalCfg('ElderBattlefieldRobot', 5)
     curNPCCnt = 0
     robotCntDict = {}
@@ -370,11 +384,14 @@
 
 def OnElderBattlefieldFBResult(curPlayer, isLogin=False):
     # 玩家处理上古战场结算信息
+    curStage = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ElderBattlefieldStage, 0)
+    if not curStage:
+        return
     GameWorld.DebugLog('    玩家处理上古战场结算信息 , isLogin=%s' % isLogin, curPlayer.GetPlayerID())
     lineID = 0  #GameWorld.GetGameWorld().GetPropertyID() -1
     fbRewardDict = FBCommon.GetFBLineReward(ChConfig.Def_FBMapID_ElderBattlefield, lineID)
     
-    curStage = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ElderBattlefieldStage, 0)
+    
     itemList = fbRewardDict.get(curStage, [])
     succIDList = PlayerSuccess.GetCanGetAwardSuccByType(curPlayer, [ShareDefine.SuccType_ElderBattlefieldKill, ShareDefine.SuccType_ElderBattlefieldConKill])
     succAwardDict = PlayerSuccess.GiveSuccAward(curPlayer, succIDList, False)
@@ -389,7 +406,7 @@
     emptySpace = ItemCommon.GetItemPackSpace(curPlayer, IPY_GameWorld.rptItem, needSpace)
     mapID = GameWorld.GetMap().GetMapID()
     if mapID != ChConfig.Def_FBMapID_ElderBattlefield or isLogin or emptySpace < needSpace:
-        PlayerControl.SendMailByKey("ElderBattlefieldMail", [curPlayer.GetPlayerID()], rewardItemList)
+        PlayerControl.SendMailByKey("ElderBattlefieldMail" if mapID == ChConfig.Def_FBMapID_ElderBattlefield else 'ElderBattlefieldMail2', [curPlayer.GetPlayerID()], rewardItemList)
     else:
         for itemID, itemCnt, isBind in rewardItemList:
             ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isBind, [IPY_GameWorld.rptItem], event=["ElderBattlefield", False, {}])
@@ -462,6 +479,7 @@
 # @remarks 用于通知阵营比分条
 def DoFBHelp(curPlayer, tick):
     gameWorld = GameWorld.GetGameWorld()
+    lineID = gameWorld.GetLineID()
     playerID = curPlayer.GetPlayerID()
     score = gameWorld.GetGameWorldDictByKey(FBPlayerDict_Score % playerID)
     stageScoreList = IpyGameDataPY.GetFuncEvalCfg('ElderBattlefieldCfg', 4)
@@ -481,6 +499,7 @@
     helpDict['topPlayerID'] = topPlayerID
     #helpDict[FBCommon.Help_lineID] = GameWorld.GetGameWorld().GetLineID()
     helpDict['enemyID'] = GameWorld.GetGameFB().GetPlayerGameFBDictByKey(playerID, FBPlayerDict_EnemyID)
+    helpDict[FBCommon.Help_robotJob] = PyGameData.g_fbRobotJobDict.get(lineID, {})
     GameWorld.DebugLog("DoFBHelp %s" % helpDict, playerID)
     FBCommon.Notify_FBHelp(curPlayer, helpDict)
     return
@@ -499,6 +518,7 @@
 def DoFBOnKill_Player(atkobj, defender, tick):
     gameFB = GameWorld.GetGameFB()
     atkIsPlayer = atkobj.GetGameObjType() == IPY_GameWorld.gotPlayer
+    baseCnt = IpyGameDataPY.GetFuncCfg('ElderBattlefieldSys', 2)
     addScore = 0
     if atkIsPlayer:
         playerID = atkobj.GetPlayerID()
@@ -514,7 +534,7 @@
         gameFB.SetPlayerGameFBDict(playerID, FBPlayerDict_ContKillCntEx, contKillCntEx)
         #连杀广播
         ckillSysList = IpyGameDataPY.GetFuncCfg('ElderBattlefieldSys', 1)
-        baseCnt = IpyGameDataPY.GetFuncCfg('ElderBattlefieldSys', 2)
+        
         perCnt = IpyGameDataPY.GetFuncCfg('ElderBattlefieldSys', 3)
         if contKillCntEx >= baseCnt and contKillCntEx % perCnt == 0:
             sysIndex = min((contKillCntEx - baseCnt) / perCnt, len(ckillSysList) - 1)
@@ -538,7 +558,7 @@
             if atkIsPlayer:
                 PlayerControl.FBNotify('AncientBattlefield_7', [atkobj.GetName(), defender.GetName(), defContKillCntEx])
             else:
-                PlayerControl.FBNotify('AncientBattlefield_robot', [atkobj.GetNPCID(), atkobj.GetObjID(), defender.GetName(), defContKillCntEx])
+                PlayerControl.FBNotify('AncientBattlefield_robot', [atkobj.GetNPCID(), atkobj.GetID(), defender.GetName(), defContKillCntEx])
         gameFB.SetPlayerGameFBDict(tagPlayerID, FBPlayerDict_ContKillCntEx, 0)
         #记录仇人
         if atkIsPlayer:

--
Gitblit v1.8.0