From 8ddb747ebd56d56cd4fb93e7de9bcdfae87ae5c8 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 15 二月 2019 17:13:15 +0800 Subject: [PATCH] 2903 【BUG】【1.6】玉佩有灵宠增加伤害,但属性里没有 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCustomRefresh.py | 90 +++++++------------------------------------- 1 files changed, 15 insertions(+), 75 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 6e0c400..2493ede 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCustomRefresh.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCustomRefresh.py @@ -93,72 +93,6 @@ return ##------------------------------------------------------------------------------ -## 合服活动BOSS(勇者大陆) -# @param npcRefresh 刷新的npc对象 -# @param tick 当前时间 -# @return None -def NPCRefresh_63(npcRefresh, tick): return __RefreshMixBoss(npcRefresh, tick) -def NPCRefresh_64(npcRefresh, tick): return __RefreshMixBoss(npcRefresh, tick) -def NPCRefresh_65(npcRefresh, tick): return __RefreshMixBoss(npcRefresh, tick) - -## 合服活动BOSS(勇者大陆) -# @param npcRefresh 刷新的npc对象 -# @param tick 当前时间 -# @return None -def __RefreshMixBoss(npcRefresh, tick): - gameWorld = GameWorld.GetGameWorld() - isMixServer = gameWorld.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_IsMixServer) - mixDay = gameWorld.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_MixServerDay) - refreshMark = npcRefresh.GetRefreshMark() - - # 配置 - mixBossInfo = ReadChConfig.GetEvalChConfig("MixBossInfo") - curBossInfo = mixBossInfo.get(refreshMark) - if not curBossInfo: - #GameWorld.DebugLog("__RefreshMixBoss() hasn't configuration refreshMark(%s)"%refreshMark) - return - npcId, mixTime, refreshTimeList = curBossInfo - - # 合服期间 - if not isMixServer or mixDay < mixTime[0] or mixDay > mixTime[1]: - #GameWorld.DebugLog("__RefreshMixBoss() no mix server") - return - - # 一线刷新 - lineId = GameWorld.GetGameWorld().GetLineID() - if lineId != 0: - #GameWorld.DebugLog("__RefreshMixBoss() not in 1 line(%s), now"%lineId) - return - - # 有怪 - if npcRefresh.GetCount() > 0: - #GameWorld.DebugLog("__RefreshMixBoss() have mix server boss(%s), now"%refreshMark) - return - - # 刷新时间匹配 - curTime = GameWorld.GetCurrentTime() - if (curTime.hour, curTime.minute) not in refreshTimeList: - #GameWorld.DebugLog("__RefreshMixBoss() npcId(%s) isn't refresh(%s) time(%s)" - # % (npcId, str((curTime.hour, curTime.minute)), refreshTimeList)) - return - - # 刷新Tick 一分钟内不再刷新 - refreshTickKey = ChConfig.Map_NPC_WorldBossLastReBornTick % npcId - lastRefreshTick = gameWorld.GetGameWorldDictByKey(refreshTickKey) - if tick - lastRefreshTick <= 60 * 1000: - #GameWorld.DebugLog("__RefreshMixBoss() not refresh inside minute, npcID(%s) tick(%s) lastTick(%s)" - # % (npcId, tick, lastRefreshTick)) - return - gameWorld.SetGameWorldDict(refreshTickKey, tick) - - # 刷新NPC - npcRefresh.Refresh(npcId, ChConfig.Def_SuperBossAngryCount, 1, False) - # 初始化NPC - __InitNewBornNPC(npcRefresh, tick) - - GameWorld.DebugLog("__RefreshMixBoss() refresh mix server boss npcId(%s) success!!!" % (npcId)) - return - ## 地图M个点随机刷N只怪 # @param npcRefresh 刷新实例 # @param tick 当前时间 @@ -556,9 +490,9 @@ if not bossID and not stoneNPCID: return - if mapID not in ChConfig.Def_CrossZoneTableName: + if mapID not in ChConfig.Def_CrossZoneMapTableName: return - tableName = ChConfig.Def_CrossZoneTableName[mapID] + tableName = ChConfig.Def_CrossZoneMapTableName[mapID] realMapID = GameWorld.GetGameWorld().GetRealMapID() copyMapID = GameWorld.GetGameWorld().GetCopyMapID() zoneIpyData = IpyGameDataPY.GetIpyGameDataNotLog(tableName, realMapID, mapID, copyMapID) @@ -908,7 +842,7 @@ 注意:同个虚拟线路中,标试点不可重复!标试点不可重复!标试点不可重复! ''' mapID = gameWorld.GetMapID() - # {mapID:{编号:[[多个NPCID], [多个标试点], 单个点最大数量, 所有点总数量, 刷怪间隔秒], ...}, ...} + # {mapID:{编号:[[多个NPCID], [多个标试点], 单个点最大数量, 所有点总数量, 刷怪间隔秒, 每整X小时], ...}, ...} randRefreshNPCDict = IpyGameDataPY.GetFuncEvalCfg("RandomRefreshNPC", 1, {}) if mapID not in randRefreshNPCDict: return @@ -922,14 +856,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: @@ -949,7 +889,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