From 3df73a9e5175feaa65d287138c96f804f6e45950 Mon Sep 17 00:00:00 2001 From: zhouhaihai Date: Wed, 11 Mar 2020 19:32:28 +0800 Subject: [PATCH] 复兴奖励 --- src/actions/RoleAction.lua | 31 ++++++++++++++++++++++++++++++- src/adv/Adv.lua | 4 +++- src/adv/AdvPlayer.lua | 2 +- src/models/Role.lua | 1 + src/rdsscripts/insertEmail.lua | 8 ++++---- src/shared/redisproxy.lua | 6 +++--- 6 files changed, 42 insertions(+), 10 deletions(-) diff --git a/src/actions/RoleAction.lua b/src/actions/RoleAction.lua index ef976b7..90af90b 100644 --- a/src/actions/RoleAction.lua +++ b/src/actions/RoleAction.lua @@ -697,15 +697,44 @@ function _M.achiveRpc(agent, data) end local reward = role:award(achiveTask.reward) - role:changeUpdates({ { type = "achiveV", field = taskId, value = skynet.timex() } }) + + -- 复兴奖励 + if csvdb["achievement_groupCsv"][achiveTask.group].bookmark == 3 then + local overCount = 0 + for tId, status in pairs(achiveV) do + local tData = csvdb["achievementCsv"][tId] + if tData then + local groupData = csvdb["achievement_groupCsv"][tData.group] + if groupData.bookmark == 3 then + overCount = overCount + 1 + end + end + end + + for level, pData in pairs(csvdb["achievement_rewardCsv"]) do + if pData.request == overCount then + -- 发放奖励 + redisproxy:insertEmail({ + roleId = role:getProperty("id"), + emailId = 101, + attachments = pData.reward, + contentPms = {pData.level}, + }) + elseif pData.request > newP then + break + end + end + end SendPacket(actionCodes.Role_achiveRpc, MsgPack.pack({reward = reward})) return true end + + function _M.chatRpc(agent, data) local role = agent.role local roleId = role:getProperty("id") diff --git a/src/adv/Adv.lua b/src/adv/Adv.lua index 183e5be..e3c08d5 100644 --- a/src/adv/Adv.lua +++ b/src/adv/Adv.lua @@ -646,7 +646,9 @@ function Adv:over(success, rewardRatio, overType) local addScore = 0 for itemId, count in pairs(reward) do local itemCsv = csvdb["itemCsv"][itemId] - if itemCsv.type == ItemType.AdvItem then + if not itemCsv then + print("ERROR: no itemId in ItemCsv : ", itemId) + elseif itemCsv.type == ItemType.AdvItem then addScore = addScore + count * itemCsv.advScore else reward[itemId] = math.ceil(count * rewardRatio / 100) diff --git a/src/adv/AdvPlayer.lua b/src/adv/AdvPlayer.lua index 3a237b8..0a6c641 100644 --- a/src/adv/AdvPlayer.lua +++ b/src/adv/AdvPlayer.lua @@ -619,7 +619,7 @@ function Player:changeSp(value, cType) end -- 重新计算 魔法上限 -function BaseObject:reSetSpMax() +function Player:reSetSpMax() self.spMax = self._spMax local change = self:getCommonBuffEffect(Buff.SP_MAX_CHANGE) self.spMax = math.ceil((self.spMax + change[0]) * (1 + change[1])) diff --git a/src/models/Role.lua b/src/models/Role.lua index 15d2e8b..dfb2460 100644 --- a/src/models/Role.lua +++ b/src/models/Role.lua @@ -263,6 +263,7 @@ function Role:data() advElChapter = self.advElChapter, advOverTime = self.advOverTime, advAFGet = self:getProperty("advAFGet"), + advAFOpen = self:getProperty("advAFOpen"), advAFWear = self:getProperty("advAFWear"), advDrawB = self:getProperty("advDrawB"), advShop = self:getProperty("advShop"), diff --git a/src/rdsscripts/insertEmail.lua b/src/rdsscripts/insertEmail.lua index fd530b0..7246b24 100644 --- a/src/rdsscripts/insertEmail.lua +++ b/src/rdsscripts/insertEmail.lua @@ -2,8 +2,8 @@ local EMAIL_LIMIT = KEYS[1] local roleId = KEYS[2] local emailId = KEYS[3] or 0 local createTime = KEYS[4] -local con = KEYS[5] or cmsgpack.pack({}) -local att = KEYS[6] or cmsgpack.pack({}) +local contentPms = KEYS[5] or cmsgpack.pack({}) +local rewardPms = KEYS[6] or cmsgpack.pack({}) local title = KEYS[7] or "" local stitle = KEYS[8] or "" local content = KEYS[9] or "" @@ -27,8 +27,8 @@ redis.call("HMSET", string.format("email:%d:%d", roleId, id), "emailId", emailId, "status", "0", "createtime", createTime, - "contentPms", con, - "rewardPms", att, + "contentPms", contentPms, + "rewardPms", rewardPms, "title", title, "stitle", stitle, "content", content, diff --git a/src/shared/redisproxy.lua b/src/shared/redisproxy.lua index a330bf1..97ad4d8 100644 --- a/src/shared/redisproxy.lua +++ b/src/shared/redisproxy.lua @@ -51,8 +51,8 @@ function redisproxy:insertEmail(params) roleId = params.roleId, emailId = params.emailId, createtime = params.createtime or skynet.timex(), - con = params.con or {}, - att = params.att or {}, + contentPms = params.contentPms or {}, + rewardPms = params.rewardPms or {}, title = params.title or "", stitle = params.stitle or "", content = params.content or "", @@ -60,7 +60,7 @@ function redisproxy:insertEmail(params) } self:runScripts("insertEmail", 10, EMAIL_LIMIT, pms.roleId, pms.emailId, pms.createtime, - MsgPack.pack(pms.con), MsgPack.pack(pms.att), pms.title, pms.stitle, pms.content, pms.attachments) + MsgPack.pack(pms.contentPms), MsgPack.pack(pms.rewardPms), pms.title, pms.stitle, pms.content, pms.attachments) return true end -- libgit2 0.21.2