123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- DailyRecharge = {}
- DailyRecharge.__index = DailyRecharge
- local function _rechargeType()
- return "11"
- end
- local function _playerDbKey()
- return "T$daily_recharge"
- end
- function DailyRecharge.get(actor)
- local obj = getplaydef(actor, _playerDbKey())
- return setmetatable(obj or {}, DailyRecharge)
- end
- function DailyRecharge:save(actor)
- setplaydef(actor, _playerDbKey(), self)
- end
- function DailyRecharge.rechargeEvent(actor, cfg, count, amount, ext, outRewards)
- local dailyRecharge = DailyRecharge.get(actor)
- local update = false
- for _, task in pairs(dailyRecharge.data) do
- local goal = ConfigDataManager.getTableValue("cfg_dailyRecharge", "goal", "id", task.id)
- local rechargeRecord = RechargeRecord.get(actor)
- if task.state == 2 and rechargeRecord:totalDailyMoney() >= tonumber(goal) then
- task.state = 1
- update = true
- end
- end
- if update then
- dailyRecharge:save(actor)
- DailyRecharge.sendPanel(actor, _rechargeType(), "panel")
- end
- end
- function DailyRecharge.reqAction(actor, type, action, reqParameter)
- if action == "panel" then
- DailyRecharge.sendPanel(actor, type, action)
- elseif action == "reward" then
- DailyRecharge.gainReward(actor, reqParameter)
- end
- end
- function DailyRecharge.gainReward(actor, reqParameter)
- local id = tostring(reqParameter["id"])
- local dailyRecharge = DailyRecharge.get(actor)
- local task = dailyRecharge.data[id]
- if task == nil then
- tipinfo(actor, "找不到该任务")
- return
- end
- if task.state ~= 1 then
- tipinfo(actor, "该任务未完成")
- return
- end
- task.state = 3
- dailyRecharge:save(actor)
- --发奖励
- local rewardstr = ConfigDataManager.getTableValue("cfg_dailyRecharge", "reward", "id", task.id)
- local rewards = string.toStringIntMap(rewardstr, "#", "|")
- -- 发送奖励
- additemmaptobag(actor, rewards, 0, 9999, "每日累充")
- --奖励面板
- sendluamsg(actor, LuaMessageIdToClient.COMMON_REWARD_PANEL, rewards)
- DailyRecharge.sendPanel(actor, _rechargeType(), "panel")
- end
- function DailyRecharge.sendPanel(actor, type, action)
- local data = {}
- local dailyRecharge = DailyRecharge.get(actor)
- if table.isNullOrEmpty(dailyRecharge.data) then
- dailyRecharge = DailyRecharge.refreshData(actor)
- end
- for _, v in pairs(dailyRecharge.data) do
- table.insert(data, { dailyRechargeId = v.id, giftState = v.state })
- end
- if not table.isNullOrEmpty(data) then
- jprint("每日累充任务面板", data)
- Recharge.resAction(actor, type, action, data)
- end
- end
- function DailyRecharge.zeroCheckRewards(actor)
- local dailyRecharge = DailyRecharge.get(actor)
- local reward_items = {}
- local mailId = 0
- if dailyRecharge.data then
- for _, task in pairs(dailyRecharge.data) do
- if task.state == 1 then
- local cfg = ConfigDataManager.getById("cfg_dailyRecharge", task.id)
- string.putIntIntMap(reward_items, cfg.reward, "#", "|")
- mailId = cfg.mail
- end
- end
- end
- if not table.isNullOrEmpty(reward_items) and mailId ~= 0 then
- sendconfigmailbyrid(actor, actor:toString(), mailId, reward_items, "", 1)
- end
- end
- function DailyRecharge.refreshData(actor)
- local dailyRecharge = DailyRecharge.get(actor)
- local data = {}
- local list = ConfigDataManager.getList("cfg_dailyRecharge")
- for _, cfg in pairs(list) do
- if ConditionManager.Check(actor, cfg.condition) then
- -- 充值项
- local task = {}
- task.id = cfg.id
- task.state = tonumber(cfg.goal) == 0 and 1 or 2
- data[cfg.id] = task
- end
- end
- dailyRecharge.data = data
- dailyRecharge.updateTime = getbaseinfo("nowsec")
- dailyRecharge:save(actor)
- return dailyRecharge
- end
- function DailyRecharge.zero(actor)
- local now = getbaseinfo("nowsec")
- local dailyRecharge = DailyRecharge.get(actor)
- if table.isNullOrEmpty(dailyRecharge.data) then
- dailyRecharge = DailyRecharge.refreshData(actor)
- end
- -- 线上数据未初始化
- dailyRecharge.updateTime = dailyRecharge.updateTime and dailyRecharge.updateTime or 0
- if not TimeUtil.isSameDay(now, dailyRecharge.updateTime) then
- info("每日累充0点刷新", "玩家", actor)
- DailyRecharge.zeroCheckRewards(actor)
- DailyRecharge.refreshData(actor)
- end
- -- DailyRecharge.dataCheck(actor)
- DailyRecharge.sendPanel(actor, _rechargeType(), "panel")
- end
- function DailyRecharge.login(actor)
- -- DailyRecharge.sendPanel(actor, _rechargeType(), "panel")
- DailyRecharge.zero(actor)
- end
- -- 临时处理后面删除 数据没刷新提前充钱了
- function DailyRecharge.dataCheck(actor)
- local dailyRecharge = DailyRecharge.get(actor)
- local update = false
- if dailyRecharge.data then
- for _, task in pairs(dailyRecharge.data) do
- local goal = ConfigDataManager.getTableValue("cfg_dailyRecharge", "goal", "id", task.id)
- local rechargeRecord = RechargeRecord.get(actor)
- if task.state == 2 and rechargeRecord:totalDailyMoney() >= tonumber(goal) then
- task.state = 1
- update = true
- end
- end
- end
- if update then
- dailyRecharge:save(actor)
- end
- end
- -- 注册请求消息监听
- EventListerTable.registerType("每日累充", _rechargeType(), _playerDbKey)
- ZeroEventListerTable:eventLister("0", "每日累充", DailyRecharge.zero)
- LoginEventListerTable:eventLister("0", "每日累充", DailyRecharge.login)
- RechargeMessageEventListerTable:eventLister(_rechargeType(), "每日累充", DailyRecharge.reqAction)
- RechargeEventListerTable:eventLister("0", "每日累充", DailyRecharge.rechargeEvent)
|