Commit 1199daf93d7c3ac2618479aab6a38ab04f339653

Authored by zhangqijia
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