Commit e0bc1298540c74f04d6ebd856b4f606d6b8aa0c6
Merge branch 'bugfix' into develop
* bugfix: (22 commits) 拾荒失败也要触发成就引导 掉落活动配置最大掉落周期数 拆解周活动跨轮数据异常bug 道具开时钟箱,检查箱子够不够 增加电台任务日志完成类型 空的是nil appid 讨伐电台日志增加 开始结束 log 发现的bug bug 取消抽卡保底的保底次数默认值,因为有些卡池不需要保底 邮件 活动奖励bug cb 返利调整 世界boss 胜利才扣门票,扫荡根据之前的最大值给行动点 任务 付费签到规则改为按登录天数计算进度, 世界boss 解锁条件修改 活动卡池保底出指定英雄 拆解术式充能的时候领取道具,获得个数计算错误 ... # Conflicts: # src/actions/RadioAction.lua # src/csvdata
Showing
13 changed files
with
134 additions
and
58 deletions
Show diff stats
src/GlobalVar.lua
src/actions/ActivityAction.lua
@@ -192,13 +192,13 @@ function _M.actPaySignRpc(agent, data) | @@ -192,13 +192,13 @@ function _M.actPaySignRpc(agent, data) | ||
192 | local open, actId = role.activity:isOpen("PaySignIn") | 192 | local open, actId = role.activity:isOpen("PaySignIn") |
193 | if not open then return 2 end | 193 | if not open then return 2 end |
194 | 194 | ||
195 | - local diffDay = diffFromTs(ts) + 1 | 195 | + --local diffDay = diffFromTs(ts) + 1 |
196 | 196 | ||
197 | local curData = role.activity:getActData("PaySignIn") | 197 | local curData = role.activity:getActData("PaySignIn") |
198 | if not curData then return 3 end | 198 | if not curData then return 3 end |
199 | local reward, change = {} | 199 | local reward, change = {} |
200 | for day, csvData in ipairs(csvdb["pay_signInCsv"]) do | 200 | for day, csvData in ipairs(csvdb["pay_signInCsv"]) do |
201 | - if day <= diffDay and day == dayIndex then | 201 | + if day <= (curData[0] or 0) and day == dayIndex then |
202 | if not curData[day] then | 202 | if not curData[day] then |
203 | curData[day] = 1 | 203 | curData[day] = 1 |
204 | -- 奖励 | 204 | -- 奖励 |
@@ -378,6 +378,8 @@ function _M.hangDropRpc(agent, data) | @@ -378,6 +378,8 @@ function _M.hangDropRpc(agent, data) | ||
378 | local msg = MsgPack.unpack(data) | 378 | local msg = MsgPack.unpack(data) |
379 | local actid = msg.actid | 379 | local actid = msg.actid |
380 | if not role.activity:isOpenById(actid, "HangDrop") then return 1 end | 380 | if not role.activity:isOpenById(actid, "HangDrop") then return 1 end |
381 | + local actCtrlData = csvdb["activity_ctrlCsv"][actid] | ||
382 | + if not actCtrlData then return end | ||
381 | 383 | ||
382 | local actCfg = csvdb["activity_putCsv"][actid] | 384 | local actCfg = csvdb["activity_putCsv"][actid] |
383 | if not actCfg then return 2 end | 385 | if not actCfg then return 2 end |
@@ -410,7 +412,7 @@ function _M.hangDropRpc(agent, data) | @@ -410,7 +412,7 @@ function _M.hangDropRpc(agent, data) | ||
410 | return 4 | 412 | return 4 |
411 | end | 413 | end |
412 | local num = math.floor((timeNow - actData)/ period) | 414 | local num = math.floor((timeNow - actData)/ period) |
413 | - num = num > 8 and 8 or num | 415 | + num = num > actCtrlData.condition and actCtrlData.condition or num |
414 | if num == 0 then | 416 | if num == 0 then |
415 | return 5 | 417 | return 5 |
416 | end | 418 | end |
@@ -528,6 +530,10 @@ function _M.startBattleRpc(agent, data) | @@ -528,6 +530,10 @@ function _M.startBattleRpc(agent, data) | ||
528 | local reward, change = role:award(award, {log = {desc = "actBattle", int1 = actid, int2 = count or 0}}) | 530 | local reward, change = role:award(award, {log = {desc = "actBattle", int1 = actid, int2 = count or 0}}) |
529 | SendPacket(actionCodes.Activity_startBattleRpc, MsgPack.pack(role:packReward(reward, change))) | 531 | SendPacket(actionCodes.Activity_startBattleRpc, MsgPack.pack(role:packReward(reward, change))) |
530 | 532 | ||
533 | + if battleCfg.worldBoss_award ~= 0 and (bi["maxP"] or 0) > 0 then | ||
534 | + bi["bossP"] = (bi["bossP"] or 0) + bi["maxP"] | ||
535 | + end | ||
536 | + | ||
531 | bi["sum"] = bi["sum"] + bi["top"] | 537 | bi["sum"] = bi["sum"] + bi["top"] |
532 | actData["ticket"] = ticket - num | 538 | actData["ticket"] = ticket - num |
533 | actData[id] = bi | 539 | actData[id] = bi |
@@ -659,7 +665,7 @@ function _M.endBattleRpc(agent, data) | @@ -659,7 +665,7 @@ function _M.endBattleRpc(agent, data) | ||
659 | battleInfo["star"] = curStar | 665 | battleInfo["star"] = curStar |
660 | end | 666 | end |
661 | 667 | ||
662 | - if battleCfg.rank ~= 0 then | 668 | + if battleCfg.rank ~= 0 and isWin then |
663 | -- 消耗门票 | 669 | -- 消耗门票 |
664 | role.activity:getBattleTicket(actid) | 670 | role.activity:getBattleTicket(actid) |
665 | local num = battleCfg.type:toArray(true, "=")[3] | 671 | local num = battleCfg.type:toArray(true, "=")[3] |
@@ -678,8 +684,6 @@ function _M.endBattleRpc(agent, data) | @@ -678,8 +684,6 @@ function _M.endBattleRpc(agent, data) | ||
678 | role:updateRankCommon(RANK_TYPE.ActBattleBoss, rankVal) | 684 | role:updateRankCommon(RANK_TYPE.ActBattleBoss, rankVal) |
679 | end | 685 | end |
680 | end | 686 | end |
681 | - actData[id] = battleInfo | ||
682 | - role.activity:updateActData("ChallengeLevel", actData) | ||
683 | 687 | ||
684 | if (oldStarNum == 0 and newStarNum > 0) or battleCfg.rank ~= 0 then | 688 | if (oldStarNum == 0 and newStarNum > 0) or battleCfg.rank ~= 0 then |
685 | reward = battleCfg.item_clear:toNumMap() | 689 | reward = battleCfg.item_clear:toNumMap() |
@@ -708,7 +712,10 @@ function _M.endBattleRpc(agent, data) | @@ -708,7 +712,10 @@ function _M.endBattleRpc(agent, data) | ||
708 | 712 | ||
709 | if battleCfg.worldBoss_award ~= 0 and msg.point then | 713 | if battleCfg.worldBoss_award ~= 0 and msg.point then |
710 | battleInfo["bossP"] = (battleInfo["bossP"] or 0) + msg.point | 714 | battleInfo["bossP"] = (battleInfo["bossP"] or 0) + msg.point |
715 | + battleInfo["maxP"] = math.max(msg.point, (battleInfo["maxP"] or 0)) | ||
711 | end | 716 | end |
717 | + actData[id] = battleInfo | ||
718 | + role.activity:updateActData("ChallengeLevel", actData) | ||
712 | 719 | ||
713 | reward, change = role:award(reward, {log = {desc = "actBattle", int1 = actid, int2 = newStarNum}}) | 720 | reward, change = role:award(reward, {log = {desc = "actBattle", int1 = actid, int2 = newStarNum}}) |
714 | 721 | ||
@@ -837,6 +844,10 @@ function _M.bossRewardRpc(agent, data) | @@ -837,6 +844,10 @@ function _M.bossRewardRpc(agent, data) | ||
837 | if bossPoint < 1 then return 7 end | 844 | if bossPoint < 1 then return 7 end |
838 | 845 | ||
839 | local bossRecord = battleInfo["bossR"] or "" | 846 | local bossRecord = battleInfo["bossR"] or "" |
847 | + local r = string.char(string.getbit(bossRecord, index)) | ||
848 | + if r == "1" then | ||
849 | + return 9 | ||
850 | + end | ||
840 | local ok = false | 851 | local ok = false |
841 | if #preList == 0 then | 852 | if #preList == 0 then |
842 | ok = true | 853 | ok = true |
@@ -852,6 +863,7 @@ function _M.bossRewardRpc(agent, data) | @@ -852,6 +863,7 @@ function _M.bossRewardRpc(agent, data) | ||
852 | if not ok then return 8 end | 863 | if not ok then return 8 end |
853 | 864 | ||
854 | battleInfo["bossR"] = string.setbit(bossRecord, index) | 865 | battleInfo["bossR"] = string.setbit(bossRecord, index) |
866 | + battleInfo["bossP"] = bossPoint - 1 | ||
855 | actData[id] = battleInfo | 867 | actData[id] = battleInfo |
856 | role.activity:updateActData("ChallengeLevel", actData) | 868 | role.activity:updateActData("ChallengeLevel", actData) |
857 | 869 |
src/actions/HangAction.lua
@@ -560,10 +560,10 @@ function _M.startBonusBattleRpc(agent, data) | @@ -560,10 +560,10 @@ function _M.startBonusBattleRpc(agent, data) | ||
560 | end | 560 | end |
561 | 561 | ||
562 | if not bonusData then return 3 end | 562 | if not bonusData then return 3 end |
563 | - if not role:checkHangPass(bonusData.unlock) then return 4 end | 563 | + local bonusStar = role:getProperty("bonusStar") |
564 | 564 | ||
565 | + if bonusData.unlock ~= 0 and (not bonusStar[bonusData.unlock] or bonusStar[bonusData.unlock] == 0) then return 4 end | ||
565 | 566 | ||
566 | - local bonusStar = role:getProperty("bonusStar") | ||
567 | if bonusStar[id] and bonusStar[id] >= (1 << #bonusData.sweep_condition:toTableArray(true)) - 1 then | 567 | if bonusStar[id] and bonusStar[id] >= (1 << #bonusData.sweep_condition:toTableArray(true)) - 1 then |
568 | local bonusC = role.dailyData:getProperty("bonusC") | 568 | local bonusC = role.dailyData:getProperty("bonusC") |
569 | bonusC[bonusData.type] = bonusC[bonusData.type] or {c = 0, b = 0} | 569 | bonusC[bonusData.type] = bonusC[bonusData.type] or {c = 0, b = 0} |
src/actions/HeroAction.lua
@@ -724,6 +724,9 @@ function _M.drawHeroRpc(agent, data) | @@ -724,6 +724,9 @@ function _M.drawHeroRpc(agent, data) | ||
724 | subType = 1 | 724 | subType = 1 |
725 | if btype == 4 and role:getProperty("newerDraw") >= 10 then | 725 | if btype == 4 and role:getProperty("newerDraw") >= 10 then |
726 | subType = 2 | 726 | subType = 2 |
727 | + if(role:getProperty("newerDraw") >= 30) then | ||
728 | + return 30 | ||
729 | + end | ||
727 | end | 730 | end |
728 | end | 731 | end |
729 | 732 | ||
@@ -993,7 +996,7 @@ function _M.drawHeroRpc(agent, data) | @@ -993,7 +996,7 @@ function _M.drawHeroRpc(agent, data) | ||
993 | local even = repayHeroMaxCount % 2 | 996 | local even = repayHeroMaxCount % 2 |
994 | local id = 0 | 997 | local id = 0 |
995 | if even == 1 then | 998 | if even == 1 then |
996 | - id = math.randWeight(csvdb["build_giftCsv"], "pool_1") | 999 | + id = math.randWeight(csvdb["build_giftCsv"], "pool_"..feedbackId) |
997 | else | 1000 | else |
998 | local giftHeroSet = {} | 1001 | local giftHeroSet = {} |
999 | for gid, cfg in pairs(csvdb["build_giftCsv"]) do | 1002 | for gid, cfg in pairs(csvdb["build_giftCsv"]) do |
@@ -1006,7 +1009,7 @@ function _M.drawHeroRpc(agent, data) | @@ -1006,7 +1009,7 @@ function _M.drawHeroRpc(agent, data) | ||
1006 | end | 1009 | end |
1007 | end | 1010 | end |
1008 | if id == 0 then | 1011 | if id == 0 then |
1009 | - id = math.randWeight(csvdb["build_giftCsv"], "pool_1") | 1012 | + id = math.randWeight(csvdb["build_giftCsv"], "pool_"..feedbackId) |
1010 | end | 1013 | end |
1011 | 1014 | ||
1012 | local r,change = {} | 1015 | local r,change = {} |
src/actions/RadioAction.lua
@@ -102,6 +102,25 @@ function _M.startQuestRpc(agent, data) | @@ -102,6 +102,25 @@ function _M.startQuestRpc(agent, data) | ||
102 | role:updateProperty({field="radioTask", value=radioTask, notNotify=true}) | 102 | role:updateProperty({field="radioTask", value=radioTask, notNotify=true}) |
103 | 103 | ||
104 | SendPacket(actionCodes.Radio_startQuestRpc, MsgPack.pack({id=id, task=taskData})) | 104 | SendPacket(actionCodes.Radio_startQuestRpc, MsgPack.pack({id=id, task=taskData})) |
105 | + | ||
106 | + local herolist = {} | ||
107 | + for _, heroId in ipairs(heros) do | ||
108 | + local hero = role.heros[heroId] | ||
109 | + if hero then | ||
110 | + table.insert(herolist, hero:getProperty("type")) | ||
111 | + end | ||
112 | + end | ||
113 | + | ||
114 | + -- 讨伐行动 | ||
115 | + role:log("punitive_action", { | ||
116 | + mission_id = id, --关卡ID | ||
117 | + mission_herolist = herolist, -- 英雄ID,排序以玩家出战设置为准,示例:[111, 222, 333, 444, 555] | ||
118 | + mission_success_rate = 0, -- 大成功几率 | ||
119 | + mission_reward = {}, -- 获得奖励,建议使用json格式记录。示例:{ itemid1: 1, itemid2: 3, itemid3: 5} | ||
120 | + mission_result = 0, -- 战斗结果(0-无效,1-胜利,2-失败) | ||
121 | + mission_roundtime = 0, -- 完成耗时(秒) | ||
122 | + mission_cleartype = 1, -- 1-开始; 2-完成(领取奖励时) | ||
123 | + }) | ||
105 | return true | 124 | return true |
106 | end | 125 | end |
107 | 126 | ||
@@ -177,7 +196,8 @@ function _M.finishQuestRpc(agent, data) | @@ -177,7 +196,8 @@ function _M.finishQuestRpc(agent, data) | ||
177 | mission_success_rate = totalCoef, -- 大成功几率 | 196 | mission_success_rate = totalCoef, -- 大成功几率 |
178 | mission_reward = r, -- 获得奖励,建议使用json格式记录。示例:{ itemid1: 1, itemid2: 3, itemid3: 5} | 197 | mission_reward = r, -- 获得奖励,建议使用json格式记录。示例:{ itemid1: 1, itemid2: 3, itemid3: 5} |
179 | mission_result = 1, -- 战斗结果(0-无效,1-胜利,2-失败) | 198 | mission_result = 1, -- 战斗结果(0-无效,1-胜利,2-失败) |
180 | - mission_roundtime = config.time, -- 完成耗时(秒) | 199 | + mission_roundtime = config.time, -- 完成耗时(秒) |
200 | + mission_cleartype = 2, -- 1-开始; 2-完成(领取奖励时) | ||
181 | }) | 201 | }) |
182 | 202 | ||
183 | return true | 203 | return true |
src/actions/RoleAction.lua
@@ -385,12 +385,16 @@ function _M.createRpc(agent, data) | @@ -385,12 +385,16 @@ function _M.createRpc(agent, data) | ||
385 | if cbbackd then | 385 | if cbbackd then |
386 | local status, back = pcall(cluster.call, "center", cbbackd, "getCbBack", {uid = uid, id = roleId}) | 386 | local status, back = pcall(cluster.call, "center", cbbackd, "getCbBack", {uid = uid, id = roleId}) |
387 | if status then | 387 | if status then |
388 | - if back and next(back) then | 388 | + if back and next(back) and back.reward and next(back.reward) then |
389 | local reward = "" | 389 | local reward = "" |
390 | - for itemId, count in pairs(back) do | 390 | + for itemId, count in pairs(back.reward) do |
391 | reward = reward:setv(itemId, count) | 391 | reward = reward:setv(itemId, count) |
392 | end | 392 | end |
393 | - redisproxy:insertEmail({roleId = roleId, emailId = MailId.CBBackAward, createtime = skynet.timex(), attachments = reward}) | 393 | + if back.reward[70] then |
394 | + redisproxy:insertEmail({roleId = roleId, emailId = MailId.CBBackAward2, contentPms = {back.money}, createtime = skynet.timex(), attachments = reward}) | ||
395 | + else | ||
396 | + redisproxy:insertEmail({roleId = roleId, emailId = MailId.CBBackAward, contentPms = {back.money}, createtime = skynet.timex(), attachments = reward}) | ||
397 | + end | ||
394 | newRole:mylog("cbback", {key1 = uid, int2 = roleId}) | 398 | newRole:mylog("cbback", {key1 = uid, int2 = roleId}) |
395 | end | 399 | end |
396 | else | 400 | else |
@@ -607,6 +611,8 @@ function _M.openTimeBoxRpc(agent, data) | @@ -607,6 +611,8 @@ function _M.openTimeBoxRpc(agent, data) | ||
607 | local costKey = math.ceil((stopTime - nowTime) / (cost_pre[1] * 60)) * cost_pre[2] | 611 | local costKey = math.ceil((stopTime - nowTime) / (cost_pre[1] * 60)) * cost_pre[2] |
608 | if not role:checkItemEnough({[ItemId.Diamond] = costKey}) then return 5 end | 612 | if not role:checkItemEnough({[ItemId.Diamond] = costKey}) then return 5 end |
609 | role:costItems({[ItemId.Diamond] = costKey}, {log = {desc = "openTimeBox", int1 = slot}}) | 613 | role:costItems({[ItemId.Diamond] = costKey}, {log = {desc = "openTimeBox", int1 = slot}}) |
614 | + else | ||
615 | + stopTime = math.min(nowTime,time + globalCsv.box_productLine_time * 3600) | ||
610 | end | 616 | end |
611 | role:pushCancel({type = "box", slot = slot}) | 617 | role:pushCancel({type = "box", slot = slot}) |
612 | 618 | ||
@@ -634,6 +640,7 @@ function _M.openTimeBoxRpc(agent, data) | @@ -634,6 +640,7 @@ function _M.openTimeBoxRpc(agent, data) | ||
634 | end | 640 | end |
635 | 641 | ||
636 | if role:getItemCount(costId) < count then return 8 end | 642 | if role:getItemCount(costId) < count then return 8 end |
643 | + if not role:checkItemEnough(costs) then return 9 end | ||
637 | 644 | ||
638 | role:costItems({[costId] = count}, {log = {desc = "openTimeBox"}}) | 645 | role:costItems({[costId] = count}, {log = {desc = "openTimeBox"}}) |
639 | 646 |
src/adv/Adv.lua
@@ -847,10 +847,10 @@ function Adv:over(success, rewardRatio, overType) | @@ -847,10 +847,10 @@ function Adv:over(success, rewardRatio, overType) | ||
847 | red:hset(RANK_ADV_INFO, roleId, MsgPack.pack(curInfo)) | 847 | red:hset(RANK_ADV_INFO, roleId, MsgPack.pack(curInfo)) |
848 | end) | 848 | end) |
849 | end | 849 | end |
850 | - -- 通关的时候要把引导步骤设定到成就引导 | ||
851 | - if not self.owner:checkOverGuide(57) then | ||
852 | - self.owner:saveGuide(57,1,true) | ||
853 | - end | 850 | + end |
851 | + -- 通关的时候要把引导步骤设定到成就引导 | ||
852 | + if not self.owner:checkOverGuide(57) then | ||
853 | + self.owner:saveGuide(57,1,true) | ||
854 | end | 854 | end |
855 | self:clearAdvUnlockCache() | 855 | self:clearAdvUnlockCache() |
856 | 856 |
src/models/Activity.lua
@@ -61,7 +61,7 @@ Activity.schema = { | @@ -61,7 +61,7 @@ Activity.schema = { | ||
61 | actime = {"table", {}}, -- 最近检查某项活动的开始时间 {id = time} | 61 | actime = {"table", {}}, -- 最近检查某项活动的开始时间 {id = time} |
62 | round = {"table", {}}, -- 记录活动到了第几轮 {id = roundnum} | 62 | round = {"table", {}}, -- 记录活动到了第几轮 {id = roundnum} |
63 | act4 = {"table", {}}, -- {0 = day, 1= -1, 2 = -1} == 签到活动 | 63 | act4 = {"table", {}}, -- {0 = day, 1= -1, 2 = -1} == 签到活动 |
64 | - act6 = {"table", {}}, -- {1 = 1, 2 = 1} == 付费签到活动 | 64 | + act6 = {"table", {}}, -- {0 = day, 1 = 1, 2 = 1} == 付费签到活动 |
65 | act8 = {"number", 0}, -- 充值返利 | 65 | act8 = {"number", 0}, -- 充值返利 |
66 | 66 | ||
67 | act11 = {"table", {}}, -- {0 = 贩卖数量, 1=1, 2=1} 贩卖周活动 1表示领取过该档位的奖励 | 67 | act11 = {"table", {}}, -- {0 = 贩卖数量, 1=1, 2=1} 贩卖周活动 1表示领取过该档位的奖励 |
@@ -287,38 +287,56 @@ function Activity:checkWeeklyAct(actType, notify, count, pool) | @@ -287,38 +287,56 @@ function Activity:checkWeeklyAct(actType, notify, count, pool) | ||
287 | local totalCnt = 0 | 287 | local totalCnt = 0 |
288 | local finishCnt = 0 | 288 | local finishCnt = 0 |
289 | local maxCondition = 0 | 289 | local maxCondition = 0 |
290 | - for k, cfg in pairs(csvdb[info.table] or {}) do | ||
291 | - totalCnt = totalCnt + 1 | ||
292 | - if maxCondition < cfg.condition1 then | ||
293 | - maxCondition = cfg.condition1 | ||
294 | - end | ||
295 | - if not curData[cfg.id] and curData[0] >= cfg.condition1 then | ||
296 | - if info.mailId then | 290 | + local flag = true |
291 | + while flag do | ||
292 | + --print("tatal number :", curData[0]) | ||
293 | + for i = 1, #csvdb[info.table] do | ||
294 | + local cfg = csvdb[info.table][i] | ||
295 | + --for k, cfg in pairs(csvdb[info.table] or {}) do | ||
296 | + totalCnt = totalCnt + 1 | ||
297 | + if maxCondition < cfg.condition1 then | ||
298 | + maxCondition = cfg.condition1 | ||
299 | + end | ||
300 | + --print("cur condition", cfg.condition1) | ||
301 | + if curData[0] < cfg.condition1 then | ||
302 | + flag = false | ||
303 | + break | ||
304 | + end | ||
297 | 305 | ||
298 | - self.owner:log("activity", { | ||
299 | - activity_id = cfg.id, -- 活动ID(或活动指定任务的ID) | ||
300 | - activity_type = actType, -- 活动类型,见活动类型枚举表 | ||
301 | - activity_reward = cfg.reward:toNumMap(), -- 活动奖励,json格式记录,{'itemid1':123,'itemid2':456,………...} | ||
302 | - }) | 306 | + --print(curData[0], cfg.condition1) |
307 | + if not curData[cfg.id] and curData[0] >= cfg.condition1 then | ||
308 | + if info.mailId then | ||
303 | 309 | ||
304 | - self.owner:sendMail(info.mailId, nil, cfg.reward, {cfg.condition1}) | ||
305 | - curData[cfg.id] = 1 | 310 | + self.owner:log("activity", { |
311 | + activity_id = cfg.id, -- 活动ID(或活动指定任务的ID) | ||
312 | + activity_type = actType, -- 活动类型,见活动类型枚举表 | ||
313 | + activity_reward = cfg.reward:toNumMap(), -- 活动奖励,json格式记录,{'itemid1':123,'itemid2':456,………...} | ||
314 | + }) | ||
315 | + | ||
316 | + self.owner:sendMail(info.mailId, nil, cfg.reward, {cfg.condition1}) | ||
317 | + curData[cfg.id] = 1 | ||
318 | + end | ||
319 | + end | ||
320 | + if curData[cfg.id] then | ||
321 | + finishCnt = finishCnt + 1 | ||
306 | end | 322 | end |
307 | end | 323 | end |
308 | - if curData[cfg.id] then | ||
309 | - finishCnt = finishCnt + 1 | ||
310 | - end | ||
311 | - end | ||
312 | - if totalCnt == finishCnt then | ||
313 | - roundData[actType] = curRound + 1 | ||
314 | - for k,v in pairs(curData) do | ||
315 | - if k == 0 then | ||
316 | - curData[k] = curData[0] >= maxCondition and curData[0] - maxCondition or 0 | ||
317 | - else | ||
318 | - curData[k] = nil | 324 | + if totalCnt == finishCnt then |
325 | + roundData[actType] = (roundData[actType] or 0) + 1 | ||
326 | + for k,v in pairs(curData) do | ||
327 | + if k == 0 then | ||
328 | + curData[k] = curData[0] >= maxCondition and curData[0] - maxCondition or 0 | ||
329 | + else | ||
330 | + curData[k] = nil | ||
331 | + end | ||
332 | + end | ||
333 | + --print("cur round ".. roundData[actType], ctrlData.condition) | ||
334 | + if roundData[actType] >= ctrlData.condition then | ||
335 | + curData[0] = maxCondition | ||
336 | + flag = false | ||
319 | end | 337 | end |
338 | + self:updateProperty({field = "round", value = roundData, notNotify = not notify}) | ||
320 | end | 339 | end |
321 | - self:updateProperty({field = "round", value = roundData, notNotify = not notify}) | ||
322 | end | 340 | end |
323 | self:updateActData(actType, curData, not notify) | 341 | self:updateActData(actType, curData, not notify) |
324 | end | 342 | end |
@@ -396,6 +414,11 @@ activityFunc[Activity.ActivityType.PaySignIn] = { | @@ -396,6 +414,11 @@ activityFunc[Activity.ActivityType.PaySignIn] = { | ||
396 | ["init"] = function(self, actType, isCrossDay, notify) | 414 | ["init"] = function(self, actType, isCrossDay, notify) |
397 | self:updateActData(actType, {}, not notify) | 415 | self:updateActData(actType, {}, not notify) |
398 | end, | 416 | end, |
417 | + ["crossDay"] = function(self, actType, notify) | ||
418 | + local curData = self:getActData(actType) | ||
419 | + curData[0] = (curData[0] or 0) + 1 | ||
420 | + self:updateActData(actType, curData, not notify) | ||
421 | + end, | ||
399 | ["close"] = function(self, actType, notify) | 422 | ["close"] = function(self, actType, notify) |
400 | self.owner.storeData:SetActGoodsFlag("paySignIn", 0) | 423 | self.owner.storeData:SetActGoodsFlag("paySignIn", 0) |
401 | 424 | ||
@@ -807,7 +830,7 @@ activityFunc[Activity.ActivityType.Crisis] = { | @@ -807,7 +830,7 @@ activityFunc[Activity.ActivityType.Crisis] = { | ||
807 | local reward | 830 | local reward |
808 | if actSet.loop == 1 then | 831 | if actSet.loop == 1 then |
809 | local rcount = math.floor(status / actSet.condition1) | 832 | local rcount = math.floor(status / actSet.condition1) |
810 | - local reward = actSet.reward:toNumMap() | 833 | + reward = actSet.reward:toNumMap() |
811 | for itemId, itemC in pairs(reward) do | 834 | for itemId, itemC in pairs(reward) do |
812 | reward[itemId] = itemC * rcount | 835 | reward[itemId] = itemC * rcount |
813 | end | 836 | end |
@@ -816,6 +839,7 @@ activityFunc[Activity.ActivityType.Crisis] = { | @@ -816,6 +839,7 @@ activityFunc[Activity.ActivityType.Crisis] = { | ||
816 | reward = actSet.reward | 839 | reward = actSet.reward |
817 | status = -1 | 840 | status = -1 |
818 | end | 841 | end |
842 | + | ||
819 | self.owner:award(reward, {log = {desc = "activity_crisis"}, notNotify = not notify}) | 843 | self.owner:award(reward, {log = {desc = "activity_crisis"}, notNotify = not notify}) |
820 | end | 844 | end |
821 | actData.task[id] = status | 845 | actData.task[id] = status |
src/models/Email.lua
@@ -62,7 +62,11 @@ function Email:data() | @@ -62,7 +62,11 @@ function Email:data() | ||
62 | end | 62 | end |
63 | 63 | ||
64 | if attachments == "" and emailData.attachment ~= "" then | 64 | if attachments == "" and emailData.attachment ~= "" then |
65 | - attachments = emailData.attachment:format(table.unpack(rewardPms)) | 65 | + if next(rewardPms) then |
66 | + attachments = emailData.attachment:format(table.unpack(rewardPms)) | ||
67 | + else | ||
68 | + attachments = emailData.attachment | ||
69 | + end | ||
66 | end | 70 | end |
67 | end | 71 | end |
68 | 72 |
src/models/RoleLog.lua
@@ -508,11 +508,12 @@ local MethodType = { | @@ -508,11 +508,12 @@ local MethodType = { | ||
508 | }, | 508 | }, |
509 | punitive_action = { -- 讨伐行动 --TODO | 509 | punitive_action = { -- 讨伐行动 --TODO |
510 | mission_id = true, --关卡ID | 510 | mission_id = true, --关卡ID |
511 | - mission_herolist = true, -- 英雄ID,排序以玩家出战设置为准,示例:[111, 222, 333, 444, 555] | 511 | + mission_herolist = "json", -- 英雄ID,排序以玩家出战设置为准,示例:[111, 222, 333, 444, 555] |
512 | mission_success_rate = true, -- 大成功几率 | 512 | mission_success_rate = true, -- 大成功几率 |
513 | - mission_reward = true, -- 获得奖励,建议使用json格式记录。示例:{ itemid1: 1, itemid2: 3, itemid3: 5} | 513 | + mission_reward = "json", -- 获得奖励,建议使用json格式记录。示例:{ itemid1: 1, itemid2: 3, itemid3: 5} |
514 | mission_result = true, -- 战斗结果(0-无效,1-胜利,2-失败) | 514 | mission_result = true, -- 战斗结果(0-无效,1-胜利,2-失败) |
515 | mission_roundtime = true, -- 完成耗时(秒) | 515 | mission_roundtime = true, -- 完成耗时(秒) |
516 | + mission_cleartype = true, -- 1-开始; 2-完成(领取奖励时) | ||
516 | }, | 517 | }, |
517 | hero_talent = { --英雄精进(原英雄天赋升级) TODO | 518 | hero_talent = { --英雄精进(原英雄天赋升级) TODO |
518 | hero_id = true, --英雄ID | 519 | hero_id = true, --英雄ID |
src/models/RolePlugin.lua
@@ -390,13 +390,14 @@ function RolePlugin.bind(Role) | @@ -390,13 +390,14 @@ function RolePlugin.bind(Role) | ||
390 | if not self:costDiamond(pms) then | 390 | if not self:costDiamond(pms) then |
391 | return | 391 | return |
392 | end | 392 | end |
393 | - itemCountT[ItemId.Diamond] = nil | ||
394 | end | 393 | end |
395 | for itemId, count in pairs(itemCountT) do | 394 | for itemId, count in pairs(itemCountT) do |
396 | - pms.itemId = itemId | ||
397 | - pms.count = - count | ||
398 | - self:addItem(pms) | ||
399 | - self:itemDeltaEvent(pms) | 395 | + if itemId ~= ItemId.Diamond then |
396 | + pms.itemId = itemId | ||
397 | + pms.count = - count | ||
398 | + self:addItem(pms) | ||
399 | + self:itemDeltaEvent(pms) | ||
400 | + end | ||
400 | end | 401 | end |
401 | return true | 402 | return true |
402 | end | 403 | end |
@@ -1396,7 +1397,7 @@ function RolePlugin.bind(Role) | @@ -1396,7 +1397,7 @@ function RolePlugin.bind(Role) | ||
1396 | end | 1397 | end |
1397 | format.heros = heros | 1398 | format.heros = heros |
1398 | format.supports = team.supports or {} | 1399 | format.supports = team.supports or {} |
1399 | - format.tactics = team.tactics or {} | 1400 | + format.tactics = team.tactics or nil |
1400 | return format | 1401 | return format |
1401 | end | 1402 | end |
1402 | 1403 |
src/models/RoleTask.lua
@@ -154,7 +154,7 @@ local CommonListener = { | @@ -154,7 +154,7 @@ local CommonListener = { | ||
154 | [TaskType.AdvStartSelf] = {{24}}, | 154 | [TaskType.AdvStartSelf] = {{24}}, |
155 | [TaskType.ShopAll] = {{25, f("count")}}, | 155 | [TaskType.ShopAll] = {{25, f("count")}}, |
156 | [TaskType.RuneUp] = {{26}}, | 156 | [TaskType.RuneUp] = {{26}}, |
157 | - [TaskType.OpenBox] = {{27, 1, f("id")}}, | 157 | + [TaskType.OpenBox] = {{27, f("count"), f("id")}}, |
158 | [TaskType.AdvDraw] = {{28, f("count"), f("ptype")}}, | 158 | [TaskType.AdvDraw] = {{28, f("count"), f("ptype")}}, |
159 | [TaskType.PotionMake] = {{29, f("count"), f("id")}}, | 159 | [TaskType.PotionMake] = {{29, f("count"), f("id")}}, |
160 | } | 160 | } |
@@ -180,7 +180,7 @@ local AchievListener = { | @@ -180,7 +180,7 @@ local AchievListener = { | ||
180 | [TaskType.FoodSellGold] = {{15, f("count")}}, | 180 | [TaskType.FoodSellGold] = {{15, f("count")}}, |
181 | [TaskType.DinerPopular] = {{16, f("count")}}, | 181 | [TaskType.DinerPopular] = {{16, f("count")}}, |
182 | [TaskType.TowerPass] = {{17, f("level")}}, | 182 | [TaskType.TowerPass] = {{17, f("level")}}, |
183 | - [TaskType.OpenBox] = {{18}}, | 183 | + [TaskType.OpenBox] = {{18, f("count")}}, |
184 | [TaskType.DinerLevelUp] = {{19, f("level"), f("type")}}, | 184 | [TaskType.DinerLevelUp] = {{19, f("level"), f("type")}}, |
185 | [TaskType.DinerTalentUp] = {{20, 1, f("type")}}, | 185 | [TaskType.DinerTalentUp] = {{20, 1, f("type")}}, |
186 | [TaskType.HangGetGold] = {{21, f("count")}}, | 186 | [TaskType.HangGetGold] = {{21, f("count")}}, |
@@ -217,7 +217,7 @@ local SudokuListener = { | @@ -217,7 +217,7 @@ local SudokuListener = { | ||
217 | [TaskType.AdvDraw] = {{10, f("count")}}, | 217 | [TaskType.AdvDraw] = {{10, f("count")}}, |
218 | [TaskType.DinerLevelUp] = {{11, f("level"), f("type")}}, | 218 | [TaskType.DinerLevelUp] = {{11, f("level"), f("type")}}, |
219 | [TaskType.FoodSell] = {{12, f("count")}}, | 219 | [TaskType.FoodSell] = {{12, f("count")}}, |
220 | - [TaskType.OpenBox] = {{13, 1}}, | 220 | + [TaskType.OpenBox] = {{13, f("count")}}, |
221 | [TaskType.TowerPass] = {{14, f("level")}}, | 221 | [TaskType.TowerPass] = {{14, f("level")}}, |
222 | [TaskType.PvpWin] = {{15, 1}}, | 222 | [TaskType.PvpWin] = {{15, 1}}, |
223 | [TaskType.DinerTalentUp] = {{16, f("level"), f("type")}}, | 223 | [TaskType.DinerTalentUp] = {{16, f("level"), f("type")}}, |
src/models/Store.lua
@@ -392,6 +392,9 @@ function Store:onBuyPaySignCard(dur) | @@ -392,6 +392,9 @@ function Store:onBuyPaySignCard(dur) | ||
392 | curTs = getServerOpenTs() | 392 | curTs = getServerOpenTs() |
393 | 393 | ||
394 | self:SetActGoodsFlag("paySignIn", curTs) | 394 | self:SetActGoodsFlag("paySignIn", curTs) |
395 | + local actData = self.owner.activity:getActData("PaySignIn") | ||
396 | + actData[0] = 1 | ||
397 | + self.owner.activity:updateActData("PaySignIn", actData) | ||
395 | 398 | ||
396 | --local actGoodsFlag = self:getProperty("actGoodsFlag") or {} | 399 | --local actGoodsFlag = self:getProperty("actGoodsFlag") or {} |
397 | --local goodsIndex = GetActGoodsIndex("paySignIn") | 400 | --local goodsIndex = GetActGoodsIndex("paySignIn") |