Commit da026be2f92572779052c55b355290b6d38c9ee3
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() |