|  |  | 
 |  |  | import NPCCommon
 | 
 |  |  | import PlayerControl
 | 
 |  |  | import ChConfig
 | 
 |  |  | import FBCommon
 | 
 |  |  | 
 | 
 |  |  | def DoResetCrossGrassland(curPlayer, eventType, fdeventID):
 | 
 |  |  |     ## 草园重置
 | 
 |  |  | 
 |  |  |             NPCCommon.UpdateNPCAttackCount(curPlayer, npcID, 0)
 | 
 |  |  |             
 | 
 |  |  |     return
 | 
 |  |  |      | 
 |  |  | def __SetGrasslandVisitState(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 __SetGrasslandVisitState(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]
 | 
 |  |  | 
 | 
 |  |  | ## 进入跨服副本注册数据前逻辑
 | 
 |  |  | ## @return: 是否可以注册前往跨服副本,次函数中可以写一些扣除消耗逻辑等
 | 
 |  |  | def OnRegEnterCrossFB(curPlayer, mapID, lineID):
 | 
 |  |  |     curState = PlayerFairyDomain.GetFairyDomainFBEventState(curPlayer, mapID, lineID)
 | 
 |  |  |     if curState == PlayerFairyDomain.FDEventState_CanVisit:
 | 
 |  |  |         delResult = FBCommon.DelFBEnterTicket(curPlayer, mapID, lineID)
 | 
 |  |  |         isOK = delResult[0]
 | 
 |  |  |         if not isOK:
 | 
 |  |  |             return False
 | 
 |  |  |         return PlayerFairyDomain.SetFairyDomainFBEventState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting)
 | 
 |  |  |      | 
 |  |  |     if curState == PlayerFairyDomain.FDEventState_Visiting:
 | 
 |  |  |         return True
 | 
 |  |  |      | 
 |  |  |     return False
 | 
 |  |  | 
 | 
 |  |  | ## 跨服功能线路数据缓存,下次开启同样功能线路时会用该数据进行还原之前的副本状态
 | 
 |  |  | def OnGetCrossFuncLineDataCache():
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | ## 客户端进入自定义场景
 | 
 |  |  | def OnEnterCustomScene(curPlayer, mapID, lineID):
 | 
 |  |  |     __SetGrasslandVisitState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting)
 | 
 |  |  |     PlayerFairyDomain.SetFairyDomainFBEventState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting)
 | 
 |  |  |     return
 | 
 |  |  | 
 | 
 |  |  | def DoCheckUpdateGrasslandEnd(curPlayer):
 | 
 |  |  | 
 |  |  |             GameWorld.DebugLog("草园宝箱怪攻击次数未用完! boxNPCID=%s,attackCount=%s < maxAttackCount=%s" % (boxNPCID, attackCount, maxAttackCount))
 | 
 |  |  |             return
 | 
 |  |  |         
 | 
 |  |  |     __SetGrasslandVisitState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visited)
 | 
 |  |  |     PlayerFairyDomain.SetFairyDomainFBEventState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visited)
 | 
 |  |  |     GameWorld.DebugLog("设置草园已完成!mapID=%s, lineID=%s" % (mapID, lineID))
 | 
 |  |  |     return
 | 
 |  |  | 
 |