From 701ebec9f6cca57f0ccffc0239cf9d8e25722eb0 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期五, 12 四月 2019 14:23:38 +0800
Subject: [PATCH] 6457 【后端】【2.0】缥缈仙域开发单(通知修改)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py |   86 +++++++++++++++++++++++++++++++++++--------
 1 files changed, 70 insertions(+), 16 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
index ac35418..a80245c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
@@ -18,7 +18,7 @@
 import IPY_GameWorld
 import PlayerControl
 import GameWorldProcess
-import PlayerMergeEvent
+import PlayerSuccess
 import ReadChConfig
 import ShareDefine
 import FBCommon
@@ -325,13 +325,13 @@
     
     return
 
-## 副本中召唤兽死亡(被击杀或者时间到等)
+## 副本中NPC死亡(被击杀或者时间到等)
 #  @param curNPC
 #  @return None.
-def DoFB_SummonNPCDead(curNPC):
+def DoFB_NPCDead(curNPC):
     do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
     
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "DoFB_SummonNPCDead"))
+    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "DoFB_NPCDead"))
     
     if callFunc:
         callFunc(curNPC)
@@ -355,6 +355,16 @@
     
     return
 
+def DoFBOnNPCKill_Player(curNPC, curPlayer, tick):
+    ## 副本内NPC杀人
+    do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
+    
+    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "DoFBOnNPCKill_Player"))
+    
+    if callFunc:
+        #GameWorld.Log("副本逻辑不可使用   GameLogic_%d"%(mapID))
+        return  callFunc(curNPC, curPlayer, tick)
+    return
 #---------------------------------------------------------------------
 ## 任务专用,触发事件(副本内攻击人)
 #  @param curPlayer 攻击者
@@ -485,7 +495,7 @@
     gameMapID = gameMap.GetMapID()
     
     #如果已经设置过副本功能线路属性,则进入时同步玩家,一般下线重登或者非第一个进入该副本的玩家(如队友)会收到该包
-    if FBCommon.GetHadSetFBPropertyMark():
+    if FBCommon.GetHadSetFBPropertyMark() and gameMap.GetMapFBType() != IPY_GameWorld.fbtSingle:
         PlayerControl.SetFBFuncLineID(curPlayer, FBCommon.GetFBPropertyMark())
         
     #成长NPC所需数据初始化
@@ -507,12 +517,15 @@
     #注册玩家离开副本时间
     gameFBMgr.SetPlayerLogoffTick(0)
     
+    PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_EnterMap, 1, [gameMapID])
+    
     if gameFBMgr.HaveFBPlayer(curPlayerID):
         #已经注册了这个玩家, 不清除已注册的玩家的字典信息
         return
     
     #注册进入这个副本的玩家
     gameFBMgr.AddFBPlayer(curPlayerID)
+    
     return
 
 def DoEnterFB(curPlayer, tick):
@@ -523,6 +536,18 @@
     if callFunc != None:
         GameWorld.Log("DoEnterFBLogic...", curPlayer.GetPlayerID())
         callFunc(curPlayer, tick)
+    return
+
+def OnCallHelpBattleOK(curPlayer, tick):
+    ## 召唤助战完成
+    do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
+    
+    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnCallHelpBattleOK"))
+    
+    if callFunc != None:
+        GameWorld.Log("OnCallHelpBattleOK...", curPlayer.GetPlayerID())
+        callFunc(curPlayer, tick)
+        
     return
 
 def InitFBNPCStrengthenData(curPlayer, gameMap):
@@ -673,9 +698,6 @@
     if callFunc:
         #GameWorld.Log("副本逻辑不可使用   GameLogic_%d"%(mapID))
         callFunc(curPlayer , tick)
-    
-    #有玩家离开副本广播一次
-    PlayerMergeEvent.BroadcastMergePlayerEvent()
     
     #如果是最后一个人离开副本, 那么设置副本的离开时间, 5分钟后副本关闭
     __PlayerLeaveSetPlayerLogoffTick(curPlayer, tick)
