ActFirstRecharge.lua 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. -- 活动 - 首充
  2. ActFirstRecharge = {}
  3. ActFirstRecharge.__index = ActFirstRecharge
  4. local function _rechargeType()
  5. return "1001"
  6. end
  7. local function _playerDbKey()
  8. return "T$act_recharge_first_data"
  9. end
  10. -- 获取活动奖励
  11. local function _get_reward_items(id)
  12. local reward = ConfigDataManager.getTableValue("cfg_Activity_firstRecharge", "reward", "id", id)
  13. jprint("首充活动奖励", id, reward)
  14. local tmp = string.toIntIntMap(reward, "#", "|")
  15. if table.notNullOrEmpty(tmp) then
  16. local list = {}
  17. for k, v in pairs(tmp) do
  18. table.insert(list, {id = k, count = v})
  19. end
  20. return list
  21. end
  22. return {}
  23. end
  24. function ActFirstRecharge.getData(actor)
  25. local var = getplaydef(actor, _playerDbKey())
  26. local data = setmetatable(var or {}, ActFirstRecharge)
  27. -- 充值事件
  28. if not data.payTime then
  29. data.payTime = 0
  30. end
  31. -- 领奖状态
  32. if not data.rewardStatus then
  33. data.rewardStatus = 0
  34. end
  35. -- 开始展示时间
  36. if not data.showTime then
  37. data.showTime = 0
  38. end
  39. return data
  40. end
  41. function ActFirstRecharge:saveData(actor)
  42. setplaydef(actor, _playerDbKey(), self)
  43. end
  44. ---充值回调触发事件
  45. function ActFirstRecharge.rechargeEvent(actor, cfg_recharge, count, amount, ext, outRewards)
  46. jprint("首充活动奖励 充值事件", cfg_recharge["id"])
  47. local data = ActFirstRecharge.getData(actor)
  48. jprint("首充活动奖励 充值事件 payTime:", data.payTime)
  49. -- 已充值
  50. if data.payTime > 0 then
  51. return
  52. end
  53. data.payTime = getbaseinfo("nowsec")
  54. data.rewardStatus = 1
  55. ActFirstRecharge.saveData(data, actor)
  56. ActFirstRecharge.sendPanel(actor, data)
  57. -- jprint("更新豪礼数据",data,config)
  58. ActFirstRecharge.gainReward(actor, {})
  59. -- ActFirstRecharge.getInfo(actor, {})
  60. end
  61. ---统一的请求消息处理
  62. function ActFirstRecharge.reqAction(actor, type, action, reqParameter)
  63. if action == "panel" then
  64. local data = ActFirstRecharge.getData(actor)
  65. ActFirstRecharge.sendPanel(actor, data)
  66. elseif action == "reward" then
  67. ActFirstRecharge.gainReward(actor, reqParameter)
  68. end
  69. end
  70. function ActFirstRecharge.gainReward(actor, reqParameter)
  71. local data = ActFirstRecharge.getData(actor)
  72. jprint("首充活动奖励 发放奖励 payTime:", data.payTime)
  73. -- 未充值
  74. if data.payTime == 0 then
  75. tipinfo(actor, "未充值")
  76. return
  77. end
  78. jprint("首充活动奖励 发放奖励 rewardStatus:", data.rewardStatus)
  79. -- 已领取
  80. if data.rewardStatus ~= 1 then
  81. tipinfo(actor, "已领取")
  82. return
  83. end
  84. -- 发放奖励
  85. local reward = ConfigDataManager.getTableValue("cfg_Activity_firstRecharge", "reward", "id", 1)
  86. local tmp = string.toIntIntMap(reward, "#", "|")
  87. if table.notNullOrEmpty(tmp) then
  88. --奖励进入背包
  89. Bag.sendRewards(actor, tmp, "充值奖励")
  90. end
  91. -- 改变状态
  92. data.rewardStatus = 2
  93. ActFirstRecharge.saveData(data, actor)
  94. -- 发送奖励
  95. ActFirstRecharge.sendPanel(actor, data)
  96. -- jprint("领奖豪礼数据",data)
  97. ActFirstRecharge.getInfo(actor, {})
  98. end
  99. -- 主线任务状态变化
  100. function ActFirstRecharge.onTaskChange(actor, taskId, taskStatus)
  101. local mainTaskId = ConfigDataManager.getTableValue("cfg_Activity_firstRecharge", "mainTaskId", "id", 1)
  102. if taskStatus == TaskHandler.Status.FINISH and taskId >= 0 then
  103. local data = ActFirstRecharge.getData(actor)
  104. data.showTime = getbaseinfo("nowsec")
  105. ActFirstRecharge.saveData(data, actor)
  106. -- 通知前端弹窗
  107. ActFirstRecharge.getInfo(actor, {})
  108. end
  109. end
  110. function ActFirstRecharge.sendPanel(actor, data)
  111. Recharge.resAction(actor, _rechargeType(), "panel", data)
  112. end
  113. -- 获取活动信息
  114. function ActFirstRecharge.getInfo(actor, msgData)
  115. local data = ActFirstRecharge.getData(actor)
  116. if data.showTime > 0 then
  117. sendluamsg(
  118. actor,
  119. LuaMessageIdToClient.RES_ACT_FIRST_CHARGE_INFO,
  120. {
  121. payTime = data.payTime,
  122. showTime = data.showTime,
  123. rewardStatus = data.rewardStatus,
  124. awards = _get_reward_items(1)
  125. }
  126. )
  127. end
  128. end
  129. -- 角色登录
  130. function ActFirstRecharge.login(actor)
  131. ActFirstRecharge.getInfo(actor, {})
  132. end
  133. --TODO 一定要放到文件最后
  134. EventListerTable.registerType("首充活动", _rechargeType(), _playerDbKey())
  135. --注册充值事件
  136. RechargeEventListerTable:eventLister("0", "首充活动", ActFirstRecharge.rechargeEvent)
  137. -- 注册请求消息监听
  138. RechargeMessageEventListerTable:eventLister(_rechargeType(), "首充活动", ActFirstRecharge.reqAction)