FundLogic.lua 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. -- 特权
  2. local Config = require("Config")
  3. local Msg = require("core.Msg")
  4. local ObjHuman = require("core.ObjHuman")
  5. local Util = require("common.Util")
  6. local Lang = require("common.Lang")
  7. local DB = require("common.DB")
  8. local PresentExcel = require("excel.present")
  9. local MailExcel = require("excel.mail")
  10. local VipExcel = require("excel.vip")
  11. local BuyExcel = require("excel.buy")
  12. local Grid = require("bag.Grid")
  13. local ItemDefine = require("bag.ItemDefine")
  14. local MailManager = require("mail.MailManager")
  15. local VipLogic = require("vip.VipLogic")
  16. local Broadcast = require("broadcast.Broadcast")
  17. local BuyLogic = require("topup.BuyLogic")
  18. local KingWorldLogic = require("present.KingWorldLogic")
  19. local BagLogic = require("bag.BagLogic")
  20. local ChatPaoMaLogic = require("chat.ChatPaoMaLogic")
  21. local LuaMongo = _G.lua_mongo
  22. local PanelDefine = require("broadcast.PanelDefine")
  23. local YunYingLogic = require("yunying.YunYingLogic")
  24. local SceneHandler = require("scene.Handler")
  25. local FuliExcel = require("excel.fuli")
  26. -- buyid
  27. CONFIG_ID1 = 1 -- 钻石基金
  28. CONFIG_ID2 = 2 -- 钻石基金
  29. CONFIG_ID3 = 3 -- 无限高抽
  30. BUYSTATE0 = 0 -- 未购买
  31. BUYSTATE1 = 1 -- 已购买1
  32. BUYSTATE2 = 2 -- 已购买2
  33. BUYSTATE3 = 3 -- 已购买3
  34. STATE0 = 0 -- 不可领取
  35. STATE1 = 1 -- 可以领取
  36. STATE2 = 2 -- 已经领取
  37. -- 获取购买状态
  38. local function getState(db, lv, id, flag)
  39. if db.get[id] then
  40. return STATE2
  41. end
  42. -- 无限高抽
  43. if flag == CONFIG_ID3 then
  44. if db.flag == flag and lv > FuliExcel.growFund[id].lv then
  45. return STATE1
  46. end
  47. else
  48. -- 基金
  49. if db.flag2 == flag and lv >= FuliExcel.growFund[id].lv then
  50. return STATE1
  51. end
  52. end
  53. return STATE0
  54. end
  55. -- 获取礼包获奖范围
  56. local function getRange(flag)
  57. local conf = FuliExcel.growFundDefine[1]
  58. return conf.range[flag], conf.buyID[flag]
  59. end
  60. function initDB(human)
  61. human.db.fundFlag = human.db.fundFlag or { flag = 0, get = { }, flag2 = 0 }
  62. human.db.fundFlag.flag2 = human.db.fundFlag.flag2 or 0
  63. return human.db.fundFlag
  64. end
  65. -- 特权查询
  66. function query(human, type)
  67. local db = initDB(human)
  68. local flag = CONFIG_ID1
  69. if type == CONFIG_ID3 then
  70. flag = db.flag == 0 and CONFIG_ID3 or db.flag
  71. else
  72. flag = db.flag2 == 0 and CONFIG_ID1 or db.flag2
  73. end
  74. local rangeConfig, buyID = getRange(flag)
  75. if not rangeConfig then return end
  76. local bAllBuy = true
  77. for i = rangeConfig[1], rangeConfig[2] do
  78. local state = getState(db, human.db.lv, i, CONFIG_ID1)
  79. if state ~= STATE2 then
  80. bAllBuy = false
  81. break
  82. end
  83. end
  84. if type ~= CONFIG_ID3 and bAllBuy == true then
  85. flag = CONFIG_ID2
  86. rangeConfig, buyID = getRange(flag)
  87. end
  88. local msgRet = Msg.gc.GC_TEQUAN_ZSJIJIN_QUERY
  89. local net = msgRet.data
  90. local len = 0
  91. for i = rangeConfig[1], rangeConfig[2] do
  92. local config = FuliExcel.growFund[i]
  93. len = len + 1
  94. local netNode = net.lvRewardMsg[len]
  95. netNode.id = i
  96. netNode.lv = config.lv
  97. netNode.state = getState(db, human.db.lv, i, flag)
  98. if flag == CONFIG_ID3 then
  99. for j, h in ipairs(config.items) do
  100. Grid.makeItem(netNode.lvReward[j], h[1], h[2])
  101. end
  102. netNode.lvReward[0] = #config.items
  103. else
  104. Grid.makeItem(netNode.lvReward[1], ItemDefine.ITEM_ZUANSHI_ID, config.yuanbao)
  105. netNode.lvReward[0] = 1
  106. end
  107. end
  108. if type == CONFIG_ID3 then
  109. net.fundFlag = db.flag == flag and 1 or 0
  110. else
  111. net.fundFlag = db.flag2 == flag and 1 or 0
  112. end
  113. net.lvRewardMsg[0] = len
  114. BuyLogic.fontBuyItem(human, net.buyItem, buyID)
  115. Msg.send(msgRet, human.fd)
  116. end
  117. -- 钻石基金购买
  118. function fund(human, funcID, buyConf, isFirst, cnt)
  119. local yyConfig = YunYingLogic.getFuncConfig(funcID)
  120. local buyType = buyConf.args[1]
  121. local rangeConfig, buyID = getRange(buyType)
  122. if not rangeConfig then return end
  123. if buyConf.id ~= buyID then return end
  124. if buyType == CONFIG_ID3 then
  125. if yyConfig.panelID ~= PanelDefine.PANEL_ID_3607 then return end
  126. else
  127. if yyConfig.panelID ~= PanelDefine.PANEL_ID_3506 then return end
  128. end
  129. local db = initDB(human)
  130. db.flag2 = db.flag2 or 0
  131. if buyType == CONFIG_ID3 then
  132. db.flag = CONFIG_ID3
  133. YunYingLogic.sendGroupUpdate(YYInfo[funcID], human, PanelDefine.PANEL_ID_3607)
  134. else
  135. if buyType == CONFIG_ID1 or buyType == CONFIG_ID2 then
  136. db.flag2 = buyType
  137. YunYingLogic.sendGroupUpdate(YYInfo[funcID], human, PanelDefine.PANEL_ID_3506)
  138. end
  139. end
  140. Broadcast.sendErr(human, Lang.ITEM_BUY_SUCCESS)
  141. query(human, buyType)
  142. end
  143. -- 获取基金奖励
  144. function fundGet(human, id, type)
  145. local config = FuliExcel.growFund[id]
  146. if not config then return end
  147. local db = initDB(human)
  148. local flag = nil
  149. local rangeConfig = nil
  150. if type == CONFIG_ID3 then
  151. rangeConfig = getRange(db.flag)
  152. if not rangeConfig then return end
  153. if id < rangeConfig[1] or id > rangeConfig[2] then
  154. return
  155. end
  156. flag = db.flag
  157. else
  158. -- 基金判定
  159. rangeConfig = getRange(db.flag2)
  160. if not rangeConfig then return end
  161. if id < rangeConfig[1] or id > rangeConfig[2] then
  162. return
  163. end
  164. flag = db.flag2
  165. end
  166. -- 是否已领取
  167. if getState(db, human.db.lv, id, flag) ~= STATE1 then
  168. return
  169. end
  170. db.get[id] = 1
  171. BagLogic.cleanMomentItemList()
  172. if type == CONFIG_ID3 then
  173. for i = 1, #config.items do
  174. BagLogic.updateMomentItem(BagLogic.ADDITEM_TYPE_1, config.items[i][1], config.items[i][2])
  175. end
  176. for k, v in pairs(funcID) do
  177. YunYingLogic.sendGroupUpdate(YYInfo[k], human, PanelDefine.PANEL_ID_3607)
  178. end
  179. else
  180. BagLogic.updateMomentItem(BagLogic.ADDITEM_TYPE_1, ItemDefine.ITEM_ZUANSHI_ID, config.yuanbao)
  181. for k, v in pairs(funcID) do
  182. YunYingLogic.sendGroupUpdate(YYInfo[k], human, PanelDefine.PANEL_ID_3506)
  183. end
  184. end
  185. BagLogic.addMomentItemList(human, "fundGet")
  186. query(human, type)
  187. end
  188. function isOpen(human,YYInfo,funcConfig)
  189. if not SceneHandler.canCharge(human) then
  190. return
  191. end
  192. return true
  193. end
  194. function isRed(human, YYInfo, funcConfig)
  195. local db = initDB(human)
  196. local rangeConfig = getRange(db.flag)
  197. if rangeConfig then
  198. for i = rangeConfig[1], rangeConfig[2] do
  199. local config = FuliExcel.growFund[i]
  200. if getState(db, human.db.lv, i, CONFIG_ID3) == STATE1 then
  201. return true
  202. end
  203. end
  204. end
  205. rangeConfig = getRange(db.flag2)
  206. if rangeConfig then
  207. for i = rangeConfig[1], rangeConfig[2] do
  208. local config = FuliExcel.growFund[i]
  209. if getState(db, human.db.lv, i, db.flag2) == STATE1 then
  210. return true
  211. end
  212. end
  213. end
  214. end
  215. function updateDaily(human)
  216. local db = initDB(human)
  217. local rangeConfig = getRange(db.flag)
  218. if rangeConfig then
  219. for i = rangeConfig[1], rangeConfig[2] do
  220. local config = FuliExcel.growFund[i]
  221. db.get[i] = nil
  222. end
  223. end
  224. end
  225. function onLevelUp(human, oldLv, newLv, id)
  226. YunYingLogic.sendGroupUpdate(YYInfo[id], human, PanelDefine.PANEL_ID_3506)
  227. end