-- 寻星礼包 -- 逻辑:每日每种礼包有一定限购次数, 跨天后重置 local Msg = require("core.Msg") local BagLogic = require("bag.BagLogic") local Grid = require("bag.Grid") local BuyLogic = require("topup.BuyLogic") local ZhuanpanGiftConfig = require("excel.zhuanpan").gift local LOGTAG = "zhuanpanGift" local function getCfg(buyId) for _, v in ipairs(ZhuanpanGiftConfig) do if buyId == v.buyID then return v end end end function ZhuanpanGift_Query(human) local zhuanpanGiftData = human.db.zhuanpanGiftData local msgRet = Msg.gc.GC_ZHUANPAN_GIFT_QUERY local giftArr = msgRet.giftArr giftArr[0] = 0 for k, v in ipairs(ZhuanpanGiftConfig) do giftArr[0] = k giftArr[k].nowBuyCnt = zhuanpanGiftData and zhuanpanGiftData[v.buyID] or 0 giftArr[k].maxBuyCnt = v.amount BuyLogic.fontBuyItem(human, giftArr[k].buyItem, v.buyID) giftArr[k].giftItem[0] = #v.rewards for idx, itemCfg in ipairs(v.rewards) do Grid.makeItem(giftArr[k].giftItem[idx], itemCfg[1], itemCfg[2]) end end Msg.send(msgRet, human.fd) end function updateDaily(human) human.db.zhuanpanGiftData = nil ZhuanpanGift_Query(human) end function onCharge(human, buyId, buyNum) local zhuanpanGiftData = human.db.zhuanpanGiftData local giftCfg = getCfg(buyId) if not giftCfg then return end if zhuanpanGiftData and (zhuanpanGiftData[buyId] or 0) >= giftCfg.amount then return end -- if buyNum + (zhuanpanGiftData[buyId] or 0) >= giftCfg.amount then -- return -- end local itemArr = {} for idx, itemCfg in ipairs(giftCfg.rewards) do itemArr[idx] = {itemCfg[1], itemCfg[2]} -- itemArr[idx] = {itemCfg[1], itemCfg[2] * buyNum} end BagLogic.addItemList(human, itemArr, LOGTAG) zhuanpanGiftData = zhuanpanGiftData or {} zhuanpanGiftData[buyId] = (zhuanpanGiftData[buyId] or 0) + 1 -- zhuanpanGiftData[buyId] = (zhuanpanGiftData[buyId] or 0) + buyNum human.db.zhuanpanGiftData = zhuanpanGiftData ZhuanpanGift_Query(human) end -- function GetRemainNum(human, nBuyID) -- local giftCfg = getCfg(nBuyID) -- if not giftCfg then -- return 0 -- end -- local zhuanpanGiftData = human.db.zhuanpanGiftData -- if not zhuanpanGiftData or not zhuanpanGiftData[nBuyID] then -- return giftCfg.amount -- end -- return (giftCfg.amount > zhuanpanGiftData[nBuyID]) and (giftCfg.amount - zhuanpanGiftData[nBuyID]) or 0 -- end