From 336fa4a6da5e5e8e8740e8e0500f96c865256a88 Mon Sep 17 00:00:00 2001 From: chenyueqi Date: Wed, 13 Jan 2021 11:43:14 +0800 Subject: [PATCH] 新的活动签到,新春三重奏之返还0消耗 --- src/ProtocolCode.lua | 1 + src/actions/ActivityAction.lua | 30 ++++++++++++++++++++++++++++++ src/actions/HeroAction.lua | 2 +- src/models/Activity.lua | 25 +++++++++++++++++++++++++ src/models/RoleLog.lua | 1 + 5 files changed, 58 insertions(+), 1 deletion(-) diff --git a/src/ProtocolCode.lua b/src/ProtocolCode.lua index b4f10ac..23f5dd0 100644 --- a/src/ProtocolCode.lua +++ b/src/ProtocolCode.lua @@ -231,6 +231,7 @@ actionCodes = { Activity_crisisMilestoneRpc = 665, Activity_commonSignRpc = 666, Activity_friendHelpRpc = 667, + Activity_newSignRpc = 668, Radio_startQuestRpc = 700, Radio_finishQuestRpc = 701, diff --git a/src/actions/ActivityAction.lua b/src/actions/ActivityAction.lua index 8787b93..b7c9d62 100644 --- a/src/actions/ActivityAction.lua +++ b/src/actions/ActivityAction.lua @@ -1104,4 +1104,34 @@ function _M.friendHelpRpc(agent, data) return true 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 actData = role.activity:getActData("NewSign") + 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("NewSign", actData) + + 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 + return _M \ No newline at end of file diff --git a/src/actions/HeroAction.lua b/src/actions/HeroAction.lua index 8a2ca77..9fc7314 100644 --- a/src/actions/HeroAction.lua +++ b/src/actions/HeroAction.lua @@ -617,7 +617,7 @@ function _M.getResetRewardRpc(agent, data) if level <= 1 and talent == "" then return end local pay = true - if level <= 60 then + if level <= 60 or role.activity:isOpen("HeroBackFree") then pay = false end diff --git a/src/models/Activity.lua b/src/models/Activity.lua index 84a9350..43cf133 100644 --- a/src/models/Activity.lua +++ b/src/models/Activity.lua @@ -33,6 +33,8 @@ Activity.ActivityType = { CommonSignIn = 28, --通用签到 FriendEnergy = 30, -- 好友互赠能量活动 + NewSign = 36, -- 活动签到,单独的签到界面 + HeroBackFree = 37, -- 无损耗归还 } local function checkActivityType(activityType) @@ -79,6 +81,7 @@ Activity.schema = { act28 = {"table", {}}, -- 每日活跃签到 {0=day, 1=1,2=1,3=1} act30 = {"table", {}}, -- {magic = 0, limit = 0, reward = {id = 1, id = 1}, giveAE = {}, getAE = {}} 奖励字段1表示领取过奖励 + act36 = {"table", {}}, -- 每日活跃签到 {0=day, 1=1,2=1,3=1} } function Activity:data() @@ -102,6 +105,7 @@ function Activity:data() act28 = self:getProperty("act28"), act30 = self:getProperty("act30"), + act36 = self:getProperty("act36"), } end @@ -890,4 +894,25 @@ activityFunc[Activity.ActivityType.CommonSignIn] = { end, } +activityFunc[Activity.ActivityType.NewSign] = { + -- ["check"] = function(self, actType, notify) -- 检查 + -- end, + ["init"] = function(self, actType, isCrossDay, notify) + if not isCrossDay then + activityFunc[Activity.ActivityType.NewSign]["crossDay"](self, actType, notify) + end + end, + -- ["close"] = function(self, actType, notify) + -- end, + ["crossDay"] = function(self, actType, notify) + local curData = self:getActData(actType) + curData[0] = (curData[0] or 0) + 1 + local actData = csvdb["activity_signInCsv"][48] or {} + if curData[0] > #actData then return end -- 满了就忽略了 + + -- 没满更新一下 + self:updateActData(actType, curData, not notify) + end, +} + return Activity diff --git a/src/models/RoleLog.lua b/src/models/RoleLog.lua index a5ece28..13e201e 100644 --- a/src/models/RoleLog.lua +++ b/src/models/RoleLog.lua @@ -53,6 +53,7 @@ local ItemReason = { worldBossReward = 137, -- 世界boss翻牌奖励 commonSign = 138, -- 每日活跃签到 actFriendHelp = 139,-- 好友能量互助活动 + newSign = 140,-- 新的活动签到 advHang = 301, -- 拾荒挂机 -- libgit2 0.21.2