|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | g_ownerInfo = {} # 归属者信息 {funcLineID:[ownerID, ownerName], } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def __SetDemonKingVisitState(curPlayer, mapID, lineID, state): | 
|---|
|  |  |  | ipyData = IpyGameDataPY.GetIpyGameDataByCondition("FairyDomain", {"MapID":mapID, "LineID":lineID}) | 
|---|
|  |  |  | if not ipyData: | 
|---|
|  |  |  | return False | 
|---|
|  |  |  | eventID = ipyData.GetID() | 
|---|
|  |  |  | if not PlayerFairyDomain.SetFairyDomainEventState(curPlayer, eventID, state): | 
|---|
|  |  |  | return False | 
|---|
|  |  |  | return True | 
|---|
|  |  |  | ## 是否需要做进入副本通用检查条件逻辑,默认需要检查 | 
|---|
|  |  |  | def OnNeedCheckCanEnterFBComm(curPlayer, mapID, lineID): | 
|---|
|  |  |  | curState = PlayerFairyDomain.GetFairyDomainFBEventState(curPlayer, mapID, lineID) | 
|---|
|  |  |  | return curState != PlayerFairyDomain.FDEventState_Visiting | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 是否能够通过活动查询进入 | 
|---|
|  |  |  | def OnEnterFBEvent(curPlayer, mapID, lineID, tick): | 
|---|
|  |  |  | if not __SetDemonKingVisitState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting): | 
|---|
|  |  |  | return False | 
|---|
|  |  |  | return True | 
|---|
|  |  |  | curState = PlayerFairyDomain.GetFairyDomainFBEventState(curPlayer, mapID, lineID) | 
|---|
|  |  |  | return curState in [PlayerFairyDomain.FDEventState_CanVisit, PlayerFairyDomain.FDEventState_Visiting] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 查询是否可以进入地图 | 
|---|
|  |  |  | def OnChangeMapAsk(ask, tick): | 
|---|
|  |  |  | return IPY_GameWorld.cmeAccept | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 开启副本 | 
|---|
|  |  |  | def OnOpenFB(tick): | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 副本玩家进入点 | 
|---|
|  |  |  | # @return posX, posY, 随机半径(可选) | 
|---|
|  |  |  | def OnGetFBEnterPos(curPlayer, mapID, lineId, ipyEnterPosInfo, tick): | 
|---|
|  |  |  | return ipyEnterPosInfo | 
|---|
|  |  |  | ## 进入跨服副本注册数据前逻辑 | 
|---|
|  |  |  | ## @return: 是否可以注册前往跨服副本,次函数中可以写一些扣除消耗逻辑等 | 
|---|
|  |  |  | def OnRegEnterCrossFB(curPlayer, mapID, lineID): | 
|---|
|  |  |  | curState = PlayerFairyDomain.GetFairyDomainFBEventState(curPlayer, mapID, lineID) | 
|---|
|  |  |  | if curState == PlayerFairyDomain.FDEventState_CanVisit: | 
|---|
|  |  |  | return PlayerFairyDomain.SetFairyDomainFBEventState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if curState == PlayerFairyDomain.FDEventState_Visiting: | 
|---|
|  |  |  | return True | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return False | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def GetCurFBLineBOSSID(mapID=-1, lineID=-1): | 
|---|
|  |  |  | #该分线刷的BOSSID | 
|---|
|  |  |  | 
|---|
|  |  |  | ChItem.DoMapDropItem(curPlayer, giveItemList, bossID, dropPosX, dropPosY, isOnlySelfSee=True, isDropDisperse=True) | 
|---|
|  |  |  | #curPlayer.Sync_TimeTick(ChConfig.tttPickupItem, 0, ChConfig.Def_FBPickupItemTime, True) | 
|---|
|  |  |  | if not isCrossServer: | 
|---|
|  |  |  | __SetDemonKingVisitState(curPlayer, mapID, funcLineID, PlayerFairyDomain.FDEventState_Visited) | 
|---|
|  |  |  | PlayerFairyDomain.SetFairyDomainFBEventState(curPlayer, mapID, funcLineID, PlayerFairyDomain.FDEventState_Visited) | 
|---|
|  |  |  | else: | 
|---|
|  |  |  | serverGroupID = PlayerControl.GetPlayerServerGroupID(curPlayer) | 
|---|
|  |  |  | if serverGroupID not in serverGroupIDList: | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 结束跨服副本 | 
|---|
|  |  |  | def OnEndCrossFB(curPlayer, mapID, lineID, exData): | 
|---|
|  |  |  | __SetDemonKingVisitState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visited) | 
|---|
|  |  |  | PlayerFairyDomain.SetFairyDomainFBEventState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visited) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def OnPickUpItem(curPlayer, curItem, tick): | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 客户端进入自定义场景 | 
|---|
|  |  |  | def OnEnterCustomScene(curPlayer, mapID, lineID): | 
|---|
|  |  |  | __SetDemonKingVisitState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting) | 
|---|
|  |  |  | PlayerFairyDomain.SetFairyDomainFBEventState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 客户端发送刷新自定义副本奖励 | 
|---|
|  |  |  | 
|---|
|  |  |  | if visitCount > fakeImmortalCount: | 
|---|
|  |  |  | GameWorld.DebugLog("当前寻访次数不能获取自定义副本奖励!visitCount=%s" % visitCount) | 
|---|
|  |  |  | return [] | 
|---|
|  |  |  | if not __SetDemonKingVisitState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting): | 
|---|
|  |  |  | if not PlayerFairyDomain.SetFairyDomainFBEventState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting): | 
|---|
|  |  |  | GameWorld.DebugLog("寻访状态异常不能获取自定义副本奖励!") | 
|---|
|  |  |  | return [] | 
|---|
|  |  |  | ipyData = IpyGameDataPY.GetIpyGameDataByCondition("FairyDomain", {"MapID":mapID, "LineID":lineID}) | 
|---|
|  |  |  | 
|---|
|  |  |  | ## 给自定义副本奖励后续处理 | 
|---|
|  |  |  | ## @return: 返回结算副本over信息字典,不含jsonItem信息 | 
|---|
|  |  |  | def OnGiveCustomFBPrizeOK(curPlayer, mapID, lineID): | 
|---|
|  |  |  | __SetDemonKingVisitState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visited) | 
|---|
|  |  |  | PlayerFairyDomain.SetFairyDomainFBEventState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visited) | 
|---|
|  |  |  | ownerID, ownerName = curPlayer.GetPlayerID(), curPlayer.GetPlayerName() | 
|---|
|  |  |  | overDict = {FBCommon.Over_ownerID:ownerID, FBCommon.Over_ownerName:ownerName} | 
|---|
|  |  |  | return overDict | 
|---|