Commit f382b4f2d6c0c26c00e4423bb40e85aed53920c1
1 parent
555f745e
fix: 一番赏的抽奖bug
1. 抽奖,返回值4,返回奖品数量差异 2. 报名协议,返回扭蛋机详情。
Showing
4 changed files
with
44 additions
and
22 deletions
Show diff stats
src/actions/CapsuleAction.lua
| ... | ... | @@ -82,6 +82,7 @@ function _M.registerRpc(agent, data) |
| 82 | 82 | local capsuleId = msg.capsule_id |
| 83 | 83 | |
| 84 | 84 | local ret = skynet.call(agent.capsule_serv, "lua", "register", roleId, capsuleId) |
| 85 | + if not ret then return 1 end | |
| 85 | 86 | SendPacket(actionCodes.Capsule_registerRpc, MsgPack.pack(ret)) |
| 86 | 87 | return true |
| 87 | 88 | end |
| ... | ... | @@ -93,16 +94,21 @@ function _M.drawRpc(agent, data) |
| 93 | 94 | local capsuleId = msg.capsule_id |
| 94 | 95 | local typ = msg.typ --0=独享,1= 公开 |
| 95 | 96 | local full = msg.full -- 0=单次,1=十连抽 2=全收 |
| 96 | - local continue = msg.continue--确认次数。 | |
| 97 | 97 | local cares = msg.cares |
| 98 | 98 | |
| 99 | 99 | local ret, reward, change |
| 100 | 100 | if typ == 1 then |
| 101 | - ret, reward = skynet.call(agent.capsule_serv, "lua", "draw_capsule", roleId, capsuleId, full, continue, cares) | |
| 101 | + ret, reward = skynet.call(agent.capsule_serv, "lua", "draw_capsule", roleId, capsuleId, full, cares) | |
| 102 | 102 | else |
| 103 | 103 | ret, reward = role:drawCapsule(capsuleId, full, cares) |
| 104 | 104 | end |
| 105 | - if ret <= 4 then return ret end | |
| 105 | + if ret < 4 then | |
| 106 | + return ret | |
| 107 | + end | |
| 108 | + | |
| 109 | + if ret == 4 then | |
| 110 | + SendPacket(actionCodes.Capsule_drawRpc, MsgPack.pack(reward)) | |
| 111 | + end | |
| 106 | 112 | |
| 107 | 113 | reward, change = role:award(reward, {log = {desc = "CapsuleReward", int1 = capsuleId, int2 = roleId}}) |
| 108 | 114 | dump(reward) | ... | ... |
src/models/Capsule.lua
| ... | ... | @@ -188,21 +188,23 @@ function Capsule:join(roleId) |
| 188 | 188 | local register = self:getProperty("register") or {} |
| 189 | 189 | register[roleId] = 0 |
| 190 | 190 | self:setProperty("register", register) |
| 191 | - return true | |
| 191 | + return self:data(roleId) | |
| 192 | 192 | end |
| 193 | 193 | |
| 194 | -function Capsule:isRegister(roleId) | |
| 194 | +function Capsule:getRegisterByRoleId(roleId) | |
| 195 | 195 | local register = self:getProperty("register") or {} |
| 196 | - return register[roleId] == 1 | |
| 196 | + return register[roleId] or 0 | |
| 197 | +end | |
| 198 | + | |
| 199 | +function Capsule:isRegister(roleId) | |
| 200 | + return self:getRegisterByRoleId(roleId) == 1 | |
| 197 | 201 | end |
| 198 | 202 | |
| 199 | 203 | function Capsule:register(roleId) |
| 200 | 204 | local register = self:getProperty("register") or {} |
| 201 | - if next(register) then | |
| 202 | - register[roleId] = 1 | |
| 203 | - return true | |
| 204 | - end | |
| 205 | - return false | |
| 205 | + register[roleId] = 1 | |
| 206 | + self:setProperty("register", register) | |
| 207 | + return self:data(roleId) | |
| 206 | 208 | end |
| 207 | 209 | |
| 208 | 210 | function Capsule:exit(roleId) |
| ... | ... | @@ -776,7 +778,7 @@ function Capsule:draw(roleId, full, cares) |
| 776 | 778 | end |
| 777 | 779 | |
| 778 | 780 | |
| 779 | -function Capsule:data() | |
| 781 | +function Capsule:data(roleId) | |
| 780 | 782 | return { |
| 781 | 783 | id = self:getProperty("id"), |
| 782 | 784 | room = self:getProperty("room"), |
| ... | ... | @@ -784,6 +786,7 @@ function Capsule:data() |
| 784 | 786 | name = self:getProperty("name"), |
| 785 | 787 | coin = self:getProperty("coin"), |
| 786 | 788 | onlineCount = self:getOnlineCount(), |
| 789 | + playerStatus = self:getRegisterByRoleId(roleId), | |
| 787 | 790 | record = self:getProperty("record"), |
| 788 | 791 | --recordByRole = self:getProperty("recordByRole"), |
| 789 | 792 | rank = self:getProperty("rank"), | ... | ... |
src/models/RolePlugin.lua
| ... | ... | @@ -829,11 +829,16 @@ function RolePlugin.bind(Role) |
| 829 | 829 | for _, key in pairs(res) do |
| 830 | 830 | local capsule = require("models.Capsule").new({ key = CAPSULE_ROLE:format(roleId,tonumber(key))}) |
| 831 | 831 | capsule:load() |
| 832 | - if capsule:refreshing(now) then | |
| 833 | - capsule:init() | |
| 834 | - capsule:create() | |
| 832 | + if capsule:isShow() then | |
| 833 | + if capsule:refreshing(now) then | |
| 834 | + capsule:init() | |
| 835 | + capsule:create() | |
| 836 | + end | |
| 837 | + self.capsules[key] = capsule | |
| 838 | + else | |
| 839 | + redisproxy:del(CAPSULE_ROLE:format(roleId, tonumber(key))) | |
| 840 | + redisproxy:srem(CAPSULE_ID_ROLE, key) | |
| 835 | 841 | end |
| 836 | - self.capsules[key] = capsule | |
| 837 | 842 | end |
| 838 | 843 | |
| 839 | 844 | for _, data in pairs(csvdb["ichibankuji_mainCsv"]) do | ... | ... |
src/services/capsuled.lua
| ... | ... | @@ -61,7 +61,7 @@ local function add(roleId, capsuleId) |
| 61 | 61 | if next(capsule) then |
| 62 | 62 | capsule:join(roleId) |
| 63 | 63 | broadCastCapsule(roleId, capsuleId, {changeType = NotifyChangeType.JOIN, roleId = roleId}) |
| 64 | - return capsule:data() | |
| 64 | + return capsule:data(roleId) | |
| 65 | 65 | end |
| 66 | 66 | print("id 不存在: ".. capsuleId) |
| 67 | 67 | return nil |
| ... | ... | @@ -95,8 +95,8 @@ function CMD.start() |
| 95 | 95 | end |
| 96 | 96 | capsules[key] = capsule |
| 97 | 97 | else |
| 98 | - redisproxy.del(CAPSULE_PUBLIC:format(tonumber(key))) | |
| 99 | - redisproxy.srem(CAPSULE_INFO, key) | |
| 98 | + redisproxy:del(CAPSULE_PUBLIC:format(tonumber(key))) | |
| 99 | + redisproxy:srem(CAPSULE_INFO, key) | |
| 100 | 100 | end |
| 101 | 101 | end |
| 102 | 102 | |
| ... | ... | @@ -109,7 +109,7 @@ function CMD.start() |
| 109 | 109 | capsule:init() |
| 110 | 110 | capsule:create() |
| 111 | 111 | capsules[key] = capsule |
| 112 | - redisproxy.sadd(CAPSULE_INFO, key) | |
| 112 | + redisproxy:sadd(CAPSULE_INFO, key) | |
| 113 | 113 | end |
| 114 | 114 | end |
| 115 | 115 | end |
| ... | ... | @@ -145,10 +145,10 @@ function CMD.exit(roleId, capsuleId) |
| 145 | 145 | end |
| 146 | 146 | end |
| 147 | 147 | |
| 148 | -function CMD.draw_capsule(roleId, capsuleId, typ, cares) | |
| 148 | +function CMD.draw_capsule(roleId, capsuleId, full, cares) | |
| 149 | 149 | local capsule = capsules[capsuleId] or {} |
| 150 | 150 | if next(capsule) then |
| 151 | - local ret, reward, notify = capsule:draw(roleId, typ, cares) | |
| 151 | + local ret, reward, notify = capsule:draw(roleId, full, cares) | |
| 152 | 152 | --if ret > 4 then |
| 153 | 153 | -- broadCastCapsule(roleId, capsuleId, {changeType = NotifyChangeType.DRAW, roleId = roleId, notify = notify}) |
| 154 | 154 | --end |
| ... | ... | @@ -157,6 +157,14 @@ function CMD.draw_capsule(roleId, capsuleId, typ, cares) |
| 157 | 157 | return nil |
| 158 | 158 | end |
| 159 | 159 | |
| 160 | +function CMD.register(roleId, capsuleId) | |
| 161 | + local capsule = capsules[capsuleId] or {} | |
| 162 | + if next(capsule) then | |
| 163 | + return capsule:register(roleId) | |
| 164 | + end | |
| 165 | + return nil | |
| 166 | +end | |
| 167 | + | |
| 160 | 168 | skynet.start(function() |
| 161 | 169 | skynet.dispatch("lua", function(session, address, cmd, ...) |
| 162 | 170 | local f = CMD[string.lower(cmd)] | ... | ... |