From d7f44d8d871a90c818bdb3ffe9a60af875b7100a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 30 九月 2025 10:12:23 +0800
Subject: [PATCH] 135 【挑战】战锤秘境-服务端(白骨盈野;副本基础;副本扫荡;广告奖励支持;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py |  311 +++++++--------------------------------------------
 1 files changed, 45 insertions(+), 266 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 f30cd89..a993db4 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py
@@ -23,7 +23,6 @@
 import IpyGameDataPY
 import PlayerSuccess
 import ReadChConfig
-import PlayerAssist
 import ShareDefine
 import PyGameData
 import FBCommon
@@ -275,12 +274,6 @@
 #  @return None
 #  @remarks 函数详细说明.
 def DoFB_Player_KillNPC(curPlayer , curNPC , tick):
-    mapID = PlayerControl.GetCustomMapID(curPlayer)
-    lineID = PlayerControl.GetCustomLineID(curPlayer)
-    if mapID:
-        DoCustomScene_Player_KillNPC(curPlayer, curNPC, mapID, lineID)
-        return
-    
     do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
     
     callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "DoFB_Player_KillNPC"))
@@ -368,9 +361,7 @@
 #  @return None
 #  @remarks 函数详细说明.
 def DoFBOnKill_Player(curPlayer, defender, tick):
-    mapID = PlayerControl.GetCustomMapID(curPlayer)
-    if not mapID:
-        mapID = GameWorld.GetMap().GetMapID()
+    mapID = GameWorld.GetMap().GetMapID()
     do_FBLogic_ID = __GetFBLogic_MapID(mapID)
     
     callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "DoFBOnKill_Player"))
@@ -441,23 +432,7 @@
         callFunc(curPlayer, rebornType, tick)
     
     return
-#---------------------------------------------------------------------
-## 获得副本当前信息
-#  @param curPlayer 当前玩家
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoGetFBState(curPlayer, tick):
-    do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "DoGetFBState"))
-    
-    if callFunc:
-        #GameWorld.Log("副本逻辑不可使用   GameLogic_%d"%(mapID))
-        return  callFunc(curPlayer, tick)
-    
-    return
-#---------------------------------------------------------------------
+
 ## 获得副本帮助
 #  @param curPlayer 当前玩家
 #  @param tick 当前时间
@@ -523,7 +498,7 @@
             playerZoneID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqCrossFBZoneID)
             playerFuncLineID = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_ReqCrossFBFuncLine)
             # 跨服排位分区与玩家分区可能不一样
-            if (fbZoneID != playerZoneID or fbFuncLineID != playerFuncLineID) and mapID not in [ChConfig.Def_FBMapID_CrossChampionship]:
+            if (fbZoneID != playerZoneID or fbFuncLineID != playerFuncLineID) and mapID not in []:
                 GameWorld.ErrLog("DoEnterFB 玩家与当前副本线路所属分区或功能分线不同,踢出玩家!fbZoneID=%s,playerZoneID=%s,fbFuncLineID=%s,playerFuncLineID=%s" 
                                  % (fbZoneID, playerZoneID, fbFuncLineID, playerFuncLineID), curPlayerID)
                 CrossRealmPlayer.PlayerExitCrossServer(curPlayer)
@@ -557,7 +532,6 @@
     #成长NPC所需数据初始化
     InitFBNPCStrengthenData(curPlayer, gameMap)
     
-    PlayerAssist.OnPlayerEnterAssistFB(curPlayer, gameMapID, reqFuncLineID)
     DoEnterFB(curPlayer, tick)
     
     RecordFirstEnterMap(curPlayer, gameMapID)
@@ -600,18 +574,6 @@
     #扣费一般都是在进入副本逻辑里处理,免费只有一次性的,所以放在后面进行重置,防止一直免费
     if curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFBFree):
         PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_Player_Dict_EnterFBFree, 0)
-    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):
@@ -977,18 +939,6 @@
     callFunc(tick)
     return
 
-def OnCustomSceneProcess(curPlayer, tick):
-    customMapID = PlayerControl.GetCustomMapID(curPlayer)
-    if not customMapID:
-        return
-    customLineID = PlayerControl.GetCustomLineID(curPlayer)
-    do_FBLogic_ID = __GetFBLogic_MapID(customMapID)
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnCustomSceneProcess"))
-    if callFunc:
-        callFunc(curPlayer, customMapID, customLineID, tick)
-        
-    return
-
 ## 开始采集
 #  @param curPlayer 当前玩家
 #  @param curNPC 当前NPC
@@ -1118,13 +1068,6 @@
 def OnFBPlayerOnDay(curPlayer, onDayType):    
     for key, mapIDList in ChConfig.Def_FB_MapID.items():
         if not mapIDList:
-            continue
-        mapID = mapIDList[0]
-        ipyData = FBCommon.GetFBIpyData(mapID)
-        if ipyData and ipyData.GetDayResetType():
-            if onDayType != ipyData.GetDayResetType():
-                continue
-        elif onDayType != ShareDefine.Def_OnEventTypeEx:
             continue
         callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (key, "OnFBPlayerOnDay"))
         if callFunc:
