Commit 686d4fd674e8d9ecc4a51d13f19ea194f0d7e4e5

Authored by liuzujun
1 parent 6a2b449c

兑换活动支持兑换多个, 新增卡池

src/actions/ActivityAction.lua
... ... @@ -268,7 +268,8 @@ 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:isOpenById(actid) then return 1 end
  271 + local count = msg.count
  272 + if not role.activity:isOpenById(actid, "Exchange") then return 1 end
272 273  
273 274 local exchangeCfg = csvdb["activity_exchangeCsv"][actid]
274 275 if not exchangeCfg then return 2 end
... ... @@ -278,13 +279,16 @@ function _M.exchangeRpc(agent, data)
278 279 local curCount = exchangeData[id] or 0
279 280 local actCfg = exchangeCfg[id]
280 281 local limitArr = actCfg.limit:toArray(true, "=")
281   - if curCount >= limitArr[2] then return 4 end
  282 + if curCount + count > limitArr[2] then return 4 end
282 283  
283 284 local costs = actCfg.goods:toNumMap()
  285 + for k,v in pairs(costs) do
  286 + costs[k] = v * count
  287 + end
284 288 if not role:checkItemEnough(costs) then return 5 end
285 289 role:costItems(costs, {log = {desc = "actExchange", int1 = actid, int2 = id}})
286 290  
287   - curCount = curCount + 1
  291 + curCount = curCount + count
288 292 exchangeData[id] = curCount
289 293 curData[actid] = exchangeData
290 294 role.activity:updateActData("Exchange", curData)
... ... @@ -304,7 +308,7 @@ function _M.gachakonRpc(agent, data)
304 308  
305 309 if count > 10 then return end
306 310  
307   - if not role.activity:isOpenById(actid) then return 1 end
  311 + if not role.activity:isOpenById(actid, "Gachakon") then return 1 end
308 312  
309 313 local actCtrlData = csvdb["activity_ctrlCsv"][actid]
310 314 if not actCtrlData then return 2 end
... ... @@ -365,7 +369,7 @@ function _M.hangDropRpc(agent, data)
365 369 local role = agent.role
366 370 local msg = MsgPack.unpack(data)
367 371 local actid = msg.actid
368   - if not role.activity:isOpenById(actid) then return 1 end
  372 + if not role.activity:isOpenById(actid, "HangDrop") then return 1 end
369 373  
370 374 local actCfg = csvdb["activity_putCsv"][actid]
371 375 if not actCfg then return 2 end
... ... @@ -382,7 +386,7 @@ function _M.hangDropRpc(agent, data)
382 386 if type == 1 then
383 387 local actId = arr[2]
384 388 local carbonId = arr[3]
385   - if not role.activity:isOpenById(actid) then return 3 end
  389 + if not role.activity:isOpenById(actid, "ChallengeLevel") then return 3 end
386 390 local clInfo = role.activity:getActData("ChallengeLevel") or {}
387 391 if not clInfo[carbonId] then
388 392 break
... ... @@ -439,7 +443,7 @@ function _M.startBattleRpc(agent, data)
439 443 local actid = msg.actid
440 444 local id = msg.id
441 445 local count = msg.count
442   - if not role.activity:isOpenById(actid) then return 1 end
  446 + if not role.activity:isOpenById(actid, "ChallengeLevel") then return 1 end
443 447  
444 448 local actCfg = csvdb["activity_battleCsv"][actid]
445 449 if not actCfg then return 2 end
... ... @@ -542,7 +546,7 @@ function _M.endBattleRpc(agent, data)
542 546 local isWin = msg.isWin
543 547 local heros = msg.heros
544 548 local support = msg.support
545   - if not role.activity:isOpenById(actid) then return 1 end
  549 + if not role.activity:isOpenById(actid, "ChallengeLevel") then return 1 end
546 550  
547 551 if not role.__actBattleCache then return 2 end
548 552  
... ... @@ -686,7 +690,7 @@ function _M.battleRankRpc(agent, data)
686 690 local role = agent.role
687 691 local msg = MsgPack.unpack(data)
688 692 local actid = msg.actid
689   - if not role.activity:isOpenById(actid) then return 1 end
  693 + if not role.activity:isOpenById(actid, "ChallengeLevel") then return 1 end
690 694  
691 695 local rankInfo = role:getRankInfoCommon(RANK_TYPE.ActBattleBoss)
692 696  
... ... @@ -701,7 +705,7 @@ function _M.battleMilestoneRpc(agent, data)
701 705 local id = msg.id
702 706 local index = msg.index
703 707  
704   - if not role.activity:isOpenById(actid) then return 1 end
  708 + if not role.activity:isOpenById(actid, "ChallengeLevel") then return 1 end
