DailyFixedTaskLogic.lua 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. --[[
  2. absact = {
  3. task[id] = {
  4. state = 1
  5. cnt = 0
  6. }
  7. }
  8. ]]
  9. local AbsActLogic = require("absAct.AbsActLogic")
  10. local AbsActExcel = require("excel.absAct")
  11. local BuyExcel = require("excel.buy")
  12. local Util = require("common.Util")
  13. local Msg = require("core.Msg")
  14. local Grid = require("bag.Grid")
  15. local BagLogic = require("bag.BagLogic")
  16. local BuyLogic = require("topup.BuyLogic")
  17. local ObjHuman = require("core.ObjHuman")
  18. local Lang = require("common.Lang")
  19. local Broadcast = require("broadcast.Broadcast")
  20. local MailManager = require("mail.MailManager")
  21. local MailExcel = require("excel.mail")
  22. local YunYingLogic = require("yunying.YunYingLogic")
  23. function isOpen(human, YYInfo, funcConfig)
  24. local state, endTime, startTime = AbsActLogic.isStarted(human, funcConfig.funcID)
  25. if not state then return end
  26. --[[
  27. local absAct = human.db.absAct[funcConfig.funcID]
  28. if not absAct then
  29. return
  30. end
  31. ]]
  32. return true, endTime, startTime
  33. end
  34. function isActive(human, YYInfo, funcConfig)
  35. return not isOpen(human, YYInfo, funcConfig)
  36. end
  37. function fontDailyFixedTask(db,config,net,id)
  38. net.state = db.task and (db.task[id] and db.task[id].state or 0) or 0
  39. net.nowCnt = db.task and (db.task[id] and db.task[id].cnt or 0) or 0
  40. net.needCnt = config.needCnt
  41. net.desc = config.desc
  42. net.day = config.day
  43. net.giftId = id
  44. local len = #config.item
  45. for i = 1,len do
  46. Grid.makeItem(net.item[i],config.item[i][1],config.item[i][2])
  47. end
  48. net.item[0] = len
  49. end
  50. function getAndSendMsg(human,id)
  51. -- 判断活动是否开启
  52. local state, endTime, starTime = AbsActLogic.isStarted(human, id)
  53. if not state then return end
  54. local absConfig = AbsActExcel.absActivity[id]
  55. if not absConfig then return end
  56. local absAct = human.db.absAct[id]
  57. if not absAct then
  58. return
  59. end
  60. local nowDay = Util.diffDay(starTime) + 1
  61. local config = AbsActExcel.dailyFixedTask
  62. local msgRet = Msg.gc.GC_ABS_DAILY_FIXED_TASK_QUERY
  63. local len = #config
  64. local count = 0
  65. for i = 1,len do
  66. if config[i].day == nowDay and config[i].actId == absConfig.actId then
  67. count = count + 1
  68. local net = msgRet.netList[count]
  69. fontDailyFixedTask(absAct,config[i],net,i)
  70. end
  71. end
  72. msgRet.netList[0] = count
  73. Msg.send(msgRet,human.fd)
  74. end
  75. function getItem(human,id,giftId)
  76. -- 判断活动是否开启
  77. local state, endTime, starTime = AbsActLogic.isStarted(human, id)
  78. if not state then return end
  79. local absConfig = AbsActExcel.absActivity[id]
  80. if not absConfig then return end
  81. local absAct = human.db.absAct[id]
  82. if not absAct then
  83. return
  84. end
  85. local nowDay = Util.diffDay(starTime) + 1
  86. local config = AbsActExcel.dailyFixedTask[giftId]
  87. if not config or config.day ~= nowDay or config.actId ~= absConfig.actId then
  88. return
  89. end
  90. if absAct.task and absAct.task[giftId] and absAct.task[giftId].state == 2 then
  91. return
  92. end
  93. absAct.task = absAct.task or {}
  94. absAct.task[giftId] = absAct.task[giftId] or {}
  95. absAct.task[giftId].state = 2
  96. BagLogic.addItemList(human, config.item, "dailyFixedTask")
  97. getAndSendMsg(human,id)
  98. YunYingLogic.sendBanner(human)
  99. YunYingLogic.updateIcon(YYInfo[id], human)
  100. YunYingLogic.sendGroupUpdate(YYInfo[id], human, absConfig.panelID)
  101. end
  102. function onLogin(human,funcID)
  103. taskActive(human, 1, funcID,1)
  104. end
  105. function onCharge(human,parameter,funcID)
  106. taskActive(human, 3, funcID,parameter)
  107. end
  108. function onDailyTask(human,funcID, parameter)
  109. taskActive(human, 2, funcID,parameter)
  110. end
  111. function onZhanBuBuyCard(human, funcID, parameter)
  112. taskActive(human, 4, funcID, parameter)
  113. end
  114. -- 每日任务激活
  115. function taskActive(human, type, id, cnt)
  116. local state, endTime, starTime = AbsActLogic.isStarted(human, id)
  117. if not state then return end
  118. local absConfig = AbsActExcel.absActivity[id]
  119. if not absConfig then return end
  120. AbsActLogic.checkAbsActClean(human, id)
  121. local absAct = human.db.absAct[id]
  122. if not absAct then
  123. return
  124. end
  125. absAct.task = absAct.task or {}
  126. local nowDay = Util.diffDay(starTime) + 1
  127. local config = AbsActExcel.dailyFixedTask
  128. local len = #config
  129. for i = 1,len do
  130. if config[i].day == nowDay and config[i].actId == absConfig.actId and type == config[i].type then
  131. absAct.task[i] = absAct.task[i] or {}
  132. absAct.task[i].cnt = absAct.task[i].cnt or 0
  133. if absAct.task[i].state then
  134. break
  135. end
  136. absAct.task[i].cnt = absAct.task[i].cnt + cnt
  137. if absAct.task[i].cnt >= config[i].needCnt then
  138. absAct.task[i].state = 1
  139. break
  140. end
  141. end
  142. end
  143. YunYingLogic.sendBanner(human)
  144. YunYingLogic.updateIcon(YYInfo[id], human)
  145. YunYingLogic.sendGroupUpdate(YYInfo[id], human, absConfig.panelID)
  146. end
  147. function isRed(human, YYInfo, funcConfig)
  148. local state,endTime,starTime = AbsActLogic.isStarted(human, funcConfig.funcID)
  149. if not state then return end
  150. local absConfig = AbsActExcel.absActivity[funcConfig.funcID]
  151. local absAct = human.db.absAct[funcConfig.funcID]
  152. if not absAct then return end
  153. if not absAct.task then
  154. return
  155. end
  156. local config = AbsActExcel.dailyFixedTask
  157. local nowDay = Util.diffDay(starTime) + 1
  158. for k,v in pairs(absAct.task) do
  159. if v.state == 1 and config[k].actId == absConfig.actId and config[k].day == nowDay then
  160. return true
  161. end
  162. end
  163. return false
  164. end