Commit dfa9ae5e737b325137ef3231056df4149df6b98c
1 parent
b23cd820
战令任务活动
Showing
12 changed files
with
152 additions
and
74 deletions
Show diff stats
src/ProtocolCode.lua
@@ -232,7 +232,7 @@ actionCodes = { | @@ -232,7 +232,7 @@ actionCodes = { | ||
232 | Activity_commonSignRpc = 666, | 232 | Activity_commonSignRpc = 666, |
233 | Activity_friendHelpRpc = 667, | 233 | Activity_friendHelpRpc = 667, |
234 | Activity_battleCommandRpc = 668, | 234 | Activity_battleCommandRpc = 668, |
235 | - Activity_actCalendaTmpTaskRpc = 669, | 235 | + Activity_actBattleCommandTaskRpc = 669, |
236 | Activity_newSignRpc = 670, | 236 | Activity_newSignRpc = 670, |
237 | Activity_advLevelRpc = 671, | 237 | Activity_advLevelRpc = 671, |
238 | Activity_buyBattleCommandLvlRpc = 672, | 238 | Activity_buyBattleCommandLvlRpc = 672, |
src/actions/ActivityAction.lua
@@ -266,15 +266,15 @@ function _M.actCalendaTaskRpc(agent, data) | @@ -266,15 +266,15 @@ function _M.actCalendaTaskRpc(agent, data) | ||
266 | return true | 266 | return true |
267 | end | 267 | end |
268 | 268 | ||
269 | -function _M.actCalendaTmpTaskRpc(agent, data) | 269 | +function _M.actBattleCommandTaskRpc(agent, data) |
270 | local role = agent.role | 270 | local role = agent.role |
271 | local msg = MsgPack.unpack(data) | 271 | local msg = MsgPack.unpack(data) |
272 | local taskId = msg.id | 272 | local taskId = msg.id |
273 | - local calTask = role:getProperty("calTask1") or {} | 273 | + local calTask = role:getProperty("bcTask") or {} |
274 | local record = calTask["r"] or {} | 274 | local record = calTask["r"] or {} |
275 | local flag = record[taskId] or 0 | 275 | local flag = record[taskId] or 0 |
276 | if flag == 1 then return 1 end | 276 | if flag == 1 then return 1 end |
277 | - local open, actId = role.activity:isOpen("CalendaTaskTmp") | 277 | + local open, actId = role.activity:isOpen("BattleCommandTask") |
278 | local actData = csvdb["activity_ctrlCsv"][actId] | 278 | local actData = csvdb["activity_ctrlCsv"][actId] |
279 | if not open then return 2 end | 279 | if not open then return 2 end |
280 | if not actData then return 3 end | 280 | if not actData then return 3 end |
@@ -287,22 +287,28 @@ function _M.actCalendaTmpTaskRpc(agent, data) | @@ -287,22 +287,28 @@ function _M.actCalendaTmpTaskRpc(agent, data) | ||
287 | 287 | ||
288 | if (calTask[taskId] or 0) < taskCfg.condition1 then return 7 end | 288 | if (calTask[taskId] or 0) < taskCfg.condition1 then return 7 end |
289 | 289 | ||
290 | + local open, actId = role.activity:isOpen("BattleCommand") | ||
291 | + local actData = csvdb["activity_ctrlCsv"][actId] | ||
292 | + if not open then return 2 end | ||
293 | + if not actData then return 3 end | ||
294 | + | ||
295 | + | ||
290 | record[taskId] = 1 | 296 | record[taskId] = 1 |
291 | calTask["r"] = record | 297 | calTask["r"] = record |
292 | 298 | ||
293 | - role:updateProperty({field = "calTask", value = calTask}) | 299 | + role:updateProperty({field = "bcTask", value = calTask}) |
294 | 300 | ||
295 | - local reward, change = role:award(taskCfg.reward, {log = {desc = "calendaTask"}}) | 301 | + local reward, change = role:award(taskCfg.reward, {log = {desc = "battleCommandTask"}}) |
296 | 302 | ||
297 | role:log("activity", { | 303 | role:log("activity", { |
298 | activity_id = taskId, -- 活动ID(或活动指定任务的ID) | 304 | activity_id = taskId, -- 活动ID(或活动指定任务的ID) |
299 | - activity_type = role.activity.ActivityType.CalendaTaskTmp, -- 活动类型,见活动类型枚举表 | 305 | + activity_type = role.activity.ActivityType.BattleCommandTask, -- 活动类型,见活动类型枚举表 |
300 | activity_reward = reward, -- 活动奖励,json格式记录,{'itemid1':123,'itemid2':456,………...} | 306 | activity_reward = reward, -- 活动奖励,json格式记录,{'itemid1':123,'itemid2':456,………...} |
301 | }) | 307 | }) |
302 | 308 | ||
303 | role:checkTaskEnter("FinishSpeTask", {taskId = taskId, actId = actId}) | 309 | role:checkTaskEnter("FinishSpeTask", {taskId = taskId, actId = actId}) |
304 | 310 | ||
305 | - SendPacket(actionCodes.Activity_actCalendaTmpTaskRpc, MsgPack.pack(role:packReward(reward, change))) | 311 | + SendPacket(actionCodes.Activity_actBattleCommandTaskRpc, MsgPack.pack(role:packReward(reward, change))) |
306 | 312 | ||
307 | return true | 313 | return true |
308 | end | 314 | end |
src/actions/AdvAction.lua
@@ -146,6 +146,7 @@ function _M.startAdvRpc( agent, data ) | @@ -146,6 +146,7 @@ function _M.startAdvRpc( agent, data ) | ||
146 | 146 | ||
147 | if not checkFormat(role) then return 7 end | 147 | if not checkFormat(role) then return 7 end |
148 | 148 | ||
149 | + local cost = 0 | ||
149 | if AdvCommon.isEndless(chapterId) then -- 无尽模式判断 | 150 | if AdvCommon.isEndless(chapterId) then -- 无尽模式判断 |
150 | 151 | ||
151 | if chapterId ~= role.advElChapter then return end -- 不是当前进行的章节 | 152 | if chapterId ~= role.advElChapter then return end -- 不是当前进行的章节 |
@@ -164,6 +165,7 @@ function _M.startAdvRpc( agent, data ) | @@ -164,6 +165,7 @@ function _M.startAdvRpc( agent, data ) | ||
164 | end | 165 | end |
165 | 166 | ||
166 | role.dailyData:updateProperty({field = "advElC", delta = 1}) | 167 | role.dailyData:updateProperty({field = "advElC", delta = 1}) |
168 | + cost = 1 | ||
167 | else -- 普通模式判断 | 169 | else -- 普通模式判断 |
168 | if layer >= chapterData.limitlevel then return 4 end | 170 | if layer >= chapterData.limitlevel then return 4 end |
169 | 171 | ||
@@ -178,7 +180,9 @@ function _M.startAdvRpc( agent, data ) | @@ -178,7 +180,9 @@ function _M.startAdvRpc( agent, data ) | ||
178 | if not role:advChapterIsOpen(chapterId) then return 5 end | 180 | if not role:advChapterIsOpen(chapterId) then return 5 end |
179 | 181 | ||
180 | role:changeAdvCount(relayData.supply) | 182 | role:changeAdvCount(relayData.supply) |
183 | + cost = relayData.supply | ||
181 | end | 184 | end |
185 | + role:checkTaskEnter("AdvCostPower", {count = cost}) | ||
182 | 186 | ||
183 | local support = {} -- 支援效果 | 187 | local support = {} -- 支援效果 |
184 | if AdvCommon.isEndless(chapterId) then | 188 | if AdvCommon.isEndless(chapterId) then |
src/actions/HeroAction.lua
@@ -976,6 +976,9 @@ function _M.drawHeroRpc(agent, data) | @@ -976,6 +976,9 @@ function _M.drawHeroRpc(agent, data) | ||
976 | end | 976 | end |
977 | 977 | ||
978 | role:checkTaskEnter("DrawHero", {pool = btype, count = drawCount[drawType]}) | 978 | role:checkTaskEnter("DrawHero", {pool = btype, count = drawCount[drawType]}) |
979 | + if btype ~= 3 then | ||
980 | + role:checkTaskEnter("DrawHeroNotFriend", {pool = btype, count = drawCount[drawType]}) | ||
981 | + end | ||
979 | if ssrCount > 0 then | 982 | if ssrCount > 0 then |
980 | role:checkTaskEnter("DrawSSR", {count = ssrCount}) | 983 | role:checkTaskEnter("DrawSSR", {count = ssrCount}) |
981 | end | 984 | end |
src/actions/RoleAction.lua
@@ -165,6 +165,7 @@ function _M.loginRpc( agent, data ) | @@ -165,6 +165,7 @@ function _M.loginRpc( agent, data ) | ||
165 | role.activity:checkActivityStatus(now, false, false) | 165 | role.activity:checkActivityStatus(now, false, false) |
166 | role:log("onLogin") | 166 | role:log("onLogin") |
167 | end | 167 | end |
168 | + role:checkTaskEnter("Login", {}) | ||
168 | 169 | ||
169 | redisproxy:zadd(FRIEND_RECOMMEND, now, roleId) | 170 | redisproxy:zadd(FRIEND_RECOMMEND, now, roleId) |
170 | 171 | ||
@@ -850,6 +851,8 @@ function _M.taskRpc(agent, data) | @@ -850,6 +851,8 @@ function _M.taskRpc(agent, data) | ||
850 | -- 日常活动完成 | 851 | -- 日常活动完成 |
851 | if taskType == 1 then | 852 | if taskType == 1 then |
852 | role:checkTaskEnter("DailyTask", {pre = (taskStatus["a"] or 0), cur = active}) | 853 | role:checkTaskEnter("DailyTask", {pre = (taskStatus["a"] or 0), cur = active}) |
854 | + else | ||
855 | + role:checkTaskEnter("WeekTask", {pre = (taskStatus["a"] or 0), cur = active}) | ||
853 | end | 856 | end |
854 | 857 | ||
855 | role:changeUpdates({ | 858 | role:changeUpdates({ |
src/models/Activity.lua
@@ -38,7 +38,7 @@ Activity.ActivityType = { | @@ -38,7 +38,7 @@ Activity.ActivityType = { | ||
38 | NewSign = 36, -- 活动签到,单独的签到界面 | 38 | NewSign = 36, -- 活动签到,单独的签到界面 |
39 | HeroBackFree = 37, -- 无损耗归还 | 39 | HeroBackFree = 37, -- 无损耗归还 |
40 | 40 | ||
41 | - CalendaTaskTmp = 38, -- 新春任务活动 | 41 | + BattleCommandTask = 38, -- 战令任务活动 |
42 | } | 42 | } |
43 | 43 | ||
44 | local function checkActivityType(activityType) | 44 | local function checkActivityType(activityType) |
@@ -471,7 +471,7 @@ activityFunc[Activity.ActivityType.PayBack] = { | @@ -471,7 +471,7 @@ activityFunc[Activity.ActivityType.PayBack] = { | ||
471 | -- 英雄帖 | 471 | -- 英雄帖 |
472 | activityFunc[Activity.ActivityType.CalendaTask] = { | 472 | activityFunc[Activity.ActivityType.CalendaTask] = { |
473 | ["init"] = function(self, actType, isCrossDay, notify) | 473 | ["init"] = function(self, actType, isCrossDay, notify) |
474 | - local calTask = self.owner:getProperty("CalTask") | 474 | + local calTask = self.owner:getProperty("calTask") |
475 | calTask = {} | 475 | calTask = {} |
476 | local role = self.owner | 476 | local role = self.owner |
477 | local buildL = role.dinerData:getProperty("buildL") | 477 | local buildL = role.dinerData:getProperty("buildL") |
@@ -497,32 +497,49 @@ activityFunc[Activity.ActivityType.CalendaTask] = { | @@ -497,32 +497,49 @@ activityFunc[Activity.ActivityType.CalendaTask] = { | ||
497 | 497 | ||
498 | end, | 498 | end, |
499 | ["crossDay"] = function(self, actType, notify, actId) | 499 | ["crossDay"] = function(self, actType, notify, actId) |
500 | - local actData = self.owner:getProperty("CalTask") or {} | 500 | + local actData = self.owner:getProperty("calTask") or {} |
501 | local record = actData["r"] or {} | 501 | local record = actData["r"] or {} |
502 | local actCfg = csvdb["activity_taskCsv"][actId] | 502 | local actCfg = csvdb["activity_taskCsv"][actId] |
503 | if not actCfg then return end | 503 | if not actCfg then return end |
504 | local change = false | 504 | local change = false |
505 | for taskId, cfg in pairs(actCfg) do | 505 | for taskId, cfg in pairs(actCfg) do |
506 | - if cfg["resetType"] == 1 then -- 每日充值 | 506 | + if cfg["resetType"] == 1 then -- 每日重置 |
507 | record[taskId] = nil | 507 | record[taskId] = nil |
508 | actData[taskId] = nil | 508 | actData[taskId] = nil |
509 | change = true | 509 | change = true |
510 | end | 510 | end |
511 | end | 511 | end |
512 | if change then | 512 | if change then |
513 | - self.owner:updateProperty({field="CalTask", value=actData}) | 513 | + self.owner:updateProperty({field="calTask", value=actData}) |
514 | + end | ||
515 | + end, | ||
516 | + ["crossWeek"] = function(self, actType, notify, actId) | ||
517 | + local actData = self.owner:getProperty("calTask") or {} | ||
518 | + local record = actData["r"] or {} | ||
519 | + local actCfg = csvdb["activity_taskCsv"][actId] | ||
520 | + if not actCfg then return end | ||
521 | + local change = false | ||
522 | + for taskId, cfg in pairs(actCfg) do | ||
523 | + if cfg["resetType"] == 2 then -- 每周重置 | ||
524 | + record[taskId] = nil | ||
525 | + actData[taskId] = nil | ||
526 | + change = true | ||
527 | + end | ||
528 | + end | ||
529 | + if change then | ||
530 | + self.owner:updateProperty({field="calTask", value=actData}) | ||
514 | end | 531 | end |
515 | end, | 532 | end, |
516 | ["close"] = function(self, actType, notify) | 533 | ["close"] = function(self, actType, notify) |
517 | - self.owner:updateProperty({field="CalTask", value={}}) | 534 | + self.owner:updateProperty({field="calTask", value={}}) |
518 | end, | 535 | end, |
519 | } | 536 | } |
520 | 537 | ||
521 | -- 活动任务 仅供春节活动使用 防冲突 | 538 | -- 活动任务 仅供春节活动使用 防冲突 |
522 | -activityFunc[Activity.ActivityType.CalendaTaskTmp] = { | 539 | +activityFunc[Activity.ActivityType.BattleCommandTask] = { |
523 | ["init"] = function(self, actType, isCrossDay, notify) | 540 | ["init"] = function(self, actType, isCrossDay, notify) |
524 | - local calTask = self.owner:getProperty("CalTask1") | ||
525 | - calTask = {} | 541 | + local bcTask = self.owner:getProperty("bcTask") |
542 | + bcTask = {} | ||
526 | local role = self.owner | 543 | local role = self.owner |
527 | local buildL = role.dinerData:getProperty("buildL") | 544 | local buildL = role.dinerData:getProperty("buildL") |
528 | local curLevel = buildL:getv(1, 1) | 545 | local curLevel = buildL:getv(1, 1) |
@@ -547,7 +564,7 @@ activityFunc[Activity.ActivityType.CalendaTaskTmp] = { | @@ -547,7 +564,7 @@ activityFunc[Activity.ActivityType.CalendaTaskTmp] = { | ||
547 | 564 | ||
548 | end, | 565 | end, |
549 | ["crossDay"] = function(self, actType, notify, actId) | 566 | ["crossDay"] = function(self, actType, notify, actId) |
550 | - local actData = self.owner:getProperty("CalTask1") or {} | 567 | + local actData = self.owner:getProperty("bcTask") or {} |
551 | local record = actData["r"] or {} | 568 | local record = actData["r"] or {} |
552 | local actCfg = csvdb["activity_taskCsv"][actId] | 569 | local actCfg = csvdb["activity_taskCsv"][actId] |
553 | if not actCfg then return end | 570 | if not actCfg then return end |
@@ -560,11 +577,28 @@ activityFunc[Activity.ActivityType.CalendaTaskTmp] = { | @@ -560,11 +577,28 @@ activityFunc[Activity.ActivityType.CalendaTaskTmp] = { | ||
560 | end | 577 | end |
561 | end | 578 | end |
562 | if change then | 579 | if change then |
563 | - self.owner:updateProperty({field="CalTask1", value=actData}) | 580 | + self.owner:updateProperty({field="bcTask", value=actData}) |
581 | + end | ||
582 | + end, | ||
583 | + ["crossWeek"] = function(self, actType, notify, actId) | ||
584 | + local actData = self.owner:getProperty("bcTask") or {} | ||
585 | + local record = actData["r"] or {} | ||
586 | + local actCfg = csvdb["activity_taskCsv"][actId] | ||
587 | + if not actCfg then return end | ||
588 | + local change = false | ||
589 | + for taskId, cfg in pairs(actCfg) do | ||
590 | + if cfg["resetType"] == 2 then -- 每周重置 | ||
591 | + record[taskId] = nil | ||
592 | + actData[taskId] = nil | ||
593 | + change = true | ||
594 | + end | ||
595 | + end | ||
596 | + if change then | ||
597 | + self.owner:updateProperty({field="bcTask", value=actData}) | ||
564 | end | 598 | end |
565 | end, | 599 | end, |
566 | ["close"] = function(self, actType, notify) | 600 | ["close"] = function(self, actType, notify) |
567 | - self.owner:updateProperty({field="CalTask1", value={}}) | 601 | + self.owner:updateProperty({field="bcTask", value={}}) |
568 | end, | 602 | end, |
569 | } | 603 | } |
570 | 604 | ||
@@ -696,6 +730,18 @@ function Activity:refreshDailyData(notify) | @@ -696,6 +730,18 @@ function Activity:refreshDailyData(notify) | ||
696 | end | 730 | end |
697 | end | 731 | end |
698 | 732 | ||
733 | +function Activity:refreshWeekData(notify) | ||
734 | + for actId, status in pairs(self._isOpen) do | ||
735 | + local actData = csvdb["activity_ctrlCsv"][actId] | ||
736 | + if status and actData then | ||
737 | + local actType = actData.showType | ||
738 | + if activityFunc[actType] and activityFunc[actType]['crossWeek'] then | ||
739 | + activityFunc[actType]["crossWeek"](self, actType, notify, actId) | ||
740 | + end | ||
741 | + end | ||
742 | + end | ||
743 | +end | ||
744 | + | ||
699 | function Activity:checkActivity(notNotify, activityType, ...) | 745 | function Activity:checkActivity(notNotify, activityType, ...) |
700 | if not activityType then return end | 746 | if not activityType then return end |
701 | if not self:isOpen(activityType) then return end | 747 | if not self:isOpen(activityType) then return end |
@@ -963,7 +1009,7 @@ activityFunc[Activity.ActivityType.CommonSignIn] = { | @@ -963,7 +1009,7 @@ activityFunc[Activity.ActivityType.CommonSignIn] = { | ||
963 | local actData = self:getActData(actType) or {} | 1009 | local actData = self:getActData(actType) or {} |
964 | local actCfg = csvdb["activity_ctrlCsv"][actId] | 1010 | local actCfg = csvdb["activity_ctrlCsv"][actId] |
965 | if not actCfg then return end | 1011 | if not actCfg then return end |
966 | - local conArr = actCfg.condition2:toArray("true", "=") | 1012 | + local conArr = actCfg.condition2:toArray(true, "=") |
967 | -- 0 登录即可, 1 达到指定活跃度 | 1013 | -- 0 登录即可, 1 达到指定活跃度 |
968 | if conArr[1] ~= 1 then | 1014 | if conArr[1] ~= 1 then |
969 | return | 1015 | return |
@@ -978,7 +1024,7 @@ activityFunc[Activity.ActivityType.CommonSignIn] = { | @@ -978,7 +1024,7 @@ activityFunc[Activity.ActivityType.CommonSignIn] = { | ||
978 | 1024 | ||
979 | activityFunc[Activity.ActivityType.BattleCommand] = { | 1025 | activityFunc[Activity.ActivityType.BattleCommand] = { |
980 | ["init"] = function (self, actType, isCrossDay, notify, actId) | 1026 | ["init"] = function (self, actType, isCrossDay, notify, actId) |
981 | - local data = {unlock = 0, freeR = "", payR = "", lvl = 0, sum = 0} | 1027 | + local data = {unlock = 0, freeR = "", payR = "", lvl = 0, sum = 0, week = 0} |
982 | self:updateActData(actType, data, not notify) | 1028 | self:updateActData(actType, data, not notify) |
983 | end, | 1029 | end, |
984 | ["check"] = function(self, actType, notify, id, count) -- 检查 itemid, count | 1030 | ["check"] = function(self, actType, notify, id, count) -- 检查 itemid, count |
@@ -987,8 +1033,13 @@ activityFunc[Activity.ActivityType.BattleCommand] = { | @@ -987,8 +1033,13 @@ activityFunc[Activity.ActivityType.BattleCommand] = { | ||
987 | local actCfg = csvdb["activity_ctrlCsv"][actId] | 1033 | local actCfg = csvdb["activity_ctrlCsv"][actId] |
988 | if not actCfg then return end | 1034 | if not actCfg then return end |
989 | if actCfg.condition1 == "" then return end | 1035 | if actCfg.condition1 == "" then return end |
990 | - local itemId = tonumber(actCfg.condition2) | 1036 | + local arr = actCfg.condition2:toArray(true, "=") |
1037 | + local itemId, limit = arr[1], arr[2] | ||
991 | if itemId == id and count > 0 then | 1038 | if itemId == id and count > 0 then |
1039 | + if actData["week"] >= limit then | ||
1040 | + return | ||
1041 | + end | ||
1042 | + actData["week"] = actData["week"] + count | ||
992 | local total = actData["sum"] + count | 1043 | local total = actData["sum"] + count |
993 | local curLvl = actData["lvl"] or 0 | 1044 | local curLvl = actData["lvl"] or 0 |
994 | if actCfg.condition == 1 then -- 代表sum需要转换为等级 | 1045 | if actCfg.condition == 1 then -- 代表sum需要转换为等级 |
@@ -1009,6 +1060,11 @@ activityFunc[Activity.ActivityType.BattleCommand] = { | @@ -1009,6 +1060,11 @@ activityFunc[Activity.ActivityType.BattleCommand] = { | ||
1009 | self:updateActData(actType, actData) | 1060 | self:updateActData(actType, actData) |
1010 | end | 1061 | end |
1011 | end, | 1062 | end, |
1063 | + ["crossWeek"] = function(self, actType, notify, actId) | ||
1064 | + local actData = self:getActData(actType) or {} | ||
1065 | + actData["week"] = 0 | ||
1066 | + self:updateActData(actType, actData, true) | ||
1067 | + end, | ||
1012 | } | 1068 | } |
1013 | 1069 | ||
1014 | 1070 |
src/models/Role.lua
@@ -184,7 +184,7 @@ Role.schema = { | @@ -184,7 +184,7 @@ Role.schema = { | ||
184 | feedback = {"table", {}}, -- 反馈相关信息 {flag = false, count = 0} flag是否评论过,count 提示次数 | 184 | feedback = {"table", {}}, -- 反馈相关信息 {flag = false, count = 0} flag是否评论过,count 提示次数 |
185 | 185 | ||
186 | calTask = {"table", {}}, -- 英雄令活动 日历任务活动 | 186 | calTask = {"table", {}}, -- 英雄令活动 日历任务活动 |
187 | - calTask1 = {"table", {}}, -- 英雄令活动 日历任务活动 临时使用 | 187 | + bcTask = {"table", {}}, -- 英雄令活动 日历任务活动 临时使用 |
188 | radioTask = {"table", {}}, -- 电台任务 {id = {time=end_ts,heros=heros}} 表crusadeCsv | 188 | radioTask = {"table", {}}, -- 电台任务 {id = {time=end_ts,heros=heros}} 表crusadeCsv |
189 | } | 189 | } |
190 | 190 | ||
@@ -412,7 +412,7 @@ function Role:data() | @@ -412,7 +412,7 @@ function Role:data() | ||
412 | feedback = self:getProperty("feedback"), | 412 | feedback = self:getProperty("feedback"), |
413 | ctime = self:getProperty("ctime"), | 413 | ctime = self:getProperty("ctime"), |
414 | calTask = self:getProperty("calTask"), | 414 | calTask = self:getProperty("calTask"), |
415 | - calTask1 = self:getProperty("calTask1"), | 415 | + bcTask = self:getProperty("bcTask"), |
416 | radioTask = self:getProperty("radioTask"), | 416 | radioTask = self:getProperty("radioTask"), |
417 | } | 417 | } |
418 | end | 418 | end |
src/models/RoleLog.lua
@@ -98,6 +98,7 @@ local ItemReason = { | @@ -98,6 +98,7 @@ local ItemReason = { | ||
98 | actPaySign = 1008, -- 活动付费签到 | 98 | actPaySign = 1008, -- 活动付费签到 |
99 | calendaTask = 1009, -- 英雄帖 | 99 | calendaTask = 1009, -- 英雄帖 |
100 | actMilecrisis = 1010, -- 物资危机 | 100 | actMilecrisis = 1010, -- 物资危机 |
101 | + battleCommandTask = 1011, -- 将军令任务 | ||
101 | 102 | ||
102 | -- 餐厅 | 103 | -- 餐厅 |
103 | greenHourse = 1101, -- 食材获得 | 104 | greenHourse = 1101, -- 食材获得 |
src/models/RolePlugin.lua
@@ -135,6 +135,15 @@ function RolePlugin.bind(Role) | @@ -135,6 +135,15 @@ function RolePlugin.bind(Role) | ||
135 | self:addPotion({id = itemId, count = count, notNotify = pms.notNotify, log = pms.log}) | 135 | self:addPotion({id = itemId, count = count, notNotify = pms.notNotify, log = pms.log}) |
136 | end, | 136 | end, |
137 | } | 137 | } |
138 | + | ||
139 | + if count > 0 then | ||
140 | + local itemCfg = csvdb["itemCsv"][itemId] | ||
141 | + local itemType = 0 | ||
142 | + if itemCfg then | ||
143 | + itemType = itemCfg.type | ||
144 | + end | ||
145 | + self:checkTaskEnter("AddItem", {id = itemId, count = count, type = itemType}) | ||
146 | + end | ||
138 | -- 对数量筛查 | 147 | -- 对数量筛查 |
139 | count = checkItemCount(self, itemId, count) | 148 | count = checkItemCount(self, itemId, count) |
140 | if count ~= 0 then | 149 | if count ~= 0 then |
@@ -362,9 +371,6 @@ function RolePlugin.bind(Role) | @@ -362,9 +371,6 @@ function RolePlugin.bind(Role) | ||
362 | if not params.notNotify then | 371 | if not params.notNotify then |
363 | SendPacket(actionCodes.Role_updateItems, MsgPack.pack({[params.itemId] = nums})) | 372 | SendPacket(actionCodes.Role_updateItems, MsgPack.pack({[params.itemId] = nums})) |
364 | end | 373 | end |
365 | - if params.count > 0 then | ||
366 | - self:checkTaskEnter("AddItem", {id = params.itemId, count = params.count}) | ||
367 | - end | ||
368 | end | 374 | end |
369 | 375 | ||
370 | function Role:checkItemEnough(itemCountT) | 376 | function Role:checkItemEnough(itemCountT) |
@@ -518,6 +524,8 @@ function RolePlugin.bind(Role) | @@ -518,6 +524,8 @@ function RolePlugin.bind(Role) | ||
518 | end | 524 | end |
519 | 525 | ||
520 | self:notifyUpdateProperty("diamond", self:getAllDiamond()) | 526 | self:notifyUpdateProperty("diamond", self:getAllDiamond()) |
527 | + | ||
528 | + self:checkTaskEnter("CostDiamond", {count = count}) | ||
521 | return true | 529 | return true |
522 | end | 530 | end |
523 | 531 |
src/models/RoleTask.lua
@@ -15,6 +15,7 @@ local TaskType = { | @@ -15,6 +15,7 @@ local TaskType = { | ||
15 | HeroLvlCollect = 10, -- 英雄等级收集进度 | 15 | HeroLvlCollect = 10, -- 英雄等级收集进度 |
16 | HeroQualityCollect = 11, -- 英雄品质收集进度 | 16 | HeroQualityCollect = 11, -- 英雄品质收集进度 |
17 | HeroStarCollect = 12, -- 英雄星级收集进度 | 17 | HeroStarCollect = 12, -- 英雄星级收集进度 |
18 | + DrawHeroNotFriend = 13, -- 非友情招募 -- count | ||
18 | 19 | ||
19 | --装备相关 | 20 | --装备相关 |
20 | AddEquip = 101, -- 获得装备 - equipId rarity | 21 | AddEquip = 101, -- 获得装备 - equipId rarity |
@@ -53,6 +54,7 @@ local TaskType = { | @@ -53,6 +54,7 @@ local TaskType = { | ||
53 | AdvMineLayer = 414, -- 宝藏洞激活 | 54 | AdvMineLayer = 414, -- 宝藏洞激活 |
54 | AdvKillBoss = 415, -- 拾荒击杀boss | 55 | AdvKillBoss = 415, -- 拾荒击杀boss |
55 | AdvHangHeroCnt = 416, -- 拾荒人数 | 56 | AdvHangHeroCnt = 416, -- 拾荒人数 |
57 | + AdvCostPower = 417, -- 消耗体力 | ||
56 | 58 | ||
57 | --爬塔相关 | 59 | --爬塔相关 |
58 | TowerPass = 501, -- 爬塔通关 - level | 60 | TowerPass = 501, -- 爬塔通关 - level |
@@ -98,6 +100,9 @@ local TaskType = { | @@ -98,6 +100,9 @@ local TaskType = { | ||
98 | RadioTaskStart = 905, -- 电台任务开始 | 100 | RadioTaskStart = 905, -- 电台任务开始 |
99 | FinishSpeTask = 906, -- 指定任务完成 | 101 | FinishSpeTask = 906, -- 指定任务完成 |
100 | AddItem = 907, -- 获得道具 | 102 | AddItem = 907, -- 获得道具 |
103 | + Login = 908, -- 登入 | ||
104 | + CostDiamond = 909, -- 消耗钻石 | ||
105 | + WeekTask = 910, -- 完成每周活跃任务 | ||
101 | 106 | ||
102 | --功能未实现 todo | 107 | --功能未实现 todo |
103 | AdvShop = 1002, -- 冒险商城 | 108 | AdvShop = 1002, -- 冒险商城 |
@@ -284,42 +289,20 @@ local CalendaTaskListener = { | @@ -284,42 +289,20 @@ local CalendaTaskListener = { | ||
284 | [TaskType.AdvMineKill] = {{26, 1}}, | 289 | [TaskType.AdvMineKill] = {{26, 1}}, |
285 | [TaskType.PvpBattle] = {{27, 1}}, | 290 | [TaskType.PvpBattle] = {{27, 1}}, |
286 | [TaskType.FinishSpeTask] = {{28, 3, f("taskId"), f("actId")}}, | 291 | [TaskType.FinishSpeTask] = {{28, 3, f("taskId"), f("actId")}}, |
287 | - | 292 | + [TaskType.Login] = {{29, 1}}, |
293 | + [TaskType.DailyTask] = {{30, 2, f("cur")}}, | ||
294 | + [TaskType.WeekTask] = {{31, 2, f("cur")}}, | ||
295 | + [TaskType.MakeFood] = {{32, 1, f("count")}}, | ||
296 | + [TaskType.AddItem] = {{33, 3, f("type"), f("count")}}, | ||
297 | + [TaskType.CostDiamond] = {{34, 1, f("count")}}, | ||
298 | + [TaskType.DrawHeroNotFriend] = {{35, 1, f("count")}}, | ||
299 | + [TaskType.AdvCostPower] = {{36, 1, f("count")}}, | ||
288 | } | 300 | } |
289 | } | 301 | } |
290 | 302 | ||
291 | -local CalendaTaskTmpListener = { | ||
292 | - func = "checkCalendaTaskTmp", | ||
293 | - listen = { | ||
294 | - [TaskType.DrawHero] = {{1, 1, f("count")}}, | ||
295 | - [TaskType.BonusPass]= {{2, 1, f("count")}}, | ||
296 | - [TaskType.AdvStart]= {{3, 1}}, | ||
297 | - [TaskType.DinerLevelUp]= {{4, 2, f("level")}}, | ||
298 | - [TaskType.HeroLvlCollect]= {{5, 3}}, -- x名y级英雄 | ||
299 | - [TaskType.AdvHang]= {{6, 1}}, ---- | ||
300 | - [TaskType.HeroQualityCollect]= {{7, 3}}, | ||
301 | - [TaskType.OverOderTask]= {{8, 1}}, | ||
302 | - [TaskType.VillageApply]= {{9, 1}}, | ||
303 | - [TaskType.PvpWin]= {{10, 2, f("score")}}, | ||
304 | - [TaskType.DinerPopular]= {{11, 2, f("count")}}, | ||
305 | - [TaskType.RoleLevelUp]= {{12, 2, f("level")}}, | ||
306 | - [TaskType.TowerPass]= {{13, 2, f("level")}}, | ||
307 | - [TaskType.HeroTalent]= {{14, 1}}, | ||
308 | - [TaskType.HangPass]= {{15, 3}}, | ||
309 | - [TaskType.HeroStarCollect]= {{16, 3}}, | ||
310 | - [TaskType.FoodSell]= {{17, 1, f("count")}}, | ||
311 | - [TaskType.HangGet]= {{18, 3, f("reward")}}, | ||
312 | - [TaskType.RuneQualityCollect]= {{19, 3}}, | ||
313 | - [TaskType.OpenBox]= {{20, 3, f("count"), f("quality")}}, | ||
314 | - [TaskType.RadioTaskStart] = {{21, 1}, {22, 3, f("heroCnt")}}, | ||
315 | - [TaskType.BonusQuick] = {{23, 1, f("count")}}, | ||
316 | - [TaskType.AdvHangHeroCnt] = {{24, 3, f("HeroCnt")}}, | ||
317 | - [TaskType.AdvKillBoss] = {{25, 1}}, | ||
318 | - [TaskType.AdvMineKill] = {{26, 1}}, | ||
319 | - [TaskType.PvpBattle] = {{27, 1}}, | ||
320 | - [TaskType.FinishSpeTask] = {{28, 3, f("taskId"), f("actId")}}, | ||
321 | - | ||
322 | - } | 303 | +local BattleCommandTaskListener = { |
304 | + func = "checkBattleCommandTask", | ||
305 | + listen = CalendaTaskListener["listen"] | ||
323 | } | 306 | } |
324 | 307 | ||
325 | local TaskListeners = { | 308 | local TaskListeners = { |
@@ -330,7 +313,7 @@ local TaskListeners = { | @@ -330,7 +313,7 @@ local TaskListeners = { | ||
330 | ActivityListener, | 313 | ActivityListener, |
331 | StoreListener, | 314 | StoreListener, |
332 | CalendaTaskListener, | 315 | CalendaTaskListener, |
333 | - CalendaTaskTmpListener, | 316 | + BattleCommandTaskListener, |
334 | } | 317 | } |
335 | 318 | ||
336 | local RoleTask = {} | 319 | local RoleTask = {} |
@@ -659,15 +642,17 @@ function RoleTask.bind(Role) | @@ -659,15 +642,17 @@ function RoleTask.bind(Role) | ||
659 | end | 642 | end |
660 | 643 | ||
661 | function Role:checkCalendaTask(notNotify, mainType, subType, param1, param2) | 644 | function Role:checkCalendaTask(notNotify, mainType, subType, param1, param2) |
662 | - --print("check calenda taskl", mainType, subType, param1, param2) | 645 | + --print("check calenda task", mainType, subType, param1, param2) |
646 | + local actEnum = "CalendaTask" | ||
647 | + local keyName = "calTask" | ||
663 | if not self.activity then return end | 648 | if not self.activity then return end |
664 | - local open, actId = self.activity:isOpen("CalendaTask") | 649 | + local open, actId = self.activity:isOpen(actEnum) |
665 | local actData = csvdb["activity_ctrlCsv"][actId] | 650 | local actData = csvdb["activity_ctrlCsv"][actId] |
666 | if not actData then return end | 651 | if not actData then return end |
667 | if not open then return end | 652 | if not open then return end |
668 | 653 | ||
669 | local change = false | 654 | local change = false |
670 | - local calTask = self:getProperty("calTask") or {} | 655 | + local calTask = self:getProperty(keyName) or {} |
671 | param1 = param1 or 1 | 656 | param1 = param1 or 1 |
672 | 657 | ||
673 | local cid = actData.condition | 658 | local cid = actData.condition |
@@ -742,7 +727,7 @@ function RoleTask.bind(Role) | @@ -742,7 +727,7 @@ function RoleTask.bind(Role) | ||
742 | calTask[id] = count | 727 | calTask[id] = count |
743 | elseif cfg.type == 20 then -- 开启x品质时钟箱子 | 728 | elseif cfg.type == 20 then -- 开启x品质时钟箱子 |
744 | if cfg.condition2 <= (param2 or 0) then | 729 | if cfg.condition2 <= (param2 or 0) then |
745 | - calTask[id] = (calTask[id] or 0) + param2 | 730 | + calTask[id] = (calTask[id] or 0) + param1 |
746 | end | 731 | end |
747 | elseif cfg.type == 15 then -- 通关关卡 | 732 | elseif cfg.type == 15 then -- 通关关卡 |
748 | if (calTask[id] or 0) == 0 then | 733 | if (calTask[id] or 0) == 0 then |
@@ -761,26 +746,32 @@ function RoleTask.bind(Role) | @@ -761,26 +746,32 @@ function RoleTask.bind(Role) | ||
761 | if actId == param2 and cfg.condition2 == param1 then | 746 | if actId == param2 and cfg.condition2 == param1 then |
762 | calTask[id] = (calTask[id] or 0) + 1 | 747 | calTask[id] = (calTask[id] or 0) + 1 |
763 | end | 748 | end |
749 | + elseif cfg.type == 33 then -- 获得指定类型道具多少个 | ||
750 | + if cfg.condition2 == param1 then | ||
751 | + calTask[id] = (calTask[id] or 0) + (param2 or 0) | ||
752 | + end | ||
764 | end | 753 | end |
765 | end | 754 | end |
766 | end | 755 | end |
767 | end | 756 | end |
768 | end | 757 | end |
769 | end | 758 | end |
770 | - self:updateProperty({field = "calTask", value = calTask, notNotify = notNotify}) | 759 | + self:updateProperty({field = keyName, value = calTask, notNotify = notNotify}) |
771 | --dump(calTask) | 760 | --dump(calTask) |
772 | end | 761 | end |
773 | 762 | ||
774 | - function Role:checkCalendaTaskTmp(notNotify, mainType, subType, param1, param2) | ||
775 | - --print("check calenda taskl", mainType, subType, param1, param2) | 763 | + function Role:checkBattleCommandTask(notNotify, mainType, subType, param1, param2) |
764 | + --print("check battle command task", mainType, subType, param1, param2) | ||
765 | + local actEnum = "BattleCommandTask" | ||
766 | + local keyName = "bcTask" | ||
776 | if not self.activity then return end | 767 | if not self.activity then return end |
777 | - local open, actId = self.activity:isOpen("CalendaTaskTmp") | 768 | + local open, actId = self.activity:isOpen(actEnum) |
778 | local actData = csvdb["activity_ctrlCsv"][actId] | 769 | local actData = csvdb["activity_ctrlCsv"][actId] |
779 | if not actData then return end | 770 | if not actData then return end |
780 | if not open then return end | 771 | if not open then return end |
781 | 772 | ||
782 | local change = false | 773 | local change = false |
783 | - local calTask = self:getProperty("calTask1") or {} | 774 | + local calTask = self:getProperty(keyName) or {} |
784 | param1 = param1 or 1 | 775 | param1 = param1 or 1 |
785 | 776 | ||
786 | local cid = actData.condition | 777 | local cid = actData.condition |
@@ -855,7 +846,7 @@ function RoleTask.bind(Role) | @@ -855,7 +846,7 @@ function RoleTask.bind(Role) | ||
855 | calTask[id] = count | 846 | calTask[id] = count |
856 | elseif cfg.type == 20 then -- 开启x品质时钟箱子 | 847 | elseif cfg.type == 20 then -- 开启x品质时钟箱子 |
857 | if cfg.condition2 <= (param2 or 0) then | 848 | if cfg.condition2 <= (param2 or 0) then |
858 | - calTask[id] = (calTask[id] or 0) + param2 | 849 | + calTask[id] = (calTask[id] or 0) + param1 |
859 | end | 850 | end |
860 | elseif cfg.type == 15 then -- 通关关卡 | 851 | elseif cfg.type == 15 then -- 通关关卡 |
861 | if (calTask[id] or 0) == 0 then | 852 | if (calTask[id] or 0) == 0 then |
@@ -874,13 +865,17 @@ function RoleTask.bind(Role) | @@ -874,13 +865,17 @@ function RoleTask.bind(Role) | ||
874 | if actId == param2 and cfg.condition2 == param1 then | 865 | if actId == param2 and cfg.condition2 == param1 then |
875 | calTask[id] = (calTask[id] or 0) + 1 | 866 | calTask[id] = (calTask[id] or 0) + 1 |
876 | end | 867 | end |
868 | + elseif cfg.type == 33 then -- 获得指定类型道具多少个 | ||
869 | + if cfg.condition2 == param1 then | ||
870 | + calTask[id] = (calTask[id] or 0) + (param2 or 0) | ||
871 | + end | ||
877 | end | 872 | end |
878 | end | 873 | end |
879 | end | 874 | end |
880 | end | 875 | end |
881 | end | 876 | end |
882 | end | 877 | end |
883 | - self:updateProperty({field = "calTask1", value = calTask, notNotify = notNotify}) | 878 | + self:updateProperty({field = keyName, value = calTask, notNotify = notNotify}) |
884 | --dump(calTask) | 879 | --dump(calTask) |
885 | end | 880 | end |
886 | 881 |
src/models/RoleTimeReset.lua
@@ -41,6 +41,8 @@ ResetFunc["CrossWeek"] = function(self, notify, response) | @@ -41,6 +41,8 @@ ResetFunc["CrossWeek"] = function(self, notify, response) | ||
41 | 41 | ||
42 | response.wTask = {} | 42 | response.wTask = {} |
43 | response.dinerS = {} | 43 | response.dinerS = {} |
44 | + | ||
45 | + self.activity:refreshWeekData(notify) | ||
44 | end | 46 | end |
45 | 47 | ||
46 | ResetFunc["CrossMonth"] = function(self, notify, response) | 48 | ResetFunc["CrossMonth"] = function(self, notify, response) |