FundLogic.lua 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  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 human.db.nFirstBuy or 1 ~= human.db.nFirstBuy then
  190. return false
  191. end
  192. if not SceneHandler.canCharge(human) then
  193. return
  194. end
  195. return true
  196. end
  197. function isRed(human, YYInfo, funcConfig)
  198. local db = initDB(human)
  199. local rangeConfig = getRange(db.flag)
  200. if rangeConfig then
  201. for i = rangeConfig[1], rangeConfig[2] do
  202. local config = FuliExcel.growFund[i]
  203. if getState(db, human.db.lv, i, CONFIG_ID3) == STATE1 then
  204. return true
  205. end
  206. end
  207. end
  208. rangeConfig = getRange(db.flag2)
  209. if rangeConfig then
  210. for i = rangeConfig[1], rangeConfig[2] do
  211. local config = FuliExcel.growFund[i]
  212. if getState(db, human.db.lv, i, db.flag2) == STATE1 then
  213. return true
  214. end
  215. end
  216. end
  217. end
  218. function updateDaily(human)
  219. local db = initDB(human)
  220. local rangeConfig = getRange(db.flag)
  221. if rangeConfig then
  222. for i = rangeConfig[1], rangeConfig[2] do
  223. local config = FuliExcel.growFund[i]
  224. db.get[i] = nil
  225. end
  226. end
  227. end
  228. function onLevelUp(human, oldLv, newLv, id)
  229. YunYingLogic.sendGroupUpdate(YYInfo[id], human, PanelDefine.PANEL_ID_3506)
  230. end