@@ -1316,23 +1259,6 @@
     
     return callFunc(curPlayer)
 
-#---------------------------------------------------------------------
-## 玩家主动离开副本
-#  @param curPlayer 当前玩家
-#  @param tick 当前时间
-#  @return None or False
-#  @remarks 函数详细说明.
-def OnExitEvent(curPlayer, tick):
-    do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnExitEvent"))
-    
-    if callFunc == None:
-        #GameWorld.Log("副本逻辑不可使用   GameLogic_%d"%(mapID))
-        return False
-    
-    callFunc(curPlayer, tick)
-    return
 #---------------------------------------------------------------------
 ## 玩家刚登陆时,要判断玩家是否还属于这个副本
 #  @param curPlayer 当前玩家
@@ -1597,36 +1523,19 @@
     
     return callFunc(curPlayer, addExp, expViewType)
 
-## 获得多倍副本奖励
-#  @param curPlayer 当前玩家
-#  @param mapID 
-#  @param lineID 
-#  @param prizeExLV 额外奖励百分比等级
-#  @return
-def OnGetMultiFBPrize(curPlayer, mapID, lineID, prizeExLV):
-    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnGetMultiFBPrize"))
-    
-    if callFunc == None:
-        return
-    
-    return callFunc(curPlayer, mapID, lineID, prizeExLV)
-
 ## 副本扫荡询问
-def OnPlayerFBSweepAsk(curPlayer, mapID, lineID, cnt, isFinish, dataEx):
+def OnPlayerFBSweepAsk(curPlayer, mapID, lineID, cnt, dataEx):
     do_FBLogic_ID = __GetFBLogic_MapID(mapID)
     
     callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnPlayerFBSweepAsk"))
     
-    # 没有额外条件判断默认返回True
     if callFunc == None:
-        return True
+        return
 
-    return callFunc(curPlayer, mapID, lineID, cnt, isFinish, dataEx)
+    return callFunc(curPlayer, mapID, lineID, cnt, dataEx)
 
 ## 副本扫荡结果
-def OnPlayerFBSweepResult(curPlayer, mapID, lineID, cnt, isFinish, dataEx):
+def OnPlayerFBSweepResult(curPlayer, mapID, lineID, cnt, dataEx):
     do_FBLogic_ID = __GetFBLogic_MapID(mapID)
     
     callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnPlayerFBSweepResult"))
@@ -1634,18 +1543,7 @@
     if callFunc == None:
         return False
 
-    return callFunc(curPlayer, mapID, lineID, cnt, isFinish, dataEx)
-
-## 副本助战扫荡结果
-def OnPlayerFBHelpBattleSweepResult(curPlayer, mapID, lineID, helpBattlePlayerDict):
-    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)
+    return callFunc(curPlayer, mapID, lineID, cnt, dataEx)
 
 ## 开始公共CD副本扫荡
 def OnStartPubCDFBSweep(curPlayer, mapID, lineID, cnt, dataEx):
@@ -1842,22 +1740,6 @@
     
     return
 
-## NPC攻击成功后FB处理(说明:进入这个函数的时候,怪物已经死亡,掉落经验等都处理过了)
-#  @param curNPC 攻击方
-#  @param target 防守方
-#  @param tick 当前时间
-#  @return None
-#  @remarks 函数详细说明.
-def DoOverNPCAttackSuccess(curNPC, target, tick):
-    do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "DoOverNPCAttackSuccess"))
-    
-    if callFunc:
-        callFunc(curNPC, target, tick)
-    
-    return
-
 ## 玩家死亡
 #  @param curPlayer:死亡的玩家 
 #  @return None
@@ -1948,24 +1830,7 @@
         return ''
     
     return callFunc(curPlayer, lineId)
-#---------------------------------------------------------------------
-##副本使用特殊功能(技能)
-# @param curPlayer 玩家实例
-# @param useType 使用类型
-# @param useState 使用状态
-# @return 无意义
-# @remarks 副本使用特殊技能
-def UseFBSpecilSkill(curPlayer, useType, useState, tick):
-    do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "UseFBSpecilSkill"))
-    
-    if callFunc == None:
-        return
-    
-    return callFunc(curPlayer, useType, useState, tick)
 
-    
 ##副本有NPC重生
 # @param curNPC:
 # @param tick:tick
@@ -2346,72 +2211,6 @@
         callFunc(curPlayer, curNPC, tick)
     return
 
