hxp
3 天以前 19956b8576f2c2c68c4c4d811acbc3e2af3d97b4
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,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"))
@@ -1634,18 +1545,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, askRet)
## 开始公共CD副本扫荡
def OnStartPubCDFBSweep(curPlayer, mapID, lineID, cnt, dataEx):
@@ -1842,22 +1742,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 +1832,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 +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):
@@ -2443,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: 是否允许
@@ -2475,9 +2257,65 @@
    
    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 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, killObjList, useSkill, mapID, funcLineID)
    return
def OnTurnFightOver(curPlayer, turnFight, mapID, funcLineID, overMsg):
    ## 回合战斗结束
    # @return: 是否需要同步GameServer, 奖励列表
    
    do_FBLogic_ID = __GetFBLogic_MapID(mapID)
    
@@ -2486,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)