Commit a5dc3b0e774b9c629baffad843c514acf77ff985
1 parent
c7381e80
回归活动初版
Showing
6 changed files
with
80 additions
and
0 deletions
Show diff stats
src/actions/ActivityAction.lua
| @@ -1370,4 +1370,47 @@ function _M.advLevelRpc(agent, data) | @@ -1370,4 +1370,47 @@ function _M.advLevelRpc(agent, data) | ||
| 1370 | return true | 1370 | return true |
| 1371 | end | 1371 | end |
| 1372 | 1372 | ||
| 1373 | +function _M.returnerTaskRpc(agent, data) | ||
| 1374 | + local role = agent.role | ||
| 1375 | + local msg = MsgPack.unpack(data) | ||
| 1376 | + | ||
| 1377 | + local taskId = msg.id or 0 | ||
| 1378 | + if taskId == 0 then return 0 end | ||
| 1379 | + | ||
| 1380 | + local returner = role:getProperty("returner") or {} | ||
| 1381 | + if not returner[taskId] then return 1 end | ||
| 1382 | + | ||
| 1383 | + local tday = specTime({hour = 4}) | ||
| 1384 | + local curAllDay = (tday - returner.time) / 86400 + 1 | ||
| 1385 | + | ||
| 1386 | + local TaskCsv = csvdb["activity_taskCsv"][76] or {} | ||
| 1387 | + local taskData = TaskCsv[taskId] | ||
| 1388 | + if not taskData then return 2 end | ||
| 1389 | + if curAllDay < taskData.day then return 2 end | ||
| 1390 | + | ||
| 1391 | + local status = returner.status or {} | ||
| 1392 | + if status[taskId] then return 3 end | ||
| 1393 | + | ||
| 1394 | + local done = true | ||
| 1395 | + for _, data in pairs(TaskCsv) do | ||
| 1396 | + if not status[data.id] then | ||
| 1397 | + done = false | ||
| 1398 | + break | ||
| 1399 | + end | ||
| 1400 | + end | ||
| 1401 | + | ||
| 1402 | + status[taskId] = 1 | ||
| 1403 | + returner.status = status | ||
| 1404 | + | ||
| 1405 | + local reward, change = role:award(dayData.reward, {log = {desc = "returner", int1 = taskData.day, int2 = taskId}}) | ||
| 1406 | + | ||
| 1407 | + if done then | ||
| 1408 | + returner = {} | ||
| 1409 | + end | ||
| 1410 | + | ||
| 1411 | + role:updateProperty({field = "returner", value = returner}) | ||
| 1412 | + SendPacket(actionCodes.Activity_returnerTaskRpc, MsgPack.pack(role:packReward(reward, change))) | ||
| 1413 | + return true | ||
| 1414 | +end | ||
| 1415 | + | ||
| 1373 | return _M | 1416 | return _M |
src/models/Role.lua
| @@ -191,6 +191,8 @@ Role.schema = { | @@ -191,6 +191,8 @@ Role.schema = { | ||
| 191 | radioTask = {"table", {}}, -- 电台任务 {id = {time=end_ts,heros=heros}} 表crusadeCsv | 191 | radioTask = {"table", {}}, -- 电台任务 {id = {time=end_ts,heros=heros}} 表crusadeCsv |
| 192 | 192 | ||
| 193 | seaport = {"table", {}}, -- 海岛贸易季 {time = 1234567890, donate = {}, collect = {[1] = {team = "1=2=3", time = 1234567890}}, shop = {}} | 193 | seaport = {"table", {}}, -- 海岛贸易季 {time = 1234567890, donate = {}, collect = {[1] = {team = "1=2=3", time = 1234567890}}, shop = {}} |
| 194 | + | ||
| 195 | + returner = {"table", {}}, -- 回归者 {time = 12334233423, [1] = 1, [2] = 2, status = {[1] = 1}} | ||
| 194 | } | 196 | } |
| 195 | 197 | ||
| 196 | 198 | ||
| @@ -423,6 +425,7 @@ function Role:data() | @@ -423,6 +425,7 @@ function Role:data() | ||
| 423 | radioTask = self:getProperty("radioTask"), | 425 | radioTask = self:getProperty("radioTask"), |
| 424 | 426 | ||
| 425 | seaport = self:getProperty("seaport"), | 427 | seaport = self:getProperty("seaport"), |
| 428 | + returner = self:getProperty("returner"), | ||
| 426 | } | 429 | } |
| 427 | end | 430 | end |
| 428 | 431 |
src/models/RoleLog.lua
| @@ -143,6 +143,8 @@ local ItemReason = { | @@ -143,6 +143,8 @@ local ItemReason = { | ||
| 143 | seaportShop = 1401, -- 贸易港商店兑换 | 143 | seaportShop = 1401, -- 贸易港商店兑换 |
| 144 | seaportReward = 1402, -- 贸易港阶段奖励 | 144 | seaportReward = 1402, -- 贸易港阶段奖励 |
| 145 | seaportTask = 1403, -- 贸易港任务奖励 | 145 | seaportTask = 1403, -- 贸易港任务奖励 |
| 146 | + | ||
| 147 | + returner = 1410, -- 回归者奖励 | ||
| 146 | } | 148 | } |
| 147 | 149 | ||
| 148 | 150 |
src/models/RolePlugin.lua
| @@ -1454,6 +1454,17 @@ function RolePlugin.bind(Role) | @@ -1454,6 +1454,17 @@ function RolePlugin.bind(Role) | ||
| 1454 | end | 1454 | end |
| 1455 | end | 1455 | end |
| 1456 | 1456 | ||
| 1457 | + -- 检查回归者 | ||
| 1458 | + function Role:checkReturner() | ||
| 1459 | + local returner = self:getProperty("returner") or {} | ||
| 1460 | + if next(returner) then return end | ||
| 1461 | + | ||
| 1462 | + local now = specTime({hour = 4}) | ||
| 1463 | + returner.time = now | ||
| 1464 | + | ||
| 1465 | + self:updateProperty({field = "returner", value = returner}) | ||
| 1466 | + end | ||
| 1467 | + | ||
| 1457 | function Role:getSeaportServerProgress() | 1468 | function Role:getSeaportServerProgress() |
| 1458 | local result = {} | 1469 | local result = {} |
| 1459 | 1470 |
src/models/RoleTask.lua
| @@ -319,6 +319,11 @@ local BattleCommandTaskListener = { | @@ -319,6 +319,11 @@ local BattleCommandTaskListener = { | ||
| 319 | listen = CalendaTaskListener["listen"] | 319 | listen = CalendaTaskListener["listen"] |
| 320 | } | 320 | } |
| 321 | 321 | ||
| 322 | +local ReturnerTask = { | ||
| 323 | + func = "checkReturnerTask", | ||
| 324 | + listen = CalendaTaskListener["listen"] | ||
| 325 | +} | ||
| 326 | + | ||
| 322 | local TaskListeners = { | 327 | local TaskListeners = { |
| 323 | StoryListener, | 328 | StoryListener, |
| 324 | CommonListener, | 329 | CommonListener, |
| @@ -328,6 +333,7 @@ local TaskListeners = { | @@ -328,6 +333,7 @@ local TaskListeners = { | ||
| 328 | StoreListener, | 333 | StoreListener, |
| 329 | CalendaTaskListener, | 334 | CalendaTaskListener, |
| 330 | BattleCommandTaskListener, | 335 | BattleCommandTaskListener, |
| 336 | + ReturnerTask, | ||
| 331 | } | 337 | } |
| 332 | 338 | ||
| 333 | local RoleTask = {} | 339 | local RoleTask = {} |
| @@ -825,6 +831,15 @@ function RoleTask.bind(Role) | @@ -825,6 +831,15 @@ function RoleTask.bind(Role) | ||
| 825 | self:checkActTask(notNotify, keyName, actData, mainType, subType, param1, param2) | 831 | self:checkActTask(notNotify, keyName, actData, mainType, subType, param1, param2) |
| 826 | end | 832 | end |
| 827 | 833 | ||
| 834 | + function Role:checkReturnerTask(notNotify, mainType, subType, param1, param2) | ||
| 835 | + -- print("check returner task", mainType, subType, param1, param2) | ||
| 836 | + local returner = self:getProperty("returner") or {} | ||
| 837 | + if not returner.time then return end | ||
| 838 | + local actData = csvdb["activity_ctrlCsv"][76] | ||
| 839 | + local keyName = "returner" | ||
| 840 | + self:checkActTask(notNotify, keyName, actData, mainType, subType, param1, param2) | ||
| 841 | + end | ||
| 842 | + | ||
| 828 | end | 843 | end |
| 829 | 844 | ||
| 830 | return RoleTask | 845 | return RoleTask |
src/models/RoleTimeReset.lua
| @@ -28,6 +28,12 @@ ResetFunc["CrossDay"] = function(self, notify, response, now) | @@ -28,6 +28,12 @@ ResetFunc["CrossDay"] = function(self, notify, response, now) | ||
| 28 | self.storeData:resetStoreReored(3) --商店跨月重置 time_reset表关联id | 28 | self.storeData:resetStoreReored(3) --商店跨月重置 time_reset表关联id |
| 29 | end | 29 | end |
| 30 | 30 | ||
| 31 | + -- 检查回归者 | ||
| 32 | + -- if (now - ltime) >= 86400 * globalCsv.returner_time then | ||
| 33 | + if true then | ||
| 34 | + self:checkReturner() | ||
| 35 | + end | ||
| 36 | + | ||
| 31 | response.dTask = {} | 37 | response.dTask = {} |
| 32 | response.advSup = self:getProperty("advSup") | 38 | response.advSup = self:getProperty("advSup") |
| 33 | self:log("onLogin") | 39 | self:log("onLogin") |