Commit e0bc1298540c74f04d6ebd856b4f606d6b8aa0c6

Authored by zhouhaihai
2 parents 66e696ae 4bd10b43

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
@@ -323,6 +323,7 @@ MailId = { @@ -323,6 +323,7 @@ MailId = {
323 PaySignAward = 241, 323 PaySignAward = 241,
324 PayBackAward = 242, 324 PayBackAward = 242,
325 CBBackAward = 243, 325 CBBackAward = 243,
  326 + CBBackAward2 = 244,
326 } 327 }
327 328
328 TriggerEventType = { 329 TriggerEventType = {
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
@@ -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")