|  |  |  | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  |  | 
|---|