-- 活动 - 月卡 ActMonthlyGrow = {} ActMonthlyGrow.__index = ActMonthlyGrow local function _rechargeType() return "2" end local function _playerDbKey() return "T$act_monthly_grow_data" end -- 领取每日登陆奖励 function ActMonthlyGrow.dailyLoginAward(actor) local data = ActMonthlyGrow.getData(actor) -- 未购买 if data.payTime == 0 then return end local currTime = getbaseinfo("nowsec") -- 已领取当天 if TimeUtil.isSameDay(currTime, data.lstTimeAward) then return end -- 发放当天在线奖励 local reward = ConfigDataManager.getTableValue("cfg_Activity_monthlyGrow", "dayReward", "id", 1) local tmp = string.toIntIntMap(reward, "#", "|") if table.notNullOrEmpty(tmp) then local days = TimeUtil.diffDays(currTime, data.lstTimeAward) for k, v in pairs(tmp) do tmp[k] = v * days end --奖励进入背包 Bag.sendRewards(actor, tmp, "月卡登录奖励") end data.lstTimeAward = currTime ActMonthlyGrow.saveData(data, actor) ActMonthlyGrow.sendPanel(actor, data) sendluamsg( actor, LuaMessageIdToClient.RES_ACT_FIRST_CHARGE_INFO, {payTime = data.payTime, rewardStatus = data.rewardStatus} ) end -- 过期奖励 function ActMonthlyGrow.overdueAward(actor) local data = ActMonthlyGrow.getData(actor) -- 未购买 if data.payTime == 0 then return end local currTime = getbaseinfo("nowsec") -- 已领取当天 if TimeUtil.isSameDay(currTime, data.lstTimeAward) then return end -- 发放当天在线奖励 local reward = ConfigDataManager.getTableValue("cfg_Activity_monthlyGrow", "dayReward", "id", 1) local tmp = string.toIntIntMap(reward, "#", "|") if table.notNullOrEmpty(tmp) then local days = TimeUtil.diffDays(currTime, data.lstTimeAward) for k, v in pairs(tmp) do tmp[k] = v * days end -- 发放补充奖励邮件 sendconfigmailbyrid(actor, getbaseinfo(actor, "rid"), MailConfig.MONTHLY_GROW_DAILY_REWARD, tmp, "") end data.lstTimeAward = currTime ActMonthlyGrow.saveData(data, actor) end -- 角色登录 function ActMonthlyGrow.login(actor) -- TODO过期发放邮件 ActMonthlyGrow.dailyLoginAward(actor) end -- 在线跨天 function ActMonthlyGrow.midNightUpdate(actor) ActMonthlyGrow.dailyLoginAward(actor) end function ActMonthlyGrow.getData(actor) local var = getplaydef(actor, _playerDbKey()) local data = setmetatable(var or {}, ActMonthlyGrow) -- 充值事件 if not data.payTime then data.payTime = 0 end -- 最后领取奖励时间戳 if not data.lstTimeAward then data.lstTimeAward = 0 end if not data.endTime then data.endTime = 0 end return data end function ActMonthlyGrow:saveData(actor) setplaydef(actor, _playerDbKey(), self) end -- 获取月卡经验加成 function ActMonthlyGrow.getExpAdd(actor) local data = ActMonthlyGrow.getData(actor) -- 未激活 if data.payTime == 0 then return 0 end local currTime = getbaseinfo("nowsec") -- 已过期 if currTime > data.endTime then return 0 end return ConfigDataManager.getTableValue("cfg_Activity_monthlyGrow", "expBuff", "id", 1) or 0 end -- 获取月卡金币掉落加成 function ActMonthlyGrow.getGoldAdd(actor) local data = ActMonthlyGrow.getData(actor) -- 未激活 if data.payTime == 0 then return 0 end local currTime = getbaseinfo("nowsec") -- 已过期 if currTime > data.endTime then return 0 end return ConfigDataManager.getTableValue("cfg_Activity_monthlyGrow", "goldBuff", "id", 1) or 0 end -- 获取月卡挂机增加时长 function ActMonthlyGrow.getAfkAddTime(actor) local data = ActMonthlyGrow.getData(actor) -- 未激活 if data.payTime == 0 then return 0 end local currTime = getbaseinfo("nowsec") -- 已过期 if currTime > data.endTime then return 0 end return ConfigDataManager.getTableValue("cfg_Activity_monthlyGrow", "afkAddMinutes", "id", 1) or 0 end ---充值回调触发事件 function ActMonthlyGrow.rechargeEvent(actor, cfg_recharge, count, amount, ext, outRewards) local data = ActMonthlyGrow.getData(actor) -- 已充值 if data.payTime > 0 then return end local gid = ConfigDataManager.getTableValue("cfg_Activity_monthlyGrow", "gid", "id", 1) if not cfg_recharge["id"] == gid then return end data.payTime = getbaseinfo("nowsec") data.lstTimeAward = data.payTime data.endTime = TimeUtil.addDayEnd(data.payTime, 30) ActMonthlyGrow.saveData(data, actor) ActMonthlyGrow.sendPanel(actor, data) -- jprint("更新豪礼数据",data,config) -- 发放当天在线奖励 local reward = ConfigDataManager.getTableValue("cfg_Activity_monthlyGrow", "dayReward", "id", 1) local tmp = string.toIntIntMap(reward, "#", "|") if table.notNullOrEmpty(tmp) then --奖励进入背包 Bag.sendRewards(actor, tmp, "月卡登录奖励") end sendluamsg( actor, LuaMessageIdToClient.RES_ACT_FIRST_CHARGE_INFO, {payTime = data.payTime, rewardStatus = data.rewardStatus} ) end ---统一的请求消息处理 function ActMonthlyGrow.reqAction(actor, type, action, reqParameter) if action == "panel" then local data = ActMonthlyGrow.getData(actor) ActMonthlyGrow.sendPanel(actor, data) elseif action == "reward" then ActMonthlyGrow.gainReward(actor, reqParameter) end end function ActMonthlyGrow.gainReward(actor, reqParameter) local data = ActMonthlyGrow.getData(actor) -- 未充值 if data.payTime == 0 then tipinfo(actor, "未充值") return end -- 已领取 if data.rewardStatus > 0 then tipinfo(actor, "已领取") return end -- 发放奖励 local reward = ConfigDataManager.getTableValue("cfg_Activity_firstRecharge", "reward", "id", 1) local tmp = string.toIntIntMap(reward, "#", "|") if table.notNullOrEmpty(tmp) then --奖励进入背包 Bag.sendRewards(actor, tmp, "充值奖励") end -- 改变状态 data.rewardStatus = 2 ActMonthlyGrow.saveData(data, actor) -- 发送奖励 ActMonthlyGrow.sendPanel(actor, data) -- jprint("领奖豪礼数据",data) sendluamsg( actor, LuaMessageIdToClient.RES_ACT_FIRST_CHARGE_INFO, {payTime = data.payTime, rewardStatus = data.rewardStatus} ) end function ActMonthlyGrow.sendPanel(actor, data) Recharge.resAction(actor, _rechargeType(), "panel", data) end -- 获取活动信息 function ActMonthlyGrow.getInfo(actor, msgData) local data = ActMonthlyGrow.getData(actor) sendluamsg( actor, LuaMessageIdToClient.RES_ACT_FIRST_CHARGE_INFO, {payTime = data.payTime, rewardStatus = data.rewardStatus} ) end --TODO 一定要放到文件最后 EventListerTable.registerType("月卡活动", _rechargeType(), _playerDbKey()) --注册充值事件 RechargeEventListerTable:eventLister(_rechargeType(), "首充活动", ActMonthlyGrow.rechargeEvent) -- 注册请求消息监听 RechargeMessageEventListerTable:eventLister(_rechargeType(), "首充活动", ActMonthlyGrow.reqAction)