diff --git a/src/models/RolePlugin.lua b/src/models/RolePlugin.lua index 7d18321..a25e3b1 100644 --- a/src/models/RolePlugin.lua +++ b/src/models/RolePlugin.lua @@ -1340,8 +1340,7 @@ function RolePlugin.bind(Role) local donate = seaport.donate or {} if not reset and (not donate[1] or not donate[2]) then local result = self:getSeaportServerProgress() - local seaportCsv = csvdb["seaport_purchaseCsv"] - for idx, set in ipairs(seaportCsv) do + for idx, set in ipairs(csvdb["seaport_purchaseCsv"]) do local done = true for id, data in ipairs(set) do if donate[id] or not result[idx] or not result[idx][id] or result[idx][id] < data.need_num then @@ -1351,7 +1350,12 @@ function RolePlugin.bind(Role) end if done then update = true - self:award(set[1].phase_award, {log = {desc = "seaportReward", int1 = set[1].phase, int2 = set[1].id}}) + redisproxy:insertEmail({ + roleId = self:getProperty("id"), + emailId = idx == 1 and 361 or 362, + attachments = set[1].phase_award, + }) + -- self:award(set[1].phase_award, {log = {desc = "seaportReward", int1 = set[1].phase, int2 = set[1].id}}) donate[idx] = 1 end end @@ -1388,6 +1392,8 @@ function RolePlugin.bind(Role) local expCarbonId = self:getProperty("hangInfo").expCarbonId local taskCsv = csvdb["seaport_taskCsv"] local endTime = openTime0 + 86400 * 2 + local reward = {} + for slot, set in pairs(taskCsv) do if collect[slot] then update = true @@ -1424,9 +1430,28 @@ function RolePlugin.bind(Role) itemReward[key] = math.ceil(1.5 * value) end end - self:award(itemReward, {log = {desc = "seaportTask", int1 = slot, int2 = level}}) + + for itemId, value in pairs(itemReward) do + reward[itemId] = (reward[itemId] or 0) + value + end + -- self:award(itemReward, {log = {desc = "seaportTask", int1 = slot, int2 = level}}) + end + end + end + + if next(reward) then + local rewardStr = "" + for itemId, value in pairs(reward) do + if rewardStr ~= "" then + rewardStr = rewardStr .. " " end + rewardStr = rewardStr .. string.format("%s=%s",itemId,value) end + redisproxy:insertEmail({ + roleId = self:getProperty("id"), + emailId = 363, + attachments = rewardStr, + }) end end seaport.collect = {} diff --git a/src/services/globald.lua b/src/services/globald.lua index a619f7b..d0162ee 100644 --- a/src/services/globald.lua +++ b/src/services/globald.lua @@ -184,6 +184,67 @@ local function check_trade_seaport_status() skynet.timeout(interval, check_trade_seaport_status) end +-- @desc: 海港贸易捐赠作弊 +local seaportTimes = {} +local function check_trade_seaport_donate() + local time1 = tonumber(redisproxy:hget("autoincrement_set", "seaportTime1")) or 0 + local time2 = tonumber(redisproxy:hget("autoincrement_set", "seaportTime2")) or 0 + if time1 == 0 and time2 == 0 then + seaportTimes = {} + skynet.timeout(360000, check_trade_seaport_donate) + return + end + + local csvdb = require "shared.csvdata" + local donateCsv = csvdb["seaport_purchaseCsv"] + + local times = {time1, time2} + for phase, open in ipairs(times) do + if open == 1 and not seaportTimes[phase] then + seaportTimes[phase] = {} + for _, _ in ipairs(donateCsv[phase]) do + table.insert(seaportTimes[phase],math.randomInt(1800, 3600)) + end + end + end + + local interval = 3600 + local phase, id = 0, 0 + + for key1, data in ipairs(seaportTimes) do + for key2, temp in pairs(data) do + if times[key1] == 1 and temp < interval then + interval = temp + phase = key1 + id = key2 + end + end + end + + for _, data in ipairs(seaportTimes) do + for id, temp in pairs(data) do + data[id] = temp - interval + if data[id] == 0 then + data[id] = math.randomInt(1800, 3600) + end + end + end + + if phase ~= 0 and id ~= 0 then + local redisKeys = {SEAPORT_TRADE_TASK_1,SEAPORT_TRADE_TASK_2} + local all = donateCsv[phase][id].need_num + local old = tonumber(redisproxy:hget(redisKeys[phase],id)) or 0 + local add = math.min(math.randomInt(math.floor(all/20),math.floor(all/12)),all - old) + if add > 0 then + redisproxy:hincrby(redisKeys[phase],id,add) + else + seaportTimes[phase][id] = nil + end + end + + skynet.timeout(interval * 100, check_trade_seaport_donate) +end + local CMD = {} @@ -208,6 +269,7 @@ function CMD.start() check_mail_queue() --check_battle_act_close() check_trade_seaport_status() + check_trade_seaport_donate() end local function __init__() -- libgit2 0.21.2