Commit b92a81c928e32c2b5615987960a60d6178e1e7bb
1 parent
a29d8377
CB2限时礼包
Showing
5 changed files
with
60 additions
and
33 deletions
 
Show diff stats
src/GlobalVar.lua
| @@ -383,6 +383,11 @@ TriggerEventType = { | @@ -383,6 +383,11 @@ TriggerEventType = { | ||
| 383 | AfterTs = 7, -- 某时间以后 | 383 | AfterTs = 7, -- 某时间以后 | 
| 384 | DrawHeroCnt = 8, -- 每日抽卡次数 | 384 | DrawHeroCnt = 8, -- 每日抽卡次数 | 
| 385 | Appoint = 0, -- 触发指定id礼包 | 385 | Appoint = 0, -- 触发指定id礼包 | 
| 386 | + SignIn = 9, -- 签到 | ||
| 387 | + DrawHero = 10, -- 循环抽卡 | ||
| 388 | + FoodSell = 11, -- 循环卖菜 | ||
| 389 | + RuneUp = 12, -- 循环强化符文 | ||
| 390 | + CostDiamond = 13, -- 循环消耗钻石 | ||
| 386 | } | 391 | } | 
| 387 | 392 | ||
| 388 | DrawCardType = { | 393 | DrawCardType = { | 
src/actions/StoreAction.lua
| @@ -315,7 +315,7 @@ function _M.shopBuyRpc(agent , data) | @@ -315,7 +315,7 @@ function _M.shopBuyRpc(agent , data) | ||
| 315 | role.storeData:updateProperty({field = "buyR", value = buyRecord}) | 315 | role.storeData:updateProperty({field = "buyR", value = buyRecord}) | 
| 316 | limitStr = string.format("%s/%s", buyRecord[id], dataSet.limit) | 316 | limitStr = string.format("%s/%s", buyRecord[id], dataSet.limit) | 
| 317 | end | 317 | end | 
| 318 | - role:costItems(cost, {log = {desc = desc, int1 = id, int2 = count, cint1= dataSet.shop}}) | 318 | + role:costItems(cost, {log = {desc = desc, int1 = id, int2 = count, long1= dataSet.shop}}) | 
| 319 | 319 | ||
| 320 | local gift = {} | 320 | local gift = {} | 
| 321 | for _id, _count in pairs(dataSet.gift:toNumMap()) do | 321 | for _id, _count in pairs(dataSet.gift:toNumMap()) do | 
src/models/RoleTask.lua
| @@ -272,6 +272,11 @@ local StoreListener = { | @@ -272,6 +272,11 @@ local StoreListener = { | ||
| 272 | [TaskType.AddHero] = {{TriggerEventType.AddNewHero, f("heroType")}, {TriggerEventType.SSRCount, f("ssrCount")}}, | 272 | [TaskType.AddHero] = {{TriggerEventType.AddNewHero, f("heroType")}, {TriggerEventType.SSRCount, f("ssrCount")}}, | 
| 273 | [TaskType.DrawHeroLimitPack] = {{TriggerEventType.DrawHeroCnt, f("count")}}, | 273 | [TaskType.DrawHeroLimitPack] = {{TriggerEventType.DrawHeroCnt, f("count")}}, | 
| 274 | [TaskType.Appoint] = {{TriggerEventType.Appoint, f("id")}}, | 274 | [TaskType.Appoint] = {{TriggerEventType.Appoint, f("id")}}, | 
| 275 | + [TaskType.SignIn] = {{TriggerEventType.SignIn, 1}}, | ||
| 276 | + [TaskType.DrawHero] = {{TriggerEventType.DrawHero, f("count")}}, | ||
| 277 | + [TaskType.FoodSell]= {{TriggerEventType.FoodSell, f("count")}}, | ||
| 278 | + [TaskType.RuneUp] = {{TriggerEventType.RuneUp, 1}}, | ||
| 279 | + [TaskType.CostDiamond] = {{TriggerEventType.CostDiamond, f("count")}}, | ||
| 275 | } | 280 | } | 
| 276 | } | 281 | } | 
| 277 | 282 | 
src/models/Store.lua
| @@ -55,6 +55,7 @@ Store.schema = { | @@ -55,6 +55,7 @@ Store.schema = { | ||
| 55 | 55 | ||
| 56 | dailyShop = {"table", {}}, | 56 | dailyShop = {"table", {}}, | 
| 57 | weekShop = {"table", {}}, | 57 | weekShop = {"table", {}}, | 
| 58 | + dayLimitInfo = {"table", {}}, -- {[id]={count=0, trigger=0}} | ||
| 58 | } | 59 | } | 
| 59 | 60 | ||
| 60 | function Store:updateProperty(params) | 61 | function Store:updateProperty(params) | 
| @@ -80,6 +81,7 @@ function Store:onCrossDay() | @@ -80,6 +81,7 @@ function Store:onCrossDay() | ||
| 80 | --self:sendMonthCardEmail() | 81 | --self:sendMonthCardEmail() | 
| 81 | self:deleteExpireLimitGoods() | 82 | self:deleteExpireLimitGoods() | 
| 82 | --self:checkPaySignReward() | 83 | --self:checkPaySignReward() | 
| 84 | + self:resetDayLimitPackTriggerCount() | ||
| 83 | 85 | ||
| 84 | --刷新商店 | 86 | --刷新商店 | 
| 85 | self:flushDailyShop() | 87 | self:flushDailyShop() | 
| @@ -219,6 +221,15 @@ function Store:deleteExpireLimitGoods() | @@ -219,6 +221,15 @@ function Store:deleteExpireLimitGoods() | ||
| 219 | self:updateProperty({field = "limitTPack", value = limitGoodsList, notNotify = true}) | 221 | self:updateProperty({field = "limitTPack", value = limitGoodsList, notNotify = true}) | 
| 220 | end | 222 | end | 
| 221 | 223 | ||
| 224 | +-- 每日充值循环限时礼包的触发次数 | ||
| 225 | +function Store:resetDayLimitPackTriggerCount() | ||
| 226 | + local dayLimitInfo = self:getProperty("dayLimitInfo") | ||
| 227 | + for k, v in pairs(dayLimitInfo) do | ||
| 228 | + v['trigger'] = nil | ||
| 229 | + end | ||
| 230 | + self:updateProperty({field = "dayLimitInfo", value = dayLimitInfo, notNotify = true}) | ||
| 231 | +end | ||
| 232 | + | ||
| 222 | -- 发送月卡邮件 | 233 | -- 发送月卡邮件 | 
| 223 | function Store:sendMonthCardEmail() | 234 | function Store:sendMonthCardEmail() | 
| 224 | local timeNow = skynet.timex() | 235 | local timeNow = skynet.timex() | 
| @@ -591,41 +602,40 @@ function Store:OnTriggerLimitTimePack(eventType, param) | @@ -591,41 +602,40 @@ function Store:OnTriggerLimitTimePack(eventType, param) | ||
| 591 | local limitPack = self:getProperty("limitTPack") | 602 | local limitPack = self:getProperty("limitTPack") | 
| 592 | --local payRecord = self:getProperty("payR") | 603 | --local payRecord = self:getProperty("payR") | 
| 593 | local timeNow = skynet.timex() | 604 | local timeNow = skynet.timex() | 
| 594 | - --local find = false | ||
| 595 | - -- 有未过期的限时礼包不再推送 | ||
| 596 | - --for k, v in pairs(limitPack) do | ||
| 597 | - -- if v > timeNow and not payRecord[k] then | ||
| 598 | - -- find = true | ||
| 599 | - -- break | ||
| 600 | - -- end | ||
| 601 | - --end | ||
| 602 | - --if find == true then | ||
| 603 | - -- return | ||
| 604 | - --end | ||
| 605 | - --local hangPass = self.owner:getProperty("hangPass") | ||
| 606 | - --local triggerRecord = self:getProperty("packTrigger") | ||
| 607 | - --local result = {} | ||
| 608 | - --local maxDiff = 0 | ||
| 609 | - -- 取满足限时礼包关卡要求的对应数据 | ||
| 610 | - --for diff, maxCarbonId in pairs(hangPass) do | ||
| 611 | - -- for id, cfg in pairs(csvdb["shop_packCsv"]) do | ||
| 612 | - -- local range = cfg.showRange:toArray(true, "=") | ||
| 613 | - -- local beginRange = range[1] or 0 | ||
| 614 | - -- local endRange = range[2] or 0 | ||
| 615 | - -- if maxCarbonId > beginRange and maxCarbonId <= endRange and cfg.type == eventType then | ||
| 616 | - -- result[diff] = cfg | ||
| 617 | - -- maxDiff = math.max(maxDiff, diff) | ||
| 618 | - -- break | ||
| 619 | - -- end | ||
| 620 | - -- end | ||
| 621 | - --end | 605 | + | 
| 622 | local config = nil | 606 | local config = nil | 
| 623 | for id, cfg in pairs(csvdb["shop_packCsv"]) do | 607 | for id, cfg in pairs(csvdb["shop_packCsv"]) do | 
| 624 | - if cfg.type == eventType and cfg.condition == param then | 608 | + if cfg.type == eventType and (cfg.condition == param or cfg.isLoop ~= 0) then | 
| 625 | config = cfg | 609 | config = cfg | 
| 610 | + break | ||
| 626 | end | 611 | end | 
| 627 | end | 612 | end | 
| 628 | if config ~= nil then | 613 | if config ~= nil then | 
| 614 | + -- 每日循环弹窗 | ||
| 615 | + local typeMap = {[TriggerEventType.DrawHero] = 1, [TriggerEventType.FoodSell] = 1, [TriggerEventType.RuneUp] = 1, [TriggerEventType.CostDiamond] = 1} | ||
| 616 | + if typeMap[eventType] then | ||
| 617 | + local dayInfo = self:getProperty("dayLimitInfo") | ||
| 618 | + local info = dayInfo[eventType] or {} | ||
| 619 | + local count = (info["count"] or 0) + param | ||
| 620 | + local triggerCount = info["trigger"] or 0 | ||
| 621 | + local flag = nil | ||
| 622 | + if count >= config.condition then | ||
| 623 | + if triggerCount < config.triggerLimit then | ||
| 624 | + info["trigger"] = triggerCount + 1 | ||
| 625 | + info["count"] = 0 | ||
| 626 | + flag = true | ||
| 627 | + else | ||
| 628 | + info["count"] = config.condition - 1 | ||
| 629 | + end | ||
| 630 | + else | ||
| 631 | + info["count"] = count | ||
| 632 | + end | ||
| 633 | + dayInfo[eventType] = info | ||
| 634 | + self:updateProperty({field = "dayLimitInfo", value = dayInfo}) | ||
| 635 | + if not flag then | ||
| 636 | + return | ||
| 637 | + end | ||
| 638 | + end | ||
| 629 | local rechargeCfg = csvdb["shop_normalCsv"][config.packId] | 639 | local rechargeCfg = csvdb["shop_normalCsv"][config.packId] | 
| 630 | if rechargeCfg then | 640 | if rechargeCfg then | 
| 631 | limitPack[rechargeCfg.id] = {timeNow + rechargeCfg.time, config.id} | 641 | limitPack[rechargeCfg.id] = {timeNow + rechargeCfg.time, config.id} | 
| @@ -633,14 +643,21 @@ function Store:OnTriggerLimitTimePack(eventType, param) | @@ -633,14 +643,21 @@ function Store:OnTriggerLimitTimePack(eventType, param) | ||
| 633 | gift_id = rechargeCfg.id, --礼包ID | 643 | gift_id = rechargeCfg.id, --礼包ID | 
| 634 | gift_name = rechargeCfg.descId, --礼包名称 | 644 | gift_name = rechargeCfg.descId, --礼包名称 | 
| 635 | }) | 645 | }) | 
| 636 | - -- 每日抽卡限时礼包 触发重置 | ||
| 637 | - if eventType == TriggerEventType.DrawHeroCnt then | 646 | + if config.isLoop ~= 0 then | 
| 638 | local payR = self:getProperty("buyR") | 647 | local payR = self:getProperty("buyR") | 
| 639 | if payR[rechargeCfg.id] then | 648 | if payR[rechargeCfg.id] then | 
| 640 | payR[rechargeCfg.id] = nil | 649 | payR[rechargeCfg.id] = nil | 
| 641 | self:updateProperty({field = "buyR", value = payR}) | 650 | self:updateProperty({field = "buyR", value = payR}) | 
| 642 | end | 651 | end | 
| 643 | end | 652 | end | 
| 653 | + -- 每日抽卡限时礼包 触发重置 | ||
| 654 | + --if eventType == TriggerEventType.DrawHeroCnt then | ||
| 655 | + -- local payR = self:getProperty("buyR") | ||
| 656 | + -- if payR[rechargeCfg.id] then | ||
| 657 | + -- payR[rechargeCfg.id] = nil | ||
| 658 | + -- self:updateProperty({field = "buyR", value = payR}) | ||
| 659 | + -- end | ||
| 660 | + --end | ||
| 644 | self:updateProperty({field = "limitTPack", value = limitPack}) | 661 | self:updateProperty({field = "limitTPack", value = limitPack}) | 
| 645 | end | 662 | end | 
| 646 | end | 663 | end |