| | |
| | | import IpyGameDataPY
|
| | | import PlayerSuccess
|
| | | import ReadChConfig
|
| | | import PlayerAssist
|
| | | import ShareDefine
|
| | | import PyGameData
|
| | | import FBCommon
|
| | |
| | | # @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"))
|
| | |
| | | # @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"))
|
| | |
| | | #成长NPC所需数据初始化
|
| | | InitFBNPCStrengthenData(curPlayer, gameMap)
|
| | |
|
| | | PlayerAssist.OnPlayerEnterAssistFB(curPlayer, gameMapID, reqFuncLineID)
|
| | | DoEnterFB(curPlayer, tick)
|
| | |
|
| | | RecordFirstEnterMap(curPlayer, gameMapID)
|
| | |
| | | #扣费一般都是在进入副本逻辑里处理,免费只有一次性的,所以放在后面进行重置,防止一直免费
|
| | | 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):
|
| | |
| | |
|
| | | #GameWorld.Log("副本逻辑不可使用 GameLogic_%d"%(mapID))
|
| | | 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
|
| | |
|
| | | ## 开始采集
|
| | |
| | |
|
| | | 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):
|
| | | do_FBLogic_ID = __GetFBLogic_MapID(mapID)
|
| | |
| | | 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)
|
| | |
|
| | | ## 开始公共CD副本扫荡
|
| | | def OnStartPubCDFBSweep(curPlayer, mapID, lineID, cnt, dataEx):
|
| | |
| | |
|
| | | if callFunc:
|
| | | callFunc(curObj, tick)
|
| | | |
| | | 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
|
| | |
|
| | |
| | | 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):
|
| | |
| | |
|
| | | 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: 是否允许
|
| | |
| | |
|
| | | 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)
|
| | |
|
| | |
| | | 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)
|