Commit b8b1c164bffb27002e0eef51a6a2b59591396c69
1 parent
9b59590a
扭蛋活动,万能碎片bug
Showing
7 changed files
with
54 additions
and
17 deletions
Show diff stats
src/actions/ActivityAction.lua
| ... | ... | @@ -268,7 +268,7 @@ function _M.exchangeRpc(agent, data) |
| 268 | 268 | local msg = MsgPack.unpack(data) |
| 269 | 269 | local actid = msg.actid |
| 270 | 270 | local id = msg.id |
| 271 | - if not role.activity:isOpen("Exchange") then return 1 end | |
| 271 | + if not role.activity:isOpenById(actid) then return 1 end | |
| 272 | 272 | |
| 273 | 273 | local exchangeCfg = csvdb["activity_exchangeCsv"][actid] |
| 274 | 274 | if not exchangeCfg then return 2 end |
| ... | ... | @@ -295,4 +295,36 @@ function _M.exchangeRpc(agent, data) |
| 295 | 295 | return true |
| 296 | 296 | end |
| 297 | 297 | |
| 298 | +function _M.gachakonRpc(agent, data) | |
| 299 | + local role = agent.role | |
| 300 | + local msg = MsgPack.unpack(data) | |
| 301 | + local actid = msg.actid | |
| 302 | + if not role.activity:isOpenById(actid) then return 1 end | |
| 303 | + | |
| 304 | + local actCfg = csvdb["activity_capsuleToysCsv"][actid] | |
| 305 | + if not actCfg then return 2 end | |
| 306 | + | |
| 307 | + local gachakonInfo = role.activity:getActData("Gachakon") or {} | |
| 308 | + local tmpCfg = clone(actCfg) | |
| 309 | + local flag = 0 | |
| 310 | + for id, cfg in pairs(tmpCfg) do | |
| 311 | + local num = gachakonInfo[id] or 0 | |
| 312 | + cfg.amount = cfg.amount >= num and cfg.amount - num or 0 | |
| 313 | + cfg.weight = cfg.weight * cfg.amount | |
| 314 | + if cfg.weight > 0 then | |
| 315 | + flag = 1 | |
| 316 | + end | |
| 317 | + end | |
| 318 | + if flag == 0 then return 3 end | |
| 319 | + | |
| 320 | + local id = math.randWeight(tmpCfg, "weight") | |
| 321 | + local reward, change = role:award(tmpCfg[id].award, {log = {desc = "actGachakon", int1 = actid, int2 = id}}) | |
| 322 | + | |
| 323 | + gachakonInfo[id] = (gachakonInfo[id] or 0) + 1 | |
| 324 | + role.activity:updateActData("Gachakon", gachakonInfo) | |
| 325 | + | |
| 326 | + SendPacket(actionCodes.Activity_gachakonRpc, MsgPack.pack(role:packReward(reward, change))) | |
| 327 | + return true | |
| 328 | +end | |
| 329 | + | |
| 298 | 330 | return _M |
| 299 | 331 | \ No newline at end of file | ... | ... |
src/actions/EmailAction.lua
| ... | ... | @@ -121,7 +121,7 @@ function _M.drawAttachRpc(agent, data) |
| 121 | 121 | local attachments = getEmailAttachments(email) |
| 122 | 122 | if attachments == "" then return end |
| 123 | 123 | |
| 124 | - local reward, change = role:award(attachments, {log = {desc = "draw_attach", int1 = emailId}}) | |
| 124 | + local reward, change = role:award(attachments, {log = {desc = "draw_attach", int1 = id}}) | |
| 125 | 125 | email:setProperty("status", 2) |
| 126 | 126 | email:log(role, 2) |
| 127 | 127 | SendPacket(actionCodes.Email_drawAttachRpc, MsgPack.pack({reward = reward, change = change})) | ... | ... |
src/actions/GmAction.lua
| ... | ... | @@ -534,7 +534,7 @@ function _M.test(role, pms) |
| 534 | 534 | --local hero = require ("actions.HeroAction") |
| 535 | 535 | --hero.unlockPoolRpc({role = role}, MsgPack.pack({type = id})) |
| 536 | 536 | |
| 537 | - role:sendMail(13, nil, "1=2", {111}) | |
| 537 | + --role:sendMail(13, nil, "1=2", {111}) | |
| 538 | 538 | return "成功" |
| 539 | 539 | end |
| 540 | 540 | ... | ... |
src/actions/HeroAction.lua
| ... | ... | @@ -585,16 +585,16 @@ function _M.createHeroRandomRpc(agent, data) |
| 585 | 585 | local itemData = csvdb["itemCsv"][itemId] |
| 586 | 586 | if not itemData or itemData.type ~= ItemType.HeroFCommon then return end |
| 587 | 587 | local cost = globalCsv.unit_fragment_cost[itemData.quality] |
| 588 | - if not cost or role:getItemCount(itemId) < cost then return end | |
| 588 | + if not cost or role:getItemCount(itemId) < cost then return 1 end | |
| 589 | 589 | |
| 590 | 590 | local randomData = csvdb["item_randomCsv"][tonumber(itemData.use_effect)] |
| 591 | - if not randomData then return end | |
| 591 | + if not randomData then return 2 end | |
| 592 | 592 | |
| 593 | 593 | local temp = randomData.gift1:randWeight(true) |
| 594 | - if not temp or not next(temp) then return end | |
| 594 | + if not temp or not next(temp) then return 3 end | |
| 595 | 595 | |
| 596 | 596 | role:costItems({[itemId] = cost}, {log = {desc = "createHeroRandom"}}) |
| 597 | - local reward, change = role:award({[temp[1] + ItemStartId.Hero] = 1}, {log = {desc = "createHeroRandom"}}) | |
| 597 | + local reward, change = role:award({[temp[1]] = 1}, {log = {desc = "createHeroRandom"}}) | |
| 598 | 598 | |
| 599 | 599 | |
| 600 | 600 | SendPacket(actionCodes.Hero_createHeroRandomRpc, MsgPack.pack(role:packReward(reward, change))) | ... | ... |
src/actions/StoreAction.lua
| ... | ... | @@ -401,15 +401,16 @@ function _M.getTotalRechargeAwardRpc(agent, data) |
| 401 | 401 | local role = agent.role |
| 402 | 402 | local msg = MsgPack.unpack(data) |
| 403 | 403 | local index = msg.index -- 领取的索引id |
| 404 | + local totalTwd = role:getProperty("twdC") | |
| 404 | 405 | local totalRechargeRecord = role.storeData:getProperty("totalRR") |
| 405 | 406 | local flag = string.char(string.getbit(totalRechargeRecord, index)) |
| 406 | - if flag == "1" then | |
| 407 | - return 1 | |
| 408 | - end | |
| 409 | - totalRechargeRecord = string.setbit(totalRechargeRecord, index) | |
| 410 | - role.storeData:updateProperty({field = "totalRR", value = totalRechargeRecord}) | |
| 407 | + if flag == "1" then return 1 end | |
| 411 | 408 | local cfg = csvdb["Csv"][index] |
| 412 | 409 | if not cfg then return 2 end |
| 410 | + if cfg.condition > totalTwd then return 3 end | |
| 411 | + | |
| 412 | + totalRechargeRecord = string.setbit(totalRechargeRecord, index) | |
| 413 | + role.storeData:updateProperty({field = "totalRR", value = totalRechargeRecord}) | |
| 413 | 414 | |
| 414 | 415 | local reward, _ = role:award(cfg.reward, {log = {desc = "totalRecharge", int1 = index}}) |
| 415 | 416 | SendPacket(actionCodes.Store_getTotalRechargeAwardRpc, MsgPack.pack({reward = reward})) | ... | ... |
src/models/Activity.lua
| ... | ... | @@ -54,10 +54,10 @@ Activity.schema = { |
| 54 | 54 | act13 = {"table", {}}, -- {0 = 拾荒消耗远古金币数量, 1=1, 2=1} 拾荒周活动 1表示领取过该档位的奖励 |
| 55 | 55 | act14 = {"table", {}}, -- {0 = 拆解数量, 1=1, 2=1} 拆解周活动 1表示领取过该档位的奖励 |
| 56 | 56 | |
| 57 | - act20 = {"table", {}, true}, -- {id=兑换数量} | |
| 58 | - act21 = {"table", {}}, -- {id=抽取的数量} | |
| 59 | - act22 = {"table", {}}, -- {id=关卡星数, totalDmg=Boss总伤害} | |
| 60 | - act23 = {"table", {}}, -- {挂机信息} | |
| 57 | + act17 = {"table", {}}, -- {id=关卡星数, totalDmg=Boss总伤害} | |
| 58 | + act18 = {"table", {}, true}, -- {id=兑换数量} | |
| 59 | + act19 = {"table", {}}, -- {挂机信息} | |
| 60 | + act20 = {"table", {}}, -- {id=扭蛋抽出数量} | |
| 61 | 61 | } |
| 62 | 62 | |
| 63 | 63 | function Activity:data() |
| ... | ... | @@ -148,6 +148,10 @@ function Activity:isOpen(activityType) |
| 148 | 148 | return false |
| 149 | 149 | end |
| 150 | 150 | |
| 151 | +function Activity:isOpneById(id) | |
| 152 | + return self._isOpen[id] | |
| 153 | +end | |
| 154 | + | |
| 151 | 155 | function Activity:getActData(actType) |
| 152 | 156 | actType = checkActivityType(actType) |
| 153 | 157 | return self:getProperty("act" .. actType) | ... | ... |