Commit a5dc3b0e774b9c629baffad843c514acf77ff985

Authored by chenyueqi
1 parent c7381e80

回归活动初版

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
... ... @@ -143,6 +143,8 @@ local ItemReason = {
143 143 seaportShop = 1401, -- 贸易港商店兑换
144 144 seaportReward = 1402, -- 贸易港阶段奖励
145 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 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[&quot;CrossDay&quot;] = 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")
... ...