xdh
2018-09-21 79af0ddc0c8b3e2a09418284677c6a9517854a29
3740 【后端】大小宝箱刷新逻辑
1个文件已修改
32 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Dogz.py 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Dogz.py
@@ -27,15 +27,16 @@
import ChConfig
#{(标识点):[npcid,单个点数量,刷新间隔秒, 每次刷新只数, 第一次刷新只数]}
#{(101,102,103):[20302001,1,'20', 2, 10]}
#{(标识点):[npcid,单个点数量,刷新间隔秒, 每次刷新只数, 第一次刷新只数, 总个数上限]}
#{(101,102,103):[20302001,1,'20', 2, 10,30]}
(
Def_NPCID,
Def_MaxCnt,
Def_TimeFormula,
Def_RefreshCnt,
Def_FirstRefreshCnt
) = range(5)
Def_FirstRefreshCnt,
Def_TotalLimit,
) = range(6)
Map_Dogzfb_LastRefreshTime = "Dogzfb_LastRefreshTime%s"  # 刷新时间 参数npcid
Map_Dogzfb_NextNeedTime = "NextNeedTime%s"  # 下次刷新需要时间 参数npcid
@@ -191,16 +192,21 @@
        gameWorld.SetGameWorldDict(Map_Dogzfb_LastRefreshTime % npcID, curTime)
        maxCnt = refreshInfo[Def_MaxCnt]
        markList = [markInfo] if isinstance(markInfo, int) else list(markInfo)
        random.shuffle(markList)
        curTotalCnt = 0
        for rMark in markList:
            if refreshCnt <=0:
                break
            curCnt = npcCntDict.get(rMark, 0)
            if curCnt >= maxCnt:
                continue
            needRefreshCnt = min(refreshCnt, maxCnt - curCnt)
            refreshCnt -= needRefreshCnt
            NPCCustomRefresh.SetNPCRefresh(rMark, [(npcID, needRefreshCnt)], needRefreshCnt + curCnt, needRefreshCnt)
            curTotalCnt += npcCntDict.get(rMark, 0)
        refreshCnt = min(refreshCnt, refreshInfo[Def_TotalLimit] - curTotalCnt)
        if refreshCnt > 0:
            random.shuffle(markList)
            for rMark in markList:
                if refreshCnt <=0:
                    break
                curCnt = npcCntDict.get(rMark, 0)
                if curCnt >= maxCnt:
                    continue
                needRefreshCnt = min(refreshCnt, maxCnt - curCnt)
                refreshCnt -= needRefreshCnt
                NPCCustomRefresh.SetNPCRefresh(rMark, [(npcID, needRefreshCnt)], needRefreshCnt + curCnt, needRefreshCnt)
        
        #计算下次多久刷新
        __UpdateBossTime(npcID, refreshInfo[Def_TimeFormula])