Commit 764e5296fc6825282b892094ada6dac0bbfe72e3
1 parent
cc87434b
冒险抽奖保底
Showing
4 changed files
with
35 additions
and
1 deletions
Show diff stats
src/ProtocolCode.lua
src/actions/AdvAction.lua
... | ... | @@ -544,6 +544,9 @@ function _M.wheelSurfRpc(agent, data) |
544 | 544 | if not role:checkItemEnough(costs) then return end |
545 | 545 | role:costItems(costs) |
546 | 546 | role:addAdvLvExp(costs[ItemId.OldCoin] or 0) |
547 | + local advDrawB = role:getProperty("advDrawB") | |
548 | + advDrawB[ptype] = (advDrawB[ptype] or 0) + count | |
549 | + role:updateProperty({field = "advDrawB", value = advDrawB}) | |
547 | 550 | -- 随机池子 |
548 | 551 | local pool = drawData.weight:randWeight() |
549 | 552 | local reward = {} |
... | ... | @@ -557,6 +560,34 @@ function _M.wheelSurfRpc(agent, data) |
557 | 560 | SendPacket(actionCodes.Adv_wheelSurfRpc, MsgPack.pack({reward = backReward})) |
558 | 561 | return true |
559 | 562 | end |
563 | +function _M.repayWheelSurfRpc(agent, data) | |
564 | + local role = agent.role | |
565 | + local msg = MsgPack.unpack(data) | |
566 | + | |
567 | + local ptype = msg.ptype | |
568 | + | |
569 | + if ptype == 2 and not role:isFuncOpen(FuncOpenType.AdvEndless) then | |
570 | + return | |
571 | + end | |
572 | + | |
573 | + local drawTypeData = csvdb["adv_wheelsurfCsv"][ptype] | |
574 | + if not drawTypeData then return end | |
575 | + local drawData = drawTypeData[role:getAdvWheelSurfLv(ptype)] | |
576 | + if not drawData then return end | |
577 | + | |
578 | + local advDrawB = role:getProperty("advDrawB") | |
579 | + if (advDrawB[ptype] or 0) < globalCsv.adv_draw_back_cond then | |
580 | + return | |
581 | + end | |
582 | + advDrawB[ptype] = advDrawB[ptype] - globalCsv.adv_draw_back_cond | |
583 | + role:updateProperty({field = "advDrawB", value = advDrawB}) | |
584 | + local gift = drawData["pool3"]:randWeight(true) | |
585 | + local reward = {[gift[1]] = gift[2]} | |
586 | + reward = role:award(reward) | |
587 | + | |
588 | + SendPacket(actionCodes.Adv_repayWheelSurfRpc, MsgPack.pack({reward = reward})) | |
589 | + return true | |
590 | +end | |
560 | 591 | |
561 | 592 | function _M.finishAchievRpc(agent, data) |
562 | 593 | local role = agent.role | ... | ... |
src/models/Role.lua
... | ... | @@ -68,6 +68,7 @@ Role.schema = { |
68 | 68 | advAFOpen = {"table", {}}, -- 解锁的神器 {[id] = 1} |
69 | 69 | advAFGet = {"table", {}}, -- 当前拥有的神器 {[id] = 等级} |
70 | 70 | advAFWear = {"table", {}}, -- 当前拥有的神器 {[slot] = id} |
71 | + advDrawB = {"table", {}}, -- 冒险抽奖回馈 {[1] = 0, [2] = 100} -- 池子类型 = 点数 | |
71 | 72 | |
72 | 73 | --挂机相关 |
73 | 74 | hangPass = {"table", {}}, -- 挂机通过的最大关卡 |
... | ... | @@ -248,6 +249,7 @@ function Role:data() |
248 | 249 | advElM = self:getProperty("advElM"), |
249 | 250 | advAFGet = self:getProperty("advAFGet"), |
250 | 251 | advAFWear = self:getProperty("advAFWear"), |
252 | + advDrawB = self:getProperty("advDrawB"), | |
251 | 253 | |
252 | 254 | hangPass = self:getProperty("hangPass"), |
253 | 255 | hangTeam = self:getProperty("hangTeam"), | ... | ... |