OpenServerGiftPackage.lua 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. local Msg = require("core.Msg")
  2. local Util = require("common.Util")
  3. local Lang = require("common.Lang")
  4. local BagLogic = require("bag.BagLogic")
  5. local YunYingLogic = require("yunying.YunYingLogic")
  6. local OpenActExcel = require("excel.openAct")
  7. local BuyLogic = require("topup.BuyLogic")
  8. local Grid = require("bag.Grid")
  9. local OpenAct = require("present.OpenAct")
  10. local Broadcast = require("broadcast.Broadcast")
  11. local function OpenServerGiftPackage_CreatDB(human)
  12. human.db.OpenServerGiftPackage = {}
  13. for nID, v in ipairs(OpenActExcel.OpenGiftPackage) do
  14. human.db.OpenServerGiftPackage[nID] = v.amount
  15. end
  16. end
  17. local function OpenServerGiftPackage_CheckDB(human)
  18. if not human.db.OpenServerGiftPackage then
  19. OpenServerGiftPackage_CreatDB(human)
  20. end
  21. end
  22. local function OpenServerGiftPackage_GetNum(human, nID)
  23. if not human.db.OpenServerGiftPackage[nID] then
  24. if OpenActExcel.OpenGiftPackage[nID] then
  25. human.db.OpenServerGiftPackage[nID] = OpenActExcel.OpenGiftPackage[nID].amount
  26. end
  27. end
  28. return human.db.OpenServerGiftPackage[nID]
  29. end
  30. local function OpenServerGiftPackage_SetNum(human, nID, nNum)
  31. human.db.OpenServerGiftPackage[nID] = human.db.OpenServerGiftPackage[nID] + nNum
  32. end
  33. function OpenServerGiftPackage_Query(human)
  34. OpenServerGiftPackage_CheckDB(human)
  35. local tMsgData = Msg.gc.GC_OPENSERVER_GIFTPACKAGE_QUERY
  36. tMsgData.tList[0] = #OpenActExcel.OpenGiftPackage
  37. for nID, v in ipairs(OpenActExcel.OpenGiftPackage) do
  38. local tData = tMsgData.tList[nID]
  39. tData.nID = nID
  40. tData.nMaxCnt = v.amount
  41. tData.nNowCnt = OpenServerGiftPackage_GetNum(human, nID)
  42. BuyLogic.fontBuyItem(human, tData.tBuyInfo, v.buyID)
  43. tData.tItemList[0] = #v.rewards
  44. for i, tItem in ipairs(v.rewards) do
  45. Grid.makeItem(tData.tItemList[i], tItem[1], tItem[2])
  46. end
  47. end
  48. Msg.send(tMsgData, human.fd)
  49. -- print("[OpenServerGiftPackage_Query] 发送数据完成")
  50. end
  51. function onCharge(human, nBuyID, nBuNum)
  52. -- print("[OpenServerGiftPackage_onCharge] 进入购买函数")
  53. local tItem, nChoseID = nil, nil
  54. for nID, v in ipairs(OpenActExcel.OpenGiftPackage) do
  55. if v.buyID == nBuyID then
  56. nChoseID = nID
  57. tItem = v.rewards
  58. end
  59. end
  60. if nChoseID and tItem then
  61. -- print("[OpenServerGiftPackage_onCharge] 开始发送奖励")
  62. local nNowCnt = OpenServerGiftPackage_GetNum(human, nChoseID)
  63. if nNowCnt > 0 then
  64. OpenServerGiftPackage_SetNum(human, nChoseID, -1)
  65. BagLogic.addItemList(human, tItem, "OpenServerGiftPackage")
  66. -- OpenServerGiftPackage_SetNum(human, nChoseID, -nBuNum)
  67. -- local tItemList = {}
  68. -- for _, v in ipairs(tItem) do
  69. -- table.insert(tItemList, {v[1], v[2]*nBuNum})
  70. -- end
  71. -- BagLogic.addItemList(human, tItemList, "OpenServerGiftPackage")
  72. OpenServerGiftPackage_Query(human)
  73. end
  74. end
  75. end
  76. function isRed(human)
  77. return false
  78. end
  79. function isActive(human, YYInfo, funcConfig)
  80. return not isOpen(human, YYInfo, funcConfig)
  81. end
  82. function isBaseOpen(human, YYInfo, funcConfig, noSend)
  83. if human.db.lv < funcConfig.openLv then
  84. if not noSend then
  85. local str = Util.format(Lang.ROLE_LEV_ERROR, funcConfig.openLv)
  86. return Broadcast.sendErr(human, str)
  87. end
  88. end
  89. local flag = OpenAct.getOpenActTime(funcConfig.param)
  90. if not flag then return end
  91. return true
  92. end
  93. function isOpen(human, YYInfo, funcConfig)
  94. if isBaseOpen(human, YYInfo, funcConfig, true) then return true end
  95. end
  96. -- function GetRemainNum(human, nBuyID)
  97. -- local nChoseID = nil
  98. -- for nID, v in ipairs(OpenActExcel.OpenGiftPackage) do
  99. -- if v.buyID == nBuyID then
  100. -- nChoseID = nID
  101. -- break
  102. -- end
  103. -- end
  104. -- if not nChoseID then
  105. -- return 0
  106. -- end
  107. -- local nNowCnt = OpenServerGiftPackage_GetNum(human, nChoseID)
  108. -- return nNowCnt
  109. -- end