From 275ef806a444880883a5725d7c87f433537da02f Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期三, 24 四月 2019 10:07:53 +0800 Subject: [PATCH] 6597 【后端】【2.0】缥缈仙域事件刷新类型做限制 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py | 63 +++++++++++++++++++++++++++++-- 1 files changed, 58 insertions(+), 5 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py index 3ca5ad2..74a3504 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py @@ -26,6 +26,7 @@ import IpyGameDataPY import PlayerActivity import ItemControler +import PyGameData import EventShell import copy @@ -60,6 +61,36 @@ def OnLogin(curPlayer): NotifyVisitFairyDomainInfo(curPlayer) NotifyFairyAdventuresInfo(curPlayer) + return + + +def OnHour(curPlayer): + __ResetFairyDomainCntLimit(curPlayer, 1) + return + + +def OnDay(curPlayer): + __ResetFairyDomainCntLimit(curPlayer, 2) + return + + +def __ResetFairyDomainCntLimit(curPlayer, resetType): + ## 重置个人缥缈事件出现次数记录 + ipyMgr = IpyGameDataPY.IPY_Data() + for i in xrange(ipyMgr.GetFairyDomainCount()): + ipyData = ipyMgr.GetFairyDomainByIndex(i) + eventID = ipyData.GetID() + appearCntInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FairyDomainEventAppearCnt % eventID) + if not appearCntInfo: + continue + hourAppearCntPri, dayAppearCntPri = appearCntInfo % 1000, appearCntInfo / 1000 + if resetType == 1: + updAppearCntInfo = dayAppearCntPri * 1000 + elif resetType == 2: + updAppearCntInfo = hourAppearCntPri + else: + return + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FairyDomainEventAppearCnt % eventID, updAppearCntInfo) return @@ -135,7 +166,15 @@ if not randomList: continue fdEventIDList += randomList - + #更新个人出现次数 + for fdEventID in fdEventIDList: + appearCntInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FairyDomainEventAppearCnt % fdEventID) + hourAppearCntPri, dayAppearCntPri = appearCntInfo % 1000, appearCntInfo / 1000 + updAppearCntInfo = (dayAppearCntPri + 1) * 1000 + (hourAppearCntPri + 1) + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FairyDomainEventAppearCnt % fdEventID, updAppearCntInfo) + #更新全服出现次数 + msgStr = str(fdEventIDList) + GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'AddFairyDomainEvent', msgStr, len(msgStr)) #奇遇事件 随机档位数据 openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1 for fdEventID in fdEventIDList: @@ -175,6 +214,7 @@ NotifyFairyAdventuresInfo(curPlayer) return + def EndFairyDomain(curPlayer): ##结束寻访 PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FairyDomainState, 0) @@ -187,6 +227,7 @@ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FairyDomainEventState % fdEventID, 0) PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FairyAdventuresData % fdEventID, 0) return + def __RandomFDEventByType(curPlayer, eventType, cnt): ##根据事件类型随机事件 @@ -206,15 +247,25 @@ if lvLimit and not (lvLimit[0] <= curLV <= lvLimit[1]): #等级范围不满足 continue - + eventID = ipyData.GetID() + appearCntInfo = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FairyDomainEventAppearCnt % eventID) + hourAppearCntPri, dayAppearCntPri = appearCntInfo % 1000, appearCntInfo / 1000 + if hourAppearCntPri >= ipyData.GetHourCntPriLimit() or dayAppearCntPri >= ipyData.GetDayCntPriLimit(): + #超过今日或本小时个人可出现次数上限 + continue + if eventID in PyGameData.g_fairyDomainLimit: + #超过全服可出现次数 + continue rate += ipyData.GetWeight() randomRateList.append([rate, ipyData.GetID()]) if not randomRateList: - GameWorld.DebugLog(' 缥缈仙域刷新池 随机库获取错误 !eventType=%s' % eventType, curPlayer.GetID()) + GameWorld.DebugLog(' 缥缈仙域刷新池 该类型没有符合条件的事件!eventType=%s' % eventType, curPlayer.GetID()) return [] - randomResultList = GameWorld.GetResultByRandomListEx(randomRateList, cnt, []) - + realCnt = min(len(randomRateList), cnt) + randomResultList = GameWorld.GetResultByRandomListEx(randomRateList, realCnt, []) + GameWorld.DebugLog('eventType=%s, cnt=%s,randomRateList=%s,randomResultList=%s' % (eventType, cnt, randomRateList, randomResultList)) return randomResultList + def GetFairyDomainFBEventState(curPlayer, mapID, lineID): ## 获取缥缈相关副本寻访状态 @@ -225,6 +276,7 @@ curState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FairyDomainEventState % fdeventID) return curState + def SetFairyDomainFBEventState(curPlayer, mapID, lineID, state): ## 设置缥缈相关副本寻访状态 ipyData = IpyGameDataPY.GetIpyGameDataByCondition("FairyDomain", {"MapID":mapID, "LineID":lineID}) @@ -233,6 +285,7 @@ fdeventID = ipyData.GetID() return SetFairyDomainEventState(curPlayer, fdeventID, state) + def SetFairyDomainEventState(curPlayer, fdeventID, state): ## 设置缥缈事件状态, return 是否成功 if state not in [FDEventState_Visiting, FDEventState_Visited]: # 1-未拜访 2-拜访中 3-已拜访 -- Gitblit v1.8.0