diff --git a/src/actions/ActivityAction.lua b/src/actions/ActivityAction.lua index 0adff72..84c0d1c 100644 --- a/src/actions/ActivityAction.lua +++ b/src/actions/ActivityAction.lua @@ -1107,10 +1107,9 @@ end function _M.newSignRpc(agent, data) local role = agent.role local msg = MsgPack.unpack(data) - local actid = msg.actid - local index = msg.index - if not role.activity:isOpenById(actid, "NewSign") then return 1 end + local open, actId = role.activity:isOpen("NewSign") + if not open then return 1 end local actData = role.activity:getActData("NewSign") if (actData[0] or 0) < index then @@ -1120,16 +1119,26 @@ function _M.newSignRpc(agent, data) return 3 end - local actCfg = csvdb["activity_signInCsv"][actid] + local actCfg = csvdb["activity_signInCsv"][actId] if not actCfg then return 4 end - actCfg = actCfg[index] - if not actCfg then return 5 end - actData[index] = 1 - role.activity:updateActData("NewSign", actData) + local sumDay = actData[0] or 0 + local award = {} + for k, data in pairs(actCfg) do + if not actData[data.id] and data.id <= sumDay then + for id, value in pairs(data.reward:toNumMap()) do + award[id] = (award[id] or 0) + value + end + actData[data.id] = 1 + end + end + + local reward, change + if next(award) then + role.activity:updateActData("NewSign", actData) + reward, change = role:award(award, {log = {desc = "newSign", int1 = actId, int2 = sumDay}}) + end - local award = actCfg.reward:toNumMap() - local reward, change = role:award(award, {log = {desc = "newSign", int1 = actid, int2 = index}}) SendPacket(actionCodes.Activity_newSignRpc, MsgPack.pack(role:packReward(reward, change))) return true end -- libgit2 0.21.2