From 79af0ddc0c8b3e2a09418284677c6a9517854a29 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期五, 21 九月 2018 14:14:57 +0800
Subject: [PATCH] 3740 【后端】大小宝箱刷新逻辑

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Dogz.py |   32 +++++++++++++++++++-------------
 1 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Dogz.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Dogz.py
index f7fa69a..81a060c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_Dogz.py
+++ b/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])

--
Gitblit v1.8.0