Commit f60b89b10ed18dadfce852dbe69fefbb659ab093
1 parent
760ed660
奖励副本
Showing
12 changed files
with
160 additions
and
25 deletions
Show diff stats
src/ProtocolCode.lua
... | ... | @@ -76,8 +76,10 @@ actionCodes = { |
76 | 76 | Hang_roleFormatRpc = 255, |
77 | 77 | Hang_getRewardRpc = 256, |
78 | 78 | Hang_quickRpc = 257, |
79 | - -- Hang_getRewardItemRpc = 258, | |
80 | - -- Hang_getRewardCoinRpc = 259, | |
79 | + Hang_bonusFormatRpc = 258, | |
80 | + Hang_buyBonusCountRpc = 259, | |
81 | + Hang_startBonusBattleRpc = 260, | |
82 | + Hang_endBonusBattleRpc = 261, | |
81 | 83 | |
82 | 84 | Diner_updateProperty = 300, |
83 | 85 | Diner_addSellRpc = 301, | ... | ... |
src/actions/AdvAction.lua
... | ... | @@ -113,6 +113,7 @@ function _M.startAdvRpc( agent, data ) |
113 | 113 | |
114 | 114 | role:getAdvData():initByChapter(chapterId, layer) |
115 | 115 | role:checkTaskEnter("AdvStart", {id = chapterId}) |
116 | + role:checkTaskEnter("AdvStartSelf", {id = chapterId}) | |
116 | 117 | SendPacket(actionCodes.Adv_startAdvRpc, '') |
117 | 118 | return true |
118 | 119 | end | ... | ... |
src/actions/CarAction.lua
... | ... | @@ -87,7 +87,7 @@ function _M.equipUpRpc( agent, data ) |
87 | 87 | role:costItems(cost) |
88 | 88 | role:addEquip(typ, lv, -costCount) |
89 | 89 | role:addEquip(typ, nextLv ,count) |
90 | - role:checkTaskEnter("EquipUp", {}) | |
90 | + role:checkTaskEnter("EquipUp", {count = count}) | |
91 | 91 | SendPacket(actionCodes.Car_equipUpRpc, '') |
92 | 92 | return true |
93 | 93 | end | ... | ... |
src/actions/DinerAction.lua
... | ... | @@ -221,6 +221,9 @@ function _M.expediteSellRpc( agent, data ) |
221 | 221 | role.dinerData:notifyUpdateProperty("expedite", count+1) |
222 | 222 | for k, v in pairs(reward:toNumMap()) do |
223 | 223 | role:addItem({itemId = k,count = v}) |
224 | + if k == ItemId.Gold then | |
225 | + role:checkTaskEnter("FoodSellGold", {count = v}) | |
226 | + end | |
224 | 227 | end |
225 | 228 | |
226 | 229 | role.dinerData:popularAdd(popular) | ... | ... |
src/actions/GmAction.lua
... | ... | @@ -245,6 +245,14 @@ function _M.advt(role, pms) |
245 | 245 | return "成功" |
246 | 246 | end |
247 | 247 | |
248 | +table.insert(helpDes, {"冒险队等级增加", "advl", "通关次数"}) | |
249 | +function _M.advl(role, pms) | |
250 | + local winCount = tonum(pms.pm1) | |
251 | + winCount = math.max(0, winCount) | |
252 | + role:checkAdvLvByAddWin(winCount) | |
253 | + return "成功" | |
254 | +end | |
255 | + | |
248 | 256 | table.insert(helpDes, {"挂机清除" , "idlec"}) |
249 | 257 | function _M.idlec(role, pms) |
250 | 258 | role:updateProperty({field = "hangTeam", value = {}}) | ... | ... |
src/actions/HangAction.lua
... | ... | @@ -69,12 +69,12 @@ function _M.startRpc( agent, data ) |
69 | 69 | local msg = MsgPack.unpack(data) |
70 | 70 | local carbonId = msg.carbonId |
71 | 71 | local carbonData = csvdb["idle_battleCsv"][carbonId] |
72 | - if not carbonData then return end | |
72 | + if not carbonData then return 1 end | |
73 | 73 | |
74 | 74 | local hangPass = role:getProperty("hangPass") |
75 | 75 | |
76 | 76 | for _, preCarbonId in ipairs(carbonData.prepose:toArray(true, "=")) do |
77 | - if not hangPass[preCarbonId] then return end | |
77 | + if not hangPass[preCarbonId] then return 2 end | |
78 | 78 | end |
79 | 79 | |
80 | 80 | if checkReward(role) then |
... | ... | @@ -333,6 +333,9 @@ function _M.quickRpc(agent , data) |
333 | 333 | end |
334 | 334 | |
335 | 335 | reward = role:award(reward) |
336 | + if reward[ItemId.Gold] then | |
337 | + role:checkTaskEnter("HangGetGold", {count = reward[ItemId.Gold]}) | |
338 | + end | |
336 | 339 | role:checkTaskEnter("HangQuick") |
337 | 340 | SendPacket(actionCodes.Hang_quickRpc, MsgPack.pack({ |
338 | 341 | reward = reward |
... | ... | @@ -340,4 +343,103 @@ function _M.quickRpc(agent , data) |
340 | 343 | return true |
341 | 344 | end |
342 | 345 | |
346 | +function _M.bonusFormatRpc(agent , data) | |
347 | + local role = agent.role | |
348 | + local msg = MsgPack.unpack(data) | |
349 | + local bTeam = role:getProperty("bTeam") | |
350 | + for slot, heroId in pairs(msg.heros) do | |
351 | + if not role.heros[heroId] then | |
352 | + return | |
353 | + end | |
354 | + end | |
355 | + table.clear(bTeam) | |
356 | + bTeam.heros = {} | |
357 | + for slot, heroId in pairs(msg.heros) do | |
358 | + bTeam.heros[slot] = heroId | |
359 | + end | |
360 | + bTeam.leader = msg.leader | |
361 | + | |
362 | + role:updateProperty({field = "bTeam", value = bTeam}) | |
363 | + SendPacket(actionCodes.Hang_bonusFormatRpc, '') | |
364 | + return true | |
365 | +end | |
366 | + | |
367 | +function _M.buyBonusCountRpc(agent, data) | |
368 | + local role = agent.role | |
369 | + local msg = MsgPack.unpack(data) | |
370 | + | |
371 | + local count = msg.count | |
372 | + local btype = msg.type | |
373 | + | |
374 | + if math.illegalNum(btype, 1, 2) then return 0 end | |
375 | + | |
376 | + local bonusC = role.dailyData:getProperty("bonusC") | |
377 | + bonusC[btype] = bonusC[btype] or {c = 0, b = 0} | |
378 | + local lastCount = globalCsv.bonus_daily_buy_count - bonusC[btype]["b"] | |
379 | + if math.illegalNum(count, 1, lastCount) then return 1 end | |
380 | + | |
381 | + if not role:checkItemEnough({[ItemId.Diamond] = globalCsv.bonus_buy_cost * count}) then return end | |
382 | + | |
383 | + role:costItems({[ItemId.Diamond] = globalCsv.bonus_buy_cost * count}) | |
384 | + bonusC[btype]["b"] = bonusC[btype]["b"] + 1 | |
385 | + bonusC[btype]["c"] = bonusC[btype]["c"] - 1 | |
386 | + | |
387 | + role.dailyData:updateProperty({field = "bonusC", value = bonusC}) | |
388 | + | |
389 | + SendPacket(actionCodes.Hang_buyBonusCountRpc, '') | |
390 | + return true | |
391 | +end | |
392 | + | |
393 | +function _M.startBonusBattleRpc(agent, data) | |
394 | + local role = agent.role | |
395 | + local msg = MsgPack.unpack(data) | |
396 | + local id = msg.id | |
397 | + | |
398 | + local bonusData = csvdb["bonus_battleCsv"][id] | |
399 | + if not bonusData then return 1 end | |
400 | + local hangPass = role:getProperty("hangPass") | |
401 | + if not hangPass[bonusData.unlock] then return 2 end | |
402 | + | |
403 | + if not next(role:getProperty("bTeam")) then return 3 end | |
404 | + | |
405 | + local bonusC = role.dailyData:getProperty("bonusC") | |
406 | + bonusC[bonusData.type] = bonusC[bonusData.type] or {c = 0, b = 0} | |
407 | + if globalCsv.bonus_daily_count - bonusC[bonusData.type]["c"] <= 0 then return 4 end | |
408 | + bonusC[bonusData.type]["c"] = bonusC[bonusData.type]["c"] + 1 | |
409 | + role.dailyData:updateProperty({field = "bonusC", value = bonusC}) | |
410 | + | |
411 | + | |
412 | + role.__bonusBattleCache = { | |
413 | + key = tostring(math.random()), | |
414 | + id = id, | |
415 | + } | |
416 | + SendPacket(actionCodes.Hang_startBonusBattleRpc, MsgPack.pack({key = role.__bonusBattleCache.key})) | |
417 | + return true | |
418 | +end | |
419 | + | |
420 | +function _M.endBonusBattleRpc(agent, data) | |
421 | + local role = agent.role | |
422 | + local msg = MsgPack.unpack(data) | |
423 | + local id = msg.id | |
424 | + local key = msg.key | |
425 | + local starNum = msg.starNum | |
426 | + if not role.__bonusBattleCache then return 1 end | |
427 | + | |
428 | + if role.__bonusBattleCache.id ~= id or role.__bonusBattleCache.key ~= key then return 2 end | |
429 | + local bonusData = csvdb["bonus_battleCsv"][id] | |
430 | + | |
431 | + local reward | |
432 | + if starNum and starNum > 0 then | |
433 | + reward = role:award(bonusData.reward) | |
434 | + role:checkTaskEnter("BonusPass", {id = id}) | |
435 | + end | |
436 | + | |
437 | + SendPacket(actionCodes.Hang_endBonusBattleRpc, MsgPack.pack({ | |
438 | + starNum = starNum, | |
439 | + reward = reward})) | |
440 | + return true | |
441 | +end | |
442 | + | |
443 | + | |
444 | + | |
343 | 445 | return _M |
344 | 446 | \ No newline at end of file | ... | ... |
src/actions/RoleAction.lua
... | ... | @@ -532,7 +532,7 @@ function _M.achiveRpc(agent, data) |
532 | 532 | local achiveT = role:getProperty("achiveT") |
533 | 533 | local achiveV = role:getProperty("achiveV") |
534 | 534 | |
535 | - if achiveV[taskId] == -1 then return end | |
535 | + if achiveV[taskId] then return end | |
536 | 536 | |
537 | 537 | local curStatus = achiveT[achiveTask.type] or 0 |
538 | 538 | local maxc = achiveTask.condition1 |
... | ... | @@ -544,7 +544,7 @@ function _M.achiveRpc(agent, data) |
544 | 544 | local reward = role:award(achiveTask.reward) |
545 | 545 | |
546 | 546 | role:changeUpdates({ |
547 | - { type = "achiveV", field = taskId, value = -1 } | |
547 | + { type = "achiveV", field = taskId, value = skynet.timex() } | |
548 | 548 | }) |
549 | 549 | |
550 | 550 | SendPacket(actionCodes.Role_achiveRpc, MsgPack.pack({reward = reward})) | ... | ... |
src/adv/Adv.lua
... | ... | @@ -174,20 +174,7 @@ function Adv:over(success, isAllPass) |
174 | 174 | end |
175 | 175 | |
176 | 176 | -- 冒险队等级升一下子 |
177 | - local advL = self.owner:getProperty("advL") | |
178 | - local oldL = advL[1] | |
179 | - advL[2] = (advL[2] or 0) + 1 | |
180 | - for level = ((advL[1] or 0) + 1), #csvdb["adv_rankCsv"] do | |
181 | - local ldata = csvdb["adv_rankCsv"][level] | |
182 | - if ldata.unlock <= advL[2] then | |
183 | - advL[1] = level | |
184 | - self.owner:award(ldata.reward) | |
185 | - end | |
186 | - end | |
187 | - if advL[1] > oldL then | |
188 | - self.owner:checkTaskEnter("AdvLevel", {level = advL[1]}) | |
189 | - end | |
190 | - self.owner:updateProperty("advL", advL) | |
177 | + self.owner:checkAdvLvByAddWin() | |
191 | 178 | |
192 | 179 | if self.owner:isFuncOpen(FuncOpenType.AdvWheelSurf) then |
193 | 180 | self.owner._advWheelSurfCount = 0 -- 抽奖进行次数 | ... | ... |
src/models/Daily.lua
... | ... | @@ -14,7 +14,8 @@ Daily.schema = { |
14 | 14 | advElC = {"number", 0}, -- 无尽次数(消耗体力) |
15 | 15 | advBC = {"number", 0}, -- 冒险次数购买次数(冒险体力购买次数) |
16 | 16 | advElBC = {"number", 0}, -- 无尽次数购买次数(冒险体力购买次数) |
17 | - advWs = {"table", {}}, -- 冒险队工坊 | |
17 | + advWs = {"table", {}}, -- 冒险队工坊 | |
18 | + bonusC = {"table", {}} -- 奖励副本 次数 {[type] = {c = 0, b = 0}} | |
18 | 19 | } |
19 | 20 | |
20 | 21 | function Daily:updateProperty(params) |
... | ... | @@ -54,6 +55,7 @@ function Daily:data() |
54 | 55 | advElC = self:getProperty("advElC"), |
55 | 56 | advElBC = self:getProperty("advElBC"), |
56 | 57 | advWs = self:getProperty("advWs"), |
58 | + bonusC = self:getProperty("bonusC"), | |
57 | 59 | } |
58 | 60 | end |
59 | 61 | ... | ... |
src/models/Role.lua
... | ... | @@ -63,6 +63,7 @@ Role.schema = { |
63 | 63 | hangInfo = {"table", {}}, -- 当前挂机信息 |
64 | 64 | hangBag = {"table", {}}, -- 背包 |
65 | 65 | hangBagLimit = {"number", globalCsv.idle_field_origin}, --背包上限 |
66 | + bTeam = {"table", {}}, -- 奖励副本队伍 | |
66 | 67 | |
67 | 68 | potionBag = {"table", {}}, -- 营养剂背包 |
68 | 69 | |
... | ... | @@ -211,6 +212,7 @@ function Role:data() |
211 | 212 | hangInfo = self:getProperty("hangInfo"), |
212 | 213 | hangBag = self:getProperty("hangBag"), |
213 | 214 | hangBagLimit = self:getProperty("hangBagLimit"), |
215 | + bTeam = self:getProperty("bTeam"), | |
214 | 216 | |
215 | 217 | potionBag = self:getProperty("potionBag"), |
216 | 218 | storyB = self:getProperty("storyB"), | ... | ... |
src/models/RolePlugin.lua
... | ... | @@ -793,6 +793,24 @@ function RolePlugin.bind(Role) |
793 | 793 | return player.format |
794 | 794 | end |
795 | 795 | end |
796 | + | |
797 | + function Role:checkAdvLvByAddWin(winCount) | |
798 | + winCount = winCount or 1 | |
799 | + local advL = self:getProperty("advL") | |
800 | + local oldL = advL[1] | |
801 | + advL[2] = (advL[2] or 0) + winCount | |
802 | + for level = ((advL[1] or 0) + 1), #csvdb["adv_rankCsv"] do | |
803 | + local ldata = csvdb["adv_rankCsv"][level] | |
804 | + if ldata.unlock <= advL[2] then | |
805 | + advL[1] = level | |
806 | + self:award(ldata.reward) | |
807 | + end | |
808 | + end | |
809 | + if advL[1] > oldL then | |
810 | + self:checkTaskEnter("AdvLevel", {level = advL[1]}) | |
811 | + end | |
812 | + self:updateProperty({field = "advL", value = advL}) | |
813 | + end | |
796 | 814 | end |
797 | 815 | |
798 | 816 | return RolePlugin |
799 | 817 | \ No newline at end of file | ... | ... |
src/models/RoleTask.lua
... | ... | @@ -16,7 +16,7 @@ local TaskType = { |
16 | 16 | --装备相关 |
17 | 17 | AddEquip = 101, -- 获得装备 - equipId rarity |
18 | 18 | SaleEquip = 102, -- 出售装备 - count |
19 | - EquipUp = 103, -- 装备强化 | |
19 | + EquipUp = 103, -- 装备强化 - count | |
20 | 20 | |
21 | 21 | -- 符文(零件)相关 |
22 | 22 | RuneUp = 201, -- 符文强化 |
... | ... | @@ -30,6 +30,7 @@ local TaskType = { |
30 | 30 | HangQuick = 303, -- 快速挂机 |
31 | 31 | HangBattle = 304, -- 挂机战斗 - id |
32 | 32 | HangGetGold = 305, -- 挂机获得齿轮 - count |
33 | + BonusPass = 306, -- 奖励副本通关 - id | |
33 | 34 | |
34 | 35 | -- 冒险相关 |
35 | 36 | AdvPass = 401, -- 冒险通过关 - id level score |
... | ... | @@ -40,6 +41,7 @@ local TaskType = { |
40 | 41 | AdvOverTask = 406, -- 完成任务 - id |
41 | 42 | AdvOpenBlock = 407, -- 打开地块 - id |
42 | 43 | AdvUsePotion = 408, -- 使用营养剂 |
44 | + AdvStartSelf = 409, -- 手动冒险 - id | |
43 | 45 | |
44 | 46 | --爬塔相关 |
45 | 47 | TowerPass = 501, -- 爬塔通关 - level |
... | ... | @@ -75,6 +77,9 @@ local TaskType = { |
75 | 77 | WeChat = 1009, -- 关注微信 |
76 | 78 | WeBlog = 1010, -- 关注微博 |
77 | 79 | SignIn = 1011, -- 签到 |
80 | + GetFriendP = 1012, -- 获得友情点 - count | |
81 | + ShopAll = 1013, -- 在任意商店购买 | |
82 | + | |
78 | 83 | } |
79 | 84 | |
80 | 85 | local function v(value) |
... | ... | @@ -119,9 +124,14 @@ local CommonListener = { |
119 | 124 | [TaskType.FoodMGet] = {{v(16)}}, |
120 | 125 | [TaskType.HeroLevelUp] = {{v(17)}}, |
121 | 126 | [TaskType.Wake] = {{v(18)}}, |
122 | - [TaskType.EquipUp] = {{v(19)}}, | |
127 | + [TaskType.EquipUp] = {{v(19), f("count")}}, | |
123 | 128 | [TaskType.GiveFriendP] = {{v(20)}}, |
124 | 129 | [TaskType.UnionBoss] = {{v(21)}}, |
130 | + [TaskType.GetFriendP] = {{v(22), f("count")}}, | |
131 | + [TaskType.BonusPass] = {{v(23)}}, | |
132 | + [TaskType.AdvStartSelf] = {{v(24)}}, | |
133 | + [TaskType.ShopAll] = {{v(25)}}, | |
134 | + [TaskType.RuneUp] = {{v(26)}}, | |
125 | 135 | } |
126 | 136 | } |
127 | 137 | |
... | ... | @@ -158,7 +168,7 @@ local AchievListener = { |
158 | 168 | [TaskType.DrawHero] = {{v(29), f("count"), f("pool")}}, |
159 | 169 | [TaskType.AddEquip] = {{v(30), f("rarity")}, {v(34), 1, f("rarity")}}, |
160 | 170 | [TaskType.AddRune] = {{v(31), f("rarity")}, {v(35), 1, f("rarity")}}, |
161 | - [TaskType.EquipUp] = {{v(32)}}, | |
171 | + [TaskType.EquipUp] = {{v(32), f("count")}}, | |
162 | 172 | [TaskType.RuneUp] = {{v(33)}}, |
163 | 173 | [TaskType.AddUnion] = {{v(36)}}, |
164 | 174 | [TaskType.AddFriend] = {{v(37), f("count")}}, | ... | ... |