RechargeSevenReceive.lua 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. RechargeSevenReceive = {}
  2. local this = {}
  3. RechargeSevenReceive.var = {
  4. LOGIN_ACTIVITY_INFO = "T$rechargesevenreceiveinfo",
  5. }
  6. --活动是否开启
  7. function RechargeSevenReceive.isActivityOpen(actor)
  8. local totalMoney = RechargeRecord.getTotalMoney(actor)
  9. local num = ConfigDataManager.getTableValue("cfg_global", "value", "id", 26001)
  10. if tonumber(totalMoney) < tonumber(num) then
  11. return false
  12. end
  13. local config = ConfigDataManager.getTable("sub_mainRecharge", "id", 12)
  14. if config == nil then
  15. return false
  16. end
  17. return ConditionManager.Check(actor, config[1].showcondition)
  18. end
  19. -- --是否是活动结束后第一天
  20. function RechargeSevenReceive.isEndFirstDay(actor)
  21. local config = ConfigDataManager.getTable("sub_mainRecharge", "id", 12)
  22. if config == nil then
  23. return nil
  24. end
  25. if config then
  26. local condition = config[1].showcondition
  27. local map = string.putIntIntMap({}, condition, "#", "&")
  28. local time = map[903] or -1
  29. local serverOpenDays = getbaseinfo(actor, "serveropendays")
  30. if time + 1 == tonumber(serverOpenDays) then
  31. return true
  32. end
  33. end
  34. return nil
  35. end
  36. function RechargeSevenReceive.login(actor)
  37. RechargeSevenReceive.updateLoginInfo(actor)
  38. end
  39. --玩家凌晨在线时需要更新一次
  40. function RechargeSevenReceive.midNightUpdate(actor)
  41. RechargeSevenReceive.updateLoginInfo(actor)
  42. end
  43. ---更新登录信息
  44. function RechargeSevenReceive.updateLoginInfo(actor)
  45. if not RechargeSevenReceive.isActivityOpen(actor) then
  46. return
  47. end
  48. local result = {}
  49. local rewardInfo = getplaydef(actor, RechargeSevenReceive.var.LOGIN_ACTIVITY_INFO)
  50. if not rewardInfo then
  51. rewardInfo = {}
  52. rewardInfo.countDay = 1
  53. rewardInfo.hadReceiveReward = {}
  54. rewardInfo.lastLoginTime = getbaseinfo("now")
  55. end
  56. --校验登录时间是否跨天
  57. local now = getbaseinfo("now")
  58. local lastLoginTime = rewardInfo.lastLoginTime
  59. if not TimeUtil.isSameDay4Millis(now, lastLoginTime) then
  60. info(actor, "rid:", actor, "跨天登录,lastLoginTime:", lastLoginTime, "now:", now, "当前登录天数:", rewardInfo.countDay + 1)
  61. rewardInfo.countDay = rewardInfo.countDay + 1
  62. rewardInfo.lastLoginTime = now
  63. end
  64. setplaydef(actor, RechargeSevenReceive.var.LOGIN_ACTIVITY_INFO, rewardInfo)
  65. --通知客户端
  66. result.countDay = rewardInfo.countDay
  67. result.hadReceiveReward = rewardInfo.hadReceiveReward
  68. sendluamsg(actor, LuaMessageIdToClient.RES_RECHARGE_LOGIN_INFO_CHANGE, result)
  69. end
  70. --请求领取登录奖励
  71. function RechargeSevenReceive.receiveLoginReward(actor, msgData)
  72. if not RechargeSevenReceive.isActivityOpen(actor) then
  73. tipinfo(actor, "活动未开启!")
  74. return
  75. end
  76. local id = msgData.id
  77. local config = ConfigDataManager.getTable("cfg_rechargeSevenDayGift", "id", id)
  78. if not config then
  79. return
  80. end
  81. local rewardInfo = getplaydef(actor, RechargeSevenReceive.var.LOGIN_ACTIVITY_INFO)
  82. if rewardInfo.countDay < tonumber(config[1].accumulateday) then
  83. tipinfo(actor, "登录天数不足!")
  84. return
  85. end
  86. if table.contains(rewardInfo.hadReceiveReward, tonumber(id)) then
  87. tipinfo(actor, "不要重复领取!")
  88. return
  89. end
  90. --发奖励
  91. local reward = string.putIntIntMap({}, config[1].reward, "#", "|")
  92. info(actor, "领取超值连领奖励成功", actor, "当前奖励天数:", config[1].accumulateday)
  93. for itemCfgId, count in pairs(reward) do
  94. additemtobag(actor, itemCfgId, count, 0, 9999, '7日连充')
  95. end
  96. --奖励弹框
  97. sendluamsg(actor, LuaMessageIdToClient.COMMON_REWARD_PANEL, reward)
  98. table.insert(rewardInfo.hadReceiveReward, tonumber(id))
  99. setplaydef(actor, RechargeSevenReceive.var.LOGIN_ACTIVITY_INFO, rewardInfo)
  100. --通知客户端
  101. local result = {}
  102. result.countDay = rewardInfo.countDay
  103. result.hadReceiveReward = rewardInfo.hadReceiveReward
  104. sendluamsg(actor, LuaMessageIdToClient.RES_RECEIVE_RECHARGE_LOGIN_REWARD, result)
  105. end
  106. --活动结束时邮件发放奖励
  107. function RechargeSevenReceive.sendReward()
  108. local allRoleInfos = getallrolesummaryinfos()
  109. if allRoleInfos == nil or next(allRoleInfos) == nil then
  110. return
  111. end
  112. for _, roleInfo in pairs(allRoleInfos) do
  113. local reward = {}
  114. local actor = roleInfo["actor"]
  115. if not RechargeSevenReceive.isEndFirstDay(actor) then
  116. return
  117. end
  118. local rewardInfo = getplaydef(actor, RechargeSevenReceive.var.LOGIN_ACTIVITY_INFO)
  119. if rewardInfo == nil or rewardInfo == "" then
  120. rewardInfo = {}
  121. end
  122. local countDay = rewardInfo.countDay or 0
  123. if countDay > 0 then
  124. local config = ConfigDataManager.getTable("cfg_rechargeSevenDayGift")
  125. for _, cfg in pairs(config) do
  126. if not table.contains(rewardInfo.hadReceiveReward, tonumber(cfg.id)) then
  127. if tonumber(cfg.accumulateday) <= countDay then
  128. string.putIntIntMap(reward, cfg.reward)
  129. end
  130. end
  131. end
  132. end
  133. if table.count(reward) > 0 then
  134. sendconfigmailbyrid(actor, getbaseinfo(actor, "rid"), MailConfig.RECHARGE_SEVEN_REWARD, reward, "")
  135. end
  136. setplaydef(actor, RechargeSevenReceive.var.LOGIN_ACTIVITY_INFO, nil)
  137. end
  138. jprint("补发超值连领奖励邮件结束")
  139. end
  140. -- 注册充值回调事件,在所有充值礼包之后
  141. RechargeEventListerTable:eventLister("0", "超值连领", RechargeSevenReceive.updateLoginInfo, 999999999)