From c060aabfb4621e897f7b69d6e537fc3ccf59d860 Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期一, 28 一月 2019 20:44:25 +0800 Subject: [PATCH] 2969 【BUG】【1.5.200】限时抢购,重新开服全服抢购次数会重置 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCustomRefresh.py | 27 ++++++++++++++++++--------- 1 files changed, 18 insertions(+), 9 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCustomRefresh.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCustomRefresh.py index a86f294..1717fd8 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCustomRefresh.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCustomRefresh.py @@ -17,6 +17,7 @@ import ShareDefine import ReadChConfig import GameLogic_SealDemon +import GameLogic_ZhuXianBoss import PlayerControl import IPY_GameWorld import IpyGameDataPY @@ -401,6 +402,9 @@ if mapID == ChConfig.Def_FBMapID_SealDemon: bossID = GameLogic_SealDemon.CurFBLineBOSSID() stoneNPCID = 0 + elif mapID == ChConfig.Def_FBMapID_ZhuXianBoss: + bossID = GameLogic_ZhuXianBoss.CurFBLineBOSSID() + stoneNPCID = 0 else: ipyData = IpyGameDataPY.GetIpyGameDataByCondition('BOSSInfo', {'RefreshMark':refreshMark, 'MapID':mapID}, isLogNone=False) if not ipyData: @@ -412,7 +416,6 @@ isNeedShunt = ipyData.GetIsNeedShunt() if not bossID and not stoneNPCID: return - gameFB = GameWorld.GetGameFB() gameWorldMgr = GameWorld.GetGameWorld() isActivityBoss = False # 是否活动boss @@ -463,7 +466,7 @@ NPCCommon.SetDeadEx(curNPC) # 非复活线 且 不需要分流的地图 且 不是封魔坛 不允许复活 - if lineID != rebornLineID and not isNeedShunt and mapID != ChConfig.Def_FBMapID_SealDemon: + if lineID != rebornLineID and not isNeedShunt and mapID not in [ChConfig.Def_FBMapID_SealDemon, ChConfig.Def_FBMapID_ZhuXianBoss]: return if isActivityBoss and activityBossRebornCount > 0: @@ -905,7 +908,7 @@ 注意:同个虚拟线路中,标试点不可重复!标试点不可重复!标试点不可重复! ''' mapID = gameWorld.GetMapID() - # {mapID:{编号:[[多个NPCID], [多个标试点], 单个点最大数量, 所有点总数量, 刷怪间隔秒], ...}, ...} + # {mapID:{编号:[[多个NPCID], [多个标试点], 单个点最大数量, 所有点总数量, 刷怪间隔秒, 每整X小时], ...}, ...} randRefreshNPCDict = IpyGameDataPY.GetFuncEvalCfg("RandomRefreshNPC", 1, {}) if mapID not in randRefreshNPCDict: return @@ -919,14 +922,20 @@ return gameFB.SetGameFBDict(ChConfig.Def_RMark_RandomRefreshNPCTick, tick) - curTime = int(time.time()) + serverTime = GameWorld.GetCurrentTime() + curHour, curMinute = serverTime.hour, serverTime.minute refreshNumList = [] for num, refreshInfo in mapRandRefreshNPCDict.items(): - refreshCD = refreshInfo[-1] - numLastTime = gameFB.GetGameFBDictByKey(ChConfig.Def_RMark_RandomRefreshNPCNumTime % num) - if numLastTime and curTime - numLastTime < refreshCD: + refreshCD = refreshInfo[4] + numLastTick = gameFB.GetGameFBDictByKey(ChConfig.Def_RMark_RandomRefreshNPCNumTime % num) + perHours = refreshInfo[5] + if numLastTick and perHours: + if curHour % perHours != 0 or curMinute != 0: + continue + refreshCD = 65 # 1分钟内不重复刷新 + if numLastTick and tick - numLastTick < refreshCD * 1000: continue - gameFB.SetGameFBDict(ChConfig.Def_RMark_RandomRefreshNPCNumTime % num, curTime) + gameFB.SetGameFBDict(ChConfig.Def_RMark_RandomRefreshNPCNumTime % num, tick) refreshNumList.append(num) if not refreshNumList: @@ -946,7 +955,7 @@ #GameWorld.DebugLog("npcCountDict=%s" % npcCountDict, copyMapID) for num in refreshNumList: - npcIDList, markList, maxCount, totalMaxCount = mapRandRefreshNPCDict[num][:-1] + npcIDList, markList, maxCount, totalMaxCount = mapRandRefreshNPCDict[num][:4] curTotalCount = 0 for rMark in markList: -- Gitblit v1.8.0