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,7 +145,20 @@ function Capsule:isShow()
145 return true 145 return true
146 end 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 now = now or skynet.timex() 162 now = now or skynet.timex()
150 local cur4Time = curTime or (specTime({hour = 4},now)) 163 local cur4Time = curTime or (specTime({hour = 4},now))
151 164
@@ -162,8 +175,8 @@ function Capsule:resetTimeOut(curTime, now) @@ -162,8 +175,8 @@ function Capsule:resetTimeOut(curTime, now)
162 local nextTime = dayLater(now) 175 local nextTime = dayLater(now)
163 interval = nextTime - now 176 interval = nextTime - now
164 end 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 end 180 end
168 181
169 function Capsule:reset4TimeOut(curTime, now) 182 function Capsule:reset4TimeOut(curTime, now)
@@ -180,19 +193,30 @@ function Capsule:reset4TimeOut(curTime, now) @@ -180,19 +193,30 @@ function Capsule:reset4TimeOut(curTime, now)
180 193
181 return false 194 return false
182 end 195 end
183 - interval = (interval + 1)* 100 196 + interval = (interval)* 100
184 skynet.timeout(interval, handler(self,self.reset4TimeOut)) 197 skynet.timeout(interval, handler(self,self.reset4TimeOut))
185 end 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 local cur4Time = specTime({hour = 4},now) 211 local cur4Time = specTime({hour = 4},now)
190 if now == cur4Time then return true end 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 if now == resetArr[2] then return true end 215 if now == resetArr[2] then return true end
194 - self:reset4TimeOut(resetArr[2], now) 216 + --self:reset4TimeOut(resetArr[2], now)
195 end 217 end
  218 +
  219 + return false
196 end 220 end
197 221
198 function Capsule:refreshing(now) 222 function Capsule:refreshing(now)
@@ -204,29 +228,13 @@ function Capsule:refreshing(now) @@ -204,29 +228,13 @@ function Capsule:refreshing(now)
204 if reset == "0" then 228 if reset == "0" then
205 return false 229 return false
206 elseif reset == "1" then 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 return true 233 return true
209 end 234 end
210 return false 235 return false
211 else 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 end 238 end
231 239
232 return false 240 return false
src/services/capsuled.lua
@@ -81,7 +81,7 @@ end @@ -81,7 +81,7 @@ end
81 81
82 local function add(roleId, capsuleId) 82 local function add(roleId, capsuleId)
83 local capsule = capsules[capsuleId] 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 if next(capsule) then 85 if next(capsule) then
86 capsule:join(roleId) 86 capsule:join(roleId)
87 broadCastCapsule(roleId, capsuleId, {notifyType= NotifyChangeType.JOIN, roleId = roleId}) 87 broadCastCapsule(roleId, capsuleId, {notifyType= NotifyChangeType.JOIN, roleId = roleId})
@@ -91,10 +91,12 @@ local function add(roleId, capsuleId) @@ -91,10 +91,12 @@ local function add(roleId, capsuleId)
91 return nil 91 return nil
92 end 92 end
93 93
94 -local function capsuleRefreshing()  
95 - local now = skynet.timex() 94 +local function capsuleRefreshing(now)
96 for _, v in pairs(capsules) do 95 for _, v in pairs(capsules) do
97 if v:refreshing(now) then 96 if v:refreshing(now) then
  97 + print("刷新机器looooook....")
  98 + print(v:getProperty("id"))
  99 + print(v:getProperty("room"))
98 v:init() 100 v:init()
99 v:create() 101 v:create()
100 end 102 end
@@ -103,8 +105,9 @@ end @@ -103,8 +105,9 @@ end
103 105
104 --扭蛋机刷新 106 --扭蛋机刷新
105 local function check_capsules() 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 end 111 end
109 112
110 function CMD.reset() 113 function CMD.reset()