@@ -862,6 +884,18 @@
     callFunc(tick)
     return
 
+## 开始采集
+#  @param curPlayer 当前玩家
+#  @param curNPC 当前NPC
+#  @return None or False
+#  @remarks 函数详细说明.
+def OnBeginCollect(curPlayer, curNPC):
+    do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
+    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnBeginCollect"))
+    if callFunc:
+        callFunc(curPlayer, curNPC)
+    return
+
 ## 收集中(家族战副本中的棋和塔)
 #  @param curPlayer 当前玩家
 #  @param tick 当前时间
@@ -879,7 +913,7 @@
 #  @param tick 当前时间
 #  @return None or False
 #  @remarks 函数详细说明.
-def OnCollectOK(curPlayer, tick):
+def OnCollectOK(curPlayer, npcID, tick):
     do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
     
     callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnCollectOK"))
@@ -889,7 +923,7 @@
         return False
     
     #执行副本逻辑
-    callFunc(curPlayer, tick)
+    callFunc(curPlayer, npcID, tick)
     return
 
 ## 玩家离开副本
@@ -1195,7 +1229,11 @@
 def PlayerLoginInFBCheck(curPlayer, tick):
     gameMap = GameWorld.GetMap()
     #如果此地图是自动释放的, 需要检查这个玩家
-    if gameMap.GetMapFBType() == 0:
+    if gameMap.GetMapFBType() in [IPY_GameWorld.fbtNull]:
+        return False
+    
+    #跨服服务器是直接注册的地图ID数据,地图肯定没有该玩家,所以不判断
+    if GameWorld.IsCrossServer():
         return False
     
     #玩家 在副本中,并且副本不踢出玩家下线
@@ -1229,9 +1267,6 @@
 #  @return mapID
 #  @remarks 函数详细说明.
 def __GetFBLogic_MapID(mapID):
-    #ManorWarMapIDList = ReadChConfig.GetEvalChConfig("ManorWarMapID")  
-    #if mapID in ManorWarMapIDList:
-    #    return 'ManorWar'
     mapID = FBCommon.GetRecordMapID(mapID)
     for key, value in ChConfig.Def_FB_MapID.items():
         if mapID in value:
@@ -1439,6 +1474,17 @@
         return False
 
     return callFunc(curPlayer, mapID, lineID, cnt, isFinish, dataEx)
+
+## 副本助战扫荡结果
+def OnPlayerFBHelpBattleSweepResult(curPlayer, mapID, lineID, helpBattlePlayerDict, addXianyuanCoin, reason):
+    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
+    
+    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnPlayerFBHelpBattleSweepResult"))
+    
+    if callFunc == None:
+        return False
+
+    return callFunc(curPlayer, mapID, lineID, helpBattlePlayerDict, addXianyuanCoin, reason)
 
 ## 开始公共CD副本扫荡
 def OnStartPubCDFBSweep(curPlayer, mapID, lineID, cnt, dataEx):
@@ -1885,14 +1931,14 @@
 #  @param mapID 玩家
 #  @param tick 当前时间
 #  @return None-未找到,线路id - 0~N
-def GetFBLineMaxPlayerCount(mapID):
+def GetFBLineMaxPlayerCount(mapID, lineID):
     
     do_FBLogic_ID = __GetFBLogic_MapID(mapID)
     
     callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "GetFBLineMaxPlayerCount"))
     
     if callFunc:
-        return callFunc()
+        return callFunc(lineID)
     
     return 0
 
@@ -2097,3 +2143,11 @@
     
     return callFunc(curPlayer, tick)
 
+def OnPlayerLVUp(curPlayer):
+    ## 玩家升级
+    do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
+    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnPlayerLVUp"))
+    if callFunc == None:
+        return False
+    return callFunc(curPlayer)
+    
\ No newline at end of file

--
Gitblit v1.8.0