Commit 190e14152f99bb754b251f25e9dc7eace017de5f
1 parent
ffa0e259
英雄帖活动初始化
Showing
7 changed files
with
87 additions
and
4 deletions
 
Show diff stats
src/ProtocolCode.lua
| @@ -208,6 +208,7 @@ actionCodes = { | @@ -208,6 +208,7 @@ actionCodes = { | ||
| 208 | Activity_sudokuRewardRpc = 652, | 208 | Activity_sudokuRewardRpc = 652, | 
| 209 | Activity_actSignRpc = 653, | 209 | Activity_actSignRpc = 653, | 
| 210 | Activity_actPaySignRewardNtf = 654, | 210 | Activity_actPaySignRewardNtf = 654, | 
| 211 | + Activity_actCalendaTaskRpc = 655, | ||
| 211 | } | 212 | } | 
| 212 | 213 | ||
| 213 | rpcResponseBegin = 10000 | 214 | rpcResponseBegin = 10000 | 
src/actions/ActivityAction.lua
| @@ -221,4 +221,39 @@ function _M.actPaySignRpc(agent, data) | @@ -221,4 +221,39 @@ function _M.actPaySignRpc(agent, data) | ||
| 221 | return true | 221 | return true | 
| 222 | end | 222 | end | 
| 223 | 223 | ||
| 224 | +function _M.actCalendaActRpc(agent, data) | ||
| 225 | + local role = agent.role | ||
| 226 | + local msg = MsgPack.unpack(data) | ||
| 227 | + local taskId = msg.id | ||
| 228 | + local calTask = role:getProperty("CalTask") | ||
| 229 | + local record = calTask["r"] or {} | ||
| 230 | + local flag = record[taskId] or 0 | ||
| 231 | + if flag == 1 then return 1 end | ||
| 232 | + local open, actId = role.activity:isOpen("CalendaTask") | ||
| 233 | + local actData = csvdb["activity_ctrlCsv"][actId] | ||
| 234 | + if not open then return 2 end | ||
| 235 | + if not actData then return 3 end | ||
| 236 | + | ||
| 237 | + local taskCfg = csvdb["activity_taskCsv"][taskId] | ||
| 238 | + if not taskCfg then return 4 end | ||
| 239 | + if taskCfg.key ~= actData.condition then return 5 end | ||
| 240 | + | ||
| 241 | + if (calTask[taskId] or 0) < taskCfg.condition1 then return 6 end | ||
| 242 | + | ||
| 243 | + record[taskId] = 1 | ||
| 244 | + calTask["r"] = record | ||
| 245 | + | ||
| 246 | + role:updateProperty({field = "CalTask", value = calTask}) | ||
| 247 | + | ||
| 248 | + local reward, change = role:award(taskCfg.reward, {log = {desc = "CalendaTask"}}) | ||
| 249 | + | ||
| 250 | + role:log("activity", { | ||
| 251 | + activity_id = taskId, -- 活动ID(或活动指定任务的ID) | ||
| 252 | + activity_type = role.activity.ActivityType.CalendaTask, -- 活动类型,见活动类型枚举表 | ||
| 253 | + activity_reward = reward, -- 活动奖励,json格式记录,{'itemid1':123,'itemid2':456,………...} | ||
| 254 | + }) | ||
| 255 | + | ||
| 256 | + SendPacket(actionCodes.Activity_actCalendaTaskRpc, MsgPack.pack(role:packReward(reward, change))) | ||
| 257 | +end | ||
| 258 | + | ||
| 224 | return _M | 259 | return _M | 
| 225 | \ No newline at end of file | 260 | \ No newline at end of file | 
src/actions/HangAction.lua
| @@ -354,7 +354,7 @@ function _M.getRewardRpc(agent , data) | @@ -354,7 +354,7 @@ function _M.getRewardRpc(agent , data) | ||
| 354 | hangInfo.itemTime = nowTime | 354 | hangInfo.itemTime = nowTime | 
| 355 | role:updateProperty({field = "hangBag", value = items}) | 355 | role:updateProperty({field = "hangBag", value = items}) | 
| 356 | role:updateProperty({field = "hangInfo", value = hangInfo}) | 356 | role:updateProperty({field = "hangInfo", value = hangInfo}) | 
| 357 | - role:checkTaskEnter("HangGet") | 357 | + role:checkTaskEnter("HangGet", {reward = reward}) | 
| 358 | if reward[ItemId.Gold] then | 358 | if reward[ItemId.Gold] then | 
| 359 | role:checkTaskEnter("HangGetGold", {count = reward[ItemId.Gold]}) | 359 | role:checkTaskEnter("HangGetGold", {count = reward[ItemId.Gold]}) | 
| 360 | end | 360 | end | 
src/actions/HeroAction.lua
| @@ -60,6 +60,8 @@ function _M.levelUpRpc( agent, data ) | @@ -60,6 +60,8 @@ function _M.levelUpRpc( agent, data ) | ||
| 60 | hero:mylog({desc = "levelUp", int1 = hero:getProperty("level")}) | 60 | hero:mylog({desc = "levelUp", int1 = hero:getProperty("level")}) | 
| 61 | 61 | ||
| 62 | role:checkTaskEnter("HeroLevelUp", {level = hero:getProperty("level")}) | 62 | role:checkTaskEnter("HeroLevelUp", {level = hero:getProperty("level")}) | 
| 63 | + | ||
| 64 | + role:checkTaskEnter("HeroLvlCollect", {}) | ||
| 63 | SendPacket(actionCodes.Hero_levelUpRpc, '') | 65 | SendPacket(actionCodes.Hero_levelUpRpc, '') | 
| 64 | return true | 66 | return true | 
| 65 | end | 67 | end | 
| @@ -128,6 +130,8 @@ function _M.wakeRpc(agent, data) | @@ -128,6 +130,8 @@ function _M.wakeRpc(agent, data) | ||
| 128 | }) | 130 | }) | 
| 129 | 131 | ||
| 130 | SendPacket(actionCodes.Hero_wakeRpc, '') | 132 | SendPacket(actionCodes.Hero_wakeRpc, '') | 
| 133 | + | ||
| 134 | + role:checkTaskEnter("HeroStarCollect", {}) | ||
| 131 | return true | 135 | return true | 
| 132 | end | 136 | end | 
| 133 | 137 | ||
| @@ -595,6 +599,8 @@ function _M.referRunesRpc(agent, data) | @@ -595,6 +599,8 @@ function _M.referRunesRpc(agent, data) | ||
| 595 | }) | 599 | }) | 
| 596 | end | 600 | end | 
| 597 | end | 601 | end | 
| 602 | + | ||
| 603 | + role:checkTaskEnter("RuneQualityCollect", {}) | ||
| 598 | 604 | ||
| 599 | SendPacket(actionCodes.Hero_referRunesRpc, "") | 605 | SendPacket(actionCodes.Hero_referRunesRpc, "") | 
| 600 | return true | 606 | return true | 
src/models/Activity.lua
| @@ -362,6 +362,37 @@ activityFunc[Activity.ActivityType.PayBack] = { | @@ -362,6 +362,37 @@ activityFunc[Activity.ActivityType.PayBack] = { | ||
| 362 | -- end, | 362 | -- end, | 
| 363 | } | 363 | } | 
| 364 | 364 | ||
| 365 | +-- 英雄帖 | ||
| 366 | +activityFunc[Activity.ActivityType.CalendaTask] = { | ||
| 367 | + ["init"] = function(self, actType, isCrossDay, notify) | ||
| 368 | + local calTask = self.owner:getProperty("CalTask") | ||
| 369 | + calTask = {} | ||
| 370 | + local role = self.owner | ||
| 371 | + local buildL = role.dinerData:getProperty("buildL") | ||
| 372 | + local curLevel = buildL:getv(1, 1) | ||
| 373 | + role:checkTaskEnter("DinerLevelUp", {level = curLevel}) | ||
| 374 | + | ||
| 375 | + role:checkTaskEnter("HeroLvlCollect", {}) | ||
| 376 | + role:checkTaskEnter("HeroQualityCollect", {}) | ||
| 377 | + | ||
| 378 | + local curPopular = role.dinerData:getProperty("popular") | ||
| 379 | + role:checkTaskEnter("DinerPopular", {count = curPopular}) | ||
| 380 | + | ||
| 381 | + local rLevel = role:getProperty("level") | ||
| 382 | + role:checkTaskEnter("RoleLevelUp", {level = rLevel}) | ||
| 383 | + | ||
| 384 | + local towerInfo = role:getProperty("towerInfo") | ||
| 385 | + role:checkTaskEnter("TowerPass", {level = towerInfo.l}) | ||
| 386 | + --"PvpWin" | ||
| 387 | + role:checkTaskEnter("HangPass", {}) | ||
| 388 | + role:checkTaskEnter("HeroStarCollect", {}) | ||
| 389 | + role:checkTaskEnter("RuneQualityCollect", {}) | ||
| 390 | + | ||
| 391 | + end, | ||
| 392 | + -- ["close"] = function(self, actType, notify) | ||
| 393 | + -- end, | ||
| 394 | +} | ||
| 395 | + | ||
| 365 | function Activity:initActivity(actId, isCrossDay, notify) | 396 | function Activity:initActivity(actId, isCrossDay, notify) | 
| 366 | local actData = csvdb["activity_ctrlCsv"][actId] | 397 | local actData = csvdb["activity_ctrlCsv"][actId] | 
| 367 | if not actData then return end | 398 | if not actData then return end | 
src/models/RolePlugin.lua
| @@ -451,6 +451,7 @@ function RolePlugin.bind(Role) | @@ -451,6 +451,7 @@ function RolePlugin.bind(Role) | ||
| 451 | newHero:saveBattleValue() | 451 | newHero:saveBattleValue() | 
| 452 | self.heros[heroId] = newHero | 452 | self.heros[heroId] = newHero | 
| 453 | self:checkTaskEnter("AddHero", {heroType = heroType, wakeL = newHero:getProperty("wakeL"), camp = unitData.camp, job = unitData.job}, params.notNotify) | 453 | self:checkTaskEnter("AddHero", {heroType = heroType, wakeL = newHero:getProperty("wakeL"), camp = unitData.camp, job = unitData.job}, params.notNotify) | 
| 454 | + self:checkTaskEnter("HeroQualityCollect", {}) | ||
| 454 | if not params.notNotify then | 455 | if not params.notNotify then | 
| 455 | local heroResponse = {} | 456 | local heroResponse = {} | 
| 456 | table.insert(heroResponse, newHero:data()) | 457 | table.insert(heroResponse, newHero:data()) | 
src/models/RoleTask.lua
| @@ -253,7 +253,7 @@ local CalendaTaskListener = { | @@ -253,7 +253,7 @@ local CalendaTaskListener = { | ||
| 253 | [TaskType.RoleLevelUp]= {{12, 2, f("level")}}, | 253 | [TaskType.RoleLevelUp]= {{12, 2, f("level")}}, | 
| 254 | [TaskType.TowerPass]= {{13, 2, f("level")}}, | 254 | [TaskType.TowerPass]= {{13, 2, f("level")}}, | 
| 255 | [TaskType.HeroTalent]= {{14, 1}}, | 255 | [TaskType.HeroTalent]= {{14, 1}}, | 
| 256 | - [TaskType.HangPass]= {{15, 2, f("id")}}, | 256 | + [TaskType.HangPass]= {{15, 3}}, | 
| 257 | [TaskType.HeroStarCollect]= {{16, 3}}, | 257 | [TaskType.HeroStarCollect]= {{16, 3}}, | 
| 258 | [TaskType.FoodSell]= {{17, 1, f("count")}}, | 258 | [TaskType.FoodSell]= {{17, 1, f("count")}}, | 
| 259 | [TaskType.HangGet]= {{18, 3, f("reward")}}, | 259 | [TaskType.HangGet]= {{18, 3, f("reward")}}, | 
| @@ -586,7 +586,8 @@ function RoleTask.bind(Role) | @@ -586,7 +586,8 @@ function RoleTask.bind(Role) | ||
| 586 | end | 586 | end | 
| 587 | 587 | ||
| 588 | function Role:checkCalendaTask(notNotify, mainType, subType, param1, param2) | 588 | function Role:checkCalendaTask(notNotify, mainType, subType, param1, param2) | 
| 589 | - print("check calenda taskl", mainType, subType, param1, param2) | 589 | + --print("check calenda taskl", mainType, subType, param1, param2) | 
| 590 | + if not self.activity then return end | ||
| 590 | local open, actId = self.activity:isOpen("CalendaTask") | 591 | local open, actId = self.activity:isOpen("CalendaTask") | 
| 591 | local actData = csvdb["activity_ctrlCsv"][actId] | 592 | local actData = csvdb["activity_ctrlCsv"][actId] | 
| 592 | if not actData then return end | 593 | if not actData then return end | 
| @@ -672,6 +673,14 @@ function RoleTask.bind(Role) | @@ -672,6 +673,14 @@ function RoleTask.bind(Role) | ||
| 672 | if cfg.condition2 <= (param2 or 0) then | 673 | if cfg.condition2 <= (param2 or 0) then | 
| 673 | calTask[id] = (calTask[id] or 0) + param2 | 674 | calTask[id] = (calTask[id] or 0) + param2 | 
| 674 | end | 675 | end | 
| 676 | + elseif cfg.type == 15 then -- 通关关卡 | ||
| 677 | + if (calTask[id] or 0) == 0 then | ||
| 678 | + local hangPass = self:getProperty("hangPass") | ||
| 679 | + local diff = math.floor(cfg.condition2 / 10000) | ||
| 680 | + if (hangPass[diff] or 0) >= cfg.condition1 then | ||
| 681 | + calTask[id] = 1 | ||
| 682 | + end | ||
| 683 | + end | ||
| 675 | end | 684 | end | 
| 676 | end | 685 | end | 
| 677 | end | 686 | end | 
| @@ -679,7 +688,7 @@ function RoleTask.bind(Role) | @@ -679,7 +688,7 @@ function RoleTask.bind(Role) | ||
| 679 | end | 688 | end | 
| 680 | end | 689 | end | 
| 681 | self:updateProperty({field = "calTask", value = calTask, notNotify = notNotify}) | 690 | self:updateProperty({field = "calTask", value = calTask, notNotify = notNotify}) | 
| 682 | - dump(calTask) | 691 | + --dump(calTask) | 
| 683 | end | 692 | end | 
| 684 | 693 | ||
| 685 | end | 694 | end | 
- 
mentioned in commit 52f8c5f05d0a531232a7dd7887becd2a77986aa1
 - 
mentioned in commit 52f8c5f05d0a531232a7dd7887becd2a77986aa1
 - 
mentioned in commit ba6d85edc65900830c7e168102d70671881b5808
 - 
mentioned in commit ba6d85edc65900830c7e168102d70671881b5808