Commit da026be2f92572779052c55b355290b6d38c9ee3

Authored by zhangqijia
1 parent cf32785a

fix: 一番赏 扭蛋机刷新机制 使用定时器刷新,每秒检测一次。

Showing 2 changed files with 44 additions and 33 deletions   Show diff stats
src/models/Capsule.lua
... ... @@ -145,7 +145,20 @@ function Capsule:isShow()
145 145 return true
146 146 end
147 147  
148   -function Capsule:resetTimeOut(curTime, now)
  148 +function Capsule:reset2TimeOut(curTime, now)
  149 + now = now or skynet.timex()
  150 + local interval
  151 + if now >= curTime then
  152 + self:init()
  153 + self:create()
  154 + else
  155 + interval = curTime - now
  156 + end
  157 + interval = (interval)* 100
  158 + skynet.timeout(interval, handler(self,self.reset3TimeOut)(curTime))
  159 +end
  160 +
  161 +function Capsule:reset3TimeOut(curTime, now)
149 162 now = now or skynet.timex()
150 163 local cur4Time = curTime or (specTime({hour = 4},now))
151 164  
... ... @@ -162,8 +175,8 @@ function Capsule:resetTimeOut(curTime, now)
162 175 local nextTime = dayLater(now)
163 176 interval = nextTime - now
164 177 end
165   - interval = (interval + 1)* 100
166   - skynet.timeout(interval, handler(self,self.resetTimeOut))
  178 + interval = (interval)* 100
  179 + skynet.timeout(interval, handler(self,self.reset3TimeOut))
167 180 end
168 181  
169 182 function Capsule:reset4TimeOut(curTime, now)
... ... @@ -180,19 +193,30 @@ function Capsule:reset4TimeOut(curTime, now)
180 193  
181 194 return false
182 195 end
183   - interval = (interval + 1)* 100
  196 + interval = (interval)* 100
184 197 skynet.timeout(interval, handler(self,self.reset4TimeOut))
185 198 end
186 199  
187   -function Capsule:checkTime(resetArr, now)
188   - if resetArr[1] == "3" then
  200 +function Capsule:checkTime(reset, now)
  201 + local resetArr = reset:toArray(true, "=")
  202 + if not next(resetArr) then return false end
  203 +
  204 + if resetArr[1] == 2 then
  205 + if self:getGoodsAmount() > 0 then return false end
  206 + local drawEndTime = self:getProperty("drawEndTime") or 0
  207 + if drawEndTime == 0 then return false end
  208 + if now - drawEndTime >= resetArr[2] then return true end
  209 + --self:reset2TimeOut(drawEndTime + resetArr[2], now)
  210 + elseif resetArr[1] == 3 then
189 211 local cur4Time = specTime({hour = 4},now)
190 212 if now == cur4Time then return true end
191   - self:resetTimeOut(cur4Time, now)
192   - elseif resetArr[1] == "4" then
  213 + --self:reset3TimeOut(cur4Time, now)
  214 + elseif resetArr[1] == 4 then
193 215 if now == resetArr[2] then return true end
194   - self:reset4TimeOut(resetArr[2], now)
  216 + --self:reset4TimeOut(resetArr[2], now)
195 217 end
  218 +
  219 + return false
196 220 end
197 221  
198 222 function Capsule:refreshing(now)
... ... @@ -204,29 +228,13 @@ function Capsule:refreshing(now)
204 228 if reset == "0" then
205 229 return false
206 230 elseif reset == "1" then
207   - if self:getProperty("resetTimes") == 1 then
  231 + if self:getProperty("resetTimes") == 0 then
  232 + self:setProperty("resetTime", 1)
208 233 return true
209 234 end
210 235 return false
211 236 else
212   - local resetArr = reset:toArray(true, "=")
213   - if not next(resetArr) then return false end
214   -
215   - if resetArr[1] == "2" then
216   - if self:getGoodsAmount() > 0 then return false end
217   -
218   - local drawEndTime = self:getProperty("drawEndTime") or 0
219   - if drawEndTime == 0 then return false end
220   -
221   - if now - drawEndTime >= resetArr[2] then
222   - return true
223   - end
224   - return false
225   -
226   - else
227   - self:checkTime(resetArr, now)
228   - end
229   -
  237 + return self:checkTime(reset, now)
230 238 end
231 239  
232 240 return false
... ...
src/services/capsuled.lua
... ... @@ -81,7 +81,7 @@ end
81 81  
82 82 local function add(roleId, capsuleId)
83 83 local capsule = capsules[capsuleId]
84   - if not capsule then skynet.error("not capsule: " .. capsuleId) return end
  84 + if not capsule then skynet.error("add not capsule: " .. capsuleId) return end
85 85 if next(capsule) then
86 86 capsule:join(roleId)
87 87 broadCastCapsule(roleId, capsuleId, {notifyType= NotifyChangeType.JOIN, roleId = roleId})
... ... @@ -91,10 +91,12 @@ local function add(roleId, capsuleId)
91 91 return nil
92 92 end
93 93  
94   -local function capsuleRefreshing()
95   - local now = skynet.timex()
  94 +local function capsuleRefreshing(now)
96 95 for _, v in pairs(capsules) do
97 96 if v:refreshing(now) then
  97 + print("刷新机器looooook....")
  98 + print(v:getProperty("id"))
  99 + print(v:getProperty("room"))
98 100 v:init()
99 101 v:create()
100 102 end
... ... @@ -103,8 +105,9 @@ end
103 105  
104 106 --扭蛋机刷新
105 107 local function check_capsules()
106   - pcall(capsuleRefreshing)
107   - skynet.timeout(60, check_capsules)
  108 + local now = skynet.timex()
  109 + pcall(capsuleRefreshing, now)
  110 + skynet.timeout(100, check_capsules)
108 111 end
109 112  
110 113 function CMD.reset()
... ...