KfActivityModel = KfActivityModel or BaseClass(BaseVo, true) local KfActivityModel = KfActivityModel KfActivityModel.REQUEST_INFO = "KfActivityModel.REQUEST_INFO" KfActivityModel.OPEN_ACTIVITY_BASE_VIEW = "KfActivityModel.OPEN_ACTIVITY_BASE_VIEW"--打开主界面 KfActivityModel.UPDATE_ACTIVITY_BASE_VIEW = "KfActivityModel.UPDATE_ACTIVITY_BASE_VIEW"--更新主界面 KfActivityModel.OPEN_RANK_SHOW_VIEW = "KfActivityModel.OPEN_RANK_SHOW_VIEW"--打开往期排行 KfActivityModel.OPEN_RANK_RE_CB_VIEW = "KfActivityModel.OPEN_RANK_RE_CB_VIEW"--冲榜升级变强途径 KfActivityModel.REQUEST_INFO = "KfActivityModel.REQUEST_INFO"--请求协议 KfActivityModel.ANS_UPDATE_VIEW = "KfActivityModel.ANS_UPDATE_VIEW"--更新界面 KfActivityModel.UPDATE_ZERO_GIFT_VIEW = "KfActivityModel.UPDATE_ZERO_GIFT_VIEW"--更新0元礼包界面 KfActivityModel.UPDATE_GROUP_BUYING_VIEW = "KfActivityModel.UPDATE_GROUP_BUYING_VIEW"--更新开服团购界面 KfActivityModel.OPEN_GROUP_BUYING_SHARE_VIEW = "KfActivityModel.OPEN_GROUP_BUYING_SHARE_VIEW"--打开团购分享界面 KfActivityModel.MONOPOLY_DICE_ACTION_START = "KfActivityModel.MONOPOLY_DICE_ACTION_START"--开始大富翁骰子动画 KfActivityModel.MONOPOLY_DICE_ACTION_STOP = "KfActivityModel.MONOPOLY_DICE_ACTION_STOP"--停止大富翁骰子动画 KfActivityModel.UPDATE_LIMIT_SECKILL_INFO ="KfActivityModel.UPDATE_LIMIT_SECKILL_INFO" -- 更新秒杀数据 KfActivityModel.UPDATE_LIMIT_SECKILL_ROUND_INFO ="KfActivityModel.UPDATE_LIMIT_SECKILL_ROUND_INFO" -- 更新秒杀场次数据 KfActivityModel.OPEN_LIMIT_SECKILL_BUY_VIEW ="KfActivityModel.OPEN_LIMIT_SECKILL_BUY_VIEW" -- 打开限时秒杀购买界面 KfActivityModel.LIMIT_SECKILL_BUY_SUCCESS ="KfActivityModel.LIMIT_SECKILL_BUY_SUCCESS" -- 抢购成功 KfActivityModel.OPEN_SCRAOING_CARD_TIPS_VIEW_VIEW ="KfActivityModel.OPEN_SCRAOING_CARD_TIPS_VIEW_VIEW" -- 打开刮刮卡刮奖 KfActivityModel.UPDATE_HAPPY_RED_BAG_INFO ="KfActivityModel.UPDATE_HAPPY_RED_BAG_INFO" -- 更新惊喜红包数据 KfActivityModel.ANS_DRAW_HAPPY_RED_BAG ="KfActivityModel.ANS_DRAW_HAPPY_RED_BAG" -- 抽取惊喜红包 KfActivityModel.UPDATE_HAPPY_RED_BAG_HISTORY ="KfActivityModel.UPDATE_HAPPY_RED_BAG_HISTORY" -- 惊喜红包全服记录 KfActivityModel.ANS_DISCOUNT_FULL_CUT_INFO = "KfActivityModel.ANS_DISCOUNT_FULL_CUT_INFO" -- 折扣满减数据 KfActivityModel.ANS_DISCOUNT_FULL_CUT_HISTORY = "KfActivityModel.ANS_DISCOUNT_FULL_CUT_HISTORY" -- 折扣满减历史记录 KfActivityModel.OPEN_DISCOUNT_FULL_CUT_HISTORY = "KfActivityModel.OPEN_DISCOUNT_FULL_CUT_HISTORY" -- 折扣满减历史记录 KfActivityModel.OPEN_DISCOUNT_FULL_CUT_HISTORY_TIP = "KfActivityModel.OPEN_DISCOUNT_FULL_CUT_HISTORY_TIP" -- 折扣满减历史记录 KfActivityModel.ANS_DISCOUNT_FULL_CUT_BUY = "KfActivityModel.ANS_DISCOUNT_FULL_CUT_BUY" -- 折扣满减购买 KfActivityModel.SELECT_DISCOUNT_FULL_CUT_GOODS = "KfActivityModel.SELECT_DISCOUNT_FULL_CUT_GOODS" -- 折扣满减购买 KfActivityModel.CHANGE_DISCOUNT_FULL_CUT_TICKET = "KfActivityModel.CHANGE_DISCOUNT_FULL_CUT_TICKET" -- 折扣满减选择券 KfActivityModel.OPEN_DISCOUNT_FULL_CUT_LUCKY_VIEW = "KfActivityModel.OPEN_DISCOUNT_FULL_CUT_LUCKY_VIEW" -- 打开折扣转盘界面 KfActivityModel.UPDATE_DISCOUNT_FULL_CUT_LUCKY_VIEW = "KfActivityModel.UPDATE_DISCOUNT_FULL_CUT_LUCKY_VIEW"-- 更新折扣转盘界面 KfActivityModel.LUCKY_DISCOUNT_FULL_CUT_LUCKY_VIEW = "KfActivityModel.LUCKY_DISCOUNT_FULL_CUT_LUCKY_VIEW"-- 折扣转盘界面抽奖 KfActivityModel.OPEN_MONEY_COPY_VIEW = "KfActivityModel.OPEN_MONEY_COPY_VIEW" -- 打开彩钻复制机 KfActivityModel.UPDATE_MONEY_COPY_VIEW = "KfActivityModel.UPDATE_MONEY_COPY_VIEW" --更新彩钻复制机 KfActivityModel.ANS_PASS_ACT_BASIC = "KfActivityModel.ANS_PASS_ACT_BASIC" -- 活跃/登陆 通行证信息 KfActivityModel.ANS_PASS_ACT_REWARD_LIST = "KfActivityModel.ANS_PASS_ACT_REWARD_LIST" --活跃/登陆 通行证奖励信息 KfActivityModel.OPEN_PASS_ACT_BUY_TIP = "KfActivityModel.OPEN_PASS_ACT_BUY_TIP" --活跃/登陆 通行证购买界面 KfActivityModel.OPEN_ZERO_GIFT_SHOW_VIEW = "KfActivityModel.OPEN_ZERO_GIFT_SHOW_VIEW"--打开0元礼包展示界面 KfActivityModel.OPEN_ACT_GUIDE_BASE_VIEW = "KfActivityModel.OPEN_ACT_GUIDE_BASE_VIEW"--打开活动引导基础展示界面 local table_insert = table.insert KfActivityModel.TabID = { RushRank = 1,--开服冲榜 OpenRecharge = 2,--开服累充 FosterStage = 3,--开服进阶 LimitGift = 4,--限购礼包 LimitShop = 5,--抢购商城 ContinueRecharge = 6,--连充豪礼 ZeroGift = 7,--0元礼包 GroupBuying = 8,--开服团购 SingleRecharge = 9,--单笔充值 Monopoly = 10,--大富翁 Competing = 11,--竞榜 AccConsume = 15,--累计消费 RewardShow = 16, --活动宣传 InvestAct = 19, --投资活动 LimitSeckill = 20, --限时秒杀 DiscountFullCut = 26,--折扣满减 HappyRedBag = 27,--惊喜红包 ComRank = 28,--通用排行 MoneyCopy = 29,--源晶复制机 LoginPass = 39,--登陆通行证 LivelyPass = 40,--活跃通行证 MainlandJourney = 41,--大陆征途 HighExchange = 42,--嗨点兑换 SakuraGift = 47,--源樱之礼 --(主题活动配置方法、资源文件、代码文件)都写到OperateActivity 但是各类更新全部用KfActivityModel的 SingleDayRecharge = 12,--单日充值 BossDrop = 13,--BOSS掉落 DunMul = 14,--副本多倍 BossTreasure = 17,--幻魔宝典 HighPoint = 18, --嗨点玩法 EDayLogin = 21, --每日登录 LuckyTurntable = 22, --幸运轮盘 ScrapingCard = 23, --刮刮卡 GetLuckyBag = 24, --抢福袋 GetRedBag = 25, --抢福袋 Tarot = 29, --塔罗牌 CollectZi = 30, --集字兑换 StageExchange = 31, --阶段兑换 Adventure = 32, --冒险征途 Jigsaw = 33, --活跃拼图 Reversi = 34,--黑白棋抽奖 FestivalBoss = 35,--节日幻魔 AmasingJigsawPuzzle = 36,--眼疾手快趣味拼图 ThreeFight = 37,--三日作战 PrayTree = 38,--人参果树 ComposeRobot = 43,--合成机 SuperAward = 44,--超能大奖 MaterialSubmit = 45,--材料提交 JumpOne = 46,--跳一跳 SelectEgg = 48,--自选扭蛋 } --is_most代表是否是多条开放性页签(开服活动\精彩活动\主题活动)(sort_id以后让运营单独调一次即可 我们自增) KfActivityModel.TabData = { {id = KfActivityModel.TabID.RewardShow, name = "珍宝展示", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.REWARD_SHOW, is_most = true, sort_id = 1}, {id = KfActivityModel.TabID.RushRank, name = "开服冲榜", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.RUSH_RANK, is_most = true, sort_id = 2}, {id = KfActivityModel.TabID.FosterStage, name = "开服进阶", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.FOSTER_STAGE, is_most = true, sort_id = 3}, {id = KfActivityModel.TabID.OpenRecharge, name = "开服累充", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.KFACTIVITY_RECHARGE, is_most = true, sort_id = 4}, {id = KfActivityModel.TabID.AccConsume, name = "累计消费", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.ACC_CONSUME, is_most = true, sort_id = 5}, {id = KfActivityModel.TabID.LimitShop, name = "抢购商城", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.KFACTIVITY_LIMIT_SHOP, is_most = true, sort_id = 44}, {id = KfActivityModel.TabID.SingleRecharge, name = "单笔充值", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.SINGLE_RECHARGE, is_most = true, sort_id = 7}, {id = KfActivityModel.TabID.ZeroGift, name = "0元礼包", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.ZERO_GIFT, is_most = true, sort_id = 2}, {id = KfActivityModel.TabID.ContinueRecharge, name = "连充豪礼", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.CONTINUE_RECHARGE, is_most = true, sort_id = 9}, {id = KfActivityModel.TabID.LimitGift, name = "限购礼包", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.LIMIT_GIFT, is_most = true, sort_id = 10}, {id = KfActivityModel.TabID.Monopoly, name = "大富翁", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.MONOPOLY, is_most = true, sort_id = 11}, {id = KfActivityModel.TabID.GroupBuying, name = "开服团购", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.KF_GROUP_BUYING, is_most = true, sort_id = 12}, {id = KfActivityModel.TabID.Competing, name = "限时冲榜", module_id = 333, base_type = CustomActivityModel.CustomActBaseType.COPETING, is_most = true, sort_id = 13}, {id = KfActivityModel.TabID.SingleDayRecharge, name = "单日充值", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.SINGLE_DAY_RECHARGE, is_most = true, sort_id = 14}, {id = KfActivityModel.TabID.BossDrop, name = "幻魔掉落", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.BOSS_DROP, is_most = true, sort_id = 15}, {id = KfActivityModel.TabID.DunMul, name = "副本多倍", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.DUN_MUL_DROP, is_most = true, sort_id = 16}, {id = KfActivityModel.TabID.BossTreasure, name = "幻魔宝典", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.BOSS_TREASURE, is_most = true, sort_id = 17}, {id = KfActivityModel.TabID.HighPoint, name = "嗨点玩法", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.HIGH_POINT, is_most = true, sort_id = 18}, {id = KfActivityModel.TabID.InvestAct, name = "投资活动", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.INVEST_ACT, is_most = true, sort_id = 8}, {id = KfActivityModel.TabID.LimitSeckill, name = "限时秒杀", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.LIMIT_SECKILL, is_most = true, sort_id = 20}, {id = KfActivityModel.TabID.EDayLogin, name = "每日登录", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.E_DAY_LOGIN, is_most = true, sort_id = 21}, {id = KfActivityModel.TabID.LuckyTurntable, name = "幸运轮盘", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.LUCKY_TURNTABLE, is_most = true, sort_id = 22}, {id = KfActivityModel.TabID.ScrapingCard, name = "刮刮卡", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.SCRAPING_CRAD, is_most = true, sort_id = 23}, {id = KfActivityModel.TabID.GetLuckyBag, name = "抢福袋", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.GET_LUCKY_BAG, is_most = true, sort_id = 24}, {id = KfActivityModel.TabID.GetRedBag, name = "抢红包", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.GET_RED_BAG, is_most = true, sort_id = 25}, {id = KfActivityModel.TabID.DiscountFullCut, name = "折扣满减", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.DISCOUNT_FULL_CUT, is_most = true, sort_id = 26}, {id = KfActivityModel.TabID.HappyRedBag, name = "惊喜红包", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.HAPPY_RED_BAG, is_most = true, sort_id = 27}, {id = KfActivityModel.TabID.ComRank, name = "通用排行", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.COM_RANK, is_most = true, sort_id = 29}, {id = KfActivityModel.TabID.Tarot, name = "塔罗牌", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.TAROT, is_most = true, sort_id = 29}, {id = KfActivityModel.TabID.CollectZi, name = "集字兑换", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.COLLECT_ZI, is_most = true, sort_id = 30}, {id = KfActivityModel.TabID.HappyRedBag, name = "惊喜红包", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.HAPPY_RED_BAG, is_most = true, sort_id = 31}, {id = KfActivityModel.TabID.StageExchange, name = "阶段兑换", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.STAGE_EXCHANGE, is_most = true, sort_id = 32}, {id = KfActivityModel.TabID.Adventure, name = "冒险征途", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.ADVENTURE, is_most = true, sort_id = 33}, {id = KfActivityModel.TabID.Reversi, name = "黑白棋抽奖", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.REVERSI, is_most = true, sort_id = 34}, {id = KfActivityModel.TabID.Jigsaw, name = "活跃拼图", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.JIGSAW, is_most = true, sort_id = 35}, {id = KfActivityModel.TabID.FestivalBoss, name = "节日幻魔", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.FESTIVAL_BOSS, is_most = true, sort_id = 36}, {id = KfActivityModel.TabID.AmasingJigsawPuzzle, name = "趣味拼图", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.AMUSING_JIGSAW_PUZZLE, is_most = true, sort_id = 37}, {id = KfActivityModel.TabID.ThreeFight, name = "三日作战", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.THREE_FIGHT, is_most = true, sort_id = 37}, {id = KfActivityModel.TabID.PrayTree, name = "人参果树", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.PRAY_TREE, is_most = true, sort_id = 38}, {id = KfActivityModel.TabID.LoginPass, name = "登陆通行证", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.LOGIN_PASS, is_most = true, sort_id = 39}, {id = KfActivityModel.TabID.LivelyPass, name = "活跃通行证", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.LIVELY_PASS, is_most = true, sort_id = 40}, {id = KfActivityModel.TabID.MainlandJourney, name = "大陆征途", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.MAINLAND_JOURNEY, is_most = true, sort_id = 41}, {id = KfActivityModel.TabID.HighExchange, name = "嗨点兑换", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.HIGH_EXCHANGE, is_most = true, sort_id = 42}, {id = KfActivityModel.TabID.ComposeRobot, name = "合成机", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.COMPOSE_ROBOT, is_most = true, sort_id = 2}, {id = KfActivityModel.TabID.SuperAward, name = "超能大奖", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.SUPER_AWARD, is_most = true, sort_id = 6}, {id = KfActivityModel.TabID.MaterialSubmit, name = "材料提交", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.MATERIAL_SUBMIT, is_most = true, sort_id = 45}, {id = KfActivityModel.TabID.JumpOne, name = "跳一跳", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.JUMP_ONE, is_most = true, sort_id = 46}, {id = KfActivityModel.TabID.SelectEgg, name = "自选扭蛋", module_id = 331, base_type = CustomActivityModel.CustomActBaseType.SELECT_EGG, is_most = true, sort_id = 3}, } KfActivityModel.MaxRankDay = 9--开服天数限制 KfActivityModel.MaxRankType = 9--榜单类型限制 KfActivityModel.SpecialRankType = 9--榜单特殊类型 KfActivityModel.MonopolyCircleTypeFive = 1--1-5圈 KfActivityModel.MonopolyCircleTypeTen = 2--2-10圈 KfActivityModel.MonopolyMaxCircle = 10--最大10圈 KfActivityModel.MonopolyMaxLattice = 26--最大26格有效格子数(起点终点不算) KfActivityModel.ComRankStr = { ["recharge"] = {desc = "充值彩钻",btn_desc = "前往充值"}, ["consume"] = {desc = "消费彩钻",btn_desc = "前往消费"}, ["item"] = {desc = "道具数量",btn_desc = "获取道具"}, } KfActivityModel.KfDFullCutLuckyGoodsId = 105200--折扣转盘抽奖id KfActivityModel.AdventureOneCost = 10--冒险征途单次抽取的消耗数 KfActivityModel.AdventureTenCost = 100--冒险征途单次抽取的消耗数 KfActivityModel.ContinueSignRechargePrice = 300--补签需要充值的金额 function KfActivityModel:__init() KfActivityModel.Instance = self self.login_red = nil--登陆红点 self:Reset() end function KfActivityModel:Reset() self.view_info = {}--界面信息 self.act_red_dot_info = {} self.red_dot_info = {} self.rush_rank_info = {}--冲榜信息 -- self.limit_shop_red_first_open_list = {}--限购商城红点每日登陆列表 self.limit_shop_toggle = {}--限购商城购买确认信息 self.limit_gift_toggle = {}--限购礼包购买确认信息 self.zero_gift_toggle = {}--0元礼包购买确认信息 self.kf_group_buying_toggle = {}--限购礼包购买确认信息 self.high_info = {}--嗨点活动信息 self.high_point_toggle = {}--嗨点复选提示框信息 self.is_close_main_icon = false self.zero_gift_view_info = {}--0元礼包信息33185、33186 if self.zero_gift_time_id_list then for k,v in pairs(self.zero_gift_time_id_list) do GlobalTimerQuest:CancelQuest(v) v = nil end end self.zero_gift_time_id_list = {} self.zero_gift_first_open_red_list = {} --首次0元礼包活动的红点 self.zero_gift_first_open_red_flag = {} --首次0元礼包活动的红点是否干掉 --团购活动 self.group_buying_view_info = {}--团购信息 self.group_buying_time_list = {}--团购倒计时时间列表 if self.groupBuying_time_id_list then--团购倒计时列表 for k,v in pairs(self.groupBuying_time_id_list) do GlobalTimerQuest:CancelQuest(v) v = nil end end self.groupBuying_time_id_list = {}--计时器ID列表 --大富翁 self.monopoly_info = {}--大富翁信息 self.monopoly_first_open_red_flag = {}--大富翁红点信息 -- 投资活动 self.invest_event_data = {} self.invest_grade_red_cache = {} -- 投资活动档位红点缓存s self:InitCfg() self:InitMonopolyCfg()--初始化大富翁配置 self:InitActViewClassTable() self:InitRewardShowCfg() -- 初始化珍宝展示配置 --限时秒杀 self.limit_seckill_base_info = {}--基础信息 self.limit_seckill_round_info = {}--场次信息 self.limit_seckill_record_info = {}--购买记录 self.limit_seckill_buy_info = {}--抢购界面信息 self.is_open_limit_seckill_view = false self.sec_kill_buy_sure = {} -- 消耗彩钻无须确认 self.sec_kill_remind_cache = {} -- 开抢前两分钟提醒 --刮刮卡 self.is_red_scraping_card_list = {} --塔罗牌 self.is_red_tarot_list = {} --惊喜红包 self.happy_red_bag_base_info = {}--基础信息 self.happy_red_bag_history_info = {}--抽取全服记录 --折扣满减 self.discount_full_cut_info = {}--基础信息 self.discount_full_cut_history = {}--购买记录 self.discount_full_cut_lucky_list = {}--设置折扣满减奖池数据 self.discount_full_cut_mask_first_open_red = {}--首次开界面红点 self.discount_full_cut_new_red = {}--折扣满减活动新开红点 self.discount_full_cut_draw_goods_red = {}--折扣满减活动物品红点 self.discount_full_cut_draw_goods_num = 0--保存当前折扣满减活动物品数量 self.discount_full_cut_draw_free_red = {}--折扣满减活动免费抽奖次数红点 self.discount_full_cut_draw_free_status = {}--保存当前折扣满减活动免费抽奖次数 --人参果树 self.is_red_praytreelist = {} --通用排行 self.com_rank_info = {}--封榜活动信息 self.money_copy_data = {}--彩钻复制机 self.pass_act_info = {}--通行证 self.pass_act_reward_info = {} --小额连充信息 self.kf_continue_info = {} --开服进阶红点信息 self.forsert_stage_red_info = {} --开服团购红点信息 self.group_red_list = {} --嗨点兑换登陆一次红点信息 self.high_login_red_list = {} self.act_guide_cache = false -- 活动指引记录缓存 self:ResetFosterActGuideBtnCache() end function KfActivityModel:getInstance() if KfActivityModel.Instance == nil then KfActivityModel.Instance = KfActivityModel.New() end return KfActivityModel.Instance end --初始化活动界面类 function KfActivityModel:InitActViewClassTable( ) self.act_view_class = {--所有活动界面类 [KfActivityModel.TabID.RushRank] = KfActivityRushRankView,--开服冲榜 [KfActivityModel.TabID.OpenRecharge] = KfActivityOpenRechargeView,--开服累充 [KfActivityModel.TabID.FosterStage] = KfActivityForsterStageView,--开服进阶 [KfActivityModel.TabID.LimitGift] = KfActivityLimitGiftSubView,--限购礼包 [KfActivityModel.TabID.LimitShop] = KfActivityLimitShopView,--抢购商城 [KfActivityModel.TabID.ContinueRecharge] = KfActivityContinueRechargeViewNew,--连充豪礼 [KfActivityModel.TabID.ZeroGift] = KfActivityZeroGiftSubView,--0元礼包 [KfActivityModel.TabID.GroupBuying] = KfGroupBuyingView,--开服团购 [KfActivityModel.TabID.SingleRecharge] = KfActivitySingleRechargeView,--单笔充值 [KfActivityModel.TabID.Monopoly] = KfMonopolyMainView,--大富翁 [KfActivityModel.TabID.Competing] = KfCompetingListMainView,--竞榜 [KfActivityModel.TabID.SingleDayRecharge] = OpSingleRechargeSubView,--单日充值 [KfActivityModel.TabID.BossDrop] = OpBossActDropSubView,--BOSS掉落 [KfActivityModel.TabID.DunMul] = OpDunMultipleDropView,--副本多倍 [KfActivityModel.TabID.AccConsume] = KfActivityAccConsumeView,--累计消费 [KfActivityModel.TabID.RewardShow] = ActivityRewardShowView,--奖励展示 [KfActivityModel.TabID.BossTreasure] = KfBossTreasureView,--幻魔宝典 [KfActivityModel.TabID.HighPoint] = KfActHighPointView,--嗨点玩法 [KfActivityModel.TabID.EDayLogin] = KfActivityEDayLoginView,--每日登录 [KfActivityModel.TabID.ScrapingCard] = KfActivityScrapingCardView,--刮刮卡 [KfActivityModel.TabID.InvestAct] = KfActivityInvestmentView,--投资活动 [KfActivityModel.TabID.LimitSeckill] = LimitSecKillView,--限时秒杀 [KfActivityModel.TabID.LuckyTurntable] = LuckyTurnTableView,--幸运轮盘 [KfActivityModel.TabID.GetLuckyBag] = GetLuckyBagView,--抢福袋 [KfActivityModel.TabID.GetRedBag] = GetLuckyBagView,--抢红包 [KfActivityModel.TabID.DiscountFullCut] = KfDiscountFullCutView,--折扣满减 [KfActivityModel.TabID.HappyRedBag] = KfHappyRedBagView,--惊喜红包 [KfActivityModel.TabID.ComRank] = KfActivityComRankView,--通用排行 [KfActivityModel.TabID.Tarot] = KfActivityTarotView,--塔罗牌 [KfActivityModel.TabID.CollectZi] = OpCollectZiView,--集字兑换 [KfActivityModel.TabID.StageExchange] = OpStageExchangeView,--阶段兑换 [KfActivityModel.TabID.Adventure] = OpAdventureView,--冒险征途 [KfActivityModel.TabID.Jigsaw] = OpJigsawView,--活跃拼图 [KfActivityModel.TabID.Reversi] = OpReversiView,--黑白棋抽奖 [KfActivityModel.TabID.FestivalBoss] = OpFestivalBossView,--节日幻魔 [KfActivityModel.TabID.AmasingJigsawPuzzle] = OpAmasingJigsawView,--节日拼图 [KfActivityModel.TabID.ThreeFight] = OpThreeFightView,--三日作战 [KfActivityModel.TabID.LoginPass] = KfActivityLoginPassView,--登陆通行证 [KfActivityModel.TabID.LivelyPass] = KfActivityLivelyPassView,--活跃通行证 [KfActivityModel.TabID.PrayTree] = OpActivityPrayTreeView,--人参果树 [KfActivityModel.TabID.ComposeRobot] = OpComposeRobotView,--合成机 [KfActivityModel.TabID.HighExchange] = KfActHighExchangeView,--嗨点兑换 [KfActivityModel.TabID.SuperAward] = OpSuperAwardView,--超能大奖 --以下需要开发的新活动 -- [KfActivityModel.TabID.MainlandJourney] = OpActivityPrayTreeView,--大陆征途 -- [KfActivityModel.TabID.ComposeRobot] = OpActivityPrayTreeView,--合成机 [KfActivityModel.TabID.MaterialSubmit] = OpMaterialSubmitView,--材料提交 [KfActivityModel.TabID.JumpOne] = JumpOneMainView,--跳一跳 [KfActivityModel.TabID.SelectEgg] = OpSelectEggView,--自选扭蛋 } end --初始化配置 function KfActivityModel:InitCfg( ) self.rush_rank_cfg = {}--冲榜基本配置 local rush_rank_cfg = DeepCopy(Config.Rushrank) for k,v in pairs(rush_rank_cfg) do local data = v data.limit = stringtotable(v.limit)--目标条件 data.figure_id = stringtotable(v.figure_id)--展示模型 data.nominate = stringtotable(v.nominate)--跳转数据 data.name = Trim(v.name)--名字 data.tips = Trim(v.tips)--大奖名字 self.rush_rank_cfg[v.id] = data if v.start_day > KfActivityModel.MaxRankDay then KfActivityModel.MaxRankDay = v.start_day KfActivityModel.MaxRankType = v.id end end self.rush_rank_award_cfg = {}--冲榜排行奖励配置 local rush_rank_award_cfg = DeepCopy(Config.Rushrankreward) for k,v in pairs(rush_rank_award_cfg) do local data = v data.rank_limit = stringtotable(v.rank_limit)--目标条件 data.reward = stringtotable(v.reward)--奖励 data.about = Trim(v.about)--说明 if not self.rush_rank_award_cfg[v.id] then self.rush_rank_award_cfg[v.id] = {} end self.rush_rank_award_cfg[v.id][#self.rush_rank_award_cfg[v.id] + 1] = data end local sortFunc = function (a,b) return a.reward_id < b.reward_id end for i,v in ipairs(self.rush_rank_award_cfg) do table.sort(v, sortFunc) end self.rush_rank_goal_cfg = {}--冲榜targer奖励配置 local rush_rank_goal_cfg = DeepCopy(Config.Rushgoalreward) for k,v in pairs(rush_rank_goal_cfg) do local data = v data.goal_value = stringtotable(v.goal_value)--目标条件 data.reward = stringtotable(v.reward)--奖励配置 data.about = Trim(v.about)--说明 if not self.rush_rank_goal_cfg[v.id] then self.rush_rank_goal_cfg[v.id] = {} end self.rush_rank_goal_cfg[v.id][#self.rush_rank_goal_cfg[v.id] + 1] = data end for i,v in ipairs(self.rush_rank_goal_cfg) do table.sort(v, sortFunc) end self.com_rank_score_cfg = {} local com_rank_score_cfg = DeepCopy(Config.Vierankreq) for k,v in pairs(com_rank_score_cfg) do local data = v data.type_value = Trim(v.type_value)--说明 if not self.com_rank_score_cfg[v.type_key] then self.com_rank_score_cfg[v.type_key] = {} end self.com_rank_score_cfg[v.type_key][v.rank] = data end end --初始化大富翁配置 function KfActivityModel:InitMonopolyCfg( ) self.mono_kv_cfg = {}--大富翁常量配置 local mono_kv_cfg = DeepCopy(Config.Monokv) for k,v in pairs(mono_kv_cfg) do if k == "gold_dice_count" then self.mono_kv_cfg.gold_dice_count = v.val--每日最大获得金骰子数量 elseif k == "gold_dice_level" then self.mono_kv_cfg.gold_dice_level = stringtotable(v.val)--充值赠送金骰子档位 elseif k == "luckycard_count" then self.mono_kv_cfg.luckycard_count = v.val --幸运卡池数量 elseif k == "mono_total_round" then self.mono_kv_cfg.mono_total_round = v.val --活动总圈数 elseif k == "normal_dice_count" then self.mono_kv_cfg.normal_dice_count = v.val --每日最大获得普通骰子数量 elseif k == "normal_dice_level" then self.mono_kv_cfg.normal_dice_level = stringtotable(v.val) --充值赠送普通骰子档位 end end self.mono_lattice_cfg = {}--大富翁圈数格子配置 local mono_lattice_cfg = DeepCopy(Config.Monolattice) for k,v in pairs(mono_lattice_cfg) do if not self.mono_lattice_cfg[v.round] then self.mono_lattice_cfg[v.round] = {} end self.mono_lattice_cfg[v.round][v.lattice_index] = v end self.mono_smallbox_award_cfg = {}--大富翁小宝箱配置 local mono_smallbox_award_cfg = DeepCopy(Config.Monosmallbox) for k,v in pairs(mono_smallbox_award_cfg) do local data = v data.rewards = stringtotable(data.rewards)[1] self.mono_smallbox_award_cfg[v.index] = data end self.mono_lucky_award_cfg = {}--大富翁幸运卡奖励 local mono_lucky_award_cfg = DeepCopy(Config.Monoluckycard) for k,v in pairs(mono_lucky_award_cfg) do local data = v data.rewards = stringtotable(data.rewards)[1] self.mono_lucky_award_cfg[v.index] = data end self.mono_round_award_cfg = {}--大富翁圈数奖励 local mono_round_award_cfg = DeepCopy(Config.Monoroundrewards) for k,v in pairs(mono_round_award_cfg) do local data = v data.rewards = stringtotable(data.rewards)[1] data.show = stringtotable(data.show) if not self.mono_round_award_cfg[v.sub_type] then self.mono_round_award_cfg[v.sub_type] = {} end self.mono_round_award_cfg[v.sub_type][v.round] = data end end -- 初始化珍宝展示的配置 function KfActivityModel:InitRewardShowCfg( ) self.show_res_cfg = {} for k,v in pairs(Config.Showresource) do if not self.show_res_cfg[v.item_id] then self.show_res_cfg[v.item_id] = {} end self.show_res_cfg[v.item_id][v.model_id] = self.show_res_cfg[v.item_id][v.model_id] or {} self.show_res_cfg[v.item_id][v.model_id][v.model_type] = v end end -- 获取珍宝展示配置 function KfActivityModel:GetRewardShowCfg( item_id ) local item_id = tonumber(item_id) if item_id and self.show_res_cfg[item_id] then return self.show_res_cfg[item_id] else -- logWarn('=======Msh:KfActivityModel.lua[278]=参数有误======', item_id) end end --更新主界面活动图标红点(开服、主题、精彩)CustomActivityModel.CustomIconActType function KfActivityModel:CheckMainIconRedDot( act_type ) if not act_type then return end local bool = false local base_type = CustomActivityModel.CustomActBaseType.OPERATE_ACTIVITY local sub_type = nil local sub_type_list = CustomActivityModel:getInstance():getAllActListByBaseType(base_type) for k,v in pairs(sub_type_list) do if v.act_type == act_type then sub_type = v.sub_type break end end if not sub_type then return end local icon_sub_type = base_type*1000 + sub_type if sub_type >= 10001 then icon_sub_type = base_type*100000 + sub_type end local act_list = CustomActivityModel:getInstance():getActList(base_type, sub_type) if not act_list then return else if self.red_dot_info[act_type] then for k,v in pairs(self.red_dot_info[act_type]) do local module_sub_id = self:ByTabIdGetActType(k) if GetModuleIsOpen(331,module_sub_id) or (k == KfActivityModel.TabID.Competing and GetModuleIsOpen(333,nil))--竞榜是333模块的 then if module_sub_id == CustomActivityModel.CustomActBaseType.SUPER_AWARD then--超能大奖比较特殊 for kk,vv in pairs(v) do if vv == true and self:CheckSuperAwardTabIsOpen(module_sub_id,kk) then bool = vv break end end elseif module_sub_id == CustomActivityModel.CustomActBaseType.HIGH_EXCHANGE then--嗨点兑换比较特殊 for sub_type,vv in pairs(v) do if not self.high_login_red_list[sub_type] then bool = true break end end else for kk,vv in pairs(v) do if vv == true then bool = vv break end end end end end end -- print("huangcong:KfActivityModel [start:445] :", icon_sub_type,act_type) -- PrintTable(self.red_dot_info[act_type]) -- print("huangcong:KfActivityModel [end]") GlobalEventSystem:Fire(ActivityIconManager.UPDATE_ICON_TIPS, icon_sub_type, bool) end end --通过页签ID获得定制活动类型 function KfActivityModel:ByTabIdGetActType( tabId ) for i,v in ipairs(KfActivityModel.TabData) do if v.id == tabId then return v.base_type end end end --通过定制活动类型获得页签ID function KfActivityModel:ByActTypeGetTabId( act_type ) for i,v in ipairs(KfActivityModel.TabData) do if v.base_type == act_type then return v.id end end end --这样写红点 每次调全局的只要调两次 function KfActivityModel:IsNeedRedAll( )--暂时去掉 end function KfActivityModel:IsNeedRed( id,is_all,sub_type ) local bool = false local act_type = CustomActivityModel.CustomIconActType.KfAct--默认是开服活动 if id == KfActivityModel.TabID.RushRank then--开服冲榜 sub_type = sub_type or CustomActivityModel:getInstance():getActMinSubType(CustomActivityModel.CustomActBaseType.RUSH_RANK) bool,act_type = self:CheckRushRankRedDot(sub_type) elseif id == KfActivityModel.TabID.OpenRecharge then--开服累充 bool,act_type = self:CheckActCommonRedDot(CustomActivityModel.CustomActBaseType.KFACTIVITY_RECHARGE,sub_type) elseif id == KfActivityModel.TabID.FosterStage then--开服进阶 bool,act_type = self:CheckFosterStageRedDot(CustomActivityModel.CustomActBaseType.FOSTER_STAGE,sub_type) elseif id == KfActivityModel.TabID.LimitGift then--限购礼包 bool,act_type = self:CheckLimitGiftRedDot(sub_type) elseif id == KfActivityModel.TabID.LimitShop then--限购商城 bool,act_type = self:CheckLimitShopRedDot(sub_type) elseif id == KfActivityModel.TabID.ContinueRecharge then--连充豪礼 bool,act_type = self:CheckContinueRechargeRedDot(CustomActivityModel.CustomActBaseType.CONTINUE_RECHARGE,sub_type) elseif id == KfActivityModel.TabID.ZeroGift and GetModuleIsOpen(331,36) then--0元礼包 bool,act_type = self:CheckZeroGiftRedDot(sub_type) elseif id == KfActivityModel.TabID.GroupBuying and GetModuleIsOpen(331,70) then--开服团购 bool,act_type = self:CheckKfGroupBuyingRedDot(sub_type) elseif id == KfActivityModel.TabID.SingleDayRecharge then bool,act_type = self:CheckActCommonRedDot(CustomActivityModel.CustomActBaseType.SINGLE_DAY_RECHARGE,sub_type) elseif id == KfActivityModel.TabID.SingleRecharge then--单笔充值 bool,act_type = self:CheckActCommonRedDot(CustomActivityModel.CustomActBaseType.SINGLE_RECHARGE,sub_type) if not bool then local com_act_red_info = CustomActivityModel:getInstance():GetActComAwardInfo(CustomActivityModel.CustomActBaseType.SINGLE_RECHARGE,sub_type) if com_act_red_info then bool = com_act_red_info.status == 1 end end self.act_red_dot_info[CustomActivityModel.CustomActBaseType.SINGLE_RECHARGE][sub_type] = bool elseif id == KfActivityModel.TabID.Monopoly then--大富翁 bool,act_type = self:CheckMonopolyRedDot(sub_type) elseif id == KfActivityModel.TabID.Competing then--竞榜--这里先默认放到开服活动类型中 bool,act_type = self:CheckCompetingRedDot(sub_type) elseif id == KfActivityModel.TabID.BossDrop then--boss掉落 bool,act_type = self:CheckBossDropRedDot(sub_type) elseif id == KfActivityModel.TabID.DunMul then--副本多倍 bool,act_type = self:CheckDunMulRedDot(sub_type) elseif id == KfActivityModel.TabID.AccConsume then--开服累充 bool,act_type = self:CheckActCommonRedDot(CustomActivityModel.CustomActBaseType.ACC_CONSUME,sub_type) elseif id == KfActivityModel.TabID.BossTreasure then--幻魔宝典 bool,act_type = self:CheckActBossTreasureRedDot(sub_type) elseif id == KfActivityModel.TabID.HighPoint then--嗨点玩法 bool,act_type = self:CheckHighPointRedDot(CustomActivityModel.CustomActBaseType.HIGH_POINT,sub_type) elseif id == KfActivityModel.TabID.InvestAct then--投资活动 bool,act_type = self:CheckActInvestRedDot(sub_type) elseif id == KfActivityModel.TabID.LimitSeckill then--限时秒杀 bool,act_type = self:CheckSecKillRedDot(sub_type) elseif id == KfActivityModel.TabID.EDayLogin then--每日登录 bool,act_type = self:CheckActCommonRedDot(CustomActivityModel.CustomActBaseType.E_DAY_LOGIN,sub_type) elseif id == KfActivityModel.TabID.LuckyTurntable then--幸运轮盘 bool,act_type = self:CheckLuckyTurnTableRedDot(sub_type) elseif id == KfActivityModel.TabID.ScrapingCard then--刮刮卡 bool,act_type = self:CheckScrapingCardRedDot(CustomActivityModel.CustomActBaseType.SCRAPING_CRAD,sub_type) elseif id == KfActivityModel.TabID.DiscountFullCut then--折扣满减 bool,act_type = self:CheckKfDiscountFullCutRedDot(sub_type) elseif id == KfActivityModel.TabID.ComRank then--通用排行 bool,act_type = self:CheckActCommonRedDot(CustomActivityModel.CustomActBaseType.COM_RANK,sub_type) elseif id == KfActivityModel.TabID.Tarot then--塔罗牌 bool,act_type = self:CheckActTarotRedDot(CustomActivityModel.CustomActBaseType.TAROT,sub_type) elseif id == KfActivityModel.TabID.CollectZi then--集字兑换 bool,act_type = self:CheckCollectActRedDot(CustomActivityModel.CustomActBaseType.COLLECT_ZI,sub_type) elseif id == KfActivityModel.TabID.HappyRedBag then--惊喜红包 bool,act_type = self:CheckActHappyRedBagRedDot(sub_type) elseif id == KfActivityModel.TabID.StageExchange then--阶段兑换 bool,act_type = self:CheckStageExchangeRedDot(CustomActivityModel.CustomActBaseType.STAGE_EXCHANGE,sub_type) elseif id == KfActivityModel.TabID.Adventure then--冒险征途 bool,act_type = self:CheckAdventureRedDot(CustomActivityModel.CustomActBaseType.ADVENTURE,sub_type) elseif id == KfActivityModel.TabID.Reversi then--黑白棋抽奖 bool,act_type = self:CheckReversiRedDot(CustomActivityModel.CustomActBaseType.REVERSI,sub_type) elseif id == KfActivityModel.TabID.FestivalBoss then--节日幻魔 bool,act_type = self:CheckFestivalBossRedDot(CustomActivityModel.CustomActBaseType.FESTIVAL_BOSS,sub_type) elseif id == KfActivityModel.TabID.Jigsaw then--活跃拼图 bool, act_type = self:CheckJigsawRedDot(CustomActivityModel.CustomActBaseType.JIGSAW, sub_type) elseif id == KfActivityModel.TabID.AmasingJigsawPuzzle then--眼疾手快趣味拼图 -- bool,act_type = self:CheckActCommonRedDot(CustomActivityModel.CustomActBaseType.AMUSING_JIGSAW_PUZZLE,sub_type) elseif id == KfActivityModel.TabID.ThreeFight then--三日作战 bool, act_type = OperateActivityModel:getInstance():CheckThreeFightRedDot(sub_type) if not self.act_red_dot_info[CustomActivityModel.CustomActBaseType.THREE_FIGHT] then self.act_red_dot_info[CustomActivityModel.CustomActBaseType.THREE_FIGHT] = {} end self.act_red_dot_info[CustomActivityModel.CustomActBaseType.THREE_FIGHT][sub_type] = bool elseif id == KfActivityModel.TabID.LoginPass then--登陆通行证 bool,act_type = self:CheckComPassRedDot(CustomActivityModel.CustomActBaseType.LOGIN_PASS,sub_type) elseif id == KfActivityModel.TabID.LivelyPass then--活跃通行证 bool,act_type = self:CheckComPassRedDot(CustomActivityModel.CustomActBaseType.LIVELY_PASS,sub_type) elseif id == KfActivityModel.TabID.PrayTree then--人参果树(祈福活动) bool,act_type = self:CheckPrayTreeRedDot(CustomActivityModel.CustomActBaseType.PRAY_TREE,sub_type) elseif id == KfActivityModel.TabID.MainlandJourney then--大陆征途 bool,act_type = self:CheckActCommonRedDot(CustomActivityModel.CustomActBaseType.MAINLAND_JOURNEY,sub_type) elseif id == KfActivityModel.TabID.HighExchange then--嗨点兑换 bool,act_type = self:CheckHighPointRedDot(CustomActivityModel.CustomActBaseType.HIGH_EXCHANGE,sub_type) elseif id == KfActivityModel.TabID.ComposeRobot then--合成机 bool,act_type = self:CheckActComposeRobotRedDot(CustomActivityModel.CustomActBaseType.COMPOSE_ROBOT,sub_type) elseif id == KfActivityModel.TabID.SuperAward then--超能大奖 bool,act_type = self:CheckActCommonRedDot(CustomActivityModel.CustomActBaseType.SUPER_AWARD,sub_type) elseif id == KfActivityModel.TabID.MaterialSubmit then--材料提交 bool,act_type = self:CheckActMaterialSubmitRedDot(CustomActivityModel.CustomActBaseType.MATERIAL_SUBMIT,sub_type) elseif id == KfActivityModel.TabID.SelectEgg then--自选扭蛋 bool,act_type = self:CheckActSelectEggRedDot(CustomActivityModel.CustomActBaseType.SELECT_EGG,sub_type) end act_type = act_type or CustomActivityModel.CustomIconActType.KfAct if not self.red_dot_info[act_type] then--红点信息要和活动类型对应 self.red_dot_info[act_type] = {} end if not self.red_dot_info[act_type][id] then--红点信息要和活动类型对应 self.red_dot_info[act_type][id] = {} end if sub_type then self.red_dot_info[act_type][id][sub_type] = bool end self:Fire(KfActivityModel.ANS_UPDATE_VIEW,id,bool,sub_type) if not is_all then self:CheckMainIconRedDot(act_type) end -- print("huangcong:KfActivityModel [222]: ",bool,id) -- PrintTable(self.red_dot_info) end --清除活动刷新红点信息 function KfActivityModel:ClearActRedDotInfo( base_type,sub_type ) local id = nil for i,v in ipairs(KfActivityModel.TabData) do if base_type == v.base_type then id = v.id break end end if id then for act_type,v in pairs(self.red_dot_info) do for v_id,vv in pairs(v) do if v_id == id then for v_sub_type,vvv in pairs(vv) do if v_sub_type == sub_type then self.red_dot_info[act_type][v_id][sub_type] = false self:CheckMainIconRedDot(act_type) return end end end end end end end --设置0元礼包首次打开cookie function KfActivityModel:SetZeroGiftFirstOpenCookie( bool ) CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,CookieTimeType.TYPE_ALWAYS,CookieKey.ZERO_GIFT_VIEW_FIRST_OPEN,bool) CookieWrapper.Instance:WriteAll() end --获得0元礼包首次打开cookie function KfActivityModel:GetZeroGiftFirstOpenCookie( ) local bool = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.ZERO_GIFT_VIEW_FIRST_OPEN) or false return bool end --获得0元礼包是否首次打开过 function KfActivityModel:GetZeroGiftFirstOpenRed(sub_type) if self.zero_gift_first_open_red_list then return self.zero_gift_first_open_red_list[sub_type] or false end return false end --0元礼包首次打开红点 function KfActivityModel:SetZeroGiftFirstOpenRed(sub_type) if self.zero_gift_first_open_red_list[sub_type] then self.zero_gift_first_open_red_list[sub_type] = false self.zero_gift_first_open_red_flag[sub_type] = true self:IsNeedRed(KfActivityModel.TabID.ZeroGift,nil,sub_type) end end --判断等级是否达到0元礼包可购买等级 function KfActivityModel:IsLvCanBuyZeroGift(level) local bool = false local base_type = CustomActivityModel.CustomActBaseType.ZERO_GIFT local all_list = CustomActivityModel:getInstance():getAllActListByBaseType(base_type) or {} if not all_list then return false end local sub_type = CustomActivityModel:getInstance():getActMinSubType(base_type) for k,v in pairs(all_list) do local award_data = CustomActivityModel:getInstance():getOneActRewardList(v.base_type,v.sub_type) if award_data then for kk,vv in ipairs(award_data.reward_list) do local cost_num = 99999 local buy_level = 99999 for m,n in ipairs(vv.condition_list) do if n[1] == "cost" then cost_num = tonumber(n[2][1][3]) elseif n[1] == "buy_lv" then buy_level = tonumber(n[2]) or 1 end if cost_num == 0 and buy_level == level then bool = true sub_type = v.sub_type break end end end end end return bool,sub_type end --检查0元礼包红点 function KfActivityModel:CheckZeroGiftRedDot( sub_type ) local show = false local base_type = CustomActivityModel.CustomActBaseType.ZERO_GIFT local server_time = TimeUtil:getServerTime() local my_level = RoleManager.Instance.mainRoleInfo.level local act_type = CustomActivityModel.CustomIconActType.KfAct local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) if not act_list then return show end act_type = act_list.act_type act_list = DeepCopy(act_list) if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {}--红点信息 end local sub_type_red = false self.zero_gift_first_open_red_list[act_list.sub_type] = false if act_list.is_first_open == 1 and not self.zero_gift_first_open_red_flag[act_list.sub_type] then self.zero_gift_first_open_red_list[act_list.sub_type] = true sub_type_red = true show = true end local zero_data = self:GetZeroGiftInfo(act_list.sub_type) local award_data = CustomActivityModel:getInstance():getOneActRewardList(act_list.base_type,act_list.sub_type) if zero_data and award_data then for kk,vv in ipairs(zero_data.reward_list) do if vv.status == 4 then--可领取 sub_type_red = true show = true break end if vv.status == 0 then--可以免费领 local cost_num = nil local buy_level = 1 local conditon = {} for award_k,award_v in pairs(award_data.reward_list) do if award_v.grade == vv.grade then conditon = award_v.condition_list end end for m,n in ipairs(conditon) do if n[1] == "cost" then cost_num = tonumber(n[2][1][3]) elseif n[1] == "buy_lv" then buy_level = tonumber(n[2]) or 1 end end if cost_num and cost_num == 0 and my_level>=buy_level then sub_type_red = true show = true break end end end end self.act_red_dot_info[base_type][act_list.sub_type] = sub_type_red return show,act_type end function KfActivityModel:CheckZeroGiftTabIsOpen(sub_type) local bool = false local zero_data = self:GetZeroGiftInfo(sub_type) if zero_data then for i,v in ipairs(zero_data.reward_list) do if v.status == 0 or v.status == 1 or v.status == 4 then bool = true end end end return bool end --检查boss掉落红点 function KfActivityModel:CheckBossDropRedDot( sub_type ) local base_type = CustomActivityModel.CustomActBaseType.BOSS_DROP local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local show = false local act_type = CustomActivityModel.CustomIconActType.KfAct if act_list then act_type = act_list.act_type end return show,act_type end --检查副本多倍掉落红点 function KfActivityModel:CheckDunMulRedDot( sub_type ) local base_type = CustomActivityModel.CustomActBaseType.DUN_MUL_DROP local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local show = false local act_type = CustomActivityModel.CustomIconActType.KfAct if act_list then act_type = act_list.act_type end return show,act_type end --幻魔宝典红点 function KfActivityModel:CheckActBossTreasureRedDot( sub_type ) local base_type = CustomActivityModel.CustomActBaseType.BOSS_TREASURE local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local act_type = CustomActivityModel.CustomIconActType.KfAct local bool = false if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false if act_list then act_type = act_list.act_type bool = KfBossTreasureModel:getInstance():GetAllRedBySubType( false,sub_type ) self.act_red_dot_info[act_list.base_type][act_list.sub_type] = bool end return bool,act_type end --惊喜红包红点 function KfActivityModel:CheckActHappyRedBagRedDot( sub_type ) local base_type = CustomActivityModel.CustomActBaseType.HAPPY_RED_BAG local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local act_type = CustomActivityModel.CustomIconActType.KfAct local bool = false if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false if act_list then act_type = act_list.act_type end if act_list then act_type = act_list.act_type local server_time = TimeUtil:getServerTime( ) if server_time > act_list.stime and act_list.etime > server_time then local red_data = self:GetHappyRedBagRedDotBySubType(sub_type) bool = red_data.box or red_data.red_bag self.act_red_dot_info[act_list.base_type][act_list.sub_type] = bool end end return bool,act_type end --塔罗牌红点 function KfActivityModel:CheckActTarotRedDot( base_type, sub_type ) if not sub_type then return false end local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local show = false local act_type = CustomActivityModel.CustomIconActType.KfAct if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false if act_list then act_type = act_list.act_type local server_time = TimeUtil:getServerTime( ) if server_time > act_list.stime and act_list.etime > server_time then local b = OperateActivityModel:getInstance():TarotGetRedDot(sub_type) if b then self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true show = true end if not self.is_red_tarot_list[sub_type] then self.is_red_tarot_list[sub_type] = true OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33255, sub_type) end end end return show,act_type end --检查竞榜红点 function KfActivityModel:CheckCompetingRedDot( base_type ) local red_bool = false local red_list = CompetingListModel:getInstance():GetComtingRedList() if red_list and TableSize(red_list) > 0 then red_bool = red_list[base_type] or false end local act_type = CustomActivityModel.CustomIconActType.KfAct--默认放在开服活动图标里面 local competing_cfg = CompetingListModel:getInstance():GetCompetingCfg(base_type) if competing_cfg then for k,v in pairs(competing_cfg.condition) do if v[1] == "icon" then act_type = tonumber(v[2]) break end end end return red_bool,act_type end --检查大富翁红点 function KfActivityModel:CheckMonopolyRedDot( sub_type ) local base_type = CustomActivityModel.CustomActBaseType.MONOPOLY local show = false local server_time = TimeUtil:getServerTime() local my_level = RoleManager.Instance.mainRoleInfo.level local act_type = CustomActivityModel.CustomIconActType.KfAct local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) if not act_list then return show,act_type end act_list = DeepCopy(act_list) act_type = act_list.act_type if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {}--红点信息 end local open_level = Config.Modulesub["331@72"].open_lv or 1 for l,w in pairs(act_list.condition_list) do if type(w) == "table" and w[1] == "role_lv" then open_level = tonumber(w[2]) end end if server_time > act_list.stime and act_list.etime > server_time then if my_level >= open_level then self.act_red_dot_info[base_type][act_list.sub_type] = false or not self.monopoly_first_open_red_flag[act_list.sub_type] if not self.act_red_dot_info[base_type][act_list.sub_type] then local server_info = self:GetMonopolyInfo(act_list.sub_type) if server_info and server_info.normal_count then local is_over = (server_info.cur_index == 26 and server_info.round == KfActivityModel.MonopolyMaxCircle) --红点 show = (server_info.normal_count + server_info.gold_count > 0) and not is_over if not show then for k,v in pairs(server_info.circle_rewards) do if act_list.circle <= 5 and act_list.status == 1 then show = true elseif act_list.circle > 5 and act_list.status == 1 then show = true end end end end self.act_red_dot_info[base_type][act_list.sub_type] = show end end end return show,act_type end --检查开服团购红点 function KfActivityModel:CheckKfGroupBuyingRedDot( sub_type ) local show = false local base_type = CustomActivityModel.CustomActBaseType.KF_GROUP_BUYING local act_info_list = CustomActivityModel:getInstance():getAllActListByBaseType(base_type) or {} local act_type = CustomActivityModel.CustomIconActType.KfAct if act_info_list and sub_type then--传进来只需要刷一次 for i,v in pairs(act_info_list) do if v.sub_type == sub_type then act_type = v.act_type self:CheckKfGroupBuyingSubTypeRedDot(v.sub_type) local is_mobilization_act = false for ii,vv in ipairs(v.condition_list) do if vv[1] == "custom_act" and tonumber(vv[2]) == 71 then is_mobilization_act = true MobilizationModel:getInstance():CheckGroupBuyingRed(tonumber(vv[3]))--这边要计算全民动员那边团购的红点 break end end end end end if self.act_red_dot_info[base_type] and TableSize(self.act_red_dot_info[base_type]) > 0 then local act_list = CustomActivityModel:getInstance():getActList(base_type, sub_type) if act_list then local is_mobilization_act = false for ii,vv in ipairs(act_list.condition_list) do if vv[1] == "custom_act" and tonumber(vv[2]) == 71 then is_mobilization_act = true end end if not is_mobilization_act then if self.act_red_dot_info[base_type][sub_type] then show = v end end end end return show,act_type end --检查限购礼包红点 function KfActivityModel:CheckLimitGiftRedDot( sub_type ) local all_list = CustomActivityModel:getInstance():getAllActListByBaseType(CustomActivityModel.CustomActBaseType.LIMIT_GIFT) or {} local show = false local base_type = CustomActivityModel.CustomActBaseType.LIMIT_GIFT local server_time = TimeUtil:getServerTime() local my_level = RoleManager.Instance.mainRoleInfo.level local act_type = CustomActivityModel.CustomIconActType.KfAct all_list = DeepCopy(all_list) if not all_list then return show,act_type end local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) act_list = DeepCopy(act_list) if not act_list then return show,act_type end act_type = act_list.act_type if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end local open_level = Config.Modulesub["331@3"].open_lv or 1 for l,w in pairs(act_list.condition_list) do if type(w) == "table" and w[1] == "role_lv" then open_level = tonumber(w[2]) end end -- self.act_red_dot_info[base_type][act_list.sub_type] = false if server_time > act_list.stime and act_list.etime > server_time then if my_level >= open_level and GetModuleIsOpen(331,CustomActivityModel.CustomActBaseType.LIMIT_GIFT) then self.act_red_dot_info[base_type][act_list.sub_type] = act_list.is_first_open == 1 or LimitGiftModel:getInstance().login_red[act_list.sub_type] if not self.act_red_dot_info[base_type][act_list.sub_type] then local award_data = CustomActivityModel:getInstance():getOneActRewardList(act_list.base_type,act_list.sub_type) if award_data then local is_buy_over = true for n,l in pairs(award_data.reward_list) do if l.status ~= 2 then is_buy_over = false break end end if is_buy_over then--买完了就不要作妖了 self.act_red_dot_info[base_type][act_list.sub_type] = false return false end for ii,vv in pairs(award_data.reward_list) do local conditon = vv.condition_list if conditon and not self.act_red_dot_info[base_type][act_list.sub_type] then local cur_price = nil local recharge_gold = nil for iii,vvv in ipairs(conditon) do if vvv[1] == "limit_cost" then cur_price = tonumber(vvv[2]) elseif vvv[1] == "recharge_gold" then recharge_gold = tonumber(vvv[2]) end end self.act_red_dot_info[base_type][act_list.sub_type] = vv.status == 1 and (cur_price == 0 or recharge_gold ~= nil) end end end end end end if LimitGiftModel:getInstance().login_red[act_list.sub_type] == nil then for k,v in pairs(all_list) do local award_data = CustomActivityModel:getInstance():getOneActRewardList(v.base_type,v.sub_type) if award_data and award_data.reward_list then for ii,vv in pairs(award_data.reward_list) do if LimitGiftModel:getInstance().login_red[act_list.sub_type] == nil then LimitGiftModel:getInstance().login_red[act_list.sub_type] = vv.status ~= 2 show = vv.status ~= 2 if show then self.act_red_dot_info[base_type][act_list.sub_type] = true end elseif LimitGiftModel:getInstance().login_red[act_list.sub_type] then break end end end end end show = show or LimitGiftModel:getInstance().login_red[act_list.sub_type] or self.act_red_dot_info[base_type] and self.act_red_dot_info[base_type][sub_type] or false return show,act_type end --检查限购礼包是否卖完 function KfActivityModel:CheckLimitGiftCanBuy( sub_type ) local all_list = CustomActivityModel:getInstance():getAllActListByBaseType(CustomActivityModel.CustomActBaseType.LIMIT_GIFT) or {} local show = false local base_type = CustomActivityModel.CustomActBaseType.LIMIT_GIFT local server_time = TimeUtil:getServerTime() local my_level = RoleManager.Instance.mainRoleInfo.level local act_type = CustomActivityModel.CustomIconActType.KfAct all_list = DeepCopy(all_list) if not all_list then return show,act_type end local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) act_list = DeepCopy(act_list) if not act_list then return show,act_type end act_type = act_list.act_type local open_level = Config.Modulesub["331@3"].open_lv or 1 for l,w in pairs(act_list.condition_list) do if type(w) == "table" and w[1] == "role_lv" then open_level = tonumber(w[2]) end end if server_time > act_list.stime and act_list.etime > server_time then if my_level >= open_level and GetModuleIsOpen(331,CustomActivityModel.CustomActBaseType.LIMIT_GIFT) then local award_data = CustomActivityModel:getInstance():getOneActRewardList(act_list.base_type,act_list.sub_type) if award_data then local is_buy_over = true local cur_vip = RoleManager.Instance.mainRoleInfo.vip_flag for n,l in pairs(award_data.reward_list) do local can_buy = true for i,v in pairs(l.condition_list) do if type(v) == "table" and v[1] == "vip" and tonumber(v[2]) > cur_vip then can_buy = false break end end if l.status ~= 2 and can_buy then is_buy_over = false break end end if not is_buy_over then -- 没卖完 return true end end end end return false end --检查限购礼包所有红点 function KfActivityModel:CheckLimitGiftAllRedDot( ) local all_act_list = CustomActivityModel:getInstance():getAllActListByBaseType(CustomActivityModel.CustomActBaseType.LIMIT_GIFT) or {} for i,v in pairs(all_act_list) do self:IsNeedRed(KfActivityModel.TabID.LimitGift,nil,v.sub_type) end end --检查冲榜红点 function KfActivityModel:CheckRushRankRedDot( sub_type ) -- if not GetModuleIsOpen(331,10) then return false end local openDay = ServerTimeModel:getInstance():GetOpenServerDay() local base_type = CustomActivityModel.CustomActBaseType.RUSH_RANK local sub_type = sub_type or CustomActivityModel:getInstance():getActMinSubType(base_type) local server_time = TimeUtil:getServerTime( ) local show = false local act_type = CustomActivityModel.CustomIconActType.KfAct if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false local all_act = CustomActivityModel:getInstance():getActList(CustomActivityModel.CustomActBaseType.RUSH_RANK,sub_type) if all_act then act_type = all_act.act_type if server_time > all_act.stime and all_act.etime >= server_time then local rank_type_list = self:GetTodayRankType() for k,rank_type in pairs(rank_type_list) do local target_reward_list = self:GetTargetRewardList(rank_type) if target_reward_list then for k,v in pairs(target_reward_list) do if v.state == 1 then show = true break end end end if show then break end end self.act_red_dot_info[base_type][sub_type] = show end end if self.act_red_dot_info[base_type] then for i,v in ipairs(self.act_red_dot_info[base_type]) do if v then return v,act_type end end end return false,act_type end --活动通用奖励红点33105 function KfActivityModel:CheckContinueRechargeRedDot(base_type,sub_type) if not sub_type then return false end local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local show = false local act_type = CustomActivityModel.CustomIconActType.KfAct if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false if act_list then act_type = act_list.act_type local server_time = TimeUtil:getServerTime( ) local info = CustomActivityModel:getInstance():getOneActRewardList(base_type, sub_type) if server_time > act_list.stime and act_list.etime > server_time then if info and info.reward_list then for k,n in pairs(info.reward_list) do if n.status == 1 then show = true end end end end if not show then local com_act_red_info = CustomActivityModel:getInstance():GetActComAwardInfo(act_list.base_type,act_list.sub_type) if com_act_red_info then show = com_act_red_info.status == 1 end end self.act_red_dot_info[act_list.base_type][act_list.sub_type] = show end return show,act_type end --活动通用奖励红点33105 function KfActivityModel:CheckActCommonRedDot(base_type,sub_type) -- if not GetModuleIsOpen(331,base_type) or not sub_type then return false end if not sub_type then return false end local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local show = false local act_type = CustomActivityModel.CustomIconActType.KfAct if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false if act_list then act_type = act_list.act_type local server_time = TimeUtil:getServerTime( ) local info = CustomActivityModel:getInstance():getOneActRewardList(base_type, sub_type) if server_time > act_list.stime and act_list.etime > server_time then if info and info.reward_list then for k,n in pairs(info.reward_list) do if n.status == 1 then self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true show = true end end end end -- if not show and base_type == CustomActivityModel.CustomActBaseType.CONTINUE_RECHARGE then--连充有额外处理 -- local resign_info = self:GetKfContinueInfo(act_list.sub_type) -- if resign_info then -- local award_day = math.ceil((act_list.etime - act_list.stime)/60/60/24)--当前活动剩余多少天 -- local real_day = math.ceil((TimeUtil:getServerTime( ) - act_list.stime)/60/60/24)--当前第几天 -- local day_award_list = {} -- for k,v in pairs(info.reward_list) do -- for ii,vv in ipairs(v.condition_list) do -- if vv[1] == "recharge_gold" and award_day >= v.grade then--天数奖励展示 -- local data = v -- data.day = v.grade -- day_award_list[#day_award_list + 1] = data -- end -- end -- end -- local sort_func = function ( a, b ) -- return a.day < b.day -- end -- if #day_award_list > 1 then -- table.sort(day_award_list, sort_func) -- end -- for i,v in ipairs(day_award_list) do -- if real_day > i and resign_info.can_resign_time > 0 and v.status == 0 then -- show = true -- self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true -- break -- end -- end -- end -- end end return show,act_type end function KfActivityModel:CheckFosterStageRedDot( base_type,sub_type ) if not sub_type then return false end local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local show = false local act_type = CustomActivityModel.CustomIconActType.KfAct if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false if act_list then act_type = act_list.act_type local server_time = TimeUtil:getServerTime( ) local info = CustomActivityModel:getInstance():getOneActRewardList(base_type, sub_type) if server_time > act_list.stime and act_list.etime > server_time then local openDay = ServerTimeModel:getInstance():GetOpenServerDay() local first_red_list = self:GetFosterStageCookie() or {} -- if openDay <= 8 and not self.forsert_stage_red_info[act_list.sub_type] then--前八天每次登陆红点 -- show = true -- elseif openDay > 8 and if not first_red_list[act_list.sub_type] then show = true else if info and info.reward_list then for k,n in pairs(info.reward_list) do if n.status == 1 then show = true end end end end self.act_red_dot_info[act_list.base_type][act_list.sub_type] = show end end return show,act_type end --设置开服进阶红点cookie function KfActivityModel:SetFosterStageCookie( sub_type ) local list = self:GetFosterStageCookie() or {} list[sub_type] = true CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,CookieTimeType.TYPE_DAY2,CookieKey.KF_FORSTER_STAGE_ACT_RED,list) CookieWrapper.Instance:WriteAll() end --获得开服进阶红点cookie function KfActivityModel:GetFosterStageCookie( ) local bool = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.KF_FORSTER_STAGE_ACT_RED) or {} return bool end --检查限购商城的红点 function KfActivityModel:CheckLimitShopRedDot( sub_type ) local base_type = CustomActivityModel.CustomActBaseType.KFACTIVITY_LIMIT_SHOP local show = false local level = RoleManager.Instance.mainRoleInfo.level local server_time = TimeUtil:getServerTime( ) local act_type = CustomActivityModel.CustomIconActType.KfAct local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) if act_list then act_list = DeepCopy(act_list) act_type = act_list.act_type local info = CustomActivityModel:getInstance():getOneActRewardList(act_list.base_type, act_list.sub_type) if not self.act_red_dot_info[act_list.base_type] then self.act_red_dot_info[act_list.base_type] = {} end self.act_red_dot_info[act_list.base_type][act_list.sub_type] = false if server_time > act_list.stime and act_list.etime > server_time then if info and info.reward_list then for k,n in pairs(info.reward_list) do local gold_type = 0 local limit_cost = 0 local show_level_range = {0,999999} local limit_times = 0 local limit_vip = 0 for i,v in ipairs(n.condition_list) do if v[1] == "gold_type" then gold_type = tonumber(v[2]) elseif v[1] == "limit_cost" then limit_cost = tonumber(v[2]) elseif v[1] == "limit_times" then limit_times = tonumber(v[2]) elseif v[1] == "show_level_range" then show_level_range = {tonumber(v[2]),tonumber(v[3])} elseif v[1] == "limit_vip" then limit_vip = tonumber(v[2]) end end --先满足等级和次数 if info.status ~= 2 and level >= tonumber(show_level_range[1]) and level <= tonumber(show_level_range[2]) and limit_times - n.progress > 0 and (RoleManager.Instance.mainRoleInfo.vip_flag >= limit_vip and not VipModel:getInstance():IsVipExperience()) then if gold_type == 2 and limit_cost <= RoleManager.Instance.mainRoleInfo.jinLock then--红钻数量满足 self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true show = true elseif gold_type == 1 and limit_cost == 0 then--免费 self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true show = true elseif gold_type == 2 and limit_cost == 0 then--免费 self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true show = true end end end end end end return show,act_type end --检查限购商城是否卖完 function KfActivityModel:CheckLimitShopCanBuy( sub_type ) local base_type = CustomActivityModel.CustomActBaseType.KFACTIVITY_LIMIT_SHOP local show = false local level = RoleManager.Instance.mainRoleInfo.level local server_time = TimeUtil:getServerTime( ) local act_type = CustomActivityModel.CustomIconActType.KfAct local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) if act_list then act_list = DeepCopy(act_list) act_type = act_list.act_type local info = CustomActivityModel:getInstance():getOneActRewardList(act_list.base_type, act_list.sub_type) if server_time > act_list.stime and act_list.etime > server_time then if info and info.reward_list then for k,n in pairs(info.reward_list) do local gold_type = 0 local limit_cost = 0 local show_level_range = {0,999999} local limit_times = 0 for i,v in ipairs(n.condition_list) do if v[1] == "gold_type" then gold_type = tonumber(v[2]) elseif v[1] == "limit_cost" then limit_cost = tonumber(v[2]) elseif v[1] == "limit_times" then limit_times = tonumber(v[2]) elseif v[1] == "show_level_range" then show_level_range = {tonumber(v[2]),tonumber(v[3])} end end --先满足等级和次数 if info.status ~= 2 and level >= tonumber(show_level_range[1]) and level <= tonumber(show_level_range[2]) and limit_times - n.progress > 0 then return true -- 有满足条件可以买的 end end end end end return show,act_type end --检查刮刮卡城的红点 function KfActivityModel:CheckScrapingCardRedDot(base_type, sub_type ) if not sub_type then return false end local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local show = false local act_type = CustomActivityModel.CustomIconActType.KfAct if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false if act_list then act_type = act_list.act_type local server_time = TimeUtil:getServerTime( ) if server_time > act_list.stime and act_list.etime > server_time then local b = OperateActivityModel:getInstance():ScrapingCradGetRedDot(sub_type) if b then self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true show = true end if not self.is_red_scraping_card_list[sub_type] then self.is_red_scraping_card_list[sub_type] = true OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33244, sub_type) OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33246, sub_type) end end end return show,act_type end --检查人参果树的红点 function KfActivityModel:CheckPrayTreeRedDot(base_type, sub_type ) if not sub_type then return false end local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local show = false local act_type = CustomActivityModel.CustomIconActType.KfAct if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false if act_list then act_type = act_list.act_type local server_time = TimeUtil:getServerTime( ) if server_time > act_list.stime and act_list.etime > server_time then local b = OperateActivityModel:getInstance():PrayTreeGetRedDot() if b then self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true show = true end if not self.is_red_praytreelist[sub_type] then self.is_red_praytreelist[sub_type] = true OperateActivityModel:getInstance():Fire(OperateActivityModel.REQUEST_INFO, 33280, sub_type) end end end return show,act_type end --检查集字红点 function KfActivityModel:CheckCollectActRedDot( base_type,sub_type ) if not sub_type then return false end local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local show = false local act_type = CustomActivityModel.CustomIconActType.KfAct if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false local cookies_list = OperateActivityModel:getInstance():GetJiZiRedDotTipCookie() local sub_cookies_list = cookies_list[sub_type] if act_list then act_type = act_list.act_type local server_time = TimeUtil:getServerTime( ) local info = CustomActivityModel:getInstance():getOneActRewardList(base_type, sub_type) if server_time > act_list.stime and act_list.etime > server_time then if info and info.reward_list then for k,n in pairs(info.reward_list) do local exchange_limit = 0 local goods_exchange_list = {} for kk,vv in pairs(n.condition_list) do if vv[1] == "exchange_limit" then--兑换限制 exchange_limit = tonumber(vv[2]) elseif vv[1] == "goods_exchange" then--兑换列表 goods_exchange_list = vv[2] end end local red_bool = GoodsModel:getInstance():GetEnough(goods_exchange_list) red_bool = red_bool and n.receive_times < exchange_limit if red_bool and not (sub_cookies_list and sub_cookies_list[n.grade]) then show = true self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true break end end end end end return show,act_type end --阶段兑换红点 function KfActivityModel:CheckStageExchangeRedDot( base_type,sub_type ) local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local act_type = CustomActivityModel.CustomIconActType.KfAct local bool = false if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false local server_time = TimeUtil:getServerTime( ) if act_list and server_time > act_list.stime and act_list.etime > server_time then act_type = act_list.act_type bool = self:GetStageExchangeRedDotBySubType(sub_type) self.act_red_dot_info[act_list.base_type][act_list.sub_type] = bool end return bool,act_type end --冒险征途红点 function KfActivityModel:CheckAdventureRedDot(base_type,sub_type) if not sub_type then return false end local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local show = false local act_type = CustomActivityModel.CustomIconActType.KfAct if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false if act_list then act_type = act_list.act_type local server_time = TimeUtil:getServerTime( ) local info = CustomActivityModel:getInstance():getOneActRewardList(base_type, sub_type) if server_time > act_list.stime and act_list.etime > server_time then ------------------------- --可以抽奖励 local adventure_data = OperateActivityModel:getInstance():GetAdventureNumInfo(sub_type) if adventure_data then if adventure_data.score >= KfActivityModel.AdventureOneCost then self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true show = true end end ------------------------- --有奖励可领取 if (not show) and info and info.reward_list then for k,n in pairs(info.reward_list) do if n.status == 1 then self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true show = true end end end end end return show,act_type end --黑白棋红点 function KfActivityModel:CheckReversiRedDot( base_type,sub_type ) local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local act_type = CustomActivityModel.CustomIconActType.KfAct if not act_list then return false,act_type end local bool = false if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false ------------------------- local open_level = Config.Modulesub["331@115"] and Config.Modulesub["331@115"].open_lv or 1 for l,w in pairs(act_list.condition_list) do if type(w) == "table" and w[1] == "role_lv" then open_level = tonumber(w[2]) end end if RoleManager.Instance.mainRoleInfo.level >= open_level then local server_time = TimeUtil:getServerTime( ) if act_list and server_time > act_list.stime and act_list.etime > server_time then act_type = act_list.act_type bool = self:GetReversiRedDotBySubType(sub_type) self.act_red_dot_info[act_list.base_type][act_list.sub_type] = bool end else self.check_lv_act_open = self.check_lv_act_open or {} self.check_lv_act_open[open_level] = self.check_lv_act_open[open_level] or {} self.check_lv_act_open[open_level][base_type] = self.check_lv_act_open[open_level][base_type] or {} self.check_lv_act_open[open_level][base_type][sub_type] = true end return bool,act_type end --节日幻魔红点 function KfActivityModel:CheckFestivalBossRedDot( base_type,sub_type ) local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local act_type = CustomActivityModel.CustomIconActType.KfAct if not act_list then return false,act_type end local bool = false if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false ------------------------- local open_level = Config.Modulesub["331@117"] and Config.Modulesub["331@117"].open_lv or 1 for l,w in pairs(act_list.condition_list) do if type(w) == "table" and w[1] == "role_lv" then open_level = tonumber(w[2]) end end if RoleManager.Instance.mainRoleInfo.level >= open_level then local server_time = TimeUtil:getServerTime( ) if act_list and server_time > act_list.stime and act_list.etime > server_time then act_type = act_list.act_type bool = self:GetFestivalBossRedDotBySubType(sub_type) self.act_red_dot_info[act_list.base_type][act_list.sub_type] = bool end else self.check_lv_act_open = self.check_lv_act_open or {} self.check_lv_act_open[open_level] = self.check_lv_act_open[open_level] or {} self.check_lv_act_open[open_level][base_type] = self.check_lv_act_open[open_level][base_type] or {} self.check_lv_act_open[open_level][base_type][sub_type] = true end return bool,act_type end -- 检查活跃拼图红点 function KfActivityModel:CheckJigsawRedDot(base_type, sub_type) if not sub_type then return false end local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local reward_cfg = CustomActivityModel:getInstance():getOneActRewardList(base_type, sub_type) local bool = false local act_type = CustomActivityModel.CustomIconActType.OpAct if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false if act_list and reward_cfg then act_type = act_list.act_type local server_time = TimeUtil:getServerTime( ) if server_time > act_list.stime and act_list.etime > server_time then bool = OperateActivityModel:getInstance():GetJigsawRed(sub_type, reward_cfg) self.act_red_dot_info[base_type][sub_type] = bool end end return bool, act_type end -- 检查合成机红点 function KfActivityModel:CheckActComposeRobotRedDot(base_type,sub_type) if not sub_type then return false end local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local act_type = act_list and act_list.act_type and act_list.act_type or CustomActivityModel.CustomIconActType.OpAct local bool = false if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false bool = OperateActivityModel:getInstance():GetComposeRobotMainRed(sub_type) self.act_red_dot_info[base_type][sub_type] = bool return bool, act_type end --检查自选扭蛋红点 function KfActivityModel:CheckActSelectEggRedDot(base_type,sub_type) if not sub_type then return false end local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local act_type = act_list and act_list.act_type and act_list.act_type or CustomActivityModel.CustomIconActType.OpAct local bool = false if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false bool = OperateActivityModel:getInstance():GetSelectEggMainRed(sub_type) self.act_red_dot_info[base_type][sub_type] = bool return bool, act_type end --检查材料上交红点 function KfActivityModel:CheckActMaterialSubmitRedDot( base_type,sub_type ) if not sub_type then return false end local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local act_type = act_list and act_list.act_type or CustomActivityModel.CustomIconActType.OpAct local bool = false if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false bool = OperateActivityModel:getInstance():CheckMaterialSubmitRedDot(base_type,sub_type) self.act_red_dot_info[base_type][sub_type] = bool return bool, act_type end --获得活动信息页签列表 function KfActivityModel:UpdateTab( act_type ) local menu_name_list = {} local is_chace = {} local my_level = RoleManager.Instance.mainRoleInfo.level local open_level = 0 local server_time = TimeUtil:getServerTime( ) for k, v in ipairs(KfActivityModel.TabData) do open_level = 0 if GetModuleIsOpen(v.module_id,v.base_type) and v.base_type ~= CustomActivityModel.CustomActBaseType.COPETING --竞榜不在这个判断里面 then if v.is_most then--是后台定制的活动就要进行数据选取 local sub_type_list = DeepCopy(CustomActivityModel:getInstance():getAllActListByBaseType(v.base_type)) for i,vv in pairs(sub_type_list) do if act_type == vv.act_type and v.base_type == CustomActivityModel.CustomActBaseType.DUN_MUL_DROP then--副本多倍只有一个页签 vv.id = v.id vv.sort_id = v.sort_id table_insert(menu_name_list, vv) break else if act_type == vv.act_type--活动类型首先要相等 and (server_time > vv.stime and vv.etime > server_time --满足活动开放时间 or v.base_type == CustomActivityModel.CustomActBaseType.ZERO_GIFT -- (0元礼包如果有未领的返还也要显示页签不能消失) or v.base_type == CustomActivityModel.CustomActBaseType.INVEST_ACT -- (投资活动如果有未领的天数奖励,页签不能消失) or v.base_type == CustomActivityModel.CustomActBaseType.COM_RANK--通用排行 )then for l,w in pairs(vv.condition_list) do if type(w) == "table" and w[1] == "role_lv" then open_level = tonumber(w[2]) break end end if not is_chace[v.base_type] then is_chace[v.base_type] = {} end if not is_chace[v.base_type][vv.sub_type] and open_level <= my_level then is_chace[v.base_type][vv.sub_type] = vv vv.id = v.id vv.sort_id = v.sort_id if v.base_type == CustomActivityModel.CustomActBaseType.RUSH_RANK then --开服冲榜 local today_list = self:GetTodayRankType() for n,l in ipairs(today_list) do local rush_rank_cfg = self:GetRushRankCfg(l) if rush_rank_cfg then vv.name = rush_rank_cfg.name vv.rank_type = l table_insert(menu_name_list, DeepCopy(vv)) break end end elseif v.base_type == CustomActivityModel.CustomActBaseType.LIMIT_GIFT then --限购礼包 local award_data = CustomActivityModel:getInstance():getOneActRewardList(v.base_type,vv.sub_type) if award_data then for n,l in pairs(award_data.reward_list) do if l.status ~= 2 then table_insert(menu_name_list, DeepCopy(vv)) break end end end elseif v.base_type == CustomActivityModel.CustomActBaseType.ZERO_GIFT then --0元礼包 if self:CheckZeroGiftTabIsOpen(vv.sub_type) then table_insert(menu_name_list, DeepCopy(vv)) end elseif v.base_type == CustomActivityModel.CustomActBaseType.KF_GROUP_BUYING then --开服团购不能是全民动员的嵌入式活动 local is_mobilization_act = false for n,l in pairs(vv.condition_list) do if l[1] == "custom_act" and tonumber(l[2]) == 71 then is_mobilization_act = true break end end if not is_mobilization_act then table_insert(menu_name_list, DeepCopy(vv)) end -- elseif v.base_type == CustomActivityModel.CustomActBaseType.INVEST_ACT then -- 投资活动 -- if self:CheckInvestActTabIsOpen(vv.sub_type) then -- table_insert(menu_name_list, DeepCopy(vv)) -- end elseif v.base_type == CustomActivityModel.CustomActBaseType.COM_RANK then -- 通用排行 if self:CheckComRankTabIsOpen(vv.sub_type) then table_insert(menu_name_list, DeepCopy(vv)) end elseif v.base_type == CustomActivityModel.CustomActBaseType.SUPER_AWARD then -- 超能大奖 if self:CheckSuperAwardTabIsOpen(v.base_type,vv.sub_type) then table_insert(menu_name_list, DeepCopy(vv)) end else table_insert(menu_name_list, vv) end end end end end else--直接插入 由前端决定是否开放的活动 v.sub_type = 1 table_insert(menu_name_list, v) end end end --这里判断是否有竞榜开放 然后插入进列表里面 local competing_open_list = CompetingListModel:getInstance():GetCompetingOpenActList(act_type) if competing_open_list and #competing_open_list > 0 then for k,v in pairs(competing_open_list) do table_insert(menu_name_list, v) end end self.menu_name_list = menu_name_list return menu_name_list end --检查超能大奖是否开启 function KfActivityModel:CheckSuperAwardTabIsOpen( base_type,sub_type ) local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) if act_list then local recharge_num = 0 local consume_num = 0 for k,v in pairs(act_list.condition_list) do if v[1] == "recharge" then recharge_num = tonumber(v[2]) elseif v[1] == "consume" then consume_num = tonumber(v[2]) end end local cur_recharge_num = 0 local cur_consume_num = 0 local award_data = CustomActivityModel:getInstance():getOneActRewardList(base_type,sub_type) local complete_num = 0 if award_data and award_data.reward_list then for kk,vv in ipairs(award_data.reward_list) do if #vv.condition_list == 1 then for m,n in ipairs(vv.condition_list) do if n[1] == "recharge" then cur_recharge_num = vv.progress break elseif n[1] == "consume" then cur_consume_num = vv.progress break end end end complete_num = (vv.status == 2 and 1 or 0) + complete_num end if recharge_num <= cur_recharge_num and consume_num <= cur_consume_num then local all_act_list = CustomActivityModel:getInstance():getAllActListByBaseType(base_type) if TableSize(all_act_list) == 1 then--一个的时候直接开 2个只能开一个 return true elseif TableSize(all_act_list) == 2 then if recharge_num>0 and consume_num>0 then--判断上一个是否全部完成 for i,v in pairs(all_act_list) do if v.sub_type ~= sub_type then complete_num = 0 local sub_award_data = CustomActivityModel:getInstance():getOneActRewardList(base_type,v.sub_type) if sub_award_data then for kk,vv in ipairs(sub_award_data.reward_list) do complete_num = (vv.status == 2 and 1 or 0) + complete_num end return complete_num >= #sub_award_data.reward_list end end end else return complete_num < #award_data.reward_list end end end end end return false end function KfActivityModel:CheckActivityIdOpen( act_type,id ) if id then local data = self:UpdateTab(act_type) local item_data = nil for k,v in pairs(data) do if v.id == id then item_data = v break end end if not item_data then return false end end return true end function KfActivityModel:GetTodayRankType()--获得当天的冲榜类型 local openDay = ServerTimeModel:getInstance():GetOpenServerDay() local rank_type_list = {} for _, v in pairs(Config.Rushrank) do if openDay >= tonumber(v.start_day) and openDay <= tonumber(v.clear_day) - 1 then rank_type_list[#rank_type_list + 1] = tonumber(v.id) end end if #rank_type_list >= 2 then local sort_func = function ( a, b ) return a < b end table.sort(rank_type_list, sort_func) end return rank_type_list end function KfActivityModel:GetRankTypeOpenDay(rank_type)--获得当天的冲榜类型 for _, v in pairs(Config.Rushrank) do if v.id == rank_type then return v.start_day end end return 1 end --设置冲榜信息 function KfActivityModel:SetRushRankInfo(vo) local new_rank_list = {} for i,v in ipairs(vo.rank_list) do new_rank_list[v.rank] = v end vo.rank_list = new_rank_list if not self.rush_rank_info[vo.sub_type] then self.rush_rank_info[vo.sub_type] = {} end self.rush_rank_info[vo.sub_type][vo.rank_type] = vo local base_type = CustomActivityModel.CustomActBaseType.OPERATE_ACTIVITY local op_act_list = CustomActivityModel:getInstance():getAllActListByBaseType(base_type) or {} for k, v in pairs(op_act_list) do if v.act_type == CustomActivityModel.CustomIconActType.KfAct then--开服冲榜 self:CheckActIconBoolOpen(v.sub_type) break end end end function KfActivityModel:GetRushRankInfo(sub_type,rank_type) if self.rush_rank_info[sub_type] then return self.rush_rank_info[sub_type][rank_type] end end --设置目标奖励信息 function KfActivityModel:SetTargetRewardList(vo) self.target_reward_list = {} for i,v in ipairs(vo.goal_list) do if not self.target_reward_list[v.rank_type] then self.target_reward_list[v.rank_type] = {} end self.target_reward_list[v.rank_type][v.goal] = v end self:IsNeedRed(KfActivityModel.TabID.RushRank,nil,vo.sub_type) end function KfActivityModel:GetTargetRewardList( rank_type ) return self.target_reward_list[rank_type] end --获得冲榜配置 function KfActivityModel:GetRushRankCfg( rank_type ) return self.rush_rank_cfg[rank_type] end --获得冲榜总配置 function KfActivityModel:GetAllRushRankCfg( rank_type ) return self.rush_rank_cfg end --获得冲榜奖励配置 function KfActivityModel:GetRushRankAwardCfg( id ) return self.rush_rank_award_cfg[id] end function KfActivityModel:GetRushGoalAwardCfg( id ) return self.rush_rank_goal_cfg[id] end --获得排名配置 function KfActivityModel:GetRushRankListCfg( id ) local award_cfg =DeepCopy(self:GetRushRankAwardCfg(id)) local rank_list = {} local rank_limit_list = {} if award_cfg then for i,v in ipairs(award_cfg) do for k=v.rank_min,v.rank_max do rank_list[k] = v.rank_limit local str_list = Split(Trim(v.about),"@") or {"",""} rank_limit_list[k] = str_list and str_list[2] or "" end end end return rank_list,rank_limit_list end --得到冲榜阶级说明 function KfActivityModel:GetRushRankLimitInfo(limit,index) local limitStr, value1, value2 = "", nil, nil index = index or 1 if TableSize(limit) > 0 then local str = tostring(limit[index][1]) if Trim(str) == "lv" then limitStr = "等级" value1 = tonumber(limit[index][2]) elseif Trim(str) == "combat" then limitStr = "战力" value1 = tonumber(limit[index][2]) elseif Trim(str) == "gold" then limitStr = "充值" value1 = tonumber(limit[index][2]) elseif Trim(str) == "stone_lv" then limitStr = "宝石" value1 = tonumber(limit[index][2]) elseif Trim(str) == "horse_stage" then limitStr = "坐骑" value1 = tonumber(limit[index][2][1]) value2 = tonumber(limit[index][2][2]) elseif Trim(str) == "pet_stage" then limitStr = "AI娘" value1 = tonumber(limit[index][2][1]) value2 = tonumber(limit[index][2][2]) end end return Trim(str), limitStr, value1, value2 end --累充充值总数 function KfActivityModel:SetRecharge(base_type, sub_type, number) local act_list = CustomActivityModel:getInstance():getActList(base_type, sub_type) if act_list then self.seven_recharge_total = self.seven_recharge_total or {} self.seven_recharge_total[sub_type] = number if not self.recharge_total then self.recharge_total = {} end if not self.recharge_total[base_type] then self.recharge_total[base_type] = {} end self.recharge_total[base_type][sub_type] = number end end function KfActivityModel:SetZeroGiftInfo( vo ) local new_data = {} for kk,vv in pairs(vo.reward_list) do new_data[vv.grade] = vv end vo.reward_list = new_data if vo and vo.sub_type then self.zero_gift_view_info[vo.sub_type] = {} self.zero_gift_view_info[vo.sub_type] = vo else self.zero_gift_view_info[vo.sub_type] = {} end self:ZeroGiftNeedTimeLater() -- local is_show_time = vo.start_time and (vo.start_time - TimeUtil:getServerTime()) > 0 local base_type = CustomActivityModel.CustomActBaseType.OPERATE_ACTIVITY local act_list = CustomActivityModel:getInstance():getAllActListByBaseType(base_type) or {} for k, v in pairs(act_list) do if v.act_type == CustomActivityModel.CustomIconActType.GiftAct then--限时礼包类型 self:CheckActIconBoolOpen(v.sub_type) break end end end function KfActivityModel:GetZeroGiftInfo(sub_type) return self.zero_gift_view_info[sub_type] or nil end function KfActivityModel:GetZeroGiftGradeInfo(sub_type,grade) if not self.zero_gift_view_info[sub_type] then return nil end for k,v in pairs(self.zero_gift_view_info[sub_type].reward_list) do if v.grade == grade then return v end end return nil end function KfActivityModel:ZeroGiftNeedTimeLater( )--是否需要倒计时刷新 for k,v in pairs(self.zero_gift_view_info) do local limit_time = 0 local limit_data = nil for kk,vv in pairs(v.reward_list) do if vv.time - TimeUtil:getServerTime() > 0 then if limit_time - TimeUtil:getServerTime() > 0 then if limit_time > vv.time then limit_time = vv.time limit_data = vv end else limit_time = vv.time limit_data = vv end end end if limit_time - TimeUtil:getServerTime() > 0 then self:SetZeroGiftActDetailShow(v.sub_type,limit_data) else if self.zero_gift_time_id_list[v.sub_type] then GlobalTimerQuest:CancelQuest(self.zero_gift_time_id_list[v.sub_type]) self.zero_gift_time_id_list[v.sub_type] = nil end end end end function KfActivityModel:SetZeroGiftActDetailShow( sub_type,data ) if self.zero_gift_time_id_list[sub_type] then GlobalTimerQuest:CancelQuest(self.zero_gift_time_id_list[sub_type]) self.zero_gift_time_id_list[sub_type] = nil end if not sub_type or not data.time then return end local sec = data.time - TimeUtil:getServerTime() if sec >= 0 then local function onTimer() sec = data.time - TimeUtil:getServerTime() if sec >= 0 then -- print("WQ:AllGiftModel [155]倒计时领奖中: ",sec) else if self.zero_gift_time_id_list[sub_type] then local function delay_method( ) self:Fire(KfActivityModel.REQUEST_INFO,33185,CustomActivityModel.CustomActBaseType.ZERO_GIFT,sub_type) end setTimeout(delay_method, 0.5) GlobalTimerQuest:CancelQuest(self.zero_gift_time_id_list[sub_type]) self.zero_gift_time_id_list[sub_type] = nil end end end if not self.zero_gift_time_id_list[sub_type] then self.zero_gift_time_id_list[sub_type] = GlobalTimerQuest:AddPeriodQuest(onTimer, 1, -1) end else if self.zero_gift_time_id_list[sub_type] then GlobalTimerQuest:CancelQuest(self.zero_gift_time_id_list[sub_type]) self.zero_gift_time_id_list[sub_type] = nil end end end --设置团购信息 function KfActivityModel:SetGroupBuyingInfo( scmd ) local list = {} for k,v in pairs(scmd.list) do list[v.grade] = v end scmd.list = list self.group_buying_view_info[scmd.sub_type] = scmd end --团购信息推送 设置信息 function KfActivityModel:SetGroupBuyingInfoByGrade( scmd ) if self.group_buying_view_info[scmd.sub_type] and self.group_buying_view_info[scmd.sub_type].list and self.group_buying_view_info[scmd.sub_type].list[scmd.grade] then self.group_buying_view_info[scmd.sub_type].list[scmd.grade] = scmd end end function KfActivityModel:GetGroupBuyingInfo( sub_type ) return self.group_buying_view_info[sub_type] end --团购倒计时 function KfActivityModel:KfGroupBuyingTimeLater( sub_type ) if self.groupBuying_time_id_list[sub_type] then GlobalTimerQuest:CancelQuest(self.groupBuying_time_id_list[sub_type]) self.groupBuying_time_id_list[sub_type] = nil end if not sub_type or not self.group_buying_time_list[sub_type] then return end if self.group_buying_time_list[sub_type] > 0 then local function onTimer() self.group_buying_time_list[sub_type] = self.group_buying_time_list[sub_type] - 1 if self.group_buying_time_list[sub_type] >= 0 then else if self.groupBuying_time_id_list[sub_type] then GlobalTimerQuest:CancelQuest(self.groupBuying_time_id_list[sub_type]) self.groupBuying_time_id_list[sub_type] = nil end end end if not self.groupBuying_time_id_list[sub_type] then self.groupBuying_time_id_list[sub_type] = GlobalTimerQuest:AddPeriodQuest(onTimer, 1, -1) end else if self.groupBuying_time_id_list[sub_type] then GlobalTimerQuest:CancelQuest(self.groupBuying_time_id_list[sub_type]) self.groupBuying_time_id_list[sub_type] = nil end end end --检查开服团购红点子类型 function KfActivityModel:CheckKfGroupBuyingSubTypeRedDot( sub_type ) local info = self:GetGroupBuyingInfo(sub_type) local base_type = CustomActivityModel.CustomActBaseType.KF_GROUP_BUYING if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end if not info or not info.list then self.act_red_dot_info[base_type][sub_type] = false return end local sort_func = function ( a, b ) return a.grade < b.grade end self.act_red_dot_info[base_type][sub_type] = false local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local award_data = CustomActivityModel:getInstance():getOneActRewardList(base_type,sub_type) local jin_enough = false if award_data and award_data.reward_list and info.list then local gold_type = 0 local original_price = 0 local discount_list = nil local member_list = nil table.sort(award_data.reward_list, sort_func) for kk,vv in ipairs(award_data.reward_list) do for m,n in ipairs(vv.condition_list) do if n[1] == "gold_type" then gold_type = tonumber(n[2]) elseif n[1] == "original_price" then original_price = tonumber(n[2]) elseif n[1] == "discount" then discount_list = n[2] elseif n[1] == "member" then member_list = n[2] end end if info.list[vv.grade] and gold_type == 2 then local is_buy = info.list[vv.grade].price ~= 0--是否购买 local cur_discount = self:GetKfGroupBuyingCurDiscount(discount_list,member_list,info.list[vv.grade].member) if not is_buy and not jin_enough then jin_enough = (gold_type == 1 and original_price*cur_discount/10 <= RoleManager.Instance.mainRoleInfo.jin) or original_price*cur_discount/10 <= RoleManager.Instance.mainRoleInfo.jinLock end local get_num = is_buy and (info.list[vv.grade].price - cur_discount*original_price/10) or 0 self.act_red_dot_info[base_type][sub_type] = get_num > 0 if get_num > 0 then break end end end end -- local group_red_list = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.GROUP_BUYING) or {} -- if group_red_list[sub_type] == nil then -- group_red_list[sub_type] = true -- CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,CookieTimeType.TYPE_ALWAYS,CookieKey.GROUP_BUYING,group_red_list) -- CookieWrapper.Instance:WriteAll() -- end if self.group_red_list[sub_type] == nil and not jin_enough then--买不起 没红点 self.group_red_list[sub_type] = false end if self.group_red_list[sub_type] == false and jin_enough then--本来买不起 突然有钱了 买的起 那就要有红点了。 self.group_red_list[sub_type] = nil end if self.group_red_list[sub_type] == nil then for i,v in ipairs(info.list) do local is_buy = v.price ~= 0--是否购买 if not is_buy then--未购买 self.act_red_dot_info[base_type][sub_type] = true break end end end -- print("huangcong:KfActivityModel [start:1792] :", self.act_red_dot_info[base_type]) -- PrintTable(self.act_red_dot_info[base_type]) -- print("huangcong:KfActivityModel [end]") end --获取当前折数 function KfActivityModel:GetKfGroupBuyingCurDiscount( discount_list,member_list,member ) local cur_discount = 0 if discount_list and #discount_list > 0 then local member_num = member or 0 for i,v in ipairs(member_list) do if tonumber(v) <= member_num then cur_discount = tonumber(discount_list[i]) end end end cur_discount = cur_discount < 0 and 0 or cur_discount return cur_discount end --获得补签消耗 function KfActivityModel:GetMonopolyDesignPrice( count ) if Config.Monoprice[count] then return Config.Monoprice[count].price end return 0 end --获得大富翁圈数格子配置 function KfActivityModel:GetMonopolyLatticeCfg( round,index ) if not index then return self.mono_lattice_cfg[round] elseif self.mono_lattice_cfg[round] then return self.mono_lattice_cfg[round][index] end end --获得小宝箱奖励 function KfActivityModel:GetMonopolySmallBoxAward( index ) return self.mono_smallbox_award_cfg[index] end --获得幸运卡奖励 function KfActivityModel:GetMonopolyLuckyAward( index ) return self.mono_lucky_award_cfg[index] end --获得大富翁圈数奖励 function KfActivityModel:GetMonopolyRoundAward( sub_type,round ) if self.mono_round_award_cfg[sub_type] and not round then return self.mono_round_award_cfg[sub_type] elseif self.mono_round_award_cfg[sub_type] then return self.mono_round_award_cfg[sub_type][round] end end --设置大富翁信息 function KfActivityModel:SetMonopolyInfo( vo ) local new_data = vo -- local new_lucky_pools = {} -- for k,v in pairs(vo.lucky_pools) do -- new_lucky_pools[v.index] = v -- end local new_dice_list = {} for k,v in pairs(vo.dice_list) do new_dice_list[v.index] = v end local new_circle_rewards = {} for k,v in pairs(vo.circle_rewards) do new_circle_rewards[v.circle] = v end -- new_data.lucky_pools = new_lucky_pools if #vo.lucky_pools > 1 then local sort_func = function ( a, b ) return a.index < b.index end table.sort(vo.lucky_pools, sort_func) end -- print("huangcong:KfActivityController [start:547] vo:", vo.lucky_pools) -- PrintTable(vo.lucky_pools) -- print("huangcong:KfActivityController [end]") new_data.dice_list = new_dice_list new_data.circle_rewards = new_circle_rewards self.monopoly_info[vo.sub_type] = vo end --获得大富翁信息 function KfActivityModel:GetMonopolyInfo( sub_type ) return self.monopoly_info[sub_type] end --检查活动图标(开服活动 精彩活动 主题活动)开启 function KfActivityModel:CheckActIconBoolOpen( sub_type ) local base_type = CustomActivityModel.CustomActBaseType.OPERATE_ACTIVITY local sub_type = sub_type or CustomActivityModel:getInstance():getActMinSubType(base_type) local level = RoleManager.Instance.mainRoleInfo.level local act_list = CustomActivityModel:getInstance():getActList(base_type, sub_type) local openDay = ServerTimeModel:getInstance():GetOpenServerDay() local is_open = false local end_time = 0 local open_level = 1 local close_level = 9999 local icon_sub_type = base_type*1000 + sub_type if sub_type >= 10001 then icon_sub_type = base_type*100000 + sub_type end if act_list and act_list.etime then for l,w in pairs(act_list.condition_list) do if type(w) == "table" and w[1] == "role_lv" then open_level = tonumber(w[2]) elseif type(w) == "table" and w[1] == "close_lv" then close_level = tonumber(w[2]) end end local have_time = TimeUtil:getServerTime( ) - act_list.stime end_time = act_list.etime - TimeUtil:getServerTime() is_open = have_time > 0 and end_time > 0 and open_level <= level and close_level > level if GetModuleIsOpen(331,base_type) then if is_open then if act_list.act_type == CustomActivityModel.CustomIconActType.JcAct then--开服狂huan local act_sub_list = self:UpdateTab(act_list.act_type) if TableSize(act_sub_list) > 0 then self:UpdateZeroGiftIconState(icon_sub_type) end end if act_list.act_type == CustomActivityModel.CustomIconActType.GiftAct then local act_sub_list = self:UpdateTab(act_list.act_type) if TableSize(act_sub_list) > 0 then local min_time = self:GetActiListMinTime(act_sub_list) if min_time and min_time > 0 then local str = nil if openDay <= 4 and level < 110 then str = "110级可领" end ActivityIconManager:getInstance():addIcon(icon_sub_type, min_time, str) else ActivityIconManager:getInstance():addIcon(icon_sub_type, -1) end else ActivityIconManager:getInstance():deleteIcon(icon_sub_type) end elseif act_list.act_type == CustomActivityModel.CustomIconActType.KfAct and openDay <= 8 then--开服排行开服前8天底下要显示开服冲榜信息 local rank_type_list = self:GetTodayRankType() local rank_sub_type = CustomActivityModel:getInstance():getActMinSubType(CustomActivityModel.CustomActBaseType.RUSH_RANK) local rank_info = self:GetRushRankInfo(rank_sub_type,rank_type_list and rank_type_list[1]) local str = "今日主题" local rank_max_limit = self:GetRushRankMaxLimit(rank_type_list and rank_type_list[1])--冲榜最大限制 if rank_info and rank_info.sel_rank and rank_info.sel_rank ~= 0 and rank_info.sel_rank <= rank_max_limit then str = string.format("排名:%s",rank_info.sel_rank) end ActivityIconManager:getInstance():addIcon(icon_sub_type, -1, str) else ActivityIconManager:getInstance():addIcon(icon_sub_type, -1) end else ActivityIconManager:getInstance():deleteIcon(icon_sub_type) end else -- print("huangcong:KfActivityModel [62]: ",key) end else ActivityIconManager:getInstance():deleteIcon(icon_sub_type) end end -- 0元礼包特殊更新逻辑 function KfActivityModel:UpdateZeroGiftIconState(icon_sub_type) if RoleManager.Instance.mainRoleInfo.level > 96 then return end local zeroGiftHaveOpen = self:GetZeroGiftFirstOpenCookie() -- print("Lizhijian:KfActivityModel [start:2264] self.haveBubble ------------------------------------------") -- 零元礼包界面打开后不显示气泡 if not zeroGiftHaveOpen and not self.haveBubble then self.haveBubble = true -- 0元礼包气泡提示 前端自定义配置,可修改 local act_icon_info = { condition_list = { { 'type', 0}, -- 0为直接读取图片,1为读取程序字 { 'role_lv', 96}, { 'func', icon_sub_type}, { 'show', 999}, -- 显示时长 { 'node', {0}}, { 'loc', 'right'}, {'bg_type', 36} -- 气泡样式,对应1或者2的资源后缀 }, stime = 0, base_type = 999, sub_type = -1, -- 气泡显示优先级,-1为最高优先级 etime = 2147000000, --INT_MAX desc = "免费送SR战魂", -- 气泡文本内容 condition = "", is_first_open = 0, wlv = 948, name = "0元礼包", act_type = CustomActivityModel.CustomIconActType.JcAct, } local function delay_func( ... ) ActivityIconManager:getInstance():SetActivityIconCustomDescInfo(act_icon_info) end setTimeout(delay_func,60) end -- 零元礼包界面打开后不显示光效 local icon_data = ActivityIconManager:getIconCfg(icon_sub_type) if zeroGiftHaveOpen then icon_data.effect_name = nil else icon_data.effect_name = "ui_bianqiang" end ActivityIconManager:SetIconNewCfgInfo(icon_data) GlobalEventSystem:Fire(ActivityIconManager.UPDATE_SINGLE_ICON,icon_sub_type) end --获得活动列表最小时间 function KfActivityModel:GetActiListMinTime( all_list ) local my_level = RoleManager.Instance.mainRoleInfo.level local min_end_time = nil local server_time = TimeUtil:getServerTime( ) for k,v in pairs(all_list) do local open_level = Config.Modulesub["331@"..v.base_type].open_lv or 1 local end_time = v.etime for l,w in pairs(v.condition_list) do if type(w) == "table" and w[1] == "role_lv" then open_level = tonumber(w[2]) break end end if server_time > v.stime and end_time > server_time then--暂时先用这个不然看不到 if my_level >= open_level and GetModuleIsOpen(331,v.base_type) then if v.base_type == CustomActivityModel.CustomActBaseType.ZERO_GIFT then--0元礼包的拿自己的数据 local zero_info = self:GetZeroGiftInfo(v.sub_type) if zero_info and zero_info.reward_list then for kk,vv in pairs(zero_info.reward_list) do if vv.status ~= 2 then if not min_end_time then min_end_time = end_time - TimeUtil:getServerTime( ) else min_end_time = (end_time - TimeUtil:getServerTime( )) < min_end_time and (end_time - TimeUtil:getServerTime( )) or min_end_time end end end end else local award_data = CustomActivityModel:getInstance():getOneActRewardList(v.base_type,v.sub_type) if award_data and award_data.reward_list then for ii,vv in pairs(award_data.reward_list) do if vv.status ~= 2 then if not min_end_time then min_end_time = end_time - TimeUtil:getServerTime( ) else min_end_time = (end_time - TimeUtil:getServerTime( )) < min_end_time and (end_time - TimeUtil:getServerTime( )) or min_end_time end end end end end end end end return min_end_time end --检查活动图标升级刷新 function KfActivityModel:CheckActIconLevelUp( level ) if level >= Config.Modulesub["331@99"].open_lv then--主题活动判断等级 local all_act_list = CustomActivityModel:getInstance():getAllActListByBaseType(CustomActivityModel.CustomActBaseType.OPERATE_ACTIVITY) if all_act_list then for i,v in pairs(all_act_list) do for l,w in pairs(v.condition_list) do if type(w) == "table" and w[1] == "role_lv" then local open_level = tonumber(w[2]) if open_level == level or level == Config.Modulesub["331@99"].open_lv then self:CheckActIconBoolOpen(v.sub_type) self:CheckMainIconRedDot(v.act_type) end end end end end end end --获得活动类型资源 function KfActivityModel:GetActTypeRes( act_type ) return KfActivityConst.ActTypeRes[act_type] end --获得界面类 function KfActivityModel:GetViewClassAndDesc(id,choose_tab_data) local view_class = self.act_view_class[id] local desc_str = "" if choose_tab_data.base_type and choose_tab_data.sub_type then local act_list = CustomActivityModel:getInstance():getActList(choose_tab_data.base_type, choose_tab_data.sub_type) if act_list then if string.len(act_list.desc) == 0 and choose_tab_data.base_type == 7 then desc_str = string.format("%s",HtmlColorTxt("活动期间,每日累充到一定金额,即可领取丰厚的返利奖励!", ColorUtil.WHITE_DARK)) elseif choose_tab_data.base_type == CustomActivityModel.CustomActBaseType.MONOPOLY then--大富翁说明在界面里面 desc_str = "" elseif choose_tab_data.base_type == CustomActivityModel.CustomActBaseType.Competing then--竞榜有自己的时间 desc_str = "" elseif choose_tab_data.base_type == CustomActivityModel.CustomActBaseType.DUN_MUL_DROP then--竞榜有自己的时间 desc_str = "" elseif choose_tab_data.base_type == CustomActivityModel.CustomActBaseType.BOSS_TREASURE then--幻魔宝典 desc_str = "" elseif choose_tab_data.base_type == CustomActivityModel.CustomActBaseType.RUSH_RANK then--幻魔宝典 elseif choose_tab_data.base_type == CustomActivityModel.CustomActBaseType.FESTIVAL_BOSS then--节日幻魔 desc_str = "" elseif choose_tab_data.base_type == CustomActivityModel.CustomActBaseType.LOGIN_PASS then desc_str = "" elseif choose_tab_data.base_type == CustomActivityModel.CustomActBaseType.COMPOSE_ROBOT then--合成机自己有额外说明 desc_str = "" elseif choose_tab_data.base_type == CustomActivityModel.CustomActBaseType.DISCOUNT_FULL_CUT then desc_str = "" elseif choose_tab_data.base_type == CustomActivityModel.CustomActBaseType.JUMP_ONE then desc_str = "" else local desc = ChuanWenManager:getInstance():FormatColorTag2(Trim(act_list.desc),true) desc_str = string.format("%s",desc) end else desc_str = "" end end if string.len(desc_str) ~= 0 then desc_str = string.format("活动说明:%s","#a9c1e1",desc_str) or "" end return view_class,desc_str end --获得活动类型 function KfActivityModel:GetActType(sub_type,id) local act_type = nil if id == KfActivityModel.TabID.Competing and sub_type then local competing_cfg = CompetingListModel:getInstance():GetCompetingCfg(sub_type) if competing_cfg then local icon_act_type = CustomActivityModel.CustomIconActType.KfAct--默认放在开服活动图标里面 for k,v in pairs(competing_cfg.condition) do if v[1] == "icon" then act_type = tonumber(v[2]) break end end end return act_type end local server_time = TimeUtil:getServerTime() if id then for k,v in pairs(KfActivityModel.TabData) do if v.id == id then local base_type = v.base_type local all_act_list = CustomActivityModel:getInstance():getAllActListByBaseType(base_type) local open_level = 1 for kk,vv in pairs(all_act_list) do open_level = 1 if server_time > vv.stime and vv.etime > server_time and (not sub_type or sub_type == vv.sub_type) then--满足活动开放时间(0元礼包如果有未领的返还也要显示页签不能消失) for l,w in pairs(vv.condition_list) do if type(w) == "table" and w[1] == "role_lv" then open_level = tonumber(w[2]) break end end if open_level <= RoleManager.Instance.mainRoleInfo.level then act_type = vv.act_type break end end end break end end else local base_type = CustomActivityModel.CustomActBaseType.OPERATE_ACTIVITY local act_list = CustomActivityModel:getInstance():getActList(base_type, sub_type) if act_list then act_type = act_list.act_type end end return act_type end --设置嗨点活动信息 function KfActivityModel:SetHighPointInfo( scmd ) if not self.high_info then self.high_info = {} end if not self.high_info[scmd.base_type] then self.high_info[scmd.base_type] = {} end if not self.high_info[scmd.base_type][scmd.sub_type] then self.high_info[scmd.base_type][scmd.sub_type] = {} end self.high_info[scmd.base_type][scmd.sub_type] = scmd local sort_func = function ( a, b ) return a.order_id < b.order_id end table.sort(scmd.mod_list, sort_func) local new_mod_list = {} for i,v in ipairs(scmd.mod_list) do local data = v local jump_id_list = stringtotable(data.jump_id) if jump_id_list then data.jump_id = jump_id_list[1] end new_mod_list[#new_mod_list + 1] = data end self.high_info[scmd.base_type][scmd.sub_type].mod_list = scmd.mod_list if scmd.base_type == CustomActivityModel.CustomActBaseType.HIGH_POINT then--嗨点更新 self:IsNeedRed(KfActivityModel.TabID.HighPoint,nil,scmd.sub_type) elseif scmd.base_type == CustomActivityModel.CustomActBaseType.HIGH_EXCHANGE then--嗨点兑换更新 self:IsNeedRed(KfActivityModel.TabID.HighExchange,nil,scmd.sub_type) end end --嗨点总数推送 需要刷新红点 function KfActivityModel:SetHighPointSumNum( scmd ) if self.high_info[scmd.base_type] and self.high_info[scmd.base_type][scmd.sub_type] then self.high_info[scmd.base_type][scmd.sub_type].sum_points = scmd.sum_points end if scmd.base_type == CustomActivityModel.CustomActBaseType.HIGH_POINT then--嗨点更新 self:IsNeedRed(KfActivityModel.TabID.HighPoint,nil,scmd.sub_type) elseif scmd.base_type == CustomActivityModel.CustomActBaseType.HIGH_EXCHANGE then--嗨点兑换更新 self:IsNeedRed(KfActivityModel.TabID.HighExchange,nil,scmd.sub_type) end end --获得嗨点兑换资源图标 function KfActivityModel:GetHighExchangeIconPic( sub_type ) local base_type = CustomActivityModel.CustomActBaseType.HIGH_EXCHANGE sub_type = sub_type or CustomActivityModel:getInstance():getActMinSubType(base_type) local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) if act_list then for k,v in pairs(act_list.condition_list) do if v[1] and v[2] then if v[1] == "act_icon_pic" then return tonumber(v[2]) end end end end return 1 end --获得嗨点红点资源信息 function KfActivityModel:GetHighPointInfo( base_type, sub_type ) if self.high_info[base_type] then return self.high_info[base_type][sub_type] end end --检查嗨点红点 function KfActivityModel:CheckHighPointRedDot(base_type,sub_type) -- if not GetModuleIsOpen(331,base_type) or not sub_type then return false end if not sub_type then return false end local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local show = false local act_type = CustomActivityModel.CustomIconActType.KfAct if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false if act_list then act_type = act_list.act_type local server_time = TimeUtil:getServerTime( ) local info = CustomActivityModel:getInstance():getOneActRewardList(base_type, sub_type) if server_time > act_list.stime and act_list.etime > server_time then if info and info.reward_list then for k,n in pairs(info.reward_list) do if n.status == 1 then self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true show = true elseif n.status == 0 then local parse = n.condition_list if parse then local max = 0 local limit_time = 0 for kk,vv in pairs(parse) do--[{hi_points,250},{limit_times,1},{tag,1},{show_level_range,1,999}] if vv[1] == "hi_points" then max = tonumber(vv[2]) elseif vv[1] == "limit_times" then limit_time = tonumber(vv[2]) end end local max = tonumber(parse[1][2]) local server_info = self:GetHighPointInfo(act_list.base_type,act_list.sub_type) local cur = 0 if server_info and server_info.sum_points then cur = server_info.sum_points end if act_list.base_type == CustomActivityModel.CustomActBaseType.HIGH_POINT then if cur >= max then self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true show = true end elseif act_list.base_type == CustomActivityModel.CustomActBaseType.HIGH_EXCHANGE then if limit_time > n.receive_times and (cur >= max or not self.high_login_red_list[act_list.sub_type]) then self.act_red_dot_info[act_list.base_type][act_list.sub_type] = true show = true end end end end end end end end return show,act_type end -- 设置投资活动数据 33141 function KfActivityModel:SetInvestActData(vo) self.invest_event_data[vo.sub_type] = self.invest_event_data[vo.sub_type] or {} self.invest_event_data[vo.sub_type].sub_type = vo.sub_type self.invest_event_data[vo.sub_type].investment_list = vo.investment_list end function KfActivityModel:GetInvestActData(sub_type, grade) if grade then if self.invest_event_data[sub_type] and self.invest_event_data[sub_type].investment_list then for k, v in pairs(self.invest_event_data[sub_type].investment_list) do if v.grade == grade then return v end end end return nil else return self.invest_event_data[sub_type] end end -- 获取投资档位的天数奖励领取情况 function KfActivityModel:GetInvestActGradeReceiveFlag(sub_type, grade, day_num) local grade_data = self:GetInvestActData(sub_type, grade) if grade_data then for k, v in ipairs(grade_data.awards) do if v.award_id == day_num then return v.status -- 0不可领 1可领 2已领 end end end return 0 end -- 更新投资档位的购买情况 33142 function KfActivityModel:UpdateInvestActBuyFlag(vo) self.invest_event_data[vo.sub_type] = self.invest_event_data[vo.sub_type] or {} self.invest_event_data[vo.sub_type].investment_list = self.invest_event_data[vo.sub_type].investment_list or {} for k, v in pairs(self.invest_event_data[vo.sub_type].investment_list) do if v.grade == vo.grade then v.is_buy = 1 break end end end -- 更新投资活动数据 33144 function KfActivityModel:UpdateInvestActData(vo) if self.invest_event_data[vo.sub_type] and self.invest_event_data[vo.sub_type].investment_list then for k, grade_data in ipairs(self.invest_event_data[vo.sub_type].investment_list) do if grade_data.grade == vo.grade then for k2, v in ipairs(grade_data.awards) do if v.award_id == vo.day then v.status = 2 break end end break end end end end -- 检查目标子活动页签是否显示 function KfActivityModel:CheckInvestActTabIsOpen(sub_type) local invest_data = self:GetInvestActData(sub_type) if invest_data then for k, v in ipairs(invest_data.investment_list) do if v.is_buy == 0 then -- 存在未购买,则显示页签 return true end -- 已购买的要判断是否有未领取的奖励 for k2, v2 in ipairs(v.awards) do if v2.status ~= 2 then -- 存在不可领或者可领取的,则显示页签 return true end end end end return false end -- 检查投资活动红点 function KfActivityModel:CheckActInvestRedDot(sub_type) local act_list = CustomActivityModel:getInstance():getActList(CustomActivityModel.CustomActBaseType.INVEST_ACT, sub_type) local act_type = CustomActivityModel.CustomIconActType.KfAct local bool = false self.invest_grade_red_cache[sub_type] = self.invest_grade_red_cache[sub_type] or {} if act_list then act_type = act_list.act_type if not self.act_red_dot_info[act_list.base_type] then self.act_red_dot_info[act_list.base_type] = {} end local invest_data = self:GetInvestActData(sub_type) if invest_data then for k, v in ipairs(invest_data.investment_list) do local grade_red = false if v.is_buy == 1 then for k2, v2 in ipairs(v.awards) do grade_red = grade_red or v2.status == 1 end end bool = bool or grade_red -- 同时缓存投资的档位红点 self.invest_grade_red_cache[sub_type][v.grade] = grade_red end end if not bool then local com_act_red_info = CustomActivityModel:getInstance():GetActComAwardInfo(act_list.base_type,act_list.sub_type) if com_act_red_info then bool = com_act_red_info.status == 1 end if not bool and com_act_red_info and com_act_red_info.tab_list then--投资活动比较特殊 for i,v in ipairs(com_act_red_info.tab_list) do if v.status == 1 then bool = true break end end end end self.act_red_dot_info[act_list.base_type][act_list.sub_type] = bool end return bool, act_type end -- 获取缓存的投资档位红点 function KfActivityModel:GetInvestActGradeRed(sub_type, grade) local show_red = self.invest_grade_red_cache[sub_type] and self.invest_grade_red_cache[sub_type][grade] or false if not show_red then local com_act_red_info = CustomActivityModel:getInstance():GetActComAwardInfo(CustomActivityModel.CustomActBaseType.INVEST_ACT,sub_type) if com_act_red_info and com_act_red_info.tab_list then--投资活动比较特殊 for i,v in ipairs(com_act_red_info.tab_list) do if v.status == 1 and v.grade == grade then show_red = true break end end end end return show_red end function KfActivityModel:CheckLuckyTurnTableRedDot(sub_type) local need_red = false local data1 = OperateActivityModel:getInstance():GetLuckyTurnTableBaseInfo(sub_type, 1) local data2 = OperateActivityModel:getInstance():GetLuckyTurnTableBaseInfo(sub_type, 2) if TableSize(data1) > 0 then local rest_num = data1.times - data1.use_times need_red = need_red or rest_num > 0 end if TableSize(data2) > 0 then local rest_num = data2.times - data2.use_times need_red = need_red or rest_num > 0 end local act_list = CustomActivityModel:getInstance():getActList(CustomActivityModel.CustomActBaseType.LUCKY_TURNTABLE, sub_type) local act_type = CustomActivityModel.CustomIconActType.KfAct local bool = false if not self.act_red_dot_info[CustomActivityModel.CustomActBaseType.LUCKY_TURNTABLE] then self.act_red_dot_info[CustomActivityModel.CustomActBaseType.LUCKY_TURNTABLE] = {} end if act_list then act_type = act_list.act_type local server_time = TimeUtil:getServerTime( ) if server_time > act_list.stime and act_list.etime > server_time then self.act_red_dot_info[CustomActivityModel.CustomActBaseType.LUCKY_TURNTABLE][sub_type] = need_red else need_red = false end end return need_red,act_type end --秒杀基础信息 function KfActivityModel:SetSecKillBaseInfo( vo ) self.limit_seckill_base_info = vo self:Fire(KfActivityModel.UPDATE_LIMIT_SECKILL_INFO) -- 加个即将开始的倒计时timer提醒 local cur_time = TimeUtil:getServerTime( ) local cur_round = vo.round self:InitSeckillCache(vo.sub_type) -- 场次排序 local sort_func = function ( a, b ) return a.round_id < b.round_id end table.sort(self.limit_seckill_base_info.round_info, sort_func) if not (self:GetSecKillRemindCache()[vo.sub_type] == true) then return end -- 判断是否要提醒 self.limit_sec_kill_has_show_cache = self.limit_sec_kill_has_show_cache or {} self.limit_sec_kill_has_show_cache[vo.sub_type] = self.limit_sec_kill_has_show_cache[vo.sub_type] or {} if self.limit_sec_kill_has_show_cache[vo.sub_type][cur_round] then -- 弹过的场次就别再弹了 return end for k,v in pairs(self.limit_seckill_base_info.round_info) do local zero_time = TimeUtil:GetToDayNHourStr(0) local cfg_open_time = stringtotable(v.round_time) local open_time = zero_time + 60*60*cfg_open_time[1] + 60*cfg_open_time[2] + cfg_open_time[3]--算出开放的时间戳 local end_time = open_time + v.duration local is_end = (cur_time - end_time) >= 0 or v.round_id < cur_round--是否结束了 local is_open = (cur_time - open_time) >= 0--是否开启了 --开抢前五分钟就要开始倒计时了 if not is_end and not is_open then local open_act_remind_tips = function () self.limit_sec_kill_has_show_cache[vo.sub_type][cur_round] = true -- 弹过的场次就别再弹了 local click_event = function () -- 跳转活动 GlobalEventSystem:Fire(KfActivityModel.OPEN_ACTIVITY_BASE_VIEW, vo.sub_type, KfActivityModel.TabID.LimitSeckill) end local data = { winId = KfActivityModel.TabID.LimitSeckill, sub_type = vo.sub_type, click_event = click_event, } GlobalEventSystem:Fire(EventName.SHOW_COMMON_ACT_REMIND_TIPS,data) end if (open_time - cur_time) <= 120 then -- 已经准备开始了 就弹 open_act_remind_tips() elseif cur_round == v.round_id then -- 就是当前场次 local function onTimer() local cur_time = TimeUtil:getServerTime( ) if (open_time - cur_time) <= 120 then open_act_remind_tips() if self.act_sec_kill_timer_list[vo.sub_type] then GlobalTimerQuest:CancelQuest(self.act_sec_kill_timer_list[vo.sub_type]) self.act_sec_kill_timer_list[vo.sub_type] = nil end end end if not self.act_sec_kill_timer_list then self.act_sec_kill_timer_list = {} end if self.act_sec_kill_timer_list[vo.sub_type] then GlobalTimerQuest:CancelQuest(self.act_sec_kill_timer_list[vo.sub_type]) self.act_sec_kill_timer_list[vo.sub_type] = nil end self.act_sec_kill_timer_list[vo.sub_type] = GlobalTimerQuest:AddPeriodQuest(onTimer, 1, -1) onTimer() end end end end function KfActivityModel:GetSecKillBaseInfo( ) return self.limit_seckill_base_info end function KfActivityModel:IsSecKillAllRoundEnd( ) local base_info = self:GetSecKillBaseInfo() local last_round_info = base_info.round_info[#base_info.round_info] local cur_round = base_info.round if last_round_info.round_id > cur_round then return false end local cur_time = TimeUtil:getServerTime( ) local zero_time = TimeUtil:GetToDayNHourStr(0) local cfg_open_time = stringtotable(last_round_info.round_time) local open_time = zero_time + 60*60*cfg_open_time[1] + 60*cfg_open_time[2] + cfg_open_time[3]--算出开放的时间戳 local end_time = open_time + last_round_info.duration local is_end = (cur_time - end_time) >= 0 --是否结束了 return is_end end --场次信息 function KfActivityModel:SetSecKillRoundInfo( vo ) local data = {} local condition = nil for i,v in ipairs(vo.round_info) do data[i] = v condition = stringtotable(v.condition) for ii,vv in ipairs(condition) do data[i][vv[1]] = vv[2] end end if not self.limit_seckill_round_info[vo.round] then self.limit_seckill_round_info[vo.round] = {} end local sort_func = function ( a, b ) return a.grade_id < b.grade_id end table.sort(data, sort_func) self.limit_seckill_round_info[vo.round] = data self:Fire(KfActivityModel.UPDATE_LIMIT_SECKILL_ROUND_INFO) end function KfActivityModel:GetSecKillRoundInfo( round ) if round then return self.limit_seckill_round_info[round] or {} end return {} end --更新一个信息 function KfActivityModel:SetSecKillOneInfo(round, grade_id, is_my) if not round or not grade_id then return end if self.limit_seckill_round_info[round] then for i,v in ipairs(self.limit_seckill_round_info[round]) do if v.grade_id == grade_id then if is_my then v.self_buy = v.self_buy + 1 else v.buy_count = v.buy_count + 1 end break end end end self:Fire(KfActivityModel.UPDATE_LIMIT_SECKILL_ROUND_INFO) end --清理秒杀场次信息 function KfActivityModel:CleanSecKillRoundInfo( ) self.limit_seckill_round_info = {} end --记录 function KfActivityModel:SetSecKillRecordInfo( vo ) self.limit_seckill_record_info = vo self:ChangeVar("limit_seckill_record_info", self.limit_seckill_record_info, false, true) end function KfActivityModel:SetSecKillOneRecord( vo ) local data = { goods_id = vo.goods_id, TvId = vo.TvId, server_num = vo.server_num, goods_num = vo.goods_num, name = vo.name, cost = vo.cost, } table_insert(self.limit_seckill_record_info.buy_log, data) self:ChangeVar("limit_seckill_record_info", self.limit_seckill_record_info, false, true) end function KfActivityModel:GetSecKillRecordInfo( ) return self.limit_seckill_record_info end --抢购界面信息 function KfActivityModel:SetSecKillBuyInfo( vo ) if not self.limit_seckill_buy_info[vo.round] then self.limit_seckill_buy_info[vo.round] = {} end self.limit_seckill_buy_info[vo.round][vo.grade_id] = vo self:ChangeVar("limit_seckill_buy_info", self.limit_seckill_buy_info, false, true) end function KfActivityModel:GetSecKillBuyInfo(round, grade_id ) if not round or not grade_id then return {} end if self.limit_seckill_buy_info[round] then return self.limit_seckill_buy_info[round][grade_id] or {} end return {} end --场次开启需要重新刷一下红点 function KfActivityModel:LimitSecKillRoundStart( round ) local data = self:GetSecKillBaseInfo() if data and data.round_info and data.round_info[round] then if data.round_info[round].label == 2 then self.is_open_limit_seckill_view = false self:IsNeedRed(KfActivityModel.TabID.LimitSeckill,nil,data.sub_type) end end end function KfActivityModel:CheckSecKillRedDot(sub_type) local need_red = not self.is_open_limit_seckill_view local act_list = CustomActivityModel:getInstance():getActList(CustomActivityModel.CustomActBaseType.LIMIT_SECKILL, sub_type) local act_type = CustomActivityModel.CustomIconActType.KfAct if act_list then act_type = act_list.act_type end if not self.act_red_dot_info[CustomActivityModel.CustomActBaseType.LIMIT_SECKILL] then self.act_red_dot_info[CustomActivityModel.CustomActBaseType.LIMIT_SECKILL] = {} end self.act_red_dot_info[CustomActivityModel.CustomActBaseType.LIMIT_SECKILL][sub_type] = need_red return need_red,act_type end function KfActivityModel:InitSeckillCache(sub_type) if self:GetSecKillBuySureCache( )[sub_type] == nil then self:SetSecKillBuySureCache( sub_type, true ) end if self:GetSecKillRemindCache( )[sub_type] == nil then self:SetSecKillRemindCache( sub_type, false ) end end -- 购买秒杀物品时是否无需确认 function KfActivityModel:GetSecKillBuySureCache( ) -- local list = CookieWrapper.Instance:GetCookie(CookieLevelType.Account, -- CookieKey.SEC_KILL_BUY_TIPS) or {} self.sec_kill_buy_sure = self.sec_kill_buy_sure or {} local list = self.sec_kill_buy_sure -- if list[sub_type] == nil then -- self:SetSecKillBuySureCache(sub_type, false) -- list[sub_type] = false -- end return list end -- 每个场次是否需要提醒 function KfActivityModel:GetSecKillRemindCache( ) local list = CookieWrapper.Instance:GetCookie(CookieLevelType.Account, CookieKey.SEC_KILL_NEED_REMIND) or {} -- if list[sub_type] == nil then -- self:SetSecKillRemindCache(sub_type, false) -- list[sub_type] = false -- end return list end -- 购买时无需提示彩钻购买 function KfActivityModel:SetSecKillBuySureCache( sub_type, bool ) self.sec_kill_buy_sure = self.sec_kill_buy_sure or {} if bool ~= nil then self.sec_kill_buy_sure[sub_type] = bool else if self.sec_kill_buy_sure[sub_type] ~= nil then self.sec_kill_buy_sure[sub_type] = not self.sec_kill_buy_sure[sub_type] else self.sec_kill_buy_sure[sub_type] = true end end -- local list = self:GetSecKillBuySureCache() or {} -- if bool ~= nil then -- list[sub_type] = bool -- else -- if list[sub_type] ~= nil then -- list[sub_type] = not list[sub_type] -- else -- list[sub_type] = true -- end -- end -- CookieWrapper.Instance:SaveCookie(CookieLevelType.Account, -- CookieTimeType.TYPE_ALWAYS, CookieKey.SEC_KILL_BUY_TIPS, list) -- CookieWrapper.Instance:WriteAll() end function KfActivityModel:SetSecKillRemindCache( sub_type, bool ) local list = self:GetSecKillRemindCache() or {} if bool ~= nil then list[sub_type] = bool else if list[sub_type] ~= nil then list[sub_type] = not list[sub_type] else list[sub_type] = false end end CookieWrapper.Instance:SaveCookie(CookieLevelType.Account, CookieTimeType.TYPE_ALWAYS, CookieKey.SEC_KILL_NEED_REMIND, list) CookieWrapper.Instance:WriteAll() end --------------抢红包/福袋--start--------------- -- 处理condition数据 function KfActivityModel:SetLuckyBagData( base_type, condition_list ) local data if base_type == CustomActivityModel.CustomActBaseType.GET_RED_BAG then -- 抢福袋 self.red_bag_data = {} data = self.red_bag_data elseif base_type == CustomActivityModel.CustomActBaseType.GET_LUCKY_BAG then -- 抢红包 self.lucky_bag_data = {} data = self.lucky_bag_data else return end for k, v in pairs(condition_list) do if v[1] == "open_time" then data.open_time = {} for i, v2 in ipairs(v[2]) do table.insert(data.open_time, { hour = tonumber(v2[1]), min = tonumber(v2[2]) } ) end -- 时间从小到大排序: local sort_func = function ( a, b ) if a.hour ~= b.hour then return a.hour < b.hour else return a.min < b.min end end table.sort(data.open_time, sort_func) else data[Trim(v[1])] = tonumber(v[2]) end end -- logWarn('=======Msh:KfActivityModel.lua[1928]=======', base_type) -- print('Msh:KfActivityModel.lua[1929] base_type', base_type) -- PrintTable(condition_list) -- PrintTable(data) end -- 获取数据 function KfActivityModel:GetLuckyBagDataByKey( base_type, key ) local data if base_type == CustomActivityModel.CustomActBaseType.GET_RED_BAG then -- 抢福袋 data = self.red_bag_data elseif base_type == CustomActivityModel.CustomActBaseType.GET_LUCKY_BAG then -- 抢红包 data = self.lucky_bag_data else return end if data and data[key] then return data[key] end end -- 获取今日距离下一次开启活动的时间 function KfActivityModel:GetLuckyBagNextOpenTime( base_type ) local data if base_type == CustomActivityModel.CustomActBaseType.GET_RED_BAG then -- 抢福袋 data = self.red_bag_data elseif base_type == CustomActivityModel.CustomActBaseType.GET_LUCKY_BAG then -- 抢红包 data = self.lucky_bag_data else return end if data and data.open_time then local curTime = TimeUtil:getServerTime() for i,v in ipairs(data.open_time) do -- 注意遍历的时间必须从小到大 如10:00 12:00 14:00 local today_open_time = TimeUtil:GetToDayNHourStr(v.hour) + v.min * 60 local remain_time = today_open_time - curTime if remain_time > 0 then return today_open_time end end end return -1 -- 今日已经没有场次 end -- 获取活动状态 -- 返回值: state key_time -- 活动已结束 0 nil -- 活动持续中 1 活动结束时间 -- 图标开启中 2 下次开启时间 -- 准备开启图标 3 需要开启图标的时间 function KfActivityModel:GetLuckyBagActTime( base_type ) --print('Msh:KfActivityModel.lua[1988] data', base_type) local data if base_type == CustomActivityModel.CustomActBaseType.GET_RED_BAG then -- 抢福袋 data = self.red_bag_data elseif base_type == CustomActivityModel.CustomActBaseType.GET_LUCKY_BAG then -- 抢红包 data = self.lucky_bag_data else return end if data and data.open_time then local curTime = TimeUtil:getServerTime() for i,v in ipairs(data.open_time) do -- 注意遍历的时间必须从小到大 如10:00 12:00 14:00 local today_open_time = TimeUtil:GetToDayNHourStr(v.hour) + v.min * 60 local ac_end_time = today_open_time + data.last_time if ac_end_time - curTime > 0 then -- 匹配到的下一场次 local icon_open_time = today_open_time - data.show_time --local remain_time = today_open_time - curTime if curTime >= today_open_time then -- 活动持续中 return 1, ac_end_time elseif curTime >= icon_open_time then -- 图标开启中 return 2, today_open_time elseif curTime < icon_open_time then -- 准备开启图标 return 3, icon_open_time else -- logWarn('=======Msh:KfActivityModel.lua[2003]==error=====') return end end end end return 0 -- 今日已经没有场次 end function KfActivityModel:GetShowRewardList( base_type, sub_type ) local reward_data = CustomActivityModel:getInstance():getOneActRewardList(base_type, sub_type).reward_list -- logWarn('=======Msh:KfActivityModel.lua[2024]===666====') -- PrintTable(CustomActivityModel:getInstance():getOneActRewardList(base_type, sub_type)) local sort_func = function ( a, b ) return a.grade < b.grade end table.sort(reward_data, sort_func) local res_list = {} local show_count = 10 -- 最多展示10个奖励 for i,v in ipairs(reward_data) do local ui_show = 0 for i2,v2 in ipairs(v.condition_list) do if v2[1] == "ui_show" then ui_show = tonumber(v2[2]) break end end if ui_show == 1 then table.insert(res_list, stringtotable(v.reward)[1]) show_count = show_count - 1 end if show_count <= 0 then break end end return res_list end function KfActivityModel:SetLuckyBagGradeRewardData( base_type ) local reward_data = CustomActivityModel:getInstance():getOneActRewardList(base_type, sub_type).reward_list self.lucky_bag_reward_data = self.lucky_bag_reward_data or {} self.lucky_bag_reward_data[base_type] = {} -- local sort_func = function ( a, b ) -- return a.grade < b.grade -- end -- table.sort(reward_data, sort_func) local data = self.lucky_bag_reward_data[base_type] for i,v in ipairs(reward_data) do local ui_show = 0 for i2,v2 in ipairs(v.condition_list) do if v2[1] == "ui_show" then ui_show = tonumber(v2[2]) break end end data[v.grade] = {grade = v.grade, reward = stringtotable(v.reward), ui_show = ui_show} end end function KfActivityModel:GetTargetGradeReward( base_type, grade ) if not (self.lucky_bag_reward_data and self.lucky_bag_reward_data[base_type]) then self:SetLuckyBagGradeRewardData( base_type ) end local data = self.lucky_bag_reward_data[base_type][grade] return data end function KfActivityModel:SetLuckyBagLastGetTime( time ) self.last_lucky_bag_get_time = time end function KfActivityModel:GetLuckyBagLastGetTime( ) if self.last_lucky_bag_get_time then return self.last_lucky_bag_get_time else return 0 end end --------------抢红包/福袋----end------------- --------------惊喜红包----start------------- --基础信息 function KfActivityModel:GetHappyRedBagBaseInfo( sub_type ) if sub_type then return self.happy_red_bag_base_info[sub_type] else return self.happy_red_bag_base_info end end function KfActivityModel:SetHappyRedBagBaseInfo( value ) self.happy_red_bag_base_info[value.sub_type] = value self:IsNeedRed( KfActivityModel.TabID.HappyRedBag,nil,value.sub_type ) end --全服记录 function KfActivityModel:GetHappyRedBagHistoryInfo( sub_type ) if sub_type then return self.happy_red_bag_history_info[sub_type] else return self.happy_red_bag_history_info end end function KfActivityModel:SetHappyRedBagHistoryInfo( value ) local function sort_call( a,b ) --从大到小 return a.time > b.time end if TableSize(value.log_list) > 1 then table.sort( value.log_list, sort_call ) end self.happy_red_bag_history_info[value.sub_type] = value.log_list end function KfActivityModel:GetHappyRedBagRewardById( id ) --通过id获得展示奖励列表 if not Config.Supredpacket[id] then return end local conf = Config.Supredpacket[id] local result = { [1] = stringtotable(conf.mid_draw)[2], [2] = stringtotable(conf.up_draw)[2], [3] = stringtotable(conf.dream_draw)[2], } return result end --获得充值条件 function KfActivityModel:GetHappyRedBagNeedRechargeById( id ) if not Config.Supredpacket[id] then return 9999 end return Config.Supredpacket[id].recharge_gold end --获得红包可领取状态 function KfActivityModel:GetHappyRedBagReceiveStatus( sub_type ) local data = self:GetHappyRedBagBaseInfo(sub_type) if data then return data.can_receive end end --已经抽完次数 function KfActivityModel:IsHappyRedBagDrawMax( sub_type ) local function GetMaxTimeInPool( id ) local pool_id = false for k,v in pairs(Config.Supredpacket) do if v.id == id then pool_id = v.draw_pool break end end local time = 0 for k,v in pairs(Config.Supredpacket) do if v.draw_pool == pool_id then time = time + 1 end end return time end local data = self:GetHappyRedBagBaseInfo(sub_type) if data then local time = GetMaxTimeInPool(data.id) if data.draw_times == time and data.can_receive == 0 then return true,time else return false,time end end return false,0 end function KfActivityModel:GetHappyRedBagRedDotBySubType( sub_type ) local need_lv = GetModuleOpenLevel(331,78) local act_info = CustomActivityModel:getInstance():getActList(CustomActivityModel.CustomActBaseType.HAPPY_RED_BAG, sub_type) if act_info and act_info.condition then local confition_list = stringtotable(act_info.condition) for k,v in pairs(confition_list) do if v[1] == "role_lv" then need_lv = math.max( need_lv , tonumber(v[2]) ) end end end local show_red = {} if RoleManager.Instance.mainRoleInfo.level < need_lv then return show_red end local base_data = self:GetHappyRedBagBaseInfo(sub_type) if not base_data then return show_red end if self:IsHappyRedBagDrawMax(sub_type) then --抽满 return show_red end ------------------------- local need_recharge = self:GetHappyRedBagNeedRechargeById(base_data.id)--充值条件 if base_data and base_data.box_has_receive == 0 and base_data.draw_times >= 1 then --判断宝箱是否可领取 show_red.box = true end --判断是否可以领红包(待领取奖励 or 充值达到条件且未抽取) if base_data.can_receive == 1 then --待领取的时候 if base_data.draw_times == 1 then --第一次领取,需要判断是否达到充值条件 show_red.red_bag = base_data.recharge_num >= need_recharge else show_red.red_bag = true end else --未抽取的时候,判断充值是否达到条件,或者是第一次抽取 show_red.red_bag = (base_data.recharge_num >= need_recharge) or (base_data.draw_times == 0) end return show_red end --------------惊喜红包----end------------- --------------折扣满减----start------------- --基础信息 function KfActivityModel:GetDiscountFullCutInfo( sub_type ) if sub_type then return self.discount_full_cut_info[sub_type] end end function KfActivityModel:SetDiscountFullCutInfo( data ) if data and data.sub_type then self.discount_full_cut_info[data.sub_type] = data ------------------------- --[[local temp = self.discount_full_cut_draw_free_status[data.sub_type] if (temp and (data.free_count < temp)) then self.discount_full_cut_draw_free_red[data.sub_type] = true self:IsNeedRed(KfActivityModel.TabID.DiscountFullCut,nil,data.sub_type) end self.discount_full_cut_draw_free_status[data.sub_type] = data.free_count--]] if self.discount_full_cut_draw_free_red[data.sub_type] ~= "has_open" then self.discount_full_cut_draw_free_red[data.sub_type] = data.free_count == 0 self:IsNeedRed(KfActivityModel.TabID.DiscountFullCut,nil,data.sub_type) end end end --购买记录 function KfActivityModel:GetDiscountFullCutHistory( sub_type ) if sub_type then return self.discount_full_cut_history[sub_type] end end function KfActivityModel:SetDiscountFullCutHistory( data ) if data and data.sub_type then self.discount_full_cut_history[data.sub_type] = data.list end end --获取折扣券配置 function KfActivityModel:GetDiscountFullCutTicketConf( ticket_type,ticket_id ) if ticket_id then return Config.Discountmallcoupon[ticket_id] end if ticket_type then local list = {} for k,v in pairs(Config.Discountmallcoupon) do if v.type == ticket_type then list[v.goods_id] = v end end return list else return Config.Discountmallcoupon end end function KfActivityModel:CheckKfDiscountFullCutRedDot( sub_type ) ------------------------- local base_type = CustomActivityModel.CustomActBaseType.DISCOUNT_FULL_CUT sub_type = sub_type or CustomActivityModel:getInstance():getActMinSubType(base_type) local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local act_type = CustomActivityModel.CustomIconActType.KfAct local bool = false if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false if act_list then act_type = act_list.act_type local server_time = TimeUtil:getServerTime( ) if server_time > act_list.stime and act_list.etime > server_time then bool = self:GetDiscountFullCutRedDotBySubType(sub_type) self.act_red_dot_info[act_list.base_type][act_list.sub_type] = bool end end return bool,act_type end function KfActivityModel:GetDiscountFullCutRedDotBySubType( sub_type ) if not sub_type then return false end ------------------------- local need_lv = GetModuleOpenLevel(331,77) local act_info = CustomActivityModel:getInstance():getActList(CustomActivityModel.CustomActBaseType.DISCOUNT_FULL_CUT, sub_type) if act_info and act_info.condition then local confition_list = stringtotable(act_info.condition) for k,v in pairs(confition_list) do if v[1] == "role_lv" then need_lv = math.max( need_lv , tonumber(v[2]) ) end end end if RoleManager.Instance.mainRoleInfo.level < need_lv then --等级没到 return false end ------------------------- local bool_1 = (not self.discount_full_cut_mask_first_open_red[sub_type]) local bool_2 = self.discount_full_cut_draw_goods_red[sub_type] local bool_3 = self.discount_full_cut_new_red[sub_type] local bool_4 = self.discount_full_cut_draw_free_red[sub_type] == true return bool_1 or bool_2 or bool_3 or bool_4 end function KfActivityModel:CheckKfDiscountFullCutGoodsChangeRedDot( ) --数量变更红点 local draw_tick_id = KfActivityModel.KfDFullCutLuckyGoodsId local num = GoodsModel:getInstance():GetTypeGoodsNum( draw_tick_id ) if self.discount_full_cut_draw_goods_num ~= num and num > self.discount_full_cut_draw_goods_num then local all_list = CustomActivityModel:getInstance():getAllActListByBaseType(CustomActivityModel.CustomActBaseType.DISCOUNT_FULL_CUT) for k,v in pairs(all_list) do self.discount_full_cut_draw_goods_red[v.sub_type] = true self:IsNeedRed(KfActivityModel.TabID.DiscountFullCut,nil,v.sub_type) end end self.discount_full_cut_draw_goods_num = num end --活动刚开给个红点 function KfActivityModel:AddKfDiscountFullCutNewOpenRedDot( sub_type,bool ) if not sub_type then return end self.discount_full_cut_new_red[sub_type] = bool self:IsNeedRed(KfActivityModel.TabID.DiscountFullCut,nil,sub_type) end --开界面红点处理 function KfActivityModel:AddKfDiscountFullCutMaskFirstOpenRedDot( sub_type,bool ) if not sub_type then return end self.discount_full_cut_mask_first_open_red[sub_type] = bool self:IsNeedRed(KfActivityModel.TabID.DiscountFullCut,nil,sub_type) end --开抽奖界面消抽奖券红点 function KfActivityModel:AddKfDiscountFullCutMaskGoodsRedDot( sub_type ) if not sub_type then return end self.discount_full_cut_draw_goods_red[sub_type] = false self:IsNeedRed(KfActivityModel.TabID.DiscountFullCut,nil,sub_type) end --开抽奖界面消免费红点 function KfActivityModel:AddKfDiscountFullCutMaskFreeRedDot( sub_type ) do return end--以前免费红点是一次性的,现在不是了 ------------------------- if not sub_type then return end self.discount_full_cut_draw_free_red[sub_type] = "has_open" self:IsNeedRed(KfActivityModel.TabID.DiscountFullCut,nil,sub_type) end --设置折扣满减奖池数据 function KfActivityModel:SetDiscountFullCutLuckyTableList( vo ) if vo and vo.sub_type then self.discount_full_cut_lucky_list[vo.sub_type] = vo.goods_list end end --获得折扣满减奖池数据 function KfActivityModel:GetDiscountFullCutLuckyTableList( sub_type ) return self.discount_full_cut_lucky_list[sub_type] end --------------折扣满减----end-------------- --------------阶段兑换----start-------------- function KfActivityModel:CheckStageExchangeGoodsChangeRedDot( ) --道具变更红点检查 local all_list = CustomActivityModel:getInstance():getAllActListByBaseType(CustomActivityModel.CustomActBaseType.STAGE_EXCHANGE) for k,v in pairs(all_list) do self:IsNeedRed(KfActivityModel.TabID.StageExchange,nil,v.sub_type) end end function KfActivityModel:GetStageExchangeRedDotBySubType( sub_type ) --活动开启首次登陆红点 local red_first_data = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.STAGE_EXCHANGE_RED) or {} if not red_first_data[sub_type] then ------------------------- --没开过界面 return true end ------------------------- local check_price_list = false--当前要比价用的 --阶段开启奖励可临取时,临取按钮红点提示 local operate_model = OperateActivityModel:getInstance() local base_data = operate_model:GetStageExchangeInfo(sub_type) if not base_data then return false end local unlock_phase = operate_model:GetStageExchangeUnlockPhase(sub_type) local open_reward_status = 0 for i,v in ipairs(base_data) do if v.phase == unlock_phase then open_reward_status = v.open_reward_status check_price_list = DeepCopy(v.goods_list or {}) break end end if open_reward_status == 1 then return true end ------------------------- local cost_id = operate_model:GetStageExchangeCostId( sub_type ) local goods_num = GoodsModel:getInstance():GetTypeGoodsNum( cost_id ) ------------------------- --价格为0,可买,阶段商店页签红点提示 for k,v in pairs(check_price_list) do if v.cost_goods_num == 0 and v.exchange_num < v.limit_num then return true end end --玩家道具总额足够兑换本阶段商店最高价道具时,阶段商店页签红点提示 --获取价格列表 local function sort_call( a,b ) --从大到小 return a.cost_goods_num > b.cost_goods_num end table.sort( check_price_list, sort_call ) for i,v in pairs(check_price_list) do if v.exchange_num < v.limit_num then --最高价位 return goods_num >= v.cost_goods_num end end return false end --新活动开启 or 奖池因玩家升级引起刷新,红点变化 function KfActivityModel:MaskStageExchangeOpenRedDot( sub_type ) local data = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.STAGE_EXCHANGE_RED) or {} if not data[sub_type] then data[sub_type] = true CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,CookieTimeType.TYPE_ALWAYS,CookieKey.STAGE_EXCHANGE_RED,data) CookieWrapper.Instance:WriteAll() self:IsNeedRed(KfActivityModel.TabID.StageExchange,nil,sub_type) end end --------------阶段兑换----end-------------- --获得通用排行排名数据 function KfActivityModel:GetComRankCfg( type_key ) return self.com_rank_score_cfg[type_key] end --设置通用结算排行数据 function KfActivityModel:SetComRankInfo( vo ) local new_rank_list = {} for k,v in pairs(vo.rank_list) do new_rank_list[v.rank] = v end vo.rank_list = new_rank_list self.com_rank_info[vo.sub_type] = vo end --获得通用结算排行数据 function KfActivityModel:GetComRankInfo( sub_type ) return self.com_rank_info[sub_type] end function KfActivityModel:CheckComRankTabIsOpen( sub_type ) local act_list = CustomActivityModel:getInstance():getActList(CustomActivityModel.CustomActBaseType.COM_RANK,sub_type) if act_list then local show_time = 0 for k,v in pairs(act_list.condition_list) do if v[1] == "show_time" then show_time = tonumber(v[2]) break end end local server_time = TimeUtil:getServerTime( ) local end_time = act_list.etime + show_time if server_time > act_list.stime and end_time > server_time then return true end end return false end --------------源晶复制机----start-------------- --是否需要显示源晶复制机按钮 function KfActivityModel:IsShowMoneyCopy( type_tag ) return false end function KfActivityModel:GetMoneyCopyData( sub_type ) return self.money_copy_data[sub_type] end function KfActivityModel:SetMoneyCopyData( data ) self.money_copy_data[data.sub_type] = data end --通过标记获取活动子类 function KfActivityModel:GetMoneyCopySubTypeByTag( tag ) local base_type = CustomActivityModel.CustomActBaseType.MONEY_COPY local sub_type_list = CustomActivityModel:getInstance():getAllActListByBaseType(base_type) local show_place = false for k,v in pairs(sub_type_list) do show_place = false for kk,vv in pairs(v.condition_list) do if vv[1] == "show_place" then show_place = vv[2] end end if show_place then if tag == "chargeplus" and show_place == "chargeplus" then --首充追加界面 return v.sub_type end elseif tag == "charge" then --普通充值界面用的 return v.sub_type end end return false end --获取是否在活动时间内,返回开始时间和活动时间 function KfActivityModel:IsInMoneyCopyTime( sub_type ) local base_type = CustomActivityModel.CustomActBaseType.MONEY_COPY local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) if act_list then ------------------------- local need_lv = GetModuleOpenLevel(331,5) local confition_list = stringtotable(act_list.condition) for k,v in pairs(confition_list) do if v[1] == "role_lv" then need_lv = math.max( need_lv , tonumber(v[2]) ) end end if need_lv > RoleManager.Instance.mainRoleInfo.level then --等级不足 return false,0,0 end ------------------------- local show_type = false for k,v in pairs(act_list.condition_list) do if v[1] == "show_place" then show_type = v[2] break end end local server_time = TimeUtil:getServerTime( ) if show_type then local base_data = self:GetMoneyCopyData( sub_type ) if base_data and base_data.stime > 0 and base_data.etime > 0 then return (server_time > base_data.stime and base_data.etime > server_time), base_data.stime, base_data.etime else return false,0,0 end else return (server_time > act_list.stime and act_list.etime > server_time), act_list.stime, act_list.etime end end return false,0,0 end --获取红点 function KfActivityModel:IsMoneyCopyRedByTag( tag ) local sub_type = self:GetMoneyCopySubTypeByTag(tag) if sub_type then return self:IsMoneyCopyRedBySubType( sub_type ) end return false end function KfActivityModel:IsMoneyCopyRedBySubType( sub_type ) local base_type = CustomActivityModel.CustomActBaseType.MONEY_COPY sub_type = sub_type or CustomActivityModel:getInstance():getActMinSubType(base_type) local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) if act_list then local in_time = self:IsInMoneyCopyTime(sub_type) if in_time then --活动期内才需要红点了 local base_data = self:GetMoneyCopyData(sub_type) if base_data and base_data.total > 0 then local cur_time_tb = os.date( '*t' ,TimeUtil:getServerTime()) local last_time_tb = os.date( '*t' ,base_data.last_time) if last_time_tb.day ~= cur_time_tb.day or last_time_tb.month ~= cur_time_tb.month then return true end end end end return false end --------------源晶复制机----end-------------- --------------黑白棋----start-------------- function KfActivityModel:GetReversiRedDotBySubType( sub_type ) --活动开启首次登陆红点 local red_first_data = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.REVERSI_RED) or {} if not red_first_data[sub_type] then ------------------------- --没开过界面 return true end -- 当玩家有免费抽奖次数时 local bool_red = self:GetReversiFreeDrawRed(sub_type) bool_red = bool_red or self:GetReversiFreeRreshRed(sub_type) if not bool_red then local base_type = CustomActivityModel.CustomActBaseType.REVERSI local free_buff_kind = OperateActivityModel.MaterialSubmitBuffKind.ACT_LUCKY_FREE --是否存在活动加成buff 首次抽奖免费 local free_buff_cfg,free_buff_info = OperateActivityModel:getInstance():GetMaterialBuffInfoByKind(free_buff_kind) local buff_free_times = 0 if free_buff_cfg and free_buff_info then local sec = free_buff_info.etime - TimeUtil:getServerTime( ) if sec > 0 then self:ActReversiBuffTimeLate(sec,sub_type) buff_free_times = free_buff_cfg.data for k,v in pairs(free_buff_info.used) do if v.kdata == base_type then--十连还有次数 buff_free_times = buff_free_times - v.vdata break end end if buff_free_times > 0 then bool_red = true end end end end return bool_red -- 当奖池刷新(玩家升级导致)时候 end --黑白棋活动BUFF时间倒计时 function KfActivityModel:ActReversiBuffTimeLate( sub_type ) if self.act_reversi_buff_timer_id then GlobalTimerQuest:CancelQuest(self.act_reversi_buff_timer_id) self.act_reversi_buff_timer_id = nil end if self.reversi_act_sec and self.reversi_act_sec >= sec then return else self.reversi_act_sec = sec end local sec = sec or 0 if sec > 0 then local function onTimer() sec = sec - 1 if sec > 0 then else if self.act_reversi_buff_timer_id then GlobalTimerQuest:CancelQuest(self.act_reversi_buff_timer_id) self.act_reversi_buff_timer_id = nil end KfActivityModel:getInstance():IsNeedRed(KfActivityModel.TabID.Reversi,nil,sub_type) end end if not self.act_reversi_buff_timer_id then self.act_reversi_buff_timer_id = GlobalTimerQuest:AddPeriodQuest(onTimer, 1, -1) end onTimer() else if self.act_reversi_buff_timer_id then GlobalTimerQuest:CancelQuest(self.act_reversi_buff_timer_id) self.act_reversi_buff_timer_id = nil end KfActivityModel:getInstance():IsNeedRed(KfActivityModel.TabID.Reversi,nil,sub_type) end end --免费抽奖次数 function KfActivityModel:GetReversiFreeDrawRed( sub_type ) local data = OperateActivityModel:getInstance():GetReversiInfo( sub_type ) return data and data.free_times > 0 end --当玩家能够免费刷新奖池时 function KfActivityModel:GetReversiFreeRreshRed( sub_type ) local data = OperateActivityModel:getInstance():GetReversiCurInfo(sub_type) if not data then return false end local open_num = 0 for k,v in pairs(data) do if v.status == 1 then open_num = open_num + 1 end end return open_num >= 16 end function KfActivityModel:MaskReversiOpenRedDot( sub_type,bool ) local data = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.REVERSI_RED) or {} if data[sub_type] ~= bool then data[sub_type] = bool CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,CookieTimeType.TYPE_ALWAYS,CookieKey.REVERSI_RED,data) CookieWrapper.Instance:WriteAll() self:IsNeedRed(KfActivityModel.TabID.Reversi,nil,sub_type) end end --------------黑白棋----end-------------- --------------活动幻魔----start-------------- function KfActivityModel:GetFestivalBossRedDotBySubType( sub_type ) --活动开启首次登陆红点 local red_first_data = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.FESTIVAL_BOSS_RED) or {} if not red_first_data[sub_type] then ------------------------- --没开过界面 return true end return false end function KfActivityModel:MaskFestivalBossOpenRedDot( sub_type,bool ) local data = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.FESTIVAL_BOSS_RED) or {} if data[sub_type] ~= bool then data[sub_type] = bool CookieWrapper.Instance:SaveCookie(CookieLevelType.Account,CookieTimeType.TYPE_ALWAYS,CookieKey.FESTIVAL_BOSS_RED,data) CookieWrapper.Instance:WriteAll() self:IsNeedRed(KfActivityModel.TabID.FestivalBoss,nil,sub_type) end end --------------活动幻魔----end-------------- --------------活跃/登陆 通行证----start-------------- --活跃/登陆 通行证信息 function KfActivityModel:GetPassActInfo( act_type,sub_type ) if self.pass_act_info[act_type] then return self.pass_act_info[act_type][sub_type] or false end return false end function KfActivityModel:SetPassActInfo( value ) if value then local function sort_call( a,b ) return a.need < b.need end table.sort( value.reward_list, sort_call ) self.pass_act_info[value.act_type] = self.pass_act_info[value.act_type] or {} self.pass_act_info[value.act_type][value.sub_type] = value self:IsNeedRed(self:ByActTypeGetTabId( value.act_type ),nil,value.sub_type) end end --活跃/登陆 通行证奖励信息 function KfActivityModel:GetPassActRewardInfo( act_type,sub_type ) if self.pass_act_reward_info[act_type] then return self.pass_act_reward_info[act_type][sub_type] or false end return false end function KfActivityModel:SetPassActRewardInfo( value ) if value then local function sort_call( a,b ) return a.need < b.need end table.sort( value.reward_list, sort_call ) self.pass_act_reward_info[value.act_type] = self.pass_act_reward_info[value.act_type] or {} self.pass_act_reward_info[value.act_type][value.sub_type] = value end end function KfActivityModel:GetPassActCurLvSelect( act_type,sub_type ) if act_type == CustomActivityModel.CustomActBaseType.LOGIN_PASS then local base_data = self:GetPassActInfo(act_type,sub_type) local cur_active = base_data and base_data.active or 1 if base_data then --判断一下是不是全都到期了,到期了就取第一个可未领的 local award_data = self:GetPassActRewardInfo(act_type,sub_type) local max_grade = award_data and #award_data.reward_list or false if (cur_active > max_grade) then for i,v in ipairs(base_data.reward_list) do if v.normal_status~=2 or v.extra_status ~= 2 then cur_active = v.grade break end end end end return cur_active elseif act_type == CustomActivityModel.CustomActBaseType.LIVELY_PASS then --获取最低可领取的奖励段 --最低不可领取的 --最大奖励点 local cur_active = false--普通最低可操作档位 local base_data = self:GetPassActInfo(act_type,sub_type) if base_data then for i,v in ipairs(base_data.reward_list) do if v.normal_status~=2 then cur_active = v.grade break end end return cur_active or 1--貌似也不需要,直接选第一个 --[[if not cur_active then --没有那么就要考虑显示最高基本 or 第一个 local max_grade = 0 local min_grade = 9999 local temp = self:GetPassActRewardInfo( act_type,sub_type ) if temp and temp.reward_list then for k,v in pairs(temp.reward_list) do max_grade = max_grade < v.grade and v.grade or max_grade min_grade = min_grade > v.grade and v.grade or min_grade end return base_data.is_pay == 1 and max_grade or min_grade end end--]] end end return 1 end function KfActivityModel:GetPassActRewardStatus( act_type,sub_type,grade ) local basic = self:GetPassActInfo(act_type,sub_type) if not basic then return 0,0 end local cur_data = false for k,v in pairs(basic.reward_list) do if v.grade == grade then cur_data = v break end end if cur_data then return cur_data.normal_status,cur_data.extra_status else return 0,0 end end function KfActivityModel:PassActChangeRewardStatus( act_type,sub_type,grade,reward_opty ) local base_data = self:GetPassActInfo(act_type,sub_type) if (not base_data) then return end local have_set = false for k,v in pairs(base_data.reward_list) do if v.grade == grade then if reward_opty == 1 then v.normal_status = 2 have_set = true elseif reward_opty == 2 then v.extra_status = 2 have_set = true elseif reward_opty == 3 then v.normal_status = 2 v.extra_status = 2 have_set = true end end end if not have_set then return false else self:IsNeedRed(self:ByActTypeGetTabId( act_type ),nil,sub_type) end end --通用通行证红点 function KfActivityModel:CheckComPassRedDot( base_type,sub_type ) local act_list = CustomActivityModel:getInstance():getActList(base_type,sub_type) local act_type = CustomActivityModel.CustomIconActType.KfAct if not act_list then return false,act_type end local bool = false if not self.act_red_dot_info[base_type] then self.act_red_dot_info[base_type] = {} end self.act_red_dot_info[base_type][sub_type] = false ------------------------- local open_level = Config.Modulesub["331@" .. base_type] and Config.Modulesub["331@" .. base_type].open_lv or 1 for l,w in pairs(act_list.condition_list) do if type(w) == "table" and w[1] == "role_lv" then open_level = tonumber(w[2]) end end if RoleManager.Instance.mainRoleInfo.level >= open_level then local server_time = TimeUtil:getServerTime( ) if act_list and server_time > act_list.stime and act_list.etime > server_time then act_type = act_list.act_type bool = self:GetComPassRedDotBySubType(base_type,sub_type) self.act_red_dot_info[act_list.base_type][act_list.sub_type] = bool end else self.check_lv_act_open = self.check_lv_act_open or {} self.check_lv_act_open[open_level] = self.check_lv_act_open[open_level] or {} self.check_lv_act_open[open_level][base_type] = self.check_lv_act_open[open_level][base_type] or {} self.check_lv_act_open[open_level][base_type][sub_type] = true end return bool,act_type end function KfActivityModel:GetComPassRedDotBySubType( base_type,sub_type ) local base_data = self:GetPassActInfo(base_type,sub_type) if base_data then for k,v in pairs(base_data.reward_list) do if v.normal_status == 1 or v.extra_status == 1 then return true end end end return false end --------------活跃/登陆 通行证----end-------------- --构建抢购商城小弹窗信息 function KfActivityModel:GetRushQuickBuy( goods_id ) local base_type = CustomActivityModel.CustomActBaseType.KFACTIVITY_LIMIT_SHOP local sub_type = CustomActivityModel:getInstance():getActMinSubType(base_type) if not sub_type then return end local server_data = CustomActivityModel:getInstance():getOneActRewardList(base_type,sub_type) if not server_data then return end local info_list = server_data.reward_list if not info_list or not TableSize(info_list) == 0 then return end local level = RoleManager.Instance.mainRoleInfo.level local item_list = {} for i,v in ipairs(info_list) do if #v.reward_info == 1 and (v.reward_info[1].goods_id == goods_id or not goods_id) then local lv_can = true local num_can = true for k,vv in pairs(v.condition_list) do if vv[1] == "show_level_range" then if level < tonumber(vv[2]) or level > tonumber(vv[3]) then lv_can = false end elseif vv[1] == "limit_times" then num_can = tonumber(vv[2]) - v.progress > 0 end end if lv_can and num_can then --符合等级,符合数量条件 item_list[#item_list + 1] = v end end end ------------------------- if #item_list > 0 then return item_list end end -- 判断是否需要展示广告 function KfActivityModel:CheckFosterRechargeAdsShow( show_type, grade ) local bool = false if not RechargeActivityModel:getInstance():IsRecharge( ) then local open_server_day = ServerTimeModel:getInstance():GetOpenServerDay() local cfg = KfActivityConst.FosterRechargeData[show_type] if cfg and cfg.opday_lim[1] <= open_server_day and cfg.opday_lim[2] >= open_server_day -- 天数 and cfg.grade[1] <= grade and cfg.grade[2] >= grade then -- 阶数 bool = true end end return bool end --设置小额连充信息 function KfActivityModel:SetKfContinueInfo( vo ) local can_resign_time = math.floor(vo.total/KfActivityModel.ContinueSignRechargePrice)--可以补签的数量 vo.can_resign_time = can_resign_time - vo.resign --离下一个补签需要充值多少 vo.offer_price = math.ceil(vo.total/KfActivityModel.ContinueSignRechargePrice) * KfActivityModel.ContinueSignRechargePrice - vo.total if vo.offer_price == 0 and vo.can_resign_time == 0 then vo.offer_price = KfActivityModel.ContinueSignRechargePrice end self.kf_continue_info[vo.sub_type] = vo self:IsNeedRed(KfActivityModel.TabID.ContinueRecharge,nil,vo.sub_type) end --获得小额连充补签信息 function KfActivityModel:GetKfContinueInfo( sub_type ) return self.kf_continue_info[sub_type] end ----------活动引导-998-start-------- -- 设置缓存 function KfActivityModel:SetActGuideCache( data ) self.act_guide_cache = self.act_guide_cache or {} for l,w in pairs(data.condition_list) do if w[1] == "role_lv" then -- 升级时弹(运营同一个等级会配很多个东西,所以存成表) self.act_guide_cache.role_lv = self.act_guide_cache.role_lv or {} self.act_guide_cache.role_lv[tonumber(w[2])] = self.act_guide_cache.role_lv[tonumber(w[2])] or {} table.insert(self.act_guide_cache.role_lv[tonumber(w[2])], data.sub_type) -- 记录一下这个等级 elseif w[1] == "foster" then --进阶成功时弹 self.act_guide_cache.foster = self.act_guide_cache.foster or {} local temp = { [1] = data.sub_type, [2] = tonumber(w[2]), [3] = tonumber(w[3]), [4] = tonumber(w[4]), } table.insert(self.act_guide_cache.foster, temp) elseif w[1] == "end_foster" then self.act_guide_cache.end_foster = self.act_guide_cache.end_foster or {} local temp = { [1] = data.sub_type, [2] = tonumber(w[2]), [3] = tonumber(w[3]), [4] = tonumber(w[4]), } table.insert(self.act_guide_cache.end_foster, temp) elseif w[1] == "type" then data.type = tonumber(w[2]) elseif w[1] == "good" then data.good = tonumber(w[2]) end end end -- 检查是否需要弹出活动引导 function KfActivityModel:CheckNeedShowActGuide( check_key, check_value) if not check_key or not check_value or not self.act_guide_cache or not self.act_guide_cache[check_key] then return end local sub_type = false if check_key == "role_lv" then if self.act_guide_cache.role_lv[check_value] then sub_type = self.act_guide_cache.role_lv[check_value] -- 这是个表 end elseif check_key == "foster" then sub_type = sub_type or {} for k,v in pairs(self.act_guide_cache[check_key]) do if check_value[1] == v[2] and check_value[2] == v[3] and check_value[3] == v[4] then table.insert(sub_type, v[1]) -- sub_type = v[1] end end elseif check_key == "end_foster" then sub_type = sub_type or {} --print('=======Msh:KfActivityModel.lua[4448] ===TABLE====') --PrintTable(self.act_guide_cache[check_key]) for k,v in pairs(self.act_guide_cache[check_key]) do if check_value[1] == v[2] and not ((check_value[2] == v[3] and check_value[3] >= v[4] ) or (check_value[2] > v[3])) then table.insert(sub_type, v[1]) end end return sub_type -- 不需要打开界面 end -- print('=======Msh:KfActivityModel.lua[4428] ===TABLE====') -- PrintTable(self.act_guide_cache) if sub_type and type(sub_type) == "table" then --print('=======Msh:KfActivityModel.lua[4431] ===TABLE====') --PrintTable(sub_type) for i,v in pairs(sub_type) do --print('=======Msh:KfActivityModel.lua[4432] ==打开冲=====', data) self:Fire(KfActivityModel.OPEN_ACT_GUIDE_BASE_VIEW, v) end elseif sub_type then print('=======Msh:KfActivityModel.lua[4439] ===TABLE====', sub_type) PrintTable(self.act_guide_cache[check_key]) self:Fire(KfActivityModel.OPEN_ACT_GUIDE_BASE_VIEW, sub_type) end end function KfActivityModel:ResetActGuideCache( ) local open_day = ServerTimeModel:getInstance():GetOpenServerDay() if self.act_guide_cache and self.act_guide_cache.open_day and self.act_guide_cache.open_day == open_day then return end self.act_guide_cache = {open_day = open_day} end -- 检测新获得的物品是否是直升丹需要展示 (这里是不走活动协议的) function KfActivityModel:IsAddActGuideList( goods_vo ) local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods_vo.type_id) if basic.subtype == 24 or basic.subtype == 16 then -- 等级直升丹/进阶直升丹 local bag_goods_dic = GoodsModel:getInstance():GetBagGoodsDic() local bag_good_vo = bag_goods_dic[goods_vo.goods_id] self.act_guide_add_goods_list = self.act_guide_add_goods_list or {} --背包本来没有 if not bag_good_vo then --道具增加 if goods_vo.goods_num > 0 then local copy_new_vo = DeepCopy(goods_vo) table.insert(self.act_guide_add_goods_list, copy_new_vo) end else --道具变更,并且增加 if goods_vo.goods_num > bag_good_vo.goods_num then local copy_new_vo = DeepCopy(goods_vo) table.insert(self.act_guide_add_goods_list, copy_new_vo) end end end end -- 检查是否需要弹出直升丹的推荐使用 function KfActivityModel:CheckActGuideNeedShow( need_close ) if self.act_guide_add_goods_list and TableSize(self.act_guide_add_goods_list) > 0 then -- local data = table.remove(self.act_guide_add_goods_list, 1) -- print('=======Msh:KfActivityModel.lua[4481] ===打开界面====') self:Fire(KfActivityModel.OPEN_ACT_GUIDE_BASE_VIEW, nil, nil, true) elseif need_close then -- 关闭界面 -- print('=======Msh:KfActivityModel.lua[4483] =====关界面==') -- PrintCallStack() self:Fire(KfActivityModel.OPEN_ACT_GUIDE_BASE_VIEW, nil, true, true) end end function KfActivityModel:GetActGuideAddGoodsData( ) if self.act_guide_add_goods_list and TableSize(self.act_guide_add_goods_list) > 0 then return table.remove(self.act_guide_add_goods_list, 1) end end -- 只靠物品id打开推荐使用 function KfActivityModel:ShowActGuideUseByGoodsID( goods_id ) local goods_vo = { type_id = goods_id, } self.act_guide_add_goods_list = self.act_guide_add_goods_list or {} table.insert(self.act_guide_add_goods_list, goods_vo) self:CheckActGuideNeedShow() end -- 每次登陆缓存一下是否看过某进阶系统的直升按钮 function KfActivityModel:CheckFosterActGuideEffectShow( show_type ) self.foster_act_guide_btn_cache = self.foster_act_guide_btn_cache or {} return self.foster_act_guide_btn_cache[show_type] end -- 记录已经看过的缓存 function KfActivityModel:SetFosterActGuideBtnCache( show_type ) self.foster_act_guide_btn_cache = self.foster_act_guide_btn_cache or {} self.foster_act_guide_btn_cache[show_type] = true end function KfActivityModel:ResetFosterActGuideBtnCache( ) self.foster_act_guide_btn_cache = {} end -- 记录需要播放高层级升级特效标志 function KfActivityModel:SetIsNeedTopEffect( bool ) self.act_guide_is_need_top_effect = bool end -- 获取特效标志 function KfActivityModel:GetIsNeedTopEffect( ) return self.act_guide_is_need_top_effect end ----------活动引导-998-end----------- --获得上榜条件最大限制 function KfActivityModel:GetRushRankMaxLimit( rank_type ) local max_rank_limit = 30 local rank_cfg = self:GetRushRankAwardCfg(rank_type) or {} for i,v in ipairs(rank_cfg) do max_rank_limit = max_rank_limit < v.rank_max and v.rank_max or max_rank_limit end return max_rank_limit end