From 6cac3be8579cbb1d1f9d742e2d47ed4642c943b2 Mon Sep 17 00:00:00 2001 From: liuzujun <307836273@qq.com> Date: Fri, 15 Jan 2021 15:45:18 +0800 Subject: [PATCH] 将军令批量领取奖励 --- src/actions/ActivityAction.lua | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++---------------------- src/models/Activity.lua | 1 - src/preload.lua | 2 +- 3 files changed, 52 insertions(+), 24 deletions(-) diff --git a/src/actions/ActivityAction.lua b/src/actions/ActivityAction.lua index e9d83f4..dbb381e 100644 --- a/src/actions/ActivityAction.lua +++ b/src/actions/ActivityAction.lua @@ -1152,7 +1152,6 @@ function _M.battleCommandRpc(agent, data) local actid = msg.actid -- 活动id local index = msg.index -- 领取的阶段id local pay = msg.pay -- 是否是超级奖励 - print(actid, index, pay) if not role.activity:isOpenById(actid, "BattleCommand") then return 1 end local actCtrlData = csvdb["activity_ctrlCsv"][actid] @@ -1165,32 +1164,62 @@ function _M.battleCommandRpc(agent, data) local bpCfg = csvdb["activity_battlepass_rewardCsv"][actid] if not bpCfg then return 3 end - bpCfg = bpCfg[index] - if not bpCfg then return 4 end - - if (actData["lvl"] or 0) < bpCfg["type"] then return 5 end + local award = {} + if not index then -- 一键领取 + for i = 1, #bpCfg do + local cfg = bpCfg[i] + if not cfg then return 4 end + + if (actData["lvl"] or 0) < cfg["type"] then break end + local records = {{"freeR", "rewardNormal"}, {"payR", "rewardHigh"}} + + for _, info in ipairs(records) do + local typeKey, rewardKey = info[1], info[2] + local record = actData[typeKey] or "" + local flag = string.char(string.getbit(record, i)) + if flag == "0" then + record = string.setbit(record, i) + end + record = string.setbit(record, i) + actData[typeKey] = record - local record = "" - if pay then - record = actData["payR"] or "" + local awd = cfg[rewardKey] + for k, v in pairs(awd:toNumMap()) do + award[k] = (award[k] or 0) + v + end + end + end else - record = actData["freeR"] or "" - end + bpCfg = bpCfg[index] + if not bpCfg then return 4 end - local flag = string.char(string.getbit(record, index)) + if (actData["lvl"] or 0) < bpCfg["type"] then return 5 end - if flag == "1" then - return 6 - end + local record = "" + if pay then + record = actData["payR"] or "" + else + record = actData["freeR"] or "" + end - record = string.setbit(record, index) - local award = "" - if pay then - actData["payR"] = record - award = bpCfg["rewardNormal"] - else - actData["freeR"] = record - award = bpCfg["rewardHigh"] + local flag = string.char(string.getbit(record, index)) + + if flag == "1" then + return 6 + end + + record = string.setbit(record, index) + local awd = "" + if pay then + actData["payR"] = record + awd = bpCfg["rewardNormal"] + else + actData["freeR"] = record + awd = bpCfg["rewardHigh"] + end + for k, v in pairs(awd:toNumMap()) do + award[k] = (award[k] or 0) + v + end end role.activity:updateActData("BattleCommand", actData) diff --git a/src/models/Activity.lua b/src/models/Activity.lua index d7d7779..c80e80a 100644 --- a/src/models/Activity.lua +++ b/src/models/Activity.lua @@ -979,7 +979,6 @@ activityFunc[Activity.ActivityType.BattleCommand] = { self:updateActData(actType, data, not notify) end, ["check"] = function(self, actType, notify, id, count) -- 检查 itemid, count - print("babababa", id, count) local isOpen, actId = self:isOpen(actType) local actData = self:getActData(actType) or {} local actCfg = csvdb["activity_ctrlCsv"][actId] diff --git a/src/preload.lua b/src/preload.lua index c3f3967..eba52bc 100644 --- a/src/preload.lua +++ b/src/preload.lua @@ -2,5 +2,5 @@ local skynet = require "skynet" skynet.timex = function () - return math.floor(skynet.time()) + 2332771 + return math.floor(skynet.time()) end \ No newline at end of file -- libgit2 0.21.2