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 | 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() | ... | ... |