| | |
| | | import GameWorldProcess
|
| | | import CrossRealmPlayer
|
| | | import DataRecordPack
|
| | | import IpyGameDataPY
|
| | | import PlayerSuccess
|
| | | import ReadChConfig
|
| | | import ShareDefine
|
| | | import PyGameData
|
| | | import FBCommon
|
| | | import GameMap
|
| | | import GameObj
|
| | |
|
| | | import random
|
| | |
| | | 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)
|
| | |
| | |
|
| | | #注册玩家离开副本时间
|
| | | gameFBMgr.SetPlayerLogoffTick(0)
|
| | | |
| | | PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_FeastRedPack_EnterMap, 1, [gameMapID])
|
| | |
|
| | | if gameFBMgr.HaveFBPlayer(curPlayerID):
|
| | | #已经注册了这个玩家, 不清除已注册的玩家的字典信息
|
| | |
| | | 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:
|
| | | callFunc(curPlayer)
|
| | |
| | | if mapID in value:
|
| | | return key
|
| | |
|
| | | if mapID in FBCommon.GetGeneralTrainMapIDList():
|
| | | return "GeneralTrain"
|
| | | |
| | | #for key , value in ReadChConfig.GetEvalChConfig("MapID_ProcessPy").items():
|
| | | # if mapID in value:
|
| | | # return key
|
| | |
| | |
|
| | | return callFunc()
|
| | |
|
| | |
|
| | | ## 获得特殊副本npc掉落金钱
|
| | | # @param curPlayer |
| | | # @return None
|
| | | def OnGetNPCExp(curPlayer, curNPC):
|
| | | do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
|
| | | |
| | | callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnGetNPCExp"))
|
| | | |
| | | if not callFunc:
|
| | | return 0
|
| | | |
| | | |
| | | return callFunc(curPlayer, curNPC)
|
| | |
|
| | | ## 获得外层经验倍率
|
| | | def OnGetOuterExpRate(curPlayer):
|
| | | do_FBLogic_ID = __GetFBLogic_MapID(GameWorld.GetMap().GetMapID())
|
| | |
| | |
|
| | | return callFunc(curPlayer, addExp, expViewType)
|
| | |
|
| | | ## 副本扫荡询问
|
| | | 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"))
|
| | |
| | | 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):
|
| | |
| | | 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 OnTurnFightRequest(curPlayer, mapID, funcLineID, tagType, tagID, valueList):
|
| | | ## 回合战斗请求 - 地图验证
|
| | | # @return: 是否允许
|
| | | # @return: 是否允许, 后端验证通过的funcLineID
|
| | | do_FBLogic_ID = __GetFBLogic_MapID(mapID)
|
| | |
|
| | | callFunc = GameWorld.GetExecFunc(FBProcess, "GameLogic_%s.%s" % (do_FBLogic_ID, "OnTurnFightRequest"))
|
| | |
|
| | | if callFunc == None:
|
| | | # 默认不限制
|
| | | return True
|
| | | return True, funcLineID
|
| | |
|
| | | return callFunc(curPlayer, mapID, funcLineID, tagType, tagID, valueList)
|
| | |
|
| | |
| | |
|
| | | 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=None, useSkill=None):
|
| | | ## 副本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, useSkill)
|
| | |
|
| | | def OnPlayerLineupAttackResult(curPlayer, atkObj, killObjList, useSkill, mapID, funcLineID):
|
| | | ## 回合战斗主动发起的玩家阵容攻击结果额外处理 ,一般处理副本相关的掉落、奖励等
|
| | | do_FBLogic_ID = __GetFBLogic_MapID(mapID)
|