ActFirstRecharge.lua 4.3 KB

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