ActFirstRecharge.lua 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. -- 活动 - 首充
  2. ActFirstRecharge = {}
  3. ActFirstRecharge.__index = ActFirstRecharge
  4. local function _rechargeType()
  5. return "0"
  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. return data
  22. end
  23. function ActFirstRecharge:saveData(actor)
  24. setplaydef(actor, _playerDbKey(), self)
  25. end
  26. ---充值回调触发事件
  27. function ActFirstRecharge.rechargeEvent(actor, cfg_recharge, count, amount, ext, outRewards)
  28. local data = ActFirstRecharge.getData(actor)
  29. -- 已充值
  30. if data.payTime > 0 then
  31. return
  32. end
  33. data.payTime = getbaseinfo("nowsec")
  34. data.rewardStatus = 1
  35. ActFirstRecharge.saveData(data, actor)
  36. ActFirstRecharge.sendPanel(actor, data)
  37. -- jprint("更新豪礼数据",data,config)
  38. sendluamsg(
  39. actor,
  40. LuaMessageIdToClient.RES_ACT_FIRST_CHARGE_INFO,
  41. {payTime = data.payTime, rewardStatus = data.rewardStatus}
  42. )
  43. end
  44. ---统一的请求消息处理
  45. function ActFirstRecharge.reqAction(actor, type, action, reqParameter)
  46. if action == "panel" then
  47. local data = ActFirstRecharge.getData(actor)
  48. ActFirstRecharge.sendPanel(actor, data)
  49. elseif action == "reward" then
  50. ActFirstRecharge.gainReward(actor, reqParameter)
  51. end
  52. end
  53. function ActFirstRecharge.gainReward(actor, reqParameter)
  54. local data = ActFirstRecharge.getData(actor)
  55. -- 未充值
  56. if data.payTime == 0 then
  57. tipinfo(actor, "未充值")
  58. return
  59. end
  60. -- 已领取
  61. if data.rewardStatus > 0 then
  62. tipinfo(actor, "已领取")
  63. return
  64. end
  65. -- 发放奖励
  66. local reward = ConfigDataManager.getTableValue("cfg_Activity_firstRecharge", "reward", "id", 1)
  67. local tmp = string.toIntIntMap(reward, "#", "|")
  68. if table.notNullOrEmpty(tmp) then
  69. --奖励进入背包
  70. Bag.sendRewards(actor, tmp, "充值奖励")
  71. end
  72. -- 改变状态
  73. data.rewardStatus = 2
  74. ActFirstRecharge.saveData(data, actor)
  75. -- 发送奖励
  76. ActFirstRecharge.sendPanel(actor, data)
  77. -- jprint("领奖豪礼数据",data)
  78. sendluamsg(
  79. actor,
  80. LuaMessageIdToClient.RES_ACT_FIRST_CHARGE_INFO,
  81. {payTime = data.payTime, rewardStatus = data.rewardStatus}
  82. )
  83. end
  84. function ActFirstRecharge.sendPanel(actor, data)
  85. Recharge.resAction(actor, _rechargeType(), "panel", data)
  86. end
  87. -- 获取活动信息
  88. function ActFirstRecharge.getInfo(actor, msgData)
  89. local data = ActFirstRecharge.getData(actor)
  90. sendluamsg(
  91. actor,
  92. LuaMessageIdToClient.RES_ACT_FIRST_CHARGE_INFO,
  93. {payTime = data.payTime, rewardStatus = data.rewardStatus}
  94. )
  95. end
  96. --TODO 一定要放到文件最后
  97. EventListerTable.registerType("首充活动", _rechargeType(), _playerDbKey())
  98. --注册充值事件
  99. RechargeEventListerTable:eventLister(_rechargeType(), "首充活动", ActFirstRecharge.rechargeEvent)
  100. -- 注册请求消息监听
  101. RechargeMessageEventListerTable:eventLister(_rechargeType(), "首充活动", ActFirstRecharge.reqAction)