ZhuanpanGift.lua 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. -- 寻星礼包
  2. -- 逻辑:每日每种礼包有一定限购次数, 跨天后重置
  3. local Msg = require("core.Msg")
  4. local BagLogic = require("bag.BagLogic")
  5. local Grid = require("bag.Grid")
  6. local BuyLogic = require("topup.BuyLogic")
  7. local ZhuanpanGiftConfig = require("excel.zhuanpan").gift
  8. local Lang = require("common.Lang")
  9. local Broadcast = require("broadcast.Broadcast")
  10. local LOGTAG = "zhuanpanGift"
  11. local function getCfg(buyId)
  12. for _, v in ipairs(ZhuanpanGiftConfig) do
  13. if buyId == v.buyID then
  14. return v
  15. end
  16. end
  17. end
  18. function ZhuanpanGift_Query(human)
  19. local zhuanpanGiftData = human.db.zhuanpanGiftData
  20. local msgRet = Msg.gc.GC_ZHUANPAN_GIFT_QUERY
  21. local giftArr = msgRet.giftArr
  22. giftArr[0] = 0
  23. for k, v in ipairs(ZhuanpanGiftConfig) do
  24. giftArr[0] = k
  25. giftArr[k].nowBuyCnt = zhuanpanGiftData and zhuanpanGiftData[v.buyID] or 0
  26. giftArr[k].maxBuyCnt = v.amount
  27. BuyLogic.fontBuyItem(human, giftArr[k].buyItem, v.buyID)
  28. giftArr[k].giftItem[0] = #v.rewards
  29. for idx, itemCfg in ipairs(v.rewards) do
  30. Grid.makeItem(giftArr[k].giftItem[idx], itemCfg[1], itemCfg[2])
  31. end
  32. end
  33. Msg.send(msgRet, human.fd)
  34. end
  35. function updateDaily(human)
  36. human.db.zhuanpanGiftData = nil
  37. ZhuanpanGift_Query(human)
  38. end
  39. function onCharge(human, buyId, buyNum)
  40. local zhuanpanGiftData = human.db.zhuanpanGiftData
  41. local giftCfg = getCfg(buyId)
  42. if not giftCfg then
  43. return Broadcast.sendErr(human, Lang.COMMON_COMFIG_ERROR)
  44. end
  45. -- if zhuanpanGiftData and (zhuanpanGiftData[buyId] or 0) >= giftCfg.amount then
  46. -- return
  47. -- end
  48. -- if buyNum + (zhuanpanGiftData[buyId] or 0) >= giftCfg.amount then
  49. -- return
  50. -- end
  51. if buyNum + (zhuanpanGiftData and zhuanpanGiftData[buyId] or 0) > giftCfg.amount then
  52. return Broadcast.sendErr(human, Lang.ABS_GIFT_BUY_LIMIT)
  53. end
  54. local itemArr = {}
  55. for idx, itemCfg in ipairs(giftCfg.rewards) do
  56. -- itemArr[idx] = {itemCfg[1], itemCfg[2]}
  57. itemArr[idx] = {itemCfg[1], itemCfg[2] * buyNum}
  58. end
  59. BagLogic.addItemList(human, itemArr, LOGTAG)
  60. zhuanpanGiftData = zhuanpanGiftData or {}
  61. -- zhuanpanGiftData[buyId] = (zhuanpanGiftData[buyId] or 0) + 1
  62. zhuanpanGiftData[buyId] = (zhuanpanGiftData[buyId] or 0) + buyNum
  63. human.db.zhuanpanGiftData = zhuanpanGiftData
  64. ZhuanpanGift_Query(human)
  65. end
  66. function GetRemainNum(human, nBuyID)
  67. local giftCfg = getCfg(nBuyID)
  68. if not giftCfg then
  69. return 0
  70. end
  71. local zhuanpanGiftData = human.db.zhuanpanGiftData
  72. if not zhuanpanGiftData or not zhuanpanGiftData[nBuyID] then
  73. return giftCfg.amount
  74. end
  75. return (giftCfg.amount > zhuanpanGiftData[nBuyID]) and (giftCfg.amount - zhuanpanGiftData[nBuyID]) or 0
  76. end