diff --git a/src/actions/PvpAction.lua b/src/actions/PvpAction.lua index b365ae8..90bfec6 100644 --- a/src/actions/PvpAction.lua +++ b/src/actions/PvpAction.lua @@ -824,18 +824,8 @@ function _M.highDivisionGiftRpc(agent, data) local pvpHGTime = role:getProperty("pvpHGTime") if pvpHGTime == 0 then return end - local score = role:unpackPvpScore(redisproxy:zscore(role:getPvpDBKey(RANK_PVP_HIGHT), roleId)) - local divisionId = nil - for _id, division in ipairs(csvdb["pvp_group_divisionCsv"]) do - if score >= division.division then - divisionId = _id - else - break - end - end - - local newTime, newReward = role:calculatePvpHGift(divisionId) + local newTime, newReward = role:calculatePvpHGift(role:getPvpHDivision()) if not next(newReward) then return end role:updateProperties({ diff --git a/src/models/RolePlugin.lua b/src/models/RolePlugin.lua index fce6e43..dbe77e6 100644 --- a/src/models/RolePlugin.lua +++ b/src/models/RolePlugin.lua @@ -1291,6 +1291,7 @@ function RolePlugin.bind(Role) end local breathes = { ["email"] = breath(120), -- email + ["pvphg"] = breath(300), -- 高级竞技场 奖励满的红点 } function Role:checkNewEvent(now) if now - self:getProperty("ltime") < 5 then @@ -1337,6 +1338,21 @@ function RolePlugin.bind(Role) end end end + + checks["pvphg"] = function() + if not self:isTimeResetOpen(TimeReset.PvpHight) then return end + + local pvpHGTime = self:getProperty("pvpHGTime") + if pvpHGTime == 0 then return end + local division = self:getPvpHDivision() + local divisionData = csvdb["pvp_group_divisionCsv"][division] + + local newTime, newReward = self:calculatePvpHGift(division) + if table.pack(next(newReward))[2] >= divisionData.limit then + return true + end + + end local events = {} for name, breath in pairs(breathes) do diff --git a/src/models/RolePvp.lua b/src/models/RolePvp.lua index 544d5e7..56f1db7 100644 --- a/src/models/RolePvp.lua +++ b/src/models/RolePvp.lua @@ -82,6 +82,19 @@ function Role:changePvpScoreCommon(matchId, isWin) return table.unpack(result) end +function Role:getPvpHDivision(score) + local score = score or self:unpackPvpScore(redisproxy:zscore(self:getPvpDBKey(RANK_PVP_HIGHT), self:getProperty("id"))) + local divisionId = nil + for _id, division in ipairs(csvdb["pvp_group_divisionCsv"]) do + if score >= division.division then + divisionId = _id + else + break + end + end + return divisionId +end + function Role:calculatePvpHGift(division) local now = skynet.timex() local oldTime = self:getProperty("pvpHGTime") -- libgit2 0.21.2