| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- -- 活动 - 月卡
- 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)
|