Commit 7b570ef2f680be5560bdb3bee5199da027ed95d3

Authored by liuzujun
1 parent ff7cd89e

新春活动任务

@@ -355,6 +355,7 @@ TriggerEventType = { @@ -355,6 +355,7 @@ TriggerEventType = {
355 AddNewHero = 5, 355 AddNewHero = 5,
356 SSRCount = 6, 356 SSRCount = 6,
357 AfterTs = 7, -- 某时间以后 357 AfterTs = 7, -- 某时间以后
  358 + DrawHeroCnt = 8, -- 每日抽卡次数
358 } 359 }
359 360
360 DrawCardType = { 361 DrawCardType = {
src/actions/ActivityAction.lua
@@ -723,7 +723,9 @@ function _M.endBattleRpc(agent, data) @@ -723,7 +723,9 @@ function _M.endBattleRpc(agent, data)
723 if check[cond[1]] and check[cond[1]](table.unpack(cond)) then 723 if check[cond[1]] and check[cond[1]](table.unpack(cond)) then
724 curStar = curStar + (1 << (i - 1)) 724 curStar = curStar + (1 << (i - 1))
725 end 725 end
726 - end 726 + end
  727 +
  728 + role:checkTaskEnter("ActBattlePass", {chapterId = id})
727 else 729 else
728 curStar = 0 730 curStar = 0
729 if battleCfg.rank ~= 0 then 731 if battleCfg.rank ~= 0 then
src/actions/AdvAction.lua
@@ -334,7 +334,7 @@ function _M.startHangRpc(agent, data) @@ -334,7 +334,7 @@ function _M.startHangRpc(agent, data)
334 role:changeUpdates({{type = "advHang", field = chapterId, value = info}}) 334 role:changeUpdates({{type = "advHang", field = chapterId, value = info}})
335 335
336 role:changeAdvCount(adv_idle_energy) 336 role:changeAdvCount(adv_idle_energy)
337 - role:checkTaskEnter("AdvStart", {id = chapterId}) 337 + role:checkTaskEnter("AdvStart", {id = chapterId, actid = actid})
338 role:mylog("adv_action", {desc = "startHang", int1 = chapterId}) 338 role:mylog("adv_action", {desc = "startHang", int1 = chapterId})
339 339
340 SendPacket(actionCodes.Adv_startHangRpc, '') 340 SendPacket(actionCodes.Adv_startHangRpc, '')
src/actions/HeroAction.lua
@@ -976,6 +976,12 @@ function _M.drawHeroRpc(agent, data) @@ -976,6 +976,12 @@ function _M.drawHeroRpc(agent, data)
976 role:updateProperty({field="newerDraw", value = newCount + drawCount[drawType]}) 976 role:updateProperty({field="newerDraw", value = newCount + drawCount[drawType]})
977 end 977 end
978 978
  979 + -- 限时礼包
  980 + local dailyDrawCnt = role.dailyData:getProperty("drawHeroCnt") or 0
  981 + dailyDrawCnt = dailyDrawCnt + drawCount[drawType]
  982 + role.dailyData:setProperty("drawHeroCnt", dailyDrawCnt)
  983 + role:checkTaskEnter("DrawHeroLimitPack", {count = dailyDrawCnt})
  984 +
979 role:checkTaskEnter("DrawHero", {pool = btype, count = drawCount[drawType]}) 985 role:checkTaskEnter("DrawHero", {pool = btype, count = drawCount[drawType]})
980 if btype ~= 3 then 986 if btype ~= 3 then
981 role:checkTaskEnter("DrawHeroNotFriend", {pool = btype, count = drawCount[drawType]}) 987 role:checkTaskEnter("DrawHeroNotFriend", {pool = btype, count = drawCount[drawType]})
@@ -1133,6 +1133,7 @@ function Adv:useItem(itemId, count, target) @@ -1133,6 +1133,7 @@ function Adv:useItem(itemId, count, target)
1133 end 1133 end
1134 1134
1135 self:checkAchievement(self.AchievType.UseItem, count, itemId) 1135 self:checkAchievement(self.AchievType.UseItem, count, itemId)
  1136 + self.owner:checkTaskEnter("AdvUseItem", {itemId = itemId, count = count})
1136 self:mylog({desc = "useItem", int1 = itemId, int2 = count}) 1137 self:mylog({desc = "useItem", int1 = itemId, int2 = count})
1137 1138
1138 self.owner:log("mission_pick_use", { 1139 self.owner:log("mission_pick_use", {
@@ -1760,6 +1761,7 @@ local function clickBuild(self, room, block, params) @@ -1760,6 +1761,7 @@ local function clickBuild(self, room, block, params)
1760 self:checkTask(Adv.TaskType.Build, 1, oldId) 1761 self:checkTask(Adv.TaskType.Build, 1, oldId)
1761 self:checkAchievement(Adv.AchievType.Build, 1, oldId) 1762 self:checkAchievement(Adv.AchievType.Build, 1, oldId)
1762 self:checkAchievement(Adv.AchievType.BuildBySelect, 1, oldId, choose) 1763 self:checkAchievement(Adv.AchievType.BuildBySelect, 1, oldId, choose)
  1764 + self.owner:checkTaskEnter("AdvBuild", {buildId = oldId})
1763 1765
1764 if clearBlock then 1766 if clearBlock then
1765 block:clear() 1767 block:clear()
@@ -2338,6 +2340,8 @@ function Adv:enemyDead(enemy, escape) @@ -2338,6 +2340,8 @@ function Adv:enemyDead(enemy, escape)
2338 self:checkAchievement(Adv.AchievType.Kill, 1, enemyId) 2340 self:checkAchievement(Adv.AchievType.Kill, 1, enemyId)
2339 self:checkAchievement(Adv.AchievType.KillHadBuff, 1, enemy) 2341 self:checkAchievement(Adv.AchievType.KillHadBuff, 1, enemy)
2340 2342
  2343 + self.onwer:checkTaskEnter("AdvKill", {chapterId = self.chapterId})
  2344 +
2341 self:checkAchievement(Adv.AchievType.KillWithBuff, 1) 2345 self:checkAchievement(Adv.AchievType.KillWithBuff, 1)
2342 self:checkAchievement(Adv.AchievType.KillNoBuff, 1) 2346 self:checkAchievement(Adv.AchievType.KillNoBuff, 1)
2343 self:checkAchievement(Adv.AchievType.KillWithMWeapon, 1) 2347 self:checkAchievement(Adv.AchievType.KillWithMWeapon, 1)
1 -Subproject commit b86293f02222b1fbd499e57de9ead6cbd6e0d736 1 +Subproject commit 4210e5c61075be7be7df1737200944d9bcb6810d
src/models/Daily.lua
@@ -28,6 +28,7 @@ Daily.schema = { @@ -28,6 +28,7 @@ Daily.schema = {
28 28
29 unlockPool = {"table", {}}, -- 解锁的属性卡池 29 unlockPool = {"table", {}}, -- 解锁的属性卡池
30 curPool = {"number", 0}, -- 属性卡池当前索引 30 curPool = {"number", 0}, -- 属性卡池当前索引
  31 + drawCardCnt = {"number", 0}, -- 每日抽卡次数
31 } 32 }
32 33
33 function Daily:updateProperty(params) 34 function Daily:updateProperty(params)
src/models/RoleTask.lua
@@ -16,6 +16,7 @@ local TaskType = { @@ -16,6 +16,7 @@ local TaskType = {
16 HeroQualityCollect = 11, -- 英雄品质收集进度 16 HeroQualityCollect = 11, -- 英雄品质收集进度
17 HeroStarCollect = 12, -- 英雄星级收集进度 17 HeroStarCollect = 12, -- 英雄星级收集进度
18 DrawHeroNotFriend = 13, -- 非友情招募 -- count 18 DrawHeroNotFriend = 13, -- 非友情招募 -- count
  19 + DrawHeroLimitPack = 14, -- 抽卡限时礼貌 -- count
19 20
20 --装备相关 21 --装备相关
21 AddEquip = 101, -- 获得装备 - equipId rarity 22 AddEquip = 101, -- 获得装备 - equipId rarity
@@ -56,6 +57,9 @@ local TaskType = { @@ -56,6 +57,9 @@ local TaskType = {
56 AdvHangHeroCnt = 416, -- 拾荒人数 57 AdvHangHeroCnt = 416, -- 拾荒人数
57 AdvCostPower = 417, -- 消耗体力 58 AdvCostPower = 417, -- 消耗体力
58 AdvPassFirst = 418, -- 冒险首次通关 - id 59 AdvPassFirst = 418, -- 冒险首次通关 - id
  60 + AdvUseItem = 419, -- 使用道具 - itemId count
  61 + AdvBuild = 420, -- 建筑交互 - buildId
  62 + AdvKill = 421, -- 拾荒击败敌人
59 63
60 --爬塔相关 64 --爬塔相关
61 TowerPass = 501, -- 爬塔通关 - level 65 TowerPass = 501, -- 爬塔通关 - level
@@ -104,6 +108,7 @@ local TaskType = { @@ -104,6 +108,7 @@ local TaskType = {
104 Login = 908, -- 登入 108 Login = 908, -- 登入
105 CostDiamond = 909, -- 消耗钻石 109 CostDiamond = 909, -- 消耗钻石
106 WeekTask = 910, -- 完成每周活跃任务 110 WeekTask = 910, -- 完成每周活跃任务
  111 + ActBattlePass = 911, -- 活动关卡通关 -- chapterId
107 112
108 --功能未实现 todo 113 --功能未实现 todo
109 AdvShop = 1002, -- 冒险商城 114 AdvShop = 1002, -- 冒险商城
@@ -257,6 +262,7 @@ local StoreListener = { @@ -257,6 +262,7 @@ local StoreListener = {
257 [TaskType.TowerPass] = {{TriggerEventType.TowerPass, f("level")}}, 262 [TaskType.TowerPass] = {{TriggerEventType.TowerPass, f("level")}},
258 [TaskType.AdvPassFirst] = {{TriggerEventType.AdvPass, f("id")}}, 263 [TaskType.AdvPassFirst] = {{TriggerEventType.AdvPass, f("id")}},
259 [TaskType.AddHero] = {{TriggerEventType.AddNewHero, f("heroType")}, {TriggerEventType.SSRCount, f("ssrCount")}}, 264 [TaskType.AddHero] = {{TriggerEventType.AddNewHero, f("heroType")}, {TriggerEventType.SSRCount, f("ssrCount")}},
  265 + [TaskType.DrawHeroLimitPack] = {{TriggerEventType.DrawHeroLimitPack, f("count")}},
260 } 266 }
261 } 267 }
262 268
@@ -268,7 +274,7 @@ local CalendaTaskListener = { @@ -268,7 +274,7 @@ local CalendaTaskListener = {
268 [TaskType.AdvStart]= {{3, 1}}, 274 [TaskType.AdvStart]= {{3, 1}},
269 [TaskType.DinerLevelUp]= {{4, 2, f("level")}}, 275 [TaskType.DinerLevelUp]= {{4, 2, f("level")}},
270 [TaskType.HeroLvlCollect]= {{5, 3}}, -- x名y级英雄 276 [TaskType.HeroLvlCollect]= {{5, 3}}, -- x名y级英雄
271 - [TaskType.AdvHang]= {{6, 1}}, ---- 277 + [TaskType.AdvHang]= {{6, 3, f("actid")}}, ----
272 [TaskType.HeroQualityCollect]= {{7, 3}}, 278 [TaskType.HeroQualityCollect]= {{7, 3}},
273 [TaskType.OverOderTask]= {{8, 1}}, 279 [TaskType.OverOderTask]= {{8, 1}},
274 [TaskType.VillageApply]= {{9, 1}}, 280 [TaskType.VillageApply]= {{9, 1}},
@@ -294,10 +300,16 @@ local CalendaTaskListener = { @@ -294,10 +300,16 @@ local CalendaTaskListener = {
294 [TaskType.DailyTask] = {{30, 2, f("cur")}}, 300 [TaskType.DailyTask] = {{30, 2, f("cur")}},
295 [TaskType.WeekTask] = {{31, 2, f("cur")}}, 301 [TaskType.WeekTask] = {{31, 2, f("cur")}},
296 [TaskType.MakeFood] = {{32, 1, f("count")}}, 302 [TaskType.MakeFood] = {{32, 1, f("count")}},
297 - [TaskType.AddItem] = {{33, 3, f("type"), f("count")}}, 303 + [TaskType.AddItem] = {{33, 3, f("type"), f("count")}, {42, 3, f("id"), f("count")}},
298 [TaskType.CostDiamond] = {{34, 1, f("count")}}, 304 [TaskType.CostDiamond] = {{34, 1, f("count")}},
299 [TaskType.DrawHeroNotFriend] = {{35, 1, f("count")}}, 305 [TaskType.DrawHeroNotFriend] = {{35, 1, f("count")}},
300 [TaskType.AdvCostPower] = {{36, 1, f("count")}}, 306 [TaskType.AdvCostPower] = {{36, 1, f("count")}},
  307 +
  308 + [TaskType.AdvUseItem] = {{37, 3, f("itemId"), f("count")}},
  309 + [TaskType.AdvBuild] = {{38, 3, f("buildId")}},
  310 + [TaskType.AdvKill] = {{39, 1, f("chapterId")}},
  311 + [TaskType.ActBattlePass] = {{40, 3, f("chapterId")}},
  312 + [TaskType.AdvPass] = {{41, 3, f("id")}},
301 } 313 }
302 } 314 }
303 315
@@ -642,17 +654,7 @@ function RoleTask.bind(Role) @@ -642,17 +654,7 @@ function RoleTask.bind(Role)
642 self.storeData:OnTriggerLimitTimePack(triggerType, param) 654 self.storeData:OnTriggerLimitTimePack(triggerType, param)
643 end 655 end
644 656
645 - function Role:checkCalendaTask(notNotify, mainType, subType, param1, param2)  
646 - --print("check calenda task", mainType, subType, param1, param2)  
647 - local actEnum = "CalendaTask"  
648 - local keyName = "calTask"  
649 - if not self.activity then return end  
650 - local open, actId = self.activity:isOpen(actEnum)  
651 - local actData = csvdb["activity_ctrlCsv"][actId]  
652 - if not actData then return end  
653 - if not open then return end  
654 -  
655 - local change = false 657 + function Role:checkActTask(notNotify, keyName, actData, mainType, subType, param1, param2)
656 local calTask = self:getProperty(keyName) or {} 658 local calTask = self:getProperty(keyName) or {}
657 param1 = param1 or 1 659 param1 = param1 or 1
658 660
@@ -744,13 +746,49 @@ function RoleTask.bind(Role) @@ -744,13 +746,49 @@ function RoleTask.bind(Role)
744 calTask[id] = (calTask[id] or 0) + (param1 or 0) 746 calTask[id] = (calTask[id] or 0) + (param1 or 0)
745 elseif cfg.type == 28 then -- 完成指定任务 747 elseif cfg.type == 28 then -- 完成指定任务
746 --print(actId,param2, cfg.condition2, param1) 748 --print(actId,param2, cfg.condition2, param1)
747 - if actId == param2 and cfg.condition2 == param1 then 749 + if actData.id == param2 and cfg.condition2 == param1 then
748 calTask[id] = (calTask[id] or 0) + 1 750 calTask[id] = (calTask[id] or 0) + 1
749 end 751 end
750 elseif cfg.type == 33 then -- 获得指定类型道具多少个 752 elseif cfg.type == 33 then -- 获得指定类型道具多少个
751 if cfg.condition2 == param1 then 753 if cfg.condition2 == param1 then
752 calTask[id] = (calTask[id] or 0) + (param2 or 0) 754 calTask[id] = (calTask[id] or 0) + (param2 or 0)
753 end 755 end
  756 + elseif cfg.type == 42 then -- 获得指定id道具多少个
  757 + if cfg.condition2 == param1 then
  758 + calTask[id] = (calTask[id] or 0) + (param2 or 0)
  759 + end
  760 + elseif cfg.type == 6 then -- 代理拾荒次数
  761 + if cfg.condition2 == 0 or (cfg.condition2 == 1 and param1) then
  762 + calTask[id] = (calTask[id] or 0) + 1
  763 + end
  764 + elseif cfg.type == 37 then -- 拾荒使用道具
  765 + if cfg.condition2 == param1 then
  766 + calTask[id] = (calTask[id] or 0) + (param2 or 0)
  767 + end
  768 + elseif cfg.type == 38 then -- 和指定建筑交互
  769 + local condArr = cfg.condition3:toArray(true, "=")
  770 + for i = 0, #condArr do
  771 + if condArr[i] == param1 then
  772 + calTask[id] = (calTask[id] or 0) + 1
  773 + break
  774 + end
  775 + end
  776 + elseif cfg.type == 39 then -- 拾荒特定章节消灭敌人
  777 + local condArr = cfg.condition3:toArray(true, "=")
  778 + for i = 0, #condArr do
  779 + if condArr[i] == param1 then
  780 + calTask[id] = (calTask[id] or 0) + 1
  781 + break
  782 + end
  783 + end
  784 + elseif cfg.type == 40 then -- 指定活动关卡通关
  785 + if cfg.condition2 == param1 then
  786 + calTask[id] = (calTask[id] or 0) + 1
  787 + end
  788 + elseif cfg.type == 41 then -- 通关拾荒指定关卡
  789 + if cfg.condition2 == param1 then
  790 + calTask[id] = (calTask[id] or 0) + 1
  791 + end
754 end 792 end
755 end 793 end
756 end 794 end
@@ -758,7 +796,19 @@ function RoleTask.bind(Role) @@ -758,7 +796,19 @@ function RoleTask.bind(Role)
758 end 796 end
759 end 797 end
760 self:updateProperty({field = keyName, value = calTask, notNotify = notNotify}) 798 self:updateProperty({field = keyName, value = calTask, notNotify = notNotify})
761 - --dump(calTask) 799 + end
  800 +
  801 + function Role:checkCalendaTask(notNotify, mainType, subType, param1, param2)
  802 + --print("check calenda task", mainType, subType, param1, param2)
  803 + local actEnum = "CalendaTask"
  804 + local keyName = "calTask"
  805 + if not self.activity then return end
  806 + local open, actId = self.activity:isOpen(actEnum)
  807 + local actData = csvdb["activity_ctrlCsv"][actId]
  808 + if not actData then return end
  809 + if not open then return end
  810 +
  811 + self:checkActTask(notNotify, keyName, actData, mainType, subType, param1, param2)
762 end 812 end
763 813
764 function Role:checkBattleCommandTask(notNotify, mainType, subType, param1, param2) 814 function Role:checkBattleCommandTask(notNotify, mainType, subType, param1, param2)
@@ -771,113 +821,7 @@ function RoleTask.bind(Role) @@ -771,113 +821,7 @@ function RoleTask.bind(Role)
771 if not actData then return end 821 if not actData then return end
772 if not open then return end 822 if not open then return end
773 823
774 - local change = false  
775 - local calTask = self:getProperty(keyName) or {}  
776 - param1 = param1 or 1  
777 -  
778 - local cid = actData.condition  
779 - for k, taskList in pairs(csvdb["activity_taskCsv"]) do  
780 - if k == cid then  
781 - for id, cfg in pairs(taskList) do  
782 - if cfg.type == mainType then  
783 - if subType == 1 then -- 增加数值  
784 - calTask[id] = (calTask[id] or 0) + param1  
785 - elseif subType == 2 then -- 直接赋值  
786 - calTask[id] = param1  
787 - elseif subType == 3 then -- 自定义类型  
788 - if cfg.type == 7 then -- 英雄品质收集进度  
789 - local count = 0  
790 - for _, hero in pairs(self.heros) do  
791 - local unitData = csvdb["unitCsv"][hero:getProperty("type")]  
792 - if unitData then  
793 - if cfg.condition2 <= unitData.rare then  
794 - count = count + 1  
795 - end  
796 - end  
797 - end  
798 - if (calTask[id] or 0) < count then  
799 - calTask[id] = count  
800 - end  
801 - elseif cfg.type == 5 then -- 英雄等级收集进度  
802 - local count = 0  
803 - for _, hero in pairs(self.heros) do  
804 - if cfg.condition2 <= hero:getProperty("level") then  
805 - count = count + 1  
806 - end  
807 - end  
808 - if (calTask[id] or 0) < count then  
809 - calTask[id] = count  
810 - end  
811 - elseif cfg.type == 16 then -- 英雄星级收集进度  
812 - local count = 0  
813 - for _, hero in pairs(self.heros) do  
814 - if cfg.condition2 <= hero:getProperty("wakeL") then  
815 - count = count + 1  
816 - end  
817 - end  
818 - if (calTask[id] or 0) < count then  
819 - calTask[id] = count  
820 - end  
821 - elseif cfg.type == 18 then -- 挂机累计收获id,y个  
822 - for rid, v in pairs(param1) do  
823 - if cfg.condition2 == rid then  
824 - calTask[id] = (calTask[id] or 0) + v  
825 - end  
826 - end  
827 - elseif cfg.type == 19 then -- x名英雄装备y品质以上符文套装  
828 - local count = 0  
829 - for _, hero in pairs(self.heros) do  
830 - local rcount = 0  
831 - for _,uid in pairs(hero:getRunes()) do  
832 - if uid > 0 then  
833 - local runeData = self.runeBag[uid]  
834 - if runeData then  
835 - local csvData = csvdb["runeCsv"][runeData:getProperty("type")][runeData:getProperty("id")]  
836 -  
837 - if csvData and cfg.condition2 <= csvData.rarity then  
838 - rcount = rcount + 1  
839 - end  
840 - end  
841 - end  
842 - end  
843 - if rcount == 6 then  
844 - count = count + 1  
845 - end  
846 - end  
847 - calTask[id] = count  
848 - elseif cfg.type == 20 then -- 开启x品质时钟箱子  
849 - if cfg.condition2 <= (param2 or 0) then  
850 - calTask[id] = (calTask[id] or 0) + param1  
851 - end  
852 - elseif cfg.type == 15 then -- 通关关卡  
853 - if (calTask[id] or 0) == 0 then  
854 - local hangPass = self:getProperty("hangPass")  
855 - local diff = math.floor(cfg.condition2 / 10000)  
856 - if (hangPass[diff] or 0) >= cfg.condition1 then  
857 - calTask[id] = 1  
858 - end  
859 - end  
860 - elseif cfg.type == 22 then -- 电台任务出勤人数  
861 - calTask[id] = (calTask[id] or 0) + (param1 or 0)  
862 - elseif cfg.type == 24 then -- 代理拾荒出勤人数  
863 - calTask[id] = (calTask[id] or 0) + (param1 or 0)  
864 - elseif cfg.type == 28 then -- 完成指定任务  
865 - --print(actId,param2, cfg.condition2, param1)  
866 - if actId == param2 and cfg.condition2 == param1 then  
867 - calTask[id] = (calTask[id] or 0) + 1  
868 - end  
869 - elseif cfg.type == 33 then -- 获得指定类型道具多少个  
870 - if cfg.condition2 == param1 then  
871 - calTask[id] = (calTask[id] or 0) + (param2 or 0)  
872 - end  
873 - end  
874 - end  
875 - end  
876 - end  
877 - end  
878 - end  
879 - self:updateProperty({field = keyName, value = calTask, notNotify = notNotify})  
880 - --dump(calTask) 824 + self:checkActTask(notNotify, keyName, actData, mainType, subType, param1, param2)
881 end 825 end
882 826
883 end 827 end
@@ -2,5 +2,5 @@ @@ -2,5 +2,5 @@
2 local skynet = require "skynet" 2 local skynet = require "skynet"
3 3
4 skynet.timex = function () 4 skynet.timex = function ()
5 - return math.floor(skynet.time()) 5 + return math.floor(skynet.time()) + 5 * DAY_SEC
6 end 6 end
7 \ No newline at end of file 7 \ No newline at end of file