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 | 1370 | return true |
1371 | 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 | 1416 | return _M | ... | ... |
src/models/Role.lua
... | ... | @@ -191,6 +191,8 @@ Role.schema = { |
191 | 191 | radioTask = {"table", {}}, -- 电台任务 {id = {time=end_ts,heros=heros}} 表crusadeCsv |
192 | 192 | |
193 | 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 | 425 | radioTask = self:getProperty("radioTask"), |
424 | 426 | |
425 | 427 | seaport = self:getProperty("seaport"), |
428 | + returner = self:getProperty("returner"), | |
426 | 429 | } |
427 | 430 | end |
428 | 431 | ... | ... |
src/models/RoleLog.lua
src/models/RolePlugin.lua
... | ... | @@ -1454,6 +1454,17 @@ function RolePlugin.bind(Role) |
1454 | 1454 | end |
1455 | 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 | 1468 | function Role:getSeaportServerProgress() |
1458 | 1469 | local result = {} |
1459 | 1470 | ... | ... |
src/models/RoleTask.lua
... | ... | @@ -319,6 +319,11 @@ local BattleCommandTaskListener = { |
319 | 319 | listen = CalendaTaskListener["listen"] |
320 | 320 | } |
321 | 321 | |
322 | +local ReturnerTask = { | |
323 | + func = "checkReturnerTask", | |
324 | + listen = CalendaTaskListener["listen"] | |
325 | +} | |
326 | + | |
322 | 327 | local TaskListeners = { |
323 | 328 | StoryListener, |
324 | 329 | CommonListener, |
... | ... | @@ -328,6 +333,7 @@ local TaskListeners = { |
328 | 333 | StoreListener, |
329 | 334 | CalendaTaskListener, |
330 | 335 | BattleCommandTaskListener, |
336 | + ReturnerTask, | |
331 | 337 | } |
332 | 338 | |
333 | 339 | local RoleTask = {} |
... | ... | @@ -825,6 +831,15 @@ function RoleTask.bind(Role) |
825 | 831 | self:checkActTask(notNotify, keyName, actData, mainType, subType, param1, param2) |
826 | 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 | 843 | end |
829 | 844 | |
830 | 845 | return RoleTask | ... | ... |
src/models/RoleTimeReset.lua
... | ... | @@ -28,6 +28,12 @@ ResetFunc["CrossDay"] = function(self, notify, response, now) |
28 | 28 | self.storeData:resetStoreReored(3) --商店跨月重置 time_reset表关联id |
29 | 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 | 37 | response.dTask = {} |
32 | 38 | response.advSup = self:getProperty("advSup") |
33 | 39 | self:log("onLogin") | ... | ... |