From 19956b8576f2c2c68c4c4d811acbc3e2af3d97b4 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 30 九月 2025 19:25:46 +0800 Subject: [PATCH] 165 【挑战】天子的考验-服务端 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py | 239 +++++++++++++++-------------------------------------------- 1 files changed, 61 insertions(+), 178 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 0edfc95..322f90c 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBLogic.py @@ -274,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")) @@ -367,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")) @@ -506,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) @@ -947,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 @@ -1088,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: @@ -1550,36 +1523,21 @@ 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): + ## 副本扫荡询问 + # @return: None - 不可扫荡 + # @return: 非None - 可以扫荡,且返回值直接传给 OnPlayerFBSweepResult 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, askRet): + ## 副本扫荡结果 do_FBLogic_ID = __GetFBLogic_MapID(mapID) callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnPlayerFBSweepResult")) @@ -1587,7 +1545,7 @@ if callFunc == None: return False - return callFunc(curPlayer, mapID, lineID, cnt, isFinish, dataEx) + return callFunc(curPlayer, mapID, lineID, cnt, dataEx, askRet) ## 开始公共CD副本扫荡 def OnStartPubCDFBSweep(curPlayer, mapID, lineID, cnt, dataEx): @@ -2255,72 +2213,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): @@ -2352,25 +2244,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: 是否允许 @@ -2384,20 +2257,65 @@ return callFunc(curPlayer, mapID, funcLineID, tagType, tagID, valueList) -def OnPlayerLineupAttackResult(curPlayer, atkObj, killObjIDList, useSkill, mapID, funcLineID): +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 GetFBNPCInitAttr(curPlayer, turnFight, npcObj): + ## 获取副本指定NPC初始化属性 + do_FBLogic_ID = __GetFBLogic_MapID(turnFight.mapID) + + callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "GetFBNPCInitAttr")) + if callFunc == None: + return + + return callFunc(curPlayer, turnFight, npcObj) + +def OnFBNPCKilledBefore(curPlayer, turnFight, gameObj, killer): + ## 副本NPC被击杀前处理,一般用于处理一些不被击杀的副本NPC逻辑 + # @return: 可否被正常击杀 + do_FBLogic_ID = __GetFBLogic_MapID(turnFight.mapID) + + callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnFBNPCKilledBefore")) + if callFunc == None: + # 不需要逻辑时默认可被正常击杀 + return True + + return callFunc(curPlayer, turnFight, gameObj, killer) + +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, killObjIDList, useSkill, mapID, funcLineID) + callFunc(curPlayer, atkObj, killObjList, useSkill, mapID, funcLineID) return -def OnTurnFightOver(curPlayer, mapID, funcLineID, tagType, tagID, valueList, fightRet): +def OnTurnFightOver(curPlayer, turnFight, mapID, funcLineID, overMsg): ## 回合战斗结束 - # @return: 是否需要同步GameServer, 奖励列表 do_FBLogic_ID = __GetFBLogic_MapID(mapID) @@ -2406,40 +2324,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