Commit b8b1c164bffb27002e0eef51a6a2b59591396c69

Authored by liuzujun
1 parent 9b59590a

扭蛋活动,万能碎片bug

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}))
... ...
1   -Subproject commit 897a3e0e4afa8217614a9ecf199d54b0ca641bab
  1 +Subproject commit e3723ff3514f68c633926970e695d1c9ecea1cd4
... ...
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)
... ...