-- 活动 - 首充 ActFirstRecharge = {} ActFirstRecharge.__index = ActFirstRecharge local function _rechargeType() return "0" end local function _playerDbKey() return "T$act_recharge_first_data" end function ActFirstRecharge.getData(actor) local var = getplaydef(actor, _playerDbKey()) local data = setmetatable(var or {}, ActFirstRecharge) -- 充值事件 if not data.payTime then data.payTime = 0 end -- 领奖状态 if not data.rewardStatus then data.rewardStatus = 0 end return data end function ActFirstRecharge:saveData(actor) setplaydef(actor, _playerDbKey(), self) end ---充值回调触发事件 function ActFirstRecharge.rechargeEvent(actor, cfg_recharge, count, amount, ext, outRewards) local data = ActFirstRecharge.getData(actor) -- 已充值 if data.payTime > 0 then return end data.payTime = getbaseinfo("nowsec") data.rewardStatus = 1 ActFirstRecharge.saveData(data, actor) ActFirstRecharge.sendPanel(actor, data) -- jprint("更新豪礼数据",data,config) sendluamsg( actor, LuaMessageIdToClient.RES_ACT_FIRST_CHARGE_INFO, {payTime = data.payTime, rewardStatus = data.rewardStatus} ) end ---统一的请求消息处理 function ActFirstRecharge.reqAction(actor, type, action, reqParameter) if action == "panel" then local data = ActFirstRecharge.getData(actor) ActFirstRecharge.sendPanel(actor, data) elseif action == "reward" then ActFirstRecharge.gainReward(actor, reqParameter) end end function ActFirstRecharge.gainReward(actor, reqParameter) local data = ActFirstRecharge.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 ActFirstRecharge.saveData(data, actor) -- 发送奖励 ActFirstRecharge.sendPanel(actor, data) -- jprint("领奖豪礼数据",data) sendluamsg( actor, LuaMessageIdToClient.RES_ACT_FIRST_CHARGE_INFO, {payTime = data.payTime, rewardStatus = data.rewardStatus} ) end function ActFirstRecharge.sendPanel(actor, data) Recharge.resAction(actor, _rechargeType(), "panel", data) end -- 获取活动信息 function ActFirstRecharge.getInfo(actor, msgData) local data = ActFirstRecharge.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(), "首充活动", ActFirstRecharge.rechargeEvent) -- 注册请求消息监听 RechargeMessageEventListerTable:eventLister(_rechargeType(), "首充活动", ActFirstRecharge.reqAction)