From ac8855277fe33767f9d79a02b1e2086348ab329e Mon Sep 17 00:00:00 2001 From: liuzujun <307836273@qq.com> Date: Thu, 31 Dec 2020 15:53:21 +0800 Subject: [PATCH] 联动签到活动 --- src/ProtocolCode.lua | 1 + src/actions/ActivityAction.lua | 30 ++++++++++++++++++++++++++++++ src/actions/RoleAction.lua | 5 +++++ src/csvdata | 2 +- src/models/Activity.lua | 43 +++++++++++++++++++++++++++++++++++++++++++ src/models/RoleLog.lua | 1 + src/models/RoleTask.lua | 2 ++ 7 files changed, 83 insertions(+), 1 deletion(-) diff --git a/src/ProtocolCode.lua b/src/ProtocolCode.lua index 5fbfc43..8021b83 100644 --- a/src/ProtocolCode.lua +++ b/src/ProtocolCode.lua @@ -229,6 +229,7 @@ actionCodes = { Activity_battleMilestoneRpc = 663, Activity_bossRewardRpc = 664, Activity_crisisMilestoneRpc = 665, + Activity_commonSignRpc = 666, Radio_startQuestRpc = 700, Radio_finishQuestRpc = 701, diff --git a/src/actions/ActivityAction.lua b/src/actions/ActivityAction.lua index a3aab77..89566e1 100644 --- a/src/actions/ActivityAction.lua +++ b/src/actions/ActivityAction.lua @@ -858,4 +858,34 @@ function _M.bossRewardRpc(agent, data) return true end +function _M.commonSignRpc(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, "CommonSignIn") then return 1 end + + local actData = role.activity:getActData("CommonSignIn") + if (actData[0] or 0) < index then + return 2 + end + if (actData[index] or 0) == 1 then + return 3 + end + + 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("CommonSignIn", actData) + + local award = actCfg.reward:toNumMap() + local reward, change = role:award(award, {log = {desc = "commonSign", int1 = actid, int2 = index}}) + SendPacket(actionCodes.Activity_commonSignRpc, MsgPack.pack(role:packReward(reward, change))) + return true +end + return _M \ No newline at end of file diff --git a/src/actions/RoleAction.lua b/src/actions/RoleAction.lua index fba220d..612af1c 100644 --- a/src/actions/RoleAction.lua +++ b/src/actions/RoleAction.lua @@ -840,6 +840,11 @@ function _M.taskRpc(agent, data) local reward, change = role:award(taskData.reward, {log = {desc = "finishTask", int1 = taskType, int2 = taskId}}) local active = (taskStatus["a"] or 0) + taskData.active + -- 日常活动完成 + if taskType == 1 then + role:checkTaskEnter("DailyTask", {pre = (taskStatus["a"] or 0), cur = active}) + end + role:changeUpdates({ { type = roleField[taskType], field = {"t", taskId}, value = -1 }, { type = roleField[taskType], field = "a", value = active}, diff --git a/src/csvdata b/src/csvdata index f6a6263..fcf0c6c 160000 --- a/src/csvdata +++ b/src/csvdata @@ -1 +1 @@ -Subproject commit f6a626350c1f4039f0f677a1baf262f3493757d2 +Subproject commit fcf0c6c46ae54862a6b68b77f87ce0cf8a729da5 diff --git a/src/models/Activity.lua b/src/models/Activity.lua index 8c32d73..2717f48 100644 --- a/src/models/Activity.lua +++ b/src/models/Activity.lua @@ -30,6 +30,8 @@ Activity.ActivityType = { ActShopGoods = 25, -- 活动商品 Crisis = 26, -- 宝藏怪活动 + + CommonSignIn = 28, --通用签到 } local function checkActivityType(activityType) @@ -73,6 +75,8 @@ Activity.schema = { act24 = {"table", {}, true}, -- 活动卡池 {id=repaynum} act26 = {"table", {}}, -- {task = {id = count}, socre = {id = status}} + + act28 = {"table", {}}, -- 每日活跃签到 {0=day, 1=1,2=1,3=1} } function Activity:data() @@ -91,7 +95,10 @@ function Activity:data() act18 = self:getProperty("act18"), act19 = self:getProperty("act19"), act20 = self:getProperty("act20"), + act24 = self:getProperty("act24"), act26 = self:getProperty("act26"), + + act28 = self:getProperty("act28"), } end @@ -780,4 +787,40 @@ activityFunc[Activity.ActivityType.Crisis] = { end, } +activityFunc[Activity.ActivityType.CommonSignIn] = { + ["init"] = function(self, actType, isCrossDay, notify, actId) + if not isCrossDay then + activityFunc[Activity.ActivityType.CommonSignIn]["crossDay"](self, actType, notify, actId) + end + end, + ["crossDay"] = function(self, actType, notify, actId) + local actCfg = csvdb["activity_ctrlCsv"][actId] + if not actCfg then return end + local conArr = actCfg.condition2:toArray("true", "=") + -- 0 登录即可, 1 达到指定活跃度 + if conArr[1] ~= 0 then + return + end + local curData = self:getActData(actType) or {} + curData[0] = (curData[0] or 0) + 1 + self:updateActData(actType, curData, not notify) + end, + ["check"] = function(self, actType, notify, pre, cur) -- 检查 + local isOpen, actId = self:isOpen(actType) + local actData = self:getActData(actType) or {} + local actCfg = csvdb["activity_ctrlCsv"][actId] + if not actCfg then return end + local conArr = actCfg.condition2:toArray("true", "=") + -- 0 登录即可, 1 达到指定活跃度 + if conArr[1] ~= 1 then + return + end + local val = conArr[2] or 0 + if pre < val and cur >= val then + actData[0] = (actData[0] or 0) + 1 + self:updateActData(actType, actData, not notify) + end + end, +} + return Activity diff --git a/src/models/RoleLog.lua b/src/models/RoleLog.lua index 156c851..85b4042 100644 --- a/src/models/RoleLog.lua +++ b/src/models/RoleLog.lua @@ -51,6 +51,7 @@ local ItemReason = { actBattle = 135, -- 活动关卡 actMilestone = 136, -- 活动关卡boss伤害里程碑 worldBossReward = 137, -- 世界boss翻牌奖励 + commonSign = 138, -- 每日活跃签到 advHang = 301, -- 拾荒挂机 diff --git a/src/models/RoleTask.lua b/src/models/RoleTask.lua index ccba3ce..31c06d3 100644 --- a/src/models/RoleTask.lua +++ b/src/models/RoleTask.lua @@ -91,6 +91,7 @@ local TaskType = { SignIn = 901, -- 签到 Pay = 902, -- 充值 ShopAll = 903, -- 在任意商店购买 + DailyTask = 904, -- 完成每日活跃任务 --功能未实现 todo AdvShop = 1002, -- 冒险商城 @@ -231,6 +232,7 @@ local ActivityListener = { [TaskType.Pay] = {{Activity.ActivityType.PayBack, f("twd")}}, [TaskType.AdvMineKill] = {{Activity.ActivityType.Crisis, 1}}, [TaskType.AdvMineLayer] = {{Activity.ActivityType.Crisis, 2}}, + [TaskType.DailyTask] = {{Activity.ActivityType.CommonSignIn, f("pre"), f("cur")}}, } } -- libgit2 0.21.2