-## 客户端发送结束副本
-def OnClientEndFB(curPlayer, mapID, lineID, dataList):
-    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnClientEndFB"))
-    
-    if callFunc == None:
-        return False
-    
-    return callFunc(curPlayer, mapID, lineID, dataList)
-
-## 客户端发送开始副本
-def OnClientStartFB(curPlayer, tick):
-    do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnClientStartFB"))
-    
-    if callFunc == None:
-        return False
-    
-    return callFunc(curPlayer, tick)
-
-## 客户端进入自定义场景
-def OnEnterCustomScene(curPlayer, mapID, lineID):
-    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnEnterCustomScene"))
-    
-    if callFunc == None:
-        return
-    
-    return callFunc(curPlayer, mapID, lineID)
-
-## 判断可否召唤木桩怪
-def OnCanSummonPriWoodPile(curPlayer, mapID, lineID, npcID, count):
-    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnCanSummonPriWoodPile"))
-    
-    if callFunc == None:
-        return True
-    
-    return callFunc(curPlayer, mapID, lineID, npcID, count)
-
-## 自定义场景副本击杀NPC
-def DoCustomScene_Player_KillNPC(curPlayer, curNPC, mapID, lineID):
-    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "DoCustomScene_Player_KillNPC"))
-    
-    if callFunc:
-        callFunc(curPlayer, curNPC, mapID, lineID)
-        
-    return
-
-## 自定义场景采集OK,需自带是否允许采集的判断
-def OnCustomSceneCollectOK(curPlayer, mapID, lineID, npcID):
-    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnCustomSceneCollectOK"))
-    
-    if callFunc:
-        return callFunc(curPlayer, mapID, lineID, npcID)
-        
-    return
-
 ## 进入跨服副本注册数据前逻辑
 ## @return: 是否可以注册前往跨服副本,次函数中可以写一些扣除消耗逻辑等
 def OnRegEnterCrossFB(curPlayer, mapID, lineID):
@@ -2443,25 +2242,6 @@
         return
     return callFunc()
 
-## 是否需要做进入副本通用检查条件逻辑,默认需要检查
-def OnNeedCheckCanEnterFBComm(curPlayer, mapID, lineID):
-    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnNeedCheckCanEnterFBComm"))
-    
-    if callFunc == None:
-        return True
-    
-    return callFunc(curPlayer, mapID, lineID)
-
-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)
-
 def OnTurnFightRequest(curPlayer, mapID, funcLineID, tagType, tagID, valueList):
     ## 回合战斗请求 - 地图验证
     # @return: 是否允许
@@ -2475,9 +2255,43 @@
     
     return callFunc(curPlayer, mapID, funcLineID, tagType, tagID, valueList)
 
-def OnTurnFightOver(curPlayer, mapID, funcLineID, tagType, tagID, valueList, fightRet):
+def GetFBPlayerLineupID(curPlayer, mapID, funcLineID):
+    ## 获取玩家使用的攻防阵容ID
+    # @return: 攻击方阵容ID, 防守方阵容ID
+    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
+    
+    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "GetFBPlayerLineupID"))
+    
+    if callFunc == None:
+        # 默认不限制
+        return ShareDefine.Lineup_Main, ShareDefine.Lineup_Main
+    
+    return callFunc(curPlayer, mapID, funcLineID)
+
+def GetFBNPCLineupInfo(curPlayer, mapID, funcLineID):
+    ## 获取NPC阵容相关
+    # @return: npcLineupIDList, strongerLV, difficulty
+    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
+    
+    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "GetFBNPCLineupInfo"))
+    if callFunc == None:
+        return
+    
+    return callFunc(curPlayer, mapID, funcLineID)
+
+def OnPlayerLineupAttackResult(curPlayer, atkObj, killObjList, useSkill, mapID, funcLineID):
+    ## 回合战斗主动发起的玩家阵容攻击结果额外处理 ,一般处理副本相关的掉落、奖励等
+    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
+    
+    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnPlayerLineupAttackResult"))
+    
+    if callFunc:
+        callFunc(curPlayer, atkObj, killObjList, useSkill, mapID, funcLineID)
+        
+    return
+
+def OnTurnFightOver(curPlayer, turnFight, mapID, funcLineID, overMsg):
     ## 回合战斗结束
-    # @return: 是否需要同步GameServer, 奖励列表
     
     do_FBLogic_ID = __GetFBLogic_MapID(mapID)
     
@@ -2486,40 +2300,5 @@
     if callFunc == None:
         return
     
-    return callFunc(curPlayer, mapID, funcLineID, tagType, tagID, valueList, fightRet)
+    return callFunc(curPlayer, turnFight, mapID, funcLineID, overMsg)
 
-def OnTurnFightOver_GameServerRet(curPlayer, mapID, funcLineID, tagType, tagID, valueList, fightRet, awardItemList, ret):
-    ## 回合战斗结束 - GameServer处理完毕返回
-    
-    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnTurnFightOver_GameServerRet"))
-    
-    if callFunc == None:
-        return
-    
-    return callFunc(curPlayer, mapID, funcLineID, tagType, tagID, valueList, fightRet, awardItemList, ret)
-
-def OnMirrorBattleRequest(curPlayer, mapID, funcLineID, factionPlayerList):
-    ## 镜像战斗请求
-    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnMirrorBattleRequest"))
-    
-    if callFunc == None:
-        # 默认允许
-        return True
-    
-    return callFunc(curPlayer, mapID, funcLineID, factionPlayerList)
-
-def OnMirrorBattleOver(battleID, mapID):
-    ## 镜像战斗结束
-    
-    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
-    
-    callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnMirrorBattleOver"))
-    
-    if callFunc == None:
-        return
-    
-    return callFunc(battleID)

--
Gitblit v1.8.0