ZhuanpanGift.lua 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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 LOGTAG = "zhuanpanGift"
  9. local function getCfg(buyId)
  10. for _, v in ipairs(ZhuanpanGiftConfig) do
  11. if buyId == v.buyID then
  12. return v
  13. end
  14. end
  15. end
  16. function ZhuanpanGift_Query(human)
  17. local zhuanpanGiftData = human.db.zhuanpanGiftData
  18. local msgRet = Msg.gc.GC_ZHUANPAN_GIFT_QUERY
  19. local giftArr = msgRet.giftArr
  20. giftArr[0] = 0
  21. for k, v in ipairs(ZhuanpanGiftConfig) do
  22. giftArr[0] = k
  23. giftArr[k].nowBuyCnt = zhuanpanGiftData and zhuanpanGiftData[v.buyID] or 0
  24. giftArr[k].maxBuyCnt = v.amount
  25. BuyLogic.fontBuyItem(human, giftArr[k].buyItem, v.buyID)
  26. giftArr[k].giftItem[0] = #v.rewards
  27. for idx, itemCfg in ipairs(v.rewards) do
  28. Grid.makeItem(giftArr[k].giftItem[idx], itemCfg[1], itemCfg[2])
  29. end
  30. end
  31. Msg.send(msgRet, human.fd)
  32. end
  33. function updateDaily(human)
  34. human.db.zhuanpanGiftData = nil
  35. ZhuanpanGift_Query(human)
  36. end
  37. function onCharge(human, buyId, buyNum)
  38. local zhuanpanGiftData = human.db.zhuanpanGiftData
  39. local giftCfg = getCfg(buyId)
  40. if not giftCfg then
  41. return
  42. end
  43. if zhuanpanGiftData and (zhuanpanGiftData[buyId] or 0) >= giftCfg.amount then
  44. return
  45. end
  46. -- if buyNum + (zhuanpanGiftData[buyId] or 0) >= giftCfg.amount then
  47. -- return
  48. -- end
  49. local itemArr = {}
  50. for idx, itemCfg in ipairs(giftCfg.rewards) do
  51. itemArr[idx] = {itemCfg[1], itemCfg[2]}
  52. -- itemArr[idx] = {itemCfg[1], itemCfg[2] * buyNum}
  53. end
  54. BagLogic.addItemList(human, itemArr, LOGTAG)
  55. zhuanpanGiftData = zhuanpanGiftData or {}
  56. zhuanpanGiftData[buyId] = (zhuanpanGiftData[buyId] or 0) + 1
  57. -- zhuanpanGiftData[buyId] = (zhuanpanGiftData[buyId] or 0) + buyNum
  58. human.db.zhuanpanGiftData = zhuanpanGiftData
  59. ZhuanpanGift_Query(human)
  60. end
  61. -- function GetRemainNum(human, nBuyID)
  62. -- local giftCfg = getCfg(nBuyID)
  63. -- if not giftCfg then
  64. -- return 0
  65. -- end
  66. -- local zhuanpanGiftData = human.db.zhuanpanGiftData
  67. -- if not zhuanpanGiftData or not zhuanpanGiftData[nBuyID] then
  68. -- return giftCfg.amount
  69. -- end
  70. -- return (giftCfg.amount > zhuanpanGiftData[nBuyID]) and (giftCfg.amount - zhuanpanGiftData[nBuyID]) or 0
  71. -- end