LeijiChongzhi.lua 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. --累计充值
  2. local Msg = require("core.Msg")
  3. local SceneHandler = require("scene.Handler")
  4. local CommonDB = require("common.CommonDB")
  5. local BagLogic = require("bag.BagLogic")
  6. local Grid = require("bag.Grid")
  7. local YunYingLogic = require("yunying.YunYingLogic")
  8. local PanelDefine = require("broadcast.PanelDefine")
  9. local LeijiChongzhiExcel = require("excel.leijiChongzhi")
  10. initFlag = false
  11. local function getConfig()
  12. local now = os.time()
  13. if not initFlag then
  14. for k,v in pairs(LeijiChongzhiExcel.define) do
  15. v.startDate.hour = 0
  16. v.startDate.min = 0
  17. v.startDate.sec = 0
  18. v.startTime = os.time(v.startDate)
  19. v.endDate.hour = 0
  20. v.endDate.min = 0
  21. v.endDate.sec = 0
  22. v.endTime = os.time(v.endDate) + 86400
  23. end
  24. initFlag = true
  25. end
  26. for k,v in pairs(LeijiChongzhiExcel.define) do
  27. if now >= v.startTime and now <= v.endTime then
  28. return LeijiChongzhiExcel[v.confID],v.startTime,v.endTime
  29. end
  30. end
  31. end
  32. local function checkDB(human)
  33. local leichongExcel,startTime,endTime = getConfig()
  34. if not leichongExcel then
  35. return
  36. end
  37. human.db.leijiChongzhi = human.db.leijiChongzhi or {startTime = 0,endTime = 0,get = {},cnt = 0}
  38. local leichongDB = human.db.leijiChongzhi
  39. if leichongDB.startTime ~= startTime or leichongDB.endTime ~= endTime then
  40. leichongDB.startTime = startTime
  41. leichongDB.endTime = endTime
  42. leichongDB.get = {}
  43. leichongDB.cnt = 0
  44. end
  45. return leichongExcel,leichongDB
  46. end
  47. STATE0 = 0 --不可领取
  48. STATE1 = 1 --未领取
  49. STATE2 = 2 --已经领取
  50. local function getState(leichongDB,id,need)
  51. if leichongDB.cnt < need then
  52. return STATE0
  53. end
  54. if leichongDB.get[id] then
  55. return STATE2
  56. else
  57. return STATE1
  58. end
  59. end
  60. function query(human)
  61. local leichongExcel,leichongDB = checkDB(human)
  62. if not leichongExcel then
  63. assert()
  64. end
  65. local msgRet = Msg.gc.GC_LEIJICHONGZHI_QUERY
  66. local len = 0
  67. local len1
  68. for k,v in ipairs(leichongExcel) do
  69. len = len + 1
  70. local net = msgRet.list[len]
  71. net.id = k
  72. net.maxCnt = v.maxCnt
  73. len1 = 0
  74. for k1,v1 in ipairs(v.items) do
  75. len1 = len1 + 1
  76. Grid.makeItem(net.reward[len1], v1[1], v1[2])
  77. end
  78. net.reward[0] = len1
  79. net.state = getState(leichongDB,k,v.cnt)
  80. end
  81. msgRet.list[0] = len
  82. end
  83. function get(human,id)
  84. local leichongExcel,leichongDB = checkDB(human)
  85. if not leichongExcel then
  86. assert()
  87. end
  88. local conf = leichongExcel[id]
  89. if getState(leichongDB,id,conf.cnt) ~= STATE1 then
  90. return
  91. end
  92. leichongDB.get[id] = 1
  93. --发放奖励
  94. BagLogic.sendItemGetList(human, conf.items, "leijiChongzhi")
  95. local msgRet = Msg.gc.GC_LEIJICHONGZHI_GET
  96. msgRet.id = id
  97. Msg.send(msgRet,human.fd)
  98. end
  99. function isOpen(human)
  100. if true then
  101. return
  102. end
  103. if not SceneHandler.canCharge(human) then
  104. return
  105. end
  106. if not CommonDB.getServerOpenDay() then
  107. return
  108. end
  109. local leichongExcel = getConfig()
  110. if not leichongExcel then
  111. return
  112. end
  113. return true
  114. end
  115. function isRed(human)
  116. local leichongExcel,leichongDB = checkDB(human)
  117. if not leichongExcel then return end
  118. for k,v in ipairs(leichongExcel) do
  119. if getState(leichongDB,k,v.cnt) == STATE1 then
  120. return true
  121. end
  122. end
  123. end
  124. function onAddMoney(human,money)
  125. if isOpen(human) ~= true then
  126. return
  127. end
  128. local leichongExcel,leichongDB = checkDB(human)
  129. if not leichongExcel then
  130. return
  131. end
  132. leichongDB.cnt = leichongDB.cnt + money
  133. for k, v in pairs(funcID) do
  134. YunYingLogic.updateIcon(YYInfo[k], human)
  135. YunYingLogic.sendGroupUpdate(YYInfo[k], human, PanelDefine.PANEL_ID_3303)
  136. break
  137. end
  138. end