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 | 1340 | local donate = seaport.donate or {} |
| 1341 | 1341 | if not reset and (not donate[1] or not donate[2]) then |
| 1342 | 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 | 1344 | local done = true |
| 1346 | 1345 | for id, data in ipairs(set) do |
| 1347 | 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 | 1350 | end |
| 1352 | 1351 | if done then |
| 1353 | 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 | 1359 | donate[idx] = 1 |
| 1356 | 1360 | end |
| 1357 | 1361 | end |
| ... | ... | @@ -1388,6 +1392,8 @@ function RolePlugin.bind(Role) |
| 1388 | 1392 | local expCarbonId = self:getProperty("hangInfo").expCarbonId |
| 1389 | 1393 | local taskCsv = csvdb["seaport_taskCsv"] |
| 1390 | 1394 | local endTime = openTime0 + 86400 * 2 |
| 1395 | + local reward = {} | |
| 1396 | + | |
| 1391 | 1397 | for slot, set in pairs(taskCsv) do |
| 1392 | 1398 | if collect[slot] then |
| 1393 | 1399 | update = true |
| ... | ... | @@ -1424,9 +1430,28 @@ function RolePlugin.bind(Role) |
| 1424 | 1430 | itemReward[key] = math.ceil(1.5 * value) |
| 1425 | 1431 | end |
| 1426 | 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 | 1447 | end |
| 1448 | + rewardStr = rewardStr .. string.format("%s=%s",itemId,value) | |
| 1429 | 1449 | end |
| 1450 | + redisproxy:insertEmail({ | |
| 1451 | + roleId = self:getProperty("id"), | |
| 1452 | + emailId = 363, | |
| 1453 | + attachments = rewardStr, | |
| 1454 | + }) | |
| 1430 | 1455 | end |
| 1431 | 1456 | end |
| 1432 | 1457 | seaport.collect = {} | ... | ... |
src/services/globald.lua
| ... | ... | @@ -184,6 +184,67 @@ local function check_trade_seaport_status() |
| 184 | 184 | skynet.timeout(interval, check_trade_seaport_status) |
| 185 | 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 | 248 | local CMD = {} |
| 188 | 249 | |
| 189 | 250 | |
| ... | ... | @@ -208,6 +269,7 @@ function CMD.start() |
| 208 | 269 | check_mail_queue() |
| 209 | 270 | --check_battle_act_close() |
| 210 | 271 | check_trade_seaport_status() |
| 272 | + check_trade_seaport_donate() | |
| 211 | 273 | end |
| 212 | 274 | |
| 213 | 275 | local function __init__() | ... | ... |