CommonActCharge.lua 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. --------------------------------
  2. -- 文件名 : CommonActCharge.lua
  3. -- 文件说明 : 通用节日活动-连充豪礼
  4. -- 创建时间 : 2025/09
  5. -- 创建人 : FC
  6. --------------------------------
  7. local Msg = require("core.Msg")
  8. local Grid = require("bag.Grid")
  9. local BagLogic = require("bag.BagLogic")
  10. local AbsActLogic = require("absAct.AbsActLogic")
  11. local Broadcast = require("broadcast.Broadcast")
  12. local Lang = require("common.Lang")
  13. local Config = require("excel.commonact").allcharge
  14. local CommonDefine = require("common.CommonDefine")
  15. local COMMONACTCHARGEABSID = 7878
  16. ----------------------------------------- 内部处理开始 -------------------------------------
  17. -- 获取配置
  18. local function CommonActCharge_GetCof()
  19. return Config
  20. end
  21. -- 初始化DB数据()
  22. function CreatDB(human)
  23. if not human.db.absAct[COMMONACTCHARGEABSID] then
  24. human.db.absAct[COMMONACTCHARGEABSID] = {}
  25. end
  26. if not human.db.absAct[COMMONACTCHARGEABSID].tPrizeData then
  27. human.db.absAct[COMMONACTCHARGEABSID].tPrizeData = {}
  28. end
  29. human.db.absAct[COMMONACTCHARGEABSID].nAllMoney = 0
  30. for index, v in ipairs(Config) do
  31. human.db.absAct[COMMONACTCHARGEABSID].tPrizeData[index] = CommonDefine.COMMON_PRIZE_STATE_NOGET
  32. end
  33. return true
  34. end
  35. -- 检测并创建DB数据
  36. local function CheckAndCreateDB(human)
  37. if not human.db.absAct[COMMONACTCHARGEABSID] or not human.db.absAct[COMMONACTCHARGEABSID].tPrizeData then
  38. CreatDB(human)
  39. end
  40. end
  41. -- 获取DB奖励数据
  42. local function CommonActCharge_GetDBPrizeData(human)
  43. return human.db.absAct[COMMONACTCHARGEABSID].tPrizeData
  44. end
  45. -- 获取DB奖励状态
  46. local function CommonActCharge_GetDBPrizeStatus(human, nIndex)
  47. local tPrizeData = CommonActCharge_GetDBPrizeData(human)
  48. return tPrizeData[nIndex]
  49. end
  50. -- 设置DB奖励状态
  51. local function CommonActCharge_SetDBPrizeStatus(human, nIndex, nStatus)
  52. local tPrizeData = CommonActCharge_GetDBPrizeData(human)
  53. tPrizeData[nIndex] = nStatus
  54. end
  55. -- 获取DB天数充值金额
  56. local function CommonActCharge_GetDBDayCharge(human)
  57. local tPrizeData = CommonActCharge_GetDBPrizeData(human)
  58. return tPrizeData.nAllMoney
  59. end
  60. -- 设置DB天数充值金额
  61. local function CommonActCharge_SetDBDayCharge(human, nAddMoney)
  62. local tPrizeData = CommonActCharge_GetDBPrizeData(human)
  63. tPrizeData.nAllMoney = tPrizeData.nAllMoney + nAddMoney
  64. end
  65. ----------------------------------------- 客户端请求处理开始 -------------------------------------
  66. -- 请求数据
  67. function CommonActCharge_Query(human)
  68. CheckAndCreateDB(human)
  69. local tConf = CommonActCharge_GetCof()
  70. local tMsgData = Msg.gc.GC_ABS_FESTIVAL_RECHARGE_QUERY
  71. tMsgData.tPrize[0] = 0
  72. tMsgData.nNowCharge = CommonActCharge_GetDBDayCharge(human)
  73. local nLen = 0
  74. for nID, v in ipairs(tConf) do
  75. nLen = nLen + 1
  76. local tPrizeData = tMsgData.tPrize[nLen]
  77. tPrizeData.nID = nID
  78. tPrizeData.nState = CommonActCharge_GetDBPrizeStatus(human, nID)
  79. tPrizeData.nNeedCharge = v.nMoney
  80. tPrizeData.tPrize[0] = #v.tPrize
  81. for nIndex, tItem in ipairs(v.tPrize) do
  82. local nGoodsID = tItem[1]
  83. local nGoodsNum = tItem[2]
  84. Grid.makeItem(tPrizeData.tPrize[nIndex], nGoodsID, nGoodsNum)
  85. end
  86. end
  87. Msg.send(tMsgData, human.fd)
  88. end
  89. -- 请求领取奖励
  90. function CommonActCharge_Get(human, nIndex)
  91. local tConf = CommonActCharge_GetCof()
  92. local tItem = {}
  93. for nID, v in ipairs(tConf) do
  94. local nState = CommonActCharge_GetDBPrizeStatus(human, nID)
  95. if CommonDefine.COMMON_PRIZE_STATE_CANGET == nState then
  96. CommonActCharge_SetDBPrizeStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_GET)
  97. for _, tPrize in ipairs(v.Prize) do
  98. if not tItem[tPrize[1]] then
  99. tItem[tPrize[1]] = 0
  100. end
  101. tItem[tPrize[1]] = tItem[tPrize[1]] + tPrize[2]
  102. end
  103. end
  104. end
  105. local tPrize = {}
  106. for nID, nNum in pairs(tItem) do
  107. table.insert(tPrize, {nID, nNum})
  108. end
  109. BagLogic.addItemList(human, tPrize, "CommonActCharge")
  110. CommonActCharge_Query(human)
  111. end
  112. ----------------------------------------- 外部调用 -------------------------------------
  113. function isRed(human)
  114. local state, nEndTime, nOpenTime = AbsActLogic.isStarted(human, COMMONACTCHARGEABSID)
  115. if not state then
  116. return false
  117. end
  118. CheckAndCreateDB(human)
  119. local tConf = CommonActCharge_GetCof()
  120. for nID, v in ipairs(tConf) do
  121. local nState = CommonActCharge_GetDBPrizeStatus(human, nID)
  122. if nState == CommonDefine.COMMON_PRIZE_STATE_CANGET then
  123. return true
  124. end
  125. end
  126. return false
  127. end
  128. function isOpen(human, YYInfo, funcConfig)
  129. local state, endTime, startTime = AbsActLogic.isStarted(human, funcConfig and funcConfig.funcID or COMMONACTCHARGEABSID)
  130. if not state then
  131. print("[CommonActCharge__isOpen] 当前活动未开启")
  132. return
  133. end
  134. print("[CommonActCharge___isOpen] 进入判断 endTime = "..endTime.." startTime = "..startTime)
  135. return true, endTime, startTime
  136. end
  137. function isActive(human, YYInfo, funcConfig)
  138. return not isOpen(human, YYInfo, funcConfig)
  139. end
  140. function onCharge(human, price, funcID, buyID)
  141. local state, endTime, startTime = AbsActLogic.isStarted(human, COMMONACTCHARGEABSID)
  142. if not state then
  143. return
  144. end
  145. CheckAndCreateDB(human)
  146. local tConf = CommonActCharge_GetCof()
  147. local bQuery = false
  148. local nNewChareNum = CommonActCharge_GetDBDayCharge(human)
  149. nNewChareNum = nNewChareNum + price
  150. for nID, v in ipairs(tConf) do
  151. local nStatus = CommonActCharge_GetDBPrizeStatus(human, nID)
  152. if nStatus == CommonDefine.COMMON_PRIZE_STATE_NOGET and nNewChareNum >= v.nMoney then
  153. CommonActCharge_SetDBPrizeStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_CANGET)
  154. bQuery = true
  155. end
  156. end
  157. CommonActCharge_SetDBDayCharge(human, price)
  158. if true == bQuery then
  159. CommonActCharge_Query(human)
  160. end
  161. end