705 709  
706 710 local actCfg = csvdb["activity_mileageCsv"][actid]
707 711 if not actCfg then return 3 end
... ...
src/actions/GmAction.lua
... ... @@ -529,6 +529,16 @@ function _M.guide(role, pms)
529 529 return "成功"
530 530 end
531 531  
  532 +table.insert(helpDes, {"挑战关卡次数", "actbattle"})
  533 +function _M.actbattle(role, pms)
  534 + if not role.activity:isOpen("ChallengeLevel") then return end
  535 + local actData = role.activity:getActData("ChallengeLevel")
  536 + actData["ticket"] = 100
  537 + role.activity:updateActData("ChallengeLevel", actData)
  538 +
  539 + return "成功"
  540 +end
  541 +
532 542 function _M.helpRpc(agent, data)
533 543 SendPacket(actionCodes.Gm_helpRpc, MsgPack.pack({help = helpDes}))
534 544 return true
... ...
src/actions/HeroAction.lua
... ... @@ -714,6 +714,7 @@ end
714 714 function _M.drawHeroRpc(agent, data)
715 715 local role = agent.role
716 716 local msg = MsgPack.unpack(data)
  717 + local actid = msg.actid
717 718  
718 719 if not role:isFuncUnlock(FuncUnlock.GetHero) then return 1 end
719 720 local btype = msg.pool -- 1 2 3 4 5 卡池类型 4新手卡池 5心愿卡池
... ... @@ -726,11 +727,32 @@ function _M.drawHeroRpc(agent, data)
726 727 end
727 728 end
728 729  
  730 + -- 活动卡池
  731 + if actid then
  732 + if not role.activity:isOpenById(actid, "ActHeroPool") then return end
  733 + local cfg = csvdb["activity_ctrlCsv"][actid]
  734 + if not cfg then return end
  735 +
  736 + btype = cfg.condition
  737 + end
  738 +
729 739 if btype == 1 then
730 740 -- 判断定向卡池活动开启
731 741 if not role.activity:isOpen("RaceDraw") then
732 742 return
733 743 end
  744 + elseif btype == 2 then
  745 + if role:getProperty("newerGuide") ~= "8=1" then
  746 + -- 判断普通卡池
  747 + if role.activity:isOpen("WishHeroPool") then
  748 + return
  749 + end
  750 + end
  751 + elseif btype == 5 then
  752 + -- 判断心愿单卡池
  753 + if not role.activity:isOpen("WishHeroPool") then
  754 + return
  755 + end
734 756 end
735 757  
736 758 local buildTypeData = csvdb["build_typeCsv"][btype]
... ... @@ -952,7 +974,7 @@ function _M.drawHeroRpc(agent, data)
952 974 })
953 975 SendPacket(actionCodes.Hero_drawHeroRpc, MsgPack.pack({reward = reward})) -- 这个 reward 是数组
954 976  
955   - if btype == 1 or btype == 2 then
  977 + if (buildTypeData["can_feedback"] or 0) == 1 then
956 978 -- 达到一定次数,给响应奖励
957 979 local oldVal = role:getProperty("repayHero") or 0
958 980 local newVal = oldVal + drawCount[drawType]
... ...
1   -Subproject commit bb227076bc3bb79747546fdddc380c8018e7e82b
  1 +Subproject commit 2930f3efda2c82192c931929584fd2bc3f66e647
... ...
src/models/Activity.lua
... ... @@ -24,6 +24,9 @@ Activity.ActivityType = {
24 24 Exchange = 18, -- 兑换活动
25 25 HangDrop = 19, -- 挂机掉落活动
26 26 Gachakon = 20, -- 扭蛋活动
  27 +
  28 + WishHeroPool = 23, -- 心愿卡池
  29 + ActHeroPool = 24, -- 活动卡池
27 30 }
28 31  
29 32  
... ... @@ -41,6 +44,13 @@ function Activity:ctor(properties)
41 44 self._isOpen = {}
42 45 end
43 46  
  47 +function Activity:getType(actType)
  48 + if type(actType) == "string" then
  49 + actType = Activity.ActivityType[actType]
  50 + end
  51 + return actType or 0
  52 +end
  53 +
44 54  
45 55 Activity.schema = {
46 56 actime = {"table", {}}, -- 最近检查某项活动的开始时间 {id = time}
... ... @@ -153,7 +163,12 @@ function Activity:isOpen(activityType)
153 163 return false
154 164 end
155 165  
156   -function Activity:isOpenById(id)
  166 +function Activity:isOpenById(id, activityType)
  167 + activityType = checkActivityType(activityType)
  168 + local cfg = csvdb["activity_ctrlCsv"][id]
  169 + if not cfg then return false end
  170 + if cfg.showType ~= activityType then return false end
  171 +
157 172 return self._isOpen[id]
158 173 end
159 174  
... ...