Commit d9d63fa07bae425365404d2a44c77dcde782fc86
1 parent
dfc732c5
海港贸易季自动填充,活动结束后的奖励通过邮件发送
Showing
2 changed files
with
91 additions
and
4 deletions
Show diff stats
src/models/RolePlugin.lua
@@ -1340,8 +1340,7 @@ function RolePlugin.bind(Role) | @@ -1340,8 +1340,7 @@ function RolePlugin.bind(Role) | ||
1340 | local donate = seaport.donate or {} | 1340 | local donate = seaport.donate or {} |
1341 | if not reset and (not donate[1] or not donate[2]) then | 1341 | if not reset and (not donate[1] or not donate[2]) then |
1342 | local result = self:getSeaportServerProgress() | 1342 | local result = self:getSeaportServerProgress() |
1343 | - local seaportCsv = csvdb["seaport_purchaseCsv"] | ||
1344 | - for idx, set in ipairs(seaportCsv) do | 1343 | + for idx, set in ipairs(csvdb["seaport_purchaseCsv"]) do |
1345 | local done = true | 1344 | local done = true |
1346 | for id, data in ipairs(set) do | 1345 | for id, data in ipairs(set) do |
1347 | if donate[id] or not result[idx] or not result[idx][id] or result[idx][id] < data.need_num then | 1346 | 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) | @@ -1351,7 +1350,12 @@ function RolePlugin.bind(Role) | ||
1351 | end | 1350 | end |
1352 | if done then | 1351 | if done then |
1353 | update = true | 1352 | update = true |
1354 | - self:award(set[1].phase_award, {log = {desc = "seaportReward", int1 = set[1].phase, int2 = set[1].id}}) | 1353 | + redisproxy:insertEmail({ |
1354 | + roleId = self:getProperty("id"), | ||
1355 | + emailId = idx == 1 and 361 or 362, | ||
1356 | + attachments = set[1].phase_award, | ||
1357 | + }) | ||
1358 | + -- self:award(set[1].phase_award, {log = {desc = "seaportReward", int1 = set[1].phase, int2 = set[1].id}}) | ||
1355 | donate[idx] = 1 | 1359 | donate[idx] = 1 |
1356 | end | 1360 | end |
1357 | end | 1361 | end |
@@ -1388,6 +1392,8 @@ function RolePlugin.bind(Role) | @@ -1388,6 +1392,8 @@ function RolePlugin.bind(Role) | ||
1388 | local expCarbonId = self:getProperty("hangInfo").expCarbonId | 1392 | local expCarbonId = self:getProperty("hangInfo").expCarbonId |
1389 | local taskCsv = csvdb["seaport_taskCsv"] | 1393 | local taskCsv = csvdb["seaport_taskCsv"] |
1390 | local endTime = openTime0 + 86400 * 2 | 1394 | local endTime = openTime0 + 86400 * 2 |
1395 | + local reward = {} | ||
1396 | + | ||
1391 | for slot, set in pairs(taskCsv) do | 1397 | for slot, set in pairs(taskCsv) do |
1392 | if collect[slot] then | 1398 | if collect[slot] then |
1393 | update = true | 1399 | update = true |
@@ -1424,9 +1430,28 @@ function RolePlugin.bind(Role) | @@ -1424,9 +1430,28 @@ function RolePlugin.bind(Role) | ||
1424 | itemReward[key] = math.ceil(1.5 * value) | 1430 | itemReward[key] = math.ceil(1.5 * value) |
1425 | end | 1431 | end |
1426 | end | 1432 | end |
1427 | - self:award(itemReward, {log = {desc = "seaportTask", int1 = slot, int2 = level}}) | 1433 | + |
1434 | + for itemId, value in pairs(itemReward) do | ||
1435 | + reward[itemId] = (reward[itemId] or 0) + value | ||
1436 | + end | ||
1437 | + -- self:award(itemReward, {log = {desc = "seaportTask", int1 = slot, int2 = level}}) | ||
1438 | + end | ||
1439 | + end | ||
1440 | + end | ||
1441 | + | ||
1442 | + if next(reward) then | ||
1443 | + local rewardStr = "" | ||
1444 | + for itemId, value in pairs(reward) do | ||
1445 | + if rewardStr ~= "" then | ||
1446 | + rewardStr = rewardStr .. " " | ||
1428 | end | 1447 | end |
1448 | + rewardStr = rewardStr .. string.format("%s=%s",itemId,value) | ||
1429 | end | 1449 | end |
1450 | + redisproxy:insertEmail({ | ||
1451 | + roleId = self:getProperty("id"), | ||
1452 | + emailId = 363, | ||
1453 | + attachments = rewardStr, | ||
1454 | + }) | ||
1430 | end | 1455 | end |
1431 | end | 1456 | end |
1432 | seaport.collect = {} | 1457 | seaport.collect = {} |
src/services/globald.lua
@@ -184,6 +184,67 @@ local function check_trade_seaport_status() | @@ -184,6 +184,67 @@ local function check_trade_seaport_status() | ||
184 | skynet.timeout(interval, check_trade_seaport_status) | 184 | skynet.timeout(interval, check_trade_seaport_status) |
185 | end | 185 | end |
186 | 186 | ||
187 | +-- @desc: 海港贸易捐赠作弊 | ||
188 | +local seaportTimes = {} | ||
189 | +local function check_trade_seaport_donate() | ||
190 | + local time1 = tonumber(redisproxy:hget("autoincrement_set", "seaportTime1")) or 0 | ||
191 | + local time2 = tonumber(redisproxy:hget("autoincrement_set", "seaportTime2")) or 0 | ||
192 | + if time1 == 0 and time2 == 0 then | ||
193 | + seaportTimes = {} | ||
194 | + skynet.timeout(360000, check_trade_seaport_donate) | ||
195 | + return | ||
196 | + end | ||
197 | + | ||
198 | + local csvdb = require "shared.csvdata" | ||
199 | + local donateCsv = csvdb["seaport_purchaseCsv"] | ||
200 | + | ||
201 | + local times = {time1, time2} | ||
202 | + for phase, open in ipairs(times) do | ||
203 | + if open == 1 and not seaportTimes[phase] then | ||
204 | + seaportTimes[phase] = {} | ||
205 | + for _, _ in ipairs(donateCsv[phase]) do | ||
206 | + table.insert(seaportTimes[phase],math.randomInt(1800, 3600)) | ||
207 | + end | ||
208 | + end | ||
209 | + end | ||
210 | + | ||
211 | + local interval = 3600 | ||
212 | + local phase, id = 0, 0 | ||
213 | + | ||
214 | + for key1, data in ipairs(seaportTimes) do | ||
215 | + for key2, temp in pairs(data) do | ||
216 | + if times[key1] == 1 and temp < interval then | ||
217 | + interval = temp | ||
218 | + phase = key1 | ||
219 | + id = key2 | ||
220 | + end | ||
221 | + end | ||
222 | + end | ||
223 | + | ||
224 | + for _, data in ipairs(seaportTimes) do | ||
225 | + for id, temp in pairs(data) do | ||
226 | + data[id] = temp - interval | ||
227 | + if data[id] == 0 then | ||
228 | + data[id] = math.randomInt(1800, 3600) | ||
229 | + end | ||
230 | + end | ||
231 | + end | ||
232 | + | ||
233 | + if phase ~= 0 and id ~= 0 then | ||
234 | + local redisKeys = {SEAPORT_TRADE_TASK_1,SEAPORT_TRADE_TASK_2} | ||
235 | + local all = donateCsv[phase][id].need_num | ||
236 | + local old = tonumber(redisproxy:hget(redisKeys[phase],id)) or 0 | ||
237 | + local add = math.min(math.randomInt(math.floor(all/20),math.floor(all/12)),all - old) | ||
238 | + if add > 0 then | ||
239 | + redisproxy:hincrby(redisKeys[phase],id,add) | ||
240 | + else | ||
241 | + seaportTimes[phase][id] = nil | ||
242 | + end | ||
243 | + end | ||
244 | + | ||
245 | + skynet.timeout(interval * 100, check_trade_seaport_donate) | ||
246 | +end | ||
247 | + | ||
187 | local CMD = {} | 248 | local CMD = {} |
188 | 249 | ||
189 | 250 | ||
@@ -208,6 +269,7 @@ function CMD.start() | @@ -208,6 +269,7 @@ function CMD.start() | ||
208 | check_mail_queue() | 269 | check_mail_queue() |
209 | --check_battle_act_close() | 270 | --check_battle_act_close() |
210 | check_trade_seaport_status() | 271 | check_trade_seaport_status() |
272 | + check_trade_seaport_donate() | ||
211 | end | 273 | end |
212 | 274 | ||
213 | local function __init__() | 275 | local function __init__() |