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