RechargeSevenReceive.lua 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  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(
  61. actor,
  62. "rid:",
  63. actor,
  64. "跨天登录,lastLoginTime:",
  65. lastLoginTime,
  66. "now:",
  67. now,
  68. "当前登录天数:",
  69. rewardInfo.countDay + 1
  70. )
  71. rewardInfo.countDay = rewardInfo.countDay + 1
  72. rewardInfo.lastLoginTime = now
  73. end
  74. setplaydef(actor, RechargeSevenReceive.var.LOGIN_ACTIVITY_INFO, rewardInfo)
  75. --通知客户端
  76. result.countDay = rewardInfo.countDay
  77. result.hadReceiveReward = rewardInfo.hadReceiveReward
  78. sendluamsg(actor, LuaMessageIdToClient.RES_RECHARGE_LOGIN_INFO_CHANGE, result)
  79. end
  80. --请求领取登录奖励
  81. function RechargeSevenReceive.receiveLoginReward(actor, msgData)
  82. if not RechargeSevenReceive.isActivityOpen(actor) then
  83. tipinfo(actor, "活动未开启!")
  84. return
  85. end
  86. local id = msgData.id
  87. local config = ConfigDataManager.getTable("cfg_rechargeSevenDayGift", "id", id)
  88. if not config then
  89. return
  90. end
  91. local rewardInfo = getplaydef(actor, RechargeSevenReceive.var.LOGIN_ACTIVITY_INFO)
  92. if rewardInfo.countDay < tonumber(config[1].accumulateday) then
  93. tipinfo(actor, "登录天数不足!")
  94. return
  95. end
  96. if table.contains(rewardInfo.hadReceiveReward, tonumber(id)) then
  97. tipinfo(actor, "不要重复领取!")
  98. return
  99. end
  100. --发奖励
  101. local reward = string.putIntIntMap({}, config[1].reward, "#", "|")
  102. info(actor, "领取超值连领奖励成功", actor, "当前奖励天数:", config[1].accumulateday)
  103. for itemCfgId, count in pairs(reward) do
  104. Bag.addItemToBag(actor, itemCfgId, count, 0, 9999, "7日连充")
  105. end
  106. --奖励弹框
  107. sendluamsg(actor, LuaMessageIdToClient.COMMON_REWARD_PANEL, reward)
  108. table.insert(rewardInfo.hadReceiveReward, tonumber(id))
  109. setplaydef(actor, RechargeSevenReceive.var.LOGIN_ACTIVITY_INFO, rewardInfo)
  110. --通知客户端
  111. local result = {}
  112. result.countDay = rewardInfo.countDay
  113. result.hadReceiveReward = rewardInfo.hadReceiveReward
  114. sendluamsg(actor, LuaMessageIdToClient.RES_RECEIVE_RECHARGE_LOGIN_REWARD, result)
  115. end
  116. --活动结束时邮件发放奖励
  117. function RechargeSevenReceive.sendReward()
  118. local allRoleInfos = getallrolesummaryinfos()
  119. if allRoleInfos == nil or next(allRoleInfos) == nil then
  120. return
  121. end
  122. for _, roleInfo in pairs(allRoleInfos) do
  123. local reward = {}
  124. local actor = roleInfo["actor"]
  125. if not RechargeSevenReceive.isEndFirstDay(actor) then
  126. return
  127. end
  128. local rewardInfo = getplaydef(actor, RechargeSevenReceive.var.LOGIN_ACTIVITY_INFO)
  129. if rewardInfo == nil or rewardInfo == "" then
  130. rewardInfo = {}
  131. end
  132. local countDay = rewardInfo.countDay or 0
  133. if countDay > 0 then
  134. local config = ConfigDataManager.getTable("cfg_rechargeSevenDayGift")
  135. for _, cfg in pairs(config) do
  136. if not table.contains(rewardInfo.hadReceiveReward, tonumber(cfg.id)) then
  137. if tonumber(cfg.accumulateday) <= countDay then
  138. string.putIntIntMap(reward, cfg.reward)
  139. end
  140. end
  141. end
  142. end
  143. if table.count(reward) > 0 then
  144. sendconfigmailbyrid(actor, getbaseinfo(actor, "rid"), MailConfig.RECHARGE_SEVEN_REWARD, reward, "")
  145. end
  146. setplaydef(actor, RechargeSevenReceive.var.LOGIN_ACTIVITY_INFO, nil)
  147. end
  148. jprint("补发超值连领奖励邮件结束")
  149. end
  150. -- 注册充值回调事件,在所有充值礼包之后
  151. RechargeEventListerTable:eventLister("0", "超值连领", RechargeSevenReceive.updateLoginInfo, 999999999)