Commit 1199daf93d7c3ac2618479aab6a38ab04f339653
1 parent
a1fd1815
fix: 挂机图鉴, 增加宝藏CD检查
1. 开始挖宝藏有结束时间,无过期时间 2. 用户获取宝藏后,宝藏才进入CD状态
Showing
2 changed files
with
59 additions
and
29 deletions
Show diff stats
src/actions/HangAction.lua
@@ -27,7 +27,7 @@ local function getHangTime(role) | @@ -27,7 +27,7 @@ local function getHangTime(role) | ||
27 | return nowCoinTime - hangInfo.coinTime | 27 | return nowCoinTime - hangInfo.coinTime |
28 | end | 28 | end |
29 | 29 | ||
30 | -local function checkReward(role) | 30 | +local function checkReward(role, isTreasure) |
31 | local hangInfo = role:getProperty("hangInfo") | 31 | local hangInfo = role:getProperty("hangInfo") |
32 | if not hangInfo.carbonId or not hangInfo.coinTime or not hangInfo.itemTime then | 32 | if not hangInfo.carbonId or not hangInfo.coinTime or not hangInfo.itemTime then |
33 | return false | 33 | return false |
@@ -126,11 +126,15 @@ local function checkReward(role) | @@ -126,11 +126,15 @@ local function checkReward(role) | ||
126 | end | 126 | end |
127 | 127 | ||
128 | --挂机得到的宝藏加入到挂机奖励 | 128 | --挂机得到的宝藏加入到挂机奖励 |
129 | - local treasureList= role.dailyData:checkTreasureList(hangInfo.carbonId) | ||
130 | - for id, val in pairs(treasureList) do | ||
131 | - local award = val.award:toNumMap() | ||
132 | - for k,v in pairs(award) do | ||
133 | - items[k] = (award[k] or 0) + v | 129 | + if isTreasure or false == true then |
130 | + local treasureList= role.dailyData:checkTreasureList(hangInfo.carbonId) | ||
131 | + if next(treasureList) ~= nil then | ||
132 | + for id, val in pairs(treasureList) do | ||
133 | + local award = val.award:toNumMap() | ||
134 | + for k,v in pairs(award) do | ||
135 | + items[k] = (award[k] or 0) + v | ||
136 | + end | ||
137 | + end | ||
134 | end | 138 | end |
135 | end | 139 | end |
136 | 140 | ||
@@ -418,7 +422,7 @@ end | @@ -418,7 +422,7 @@ end | ||
418 | function _M.getRewardRpc(agent , data) | 422 | function _M.getRewardRpc(agent , data) |
419 | local role = agent.role | 423 | local role = agent.role |
420 | local hangTime = getHangTime(role) | 424 | local hangTime = getHangTime(role) |
421 | - checkReward(role) | 425 | + checkReward(role, true) |
422 | local items = role:getProperty("hangBag") | 426 | local items = role:getProperty("hangBag") |
423 | if not next(items) then return end | 427 | if not next(items) then return end |
424 | local reward, change = role:award(items, {log = {desc = "hangReward"}}) | 428 | local reward, change = role:award(items, {log = {desc = "hangReward"}}) |
src/models/Daily.lua
@@ -128,13 +128,13 @@ function Daily:checkTreasureExpired(treasureAttr, treasureList) | @@ -128,13 +128,13 @@ function Daily:checkTreasureExpired(treasureAttr, treasureList) | ||
128 | -- check finish | 128 | -- check finish |
129 | if curInfo["expire_time"] then | 129 | if curInfo["expire_time"] then |
130 | if curInfo.cool_time > 1 then | 130 | if curInfo.cool_time > 1 then |
131 | - if skynet.timex() > curInfo["expire_time"] then --已过期 | 131 | + if skynet.timex() >= curInfo["expire_time"] then --已过期 |
132 | treasureList[treasureAttr.id] = nil | 132 | treasureList[treasureAttr.id] = nil |
133 | elseif skynet.timex() > curInfo["expire_time"] - curInfo.cool_time * oneDay then --未冷却 | 133 | elseif skynet.timex() > curInfo["expire_time"] - curInfo.cool_time * oneDay then --未冷却 |
134 | curInfo = nil | 134 | curInfo = nil |
135 | end | 135 | end |
136 | else | 136 | else |
137 | - if skynet.timex() > curInfo["expire_time"] then | 137 | + if skynet.timex() >= curInfo["expire_time"] then |
138 | treasureList[treasureAttr.id] = nil | 138 | treasureList[treasureAttr.id] = nil |
139 | end | 139 | end |
140 | end | 140 | end |
@@ -168,7 +168,6 @@ function Daily:checkTreasureWeight(treasureList, tmptreasure, treasureBase) | @@ -168,7 +168,6 @@ function Daily:checkTreasureWeight(treasureList, tmptreasure, treasureBase) | ||
168 | local removeId | 168 | local removeId |
169 | while next(tmptreasure) do | 169 | while next(tmptreasure) do |
170 | local tmp = self:checkTreasureBase(tmptreasure, treasureBase, removeId) | 170 | local tmp = self:checkTreasureBase(tmptreasure, treasureBase, removeId) |
171 | - print(treasureBase) | ||
172 | local id = math.randWeight(tmp, "weight") --宝藏id | 171 | local id = math.randWeight(tmp, "weight") --宝藏id |
173 | if not id then | 172 | if not id then |
174 | break | 173 | break |
@@ -202,28 +201,55 @@ function Daily:checkTreasureChapterId(curInfo, treasureList, chapterId) | @@ -202,28 +201,55 @@ function Daily:checkTreasureChapterId(curInfo, treasureList, chapterId) | ||
202 | return treasure | 201 | return treasure |
203 | end | 202 | end |
204 | 203 | ||
205 | - if chapterId == curInfo.chapter_id then --开始挖宝关卡ID=挂机关卡ID | ||
206 | - if not curInfo["expire_time"] then | ||
207 | - if curInfo.cool_time > 1 then | ||
208 | - curInfo["expire_time"] = skynet.timex() + curInfo.working_time + curInfo.cool_time * oneDay | ||
209 | - else | ||
210 | - curInfo["expire_time"] = skynet.timex() + curInfo.working_time | ||
211 | - end | 204 | + --开始挖宝关卡ID=挂机关卡ID |
205 | + if chapterId == curInfo.chapter_id then | ||
206 | + --开始挖宝 | ||
207 | + if not curInfo["end_time"] then | ||
208 | + curInfo["end_time"] = skynet.timex() + curInfo.working_time | ||
212 | else | 209 | else |
213 | - if skynet.timex() > curInfo["expire_time"] then --已过期 | ||
214 | - treasure = table.remove(treasureList, curInfo.id) | ||
215 | - elseif skynet.timex() > curInfo["expire_time"] - curInfo.cool_time * oneDay then --未冷却 | ||
216 | - treasure = curInfo | 210 | + --宝藏冷却时间 |
211 | + if not curInfo["expire_time"] then | ||
212 | + --已挖到 | ||
213 | + if skynet.timex() >= curInfo["end_time"] then | ||
214 | + treasure = treasureList[curInfo.id] | ||
215 | + if curInfo.cool_time > 1 then | ||
216 | + curInfo["expire_time"] = skynet.timex() + curInfo.cool_time * oneDay | ||
217 | + else | ||
218 | + curInfo["expire_time"] = skynet.timex() | ||
219 | + end | ||
220 | + if skynet.timex() >= curInfo["expire_time"] then | ||
221 | + table.remove(treasureList, curInfo.id) | ||
222 | + end | ||
223 | + end | ||
224 | + else | ||
225 | + --已经领取宝藏 检索宝藏冷却时间 | ||
226 | + if skynet.timex() >= curInfo["expire_time"] then | ||
227 | + table.remove(treasureList, curInfo.id) | ||
228 | + end | ||
217 | end | 229 | end |
218 | end | 230 | end |
219 | else | 231 | else |
220 | - if curInfo["expire_time"] then | ||
221 | - if skynet.timex() > curInfo["expire_time"] then --已过期 | ||
222 | - treasure = table.remove(treasureList, curInfo.id) | ||
223 | - elseif skynet.timex() > curInfo["expire_time"] - curInfo.cool_time * oneDay then --未冷却 | ||
224 | - treasure = curInfo | ||
225 | - else | ||
226 | - curInfo["expire_time"] = nil | 232 | + --已经开始挖宝 |
233 | + if curInfo["end_time"] then | ||
234 | + if not curInfo["expire_time"] then --宝藏冷却时间 | ||
235 | + if skynet.timex() >= curInfo["end_time"] then --已挖到 | ||
236 | + treasure = treasureList[curInfo.id] | ||
237 | + if curInfo.cool_time > 1 then | ||
238 | + curInfo["expire_time"] = skynet.timex() + curInfo.cool_time * oneDay | ||
239 | + else | ||
240 | + curInfo["expire_time"] = skynet.timex() | ||
241 | + end | ||
242 | + if skynet.timex() >= curInfo["expire_time"] then | ||
243 | + table.remove(treasureList, curInfo.id) | ||
244 | + end | ||
245 | + else | ||
246 | + --未挖到直接删除 | ||
247 | + table.remove(treasureList, curInfo.id) | ||
248 | + end | ||
249 | + else --已经领取宝藏 检索宝藏冷却时间 | ||
250 | + if skynet.timex() >= curInfo["expire_time"] then | ||
251 | + table.remove(treasureList, curInfo.id) | ||
252 | + end | ||
227 | end | 253 | end |
228 | end | 254 | end |
229 | end | 255 | end |
@@ -236,7 +262,7 @@ function Daily:buyTreasure(treasureList) | @@ -236,7 +262,7 @@ function Daily:buyTreasure(treasureList) | ||
236 | for id, val in pairs(treasureList) do | 262 | for id, val in pairs(treasureList) do |
237 | treasureBase = treasureBase - val.treasure_value | 263 | treasureBase = treasureBase - val.treasure_value |
238 | if treasureBase < 0 then | 264 | if treasureBase < 0 then |
239 | - treasureBase = treasureBase + val.treasure_value | 265 | + treasureBase = treasureBase + val.treasure_value |
240 | print("资源余额不足") | 266 | print("资源余额不足") |
241 | return | 267 | return |
242 | else | 268 | else |