| | |
| | | curState = PlayerFairyDomain.GetFairyDomainFBEventState(curPlayer, mapID, lineID)
|
| | | PlayerFairyDomain.SetFairyDomainFBEventState(curPlayer, mapID, lineID, PlayerFairyDomain.FDEventState_Visiting)
|
| | |
|
| | | boxNPCID = IpyGameDataPY.GetFuncCfg("CrossGrasslandCfg", 1)
|
| | | refreshMapNPCDict = IpyGameDataPY.GetFuncEvalCfg("CrossGrasslandCfg", 2)
|
| | | refreshCount, npcIDRateList = refreshMapNPCDict.get(mapID, [0, []])
|
| | | npcIDList = [rate[1] for rate in npcIDRateList]
|
| | | if curState == PlayerFairyDomain.FDEventState_CanVisit:
|
| | | # 随机采集物数量
|
| | | for npcID in npcIDList:
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GrasslandNPCCount % npcID, 0)
|
| | | npcCountDict = {}
|
| | | # {寻访次数:{mapID:{npcID:个数, ...}, ...}, ...}
|
| | | refreshMapNPCDictAppoint = IpyGameDataPY.GetFuncEvalCfg("CrossGrasslandCfg", 3)
|
| | | fairyDomainVisitCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FairyDomainVisitCnt)
|
| | | if fairyDomainVisitCnt in refreshMapNPCDictAppoint:
|
| | | appointRefreshMapNPCDict = refreshMapNPCDictAppoint[fairyDomainVisitCnt]
|
| | | npcCountDict = appointRefreshMapNPCDict.get(mapID, {})
|
| | | if not npcCountDict:
|
| | | for _ in xrange(refreshCount):
|
| | | npcID = GameWorld.GetResultByRandomList(npcIDRateList)
|
| | | if npcID:
|
| | | npcCount = npcCountDict.get(npcID, 0) + 1
|
| | | npcCountDict[npcID] = npcCount
|
| | | |
| | | refreshMapNPCDict = IpyGameDataPY.GetFuncEvalCfg("CrossGrasslandCfg", 2)
|
| | | npcCountDict = refreshMapNPCDict.get((mapID, lineID), {})
|
| | | for npcID, npcCount in npcCountDict.items():
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GrasslandNPCCount % npcID, npcCount)
|
| | |
|
| | | if mapID == ChConfig.Def_FBMapID_CrossGrasslandXian:
|
| | | FBCommon.DelFBEnterTicket(curPlayer, mapID, lineID)
|
| | |
|
| | | SyncCustomSceneNPCCount(curPlayer, mapID)
|
| | | SyncCustomSceneNPCCount(curPlayer, mapID, lineID)
|
| | | if mapID == ChConfig.Def_FBMapID_CrossGrasslandXian:
|
| | | boxNPCID = IpyGameDataPY.GetFuncCfg("CrossGrasslandCfg", 1)
|
| | | if boxNPCID:
|
| | |
| | | ## 自定义场景采集OK,需自带是否允许采集的判断
|
| | | def OnCustomSceneCollectOK(curPlayer, mapID, lineID, npcID):
|
| | | curState = PlayerFairyDomain.GetFairyDomainFBEventState(curPlayer, mapID, lineID)
|
| | | return curState == PlayerFairyDomain.FDEventState_Visiting
|
| | | if curState != PlayerFairyDomain.FDEventState_Visiting:
|
| | | return False
|
| | | curCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GrasslandNPCCount % npcID)
|
| | | if not curCount:
|
| | | return False
|
| | | return True
|
| | |
|
| | | def DecCustomSceneNPCCount(curPlayer, npcID):
|
| | | ## 减少草园自定义场景NPC,默认减少一个
|
| | | mapID = GetGrasslandMapID(curPlayer)[0]
|
| | | mapID, lineID = GetGrasslandMapID(curPlayer)
|
| | | if not mapID:
|
| | | return
|
| | | curCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GrasslandNPCCount % npcID)
|
| | | updCount = max(0, curCount - 1)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_GrasslandNPCCount % npcID, updCount)
|
| | | SyncCustomSceneNPCCount(curPlayer, mapID)
|
| | | SyncCustomSceneNPCCount(curPlayer, mapID, lineID)
|
| | | return
|
| | |
|
| | | def SyncCustomSceneNPCCount(curPlayer, mapID):
|
| | | def SyncCustomSceneNPCCount(curPlayer, mapID, lineID):
|
| | | ## 通知自定义场景NPC数
|
| | | refreshMapNPCDict = IpyGameDataPY.GetFuncEvalCfg("CrossGrasslandCfg", 2)
|
| | | npcIDRateList = refreshMapNPCDict.get(mapID, [0, []])[1]
|
| | | npcCountDict = {}
|
| | | for npcRate in npcIDRateList:
|
| | | npcID = npcRate[1]
|
| | | npcCountDict[npcID] = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GrasslandNPCCount % npcID)
|
| | | npcCountDict = refreshMapNPCDict.get((mapID, lineID), {})
|
| | | npcNowCountDict = {}
|
| | | for npcID in npcCountDict.keys():
|
| | | npcNowCountDict[npcID] = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_GrasslandNPCCount % npcID)
|
| | | if mapID == ChConfig.Def_FBMapID_CrossGrasslandXian:
|
| | | boxNPCID = IpyGameDataPY.GetFuncCfg("CrossGrasslandCfg", 1)
|
| | | npcCountDict[boxNPCID] = 1
|
| | | NPCCommon.SyncNPCCntInfo(curPlayer, mapID, npcCountDict)
|
| | | if boxNPCID:
|
| | | npcNowCountDict[boxNPCID] = 1
|
| | | NPCCommon.SyncNPCCntInfo(curPlayer, mapID, npcNowCountDict)
|
| | | return
|
| | |
|
| | | def RecordGrasslandAward(curPlayer, addItemList):
|
| | |
| | | return
|
| | |
|
| | | # 宝箱怪攻击次数是否已用完
|
| | | if mapID == ChConfig.Def_FBMapID_CrossGrasslandXian:
|
| | | boxNPCID = IpyGameDataPY.GetFuncCfg("CrossGrasslandCfg", 1)
|
| | | boxNPCID = IpyGameDataPY.GetFuncCfg("CrossGrasslandCfg", 1)
|
| | | if mapID == ChConfig.Def_FBMapID_CrossGrasslandXian and boxNPCID:
|
| | | boxNPCIpyData = IpyGameDataPY.GetIpyGameDataNotLog("TreasureNPC", boxNPCID)
|
| | | if not boxNPCIpyData:
|
| | | return
|