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