Преглед изворни кода

部分活动礼包改为可批量购买

gitxsm пре 1 недеља
родитељ
комит
6e3784a018

+ 3 - 0
script/common/Lang.lua

@@ -481,6 +481,7 @@ TOMORROW_OPEN = [[暂未开启]]
 
 ABS_ITEM_ERR = [[道具不足]]
 ABS_SNOWBALL_ERR = [[所有礼包已激活]]
+ABS_GIFT_BUY_LIMIT = [[礼包已达可购买上限]]
 ABS_SNOWDRESS_NEED_ERR = [[需要先装扮前面的]]
 
 CHAT_UNION_YQSUCESS = [[邀请成功]]
@@ -816,6 +817,8 @@ MUST_SELECT_ONE = [[请至少选择一个材料]]
 NUM_EXCEED = [[数量超出]]
 
 
+VOUCHER_NOT_ENOUGH = [[代金券不足]]
+
 ---------------诸神圣域---------------
 DATA_ERR = [[数据异常]]
 DATA_OLD = [[请获取最新数据后再操作]]

+ 2 - 0
script/common/LogDefine.lua

@@ -324,6 +324,8 @@ DEFINE = {
 	Artifacts				= 784,			-- 英雄神威灵装
 	BattleGift				= 785,			-- 闯关礼金
 	RecycleItem				= 786,			-- 收纳箱
+	AnniversaryVoucherWheel = 787,			-- 周年庆活动-代金券转盘
+	AnniversaryActiveWheel  = 788,			-- 周年庆活动-活跃度转盘
 
 	errHandle				= 99999,		-- 异常处理
 }

+ 31 - 28
script/module/absAct/BusOneActivityBuy.lua

@@ -96,25 +96,25 @@ end
 function BusOneBuy_Buy(human, nID)
     local tConf = tBuyConf[nID]
     if not tConf then
-        print("[BusOneBuy_Buy] 不存在对应的配置 返回 nID = "..nID)
+        -- print("[BusOneBuy_Buy] 不存在对应的配置 返回 nID = "..nID)
         return
     end
 
     if tConf.nType == BUSONEBUY_TYPE_MONEY then
-        print("[BusOneBuy_Buy] 配置对应的类型不正确 返回 nID = "..nID.." nType = "..tConf.nType)
+        -- print("[BusOneBuy_Buy] 配置对应的类型不正确 返回 nID = "..nID.." nType = "..tConf.nType)
         return
     end
 
     local nNowBuyNum = BusOneBuy_GetBuyNum(human, nID)
     if nNowBuyNum >= tConf.nBuyNum then
-        print("[BusOneBuy_Buy] 当前购买的次数大于可购买的次数 返回 nID = "..nID.." nType = "
-                ..tConf.nType.." nNowBuyNum = "..nNowBuyNum)
+        -- print("[BusOneBuy_Buy] 当前购买的次数大于可购买的次数 返回 nID = "..nID.." nType = "
+        --         ..tConf.nType.." nNowBuyNum = "..nNowBuyNum)
         return
     end
 
     if not ObjHuman.checkRMB(human, tConf.nPrize) then
-        print("[BusOneBuy_Buy] 当前购买的金币不足 返回 nID = "..nID.." nType = "
-            ..tConf.nType.." nNowBuyNum = "..nNowBuyNum)
+        -- print("[BusOneBuy_Buy] 当前购买的金币不足 返回 nID = "..nID.." nType = "
+        --     ..tConf.nType.." nNowBuyNum = "..nNowBuyNum)
 		return
 	end
 	
@@ -128,7 +128,8 @@ function BusOneBuy_Buy(human, nID)
     BusOneBuy_Query(human)
 end
 
-function BusOneBuy_Get(human)
+function BusOneBuy_Get(human, itemMul)
+    itemMul = itemMul or 1
     local tItem = {}
     for nID, v in pairs(tBuyConf) do
         local nStatus = BusOneBuy_GetBuyStatus(human, nID)
@@ -138,7 +139,7 @@ function BusOneBuy_Get(human)
                     tItem[tData[1]] = 0
                 end
 
-                tItem[tData[1]] = tItem[tData[1]] + tData[2]
+                tItem[tData[1]] = tItem[tData[1]] + tData[2] * itemMul
             end
 
             local nNowBuyNum = BusOneBuy_GetBuyNum(human, nID)
@@ -164,14 +165,14 @@ end
 
 -----------------------------------外部调用-----------------------------
 function isOpen(human, YYInfo, funcConfig)
-    print("[BusOneActivityBuy_isOpen] 进入判断")
+    -- print("[BusOneActivityBuy_isOpen] 进入判断")
     local state, endTime, startTime = AbsActLogic.isStarted(human, funcConfig and funcConfig.funcID or BUSONEBUYABSID)
     if not state then 
         print("[BusOneActivityBuy_isOpen] 当前活动未开启")
         return 
     end
 
-    print("[BusOneActivityBuy_isOpen] 进入判断 endTime = "..endTime.." startTime = "..startTime)
+    -- print("[BusOneActivityBuy_isOpen] 进入判断 endTime = "..endTime.." startTime = "..startTime)
     return true, endTime, startTime
 end
 
@@ -193,38 +194,40 @@ function isRed(human, YYInfo, absActConfig)
 end
 
 function onCharge(human, price, funcID, buyID, buyNum)
-    print("[BusOneActivityBuy_onCharge] 进入购买 buyID = "..buyID)
+    -- print("[BusOneActivityBuy_onCharge] 进入购买 buyID = "..buyID)
     local bRed = false
     for nID, v in pairs(tBuyConf) do
         if buyID == v.nBuyID then
             local nStatus = BusOneBuy_GetBuyStatus(human, nID)
             if nStatus == CommonDefine.COMMON_PRIZE_STATE_NOGET then
                 BusOneBuy_SetBuyStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_CANGET)
-                BusOneBuy_SetBuyNum(human, nID, 1)
+                -- BusOneBuy_SetBuyNum(human, nID, 1)
+                BusOneBuy_SetBuyNum(human, nID, buyNum)
                 bRed = true
             end
         end
     end
 
     if true == bRed then
-        print("[BusOneActivityBuy_onCharge] 进入发送数据 buyID = "..buyID)
-        BusOneBuy_Get(human)
+        -- print("[BusOneActivityBuy_onCharge] 进入发送数据 buyID = "..buyID)
+        BusOneBuy_Get(human, buyNum)
         YunYingLogic.sendBanner(human)
         BusOneActivityTask.BusOneTask_SendRed(human)
     end
 end
 
--- function GetRemainNum(human, nBuyID)
---     for nID, v in pairs(tBuyConf) do
---         if nBuyID == v.nBuyID then
---             local nBuyNum = BusOneBuy_GetBuyNum(human, nID)
---             if v.nBuyNum > nBuyNum then
---                 return 1
---             else
---                 return 0
---             end
---         end
---     end
-
---     return 0
--- end
+function GetRemainNum(human, nBuyID)
+    for nID, v in pairs(tBuyConf) do
+        if nBuyID == v.nBuyID then
+            local nBuyNum = BusOneBuy_GetBuyNum(human, nID)
+            if v.nBuyNum > nBuyNum then
+                -- return 1
+                return v.nBuyNum - nBuyNum
+            else
+                return 0
+            end
+        end
+    end
+
+    return 0
+end

+ 35 - 35
script/module/absAct/PremiumGiftLogic.lua

@@ -100,15 +100,15 @@ function premiumGift(human, id, buyConf, isFirst, cnt, buyNum)
         return
     end
 
-    -- if nowBuyCnt + buyNum > config.cnt then
-    --     Broadcast.sendErr(human, Lang.HERO_BAG_BUY_CAP_NO_CNT)
-    --     return
-    -- end
+    if nowBuyCnt + buyNum > config.cnt then
+        Broadcast.sendErr(human, Lang.HERO_BAG_BUY_CAP_NO_CNT)
+        return
+    end
 
     -- 当金币购买之后超过最大金币时,不允许购买
     for j = 1, #config.reward do
         local itemID = config.reward[j][1]
-        local itemCnt = config.reward[j][2]
+        local itemCnt = config.reward[j][2] * buyNum
         if itemID == ItemDefine.ITEM_JINBI_ID then
             if not ObjHuman.canAddJinbi(human, itemCnt) then
                 return
@@ -117,19 +117,19 @@ function premiumGift(human, id, buyConf, isFirst, cnt, buyNum)
     end
 
     -- -- 增加已购买次数
-    -- human.db.absAct[id].premiumCnt[premiumID] = nowBuyCnt + buyNum
-    -- -- 发放物品
-    -- local items = { }
-    -- for _, v in ipairs(AbsActExcel.premiumGift[premiumID].reward) do
-    --     table.insert(items, {v[1], v[2]*buyNum})
-    -- end
-    -- BagLogic.addItemList(human, items, "premium_reward")
+    human.db.absAct[id].premiumCnt[premiumID] = nowBuyCnt + buyNum
+    -- 发放物品
+    local items = { }
+    for _, v in ipairs(AbsActExcel.premiumGift[premiumID].reward) do
+        table.insert(items, {v[1], v[2]*buyNum})
+    end
+    BagLogic.addItemList(human, items, "premium_reward")
 
     -- 增加已购买次数
-    human.db.absAct[id].premiumCnt[premiumID] = nowBuyCnt + 1
-    -- 发放物品
-    -- local items = { }
-    BagLogic.addItemList(human, AbsActExcel.premiumGift[premiumID].reward, "premium_reward")
+    -- human.db.absAct[id].premiumCnt[premiumID] = nowBuyCnt + 1
+    -- -- 发放物品
+    -- -- local items = { }
+    -- BagLogic.addItemList(human, AbsActExcel.premiumGift[premiumID].reward, "premium_reward")
 
     Broadcast.sendErr(human, Lang.ITEM_BUY_SUCCESS)
     AbsActLogic.actDetailQuery(human, id)
@@ -248,22 +248,22 @@ function giftBuy(human, id, premiumID)
     AbsActLogic.actDetailQuery(human, id)
 end
 
--- function GetRemainNum(human, nBuyID)
---     local premiumID = ABS_PREMIUM_GIFT_LIST_BUYID[nBuyID]
---     if not premiumID then
---         return 0
---     end
-
---     local config = AbsActExcel.premiumGift[premiumID]
---     if not config then return 0 end
-
---     if not human.db.absAct[ABC_PREMIUM_GIFT_ACT_ID].premiumCnt then
---         return 0
---     end
-
---     if not human.db.absAct[ABC_PREMIUM_GIFT_ACT_ID].premiumCnt[premiumID] then
---         return config.cnt
---     else
---         return config.cnt - human.db.absAct[ABC_PREMIUM_GIFT_ACT_ID].premiumCnt[premiumID]
---     end
--- end
+function GetRemainNum(human, nBuyID)
+    local premiumID = ABS_PREMIUM_GIFT_LIST_BUYID[nBuyID]
+    if not premiumID then
+        return 0
+    end
+
+    local config = AbsActExcel.premiumGift[premiumID]
+    if not config then return 0 end
+
+    if not human.db.absAct[ABC_PREMIUM_GIFT_ACT_ID].premiumCnt then
+        return config.cnt
+    end
+
+    if not human.db.absAct[ABC_PREMIUM_GIFT_ACT_ID].premiumCnt[premiumID] then
+        return config.cnt
+    else
+        return config.cnt - human.db.absAct[ABC_PREMIUM_GIFT_ACT_ID].premiumCnt[premiumID]
+    end
+end

+ 38 - 38
script/module/absAct/SpecialCustomLogic.lua

@@ -238,7 +238,7 @@ function customBuy(human,args,id, bFromPay, buyNum)
         return
     end
 
-    -- buyNum = buyNum or 1
+    buyNum = buyNum or 1
 
     -- 检查来源
     local tConfig = AbsActExcel.custom[args]
@@ -268,14 +268,14 @@ function customBuy(human,args,id, bFromPay, buyNum)
 
     -- 已达到限购次数,返回
     local config = AbsActExcel.custom[args]
-    if absAct.custom[args].cnt >= config.limitCnt then
-        return
-    end
-
-    -- if buyNum + absAct.custom[args].cnt > config.limitCnt then
+    -- if absAct.custom[args].cnt >= config.limitCnt then
     --     return
     -- end
 
+    if buyNum + absAct.custom[args].cnt > config.limitCnt then
+        return
+    end
+
     -- 钻石价格不为0时,表示钻石购买,则需判断钻石是否足够
     if config.price ~= 0 then
 	    if not ObjHuman.checkRMB(human, config.price) then
@@ -285,8 +285,8 @@ function customBuy(human,args,id, bFromPay, buyNum)
     end
 
     -- 购买次数增加一次
-    absAct.custom[args].cnt = absAct.custom[args].cnt + 1
-    -- absAct.custom[args].cnt = absAct.custom[args].cnt + buyNum
+    -- absAct.custom[args].cnt = absAct.custom[args].cnt + 1
+    absAct.custom[args].cnt = absAct.custom[args].cnt + buyNum
 
      -- 状态设置为已卖完,此时,为防止后续报错,导致可无限购买,故先设置为无法继续购买
     absAct.custom[args].state = 2
@@ -294,12 +294,12 @@ function customBuy(human,args,id, bFromPay, buyNum)
      -- 统计物品,并发放
     local item = {}
     for i = 1, #config.fixed do
-        item[#item+1] = {config.fixed[i][1],config.fixed[i][2]}
-        -- item[#item+1] = {config.fixed[i][1],config.fixed[i][2] * buyNum}
+        -- item[#item+1] = {config.fixed[i][1],config.fixed[i][2]}
+        item[#item+1] = {config.fixed[i][1],config.fixed[i][2] * buyNum}
     end
     for i = 1,#absAct.custom[args].selectItem do
-        item[#item+1] = {absAct.custom[args].selectItem[i][1],absAct.custom[args].selectItem[i][2]}
-        -- item[#item+1] = {absAct.custom[args].selectItem[i][1],absAct.custom[args].selectItem[i][2]*buyNum}
+        -- item[#item+1] = {absAct.custom[args].selectItem[i][1],absAct.custom[args].selectItem[i][2]}
+        item[#item+1] = {absAct.custom[args].selectItem[i][1],absAct.custom[args].selectItem[i][2]*buyNum}
     end
     BagLogic.addItemList(human, item, "abs_custom")   
 
@@ -348,29 +348,29 @@ function isRed(human, YYInfo, funcConfig)
     return bRed
 end
 
--- function GetRemainNum(human, nBuyID)
---     local tConfig = AbsActExcel.custom
---     local nChoseID, nLimitNum = nil, nil
---     for nID, v in pairs(tConfig) do
---         if v.buyID == nBuyID and nID < SPECIALCISTOMNOBUYID then
---             nChoseID = nID
---             nLimitNum = v.limitCnt
---             break
---         end
---     end
-
---     local tActDBData = human.db.absAct[SPECIALCISTOMACTID]
---     if not tActDBData then
---         return 0
---     end
-
---     if not nChoseID then
---         return 0
---     end
-
---     if tActDBData.custom and tActDBData.custom[nChoseID] and tActDBData.custom[nChoseID].cnt then
---         return tActDBData.custom[nChoseID].cnt >= nLimitNum and 0 or (nLimitNum - tActDBData.custom[nChoseID].cnt)
---     else
---         return nLimitNum
---     end
--- end
+function GetRemainNum(human, nBuyID)
+    local tConfig = AbsActExcel.custom
+    local nChoseID, nLimitNum = nil, nil
+    for nID, v in pairs(tConfig) do
+        if v.buyID == nBuyID and nID < SPECIALCISTOMNOBUYID then
+            nChoseID = nID
+            nLimitNum = v.limitCnt
+            break
+        end
+    end
+
+    local tActDBData = human.db.absAct[SPECIALCISTOMACTID]
+    if not tActDBData then
+        return 0
+    end
+
+    if not nChoseID then
+        return 0
+    end
+
+    if tActDBData.custom and tActDBData.custom[nChoseID] and tActDBData.custom[nChoseID].cnt then
+        return tActDBData.custom[nChoseID].cnt >= nLimitNum and 0 or (nLimitNum - tActDBData.custom[nChoseID].cnt)
+    else
+        return nLimitNum
+    end
+end

+ 24 - 24
script/module/present/OpenServerGiftPackage.lua

@@ -75,14 +75,14 @@ function onCharge(human, nBuyID, nBuNum)
         -- print("[OpenServerGiftPackage_onCharge] 开始发送奖励")
         local nNowCnt = OpenServerGiftPackage_GetNum(human, nChoseID)
         if nNowCnt > 0 then
-            OpenServerGiftPackage_SetNum(human, nChoseID, -1)
-            BagLogic.addItemList(human, tItem, "OpenServerGiftPackage")
-            -- OpenServerGiftPackage_SetNum(human, nChoseID, -nBuNum)
-            -- local tItemList = {}
-            -- for _, v in ipairs(tItem) do
-            --     table.insert(tItemList, {v[1], v[2]*nBuNum})
-            -- end
-            -- BagLogic.addItemList(human, tItemList, "OpenServerGiftPackage")
+            -- OpenServerGiftPackage_SetNum(human, nChoseID, -1)
+            -- BagLogic.addItemList(human, tItem, "OpenServerGiftPackage")
+            OpenServerGiftPackage_SetNum(human, nChoseID, -nBuNum)
+            local tItemList = {}
+            for _, v in ipairs(tItem) do
+                table.insert(tItemList, {v[1], v[2]*nBuNum})
+            end
+            BagLogic.addItemList(human, tItemList, "OpenServerGiftPackage")
 
             OpenServerGiftPackage_Query(human)
         end
@@ -115,19 +115,19 @@ function isOpen(human, YYInfo, funcConfig)
 	if isBaseOpen(human, YYInfo, funcConfig, true) then return true end
 end
 
--- function GetRemainNum(human, nBuyID)
---     local nChoseID = nil
---     for nID, v in ipairs(OpenActExcel.OpenGiftPackage) do
---         if v.buyID == nBuyID then
---             nChoseID = nID
---             break
---         end
---     end
-
---     if not nChoseID then
---         return 0
---     end
-
---     local nNowCnt = OpenServerGiftPackage_GetNum(human, nChoseID)
---     return nNowCnt
--- end
+function GetRemainNum(human, nBuyID)
+    local nChoseID = nil
+    for nID, v in ipairs(OpenActExcel.OpenGiftPackage) do
+        if v.buyID == nBuyID then
+            nChoseID = nID
+            break
+        end
+    end
+
+    if not nChoseID then
+        return 0
+    end
+
+    local nNowCnt = OpenServerGiftPackage_GetNum(human, nChoseID)
+    return nNowCnt
+end

+ 11 - 11
script/module/voucher/VoucherShopLogic.lua

@@ -375,8 +375,8 @@ end
 
 -- 请求代金券购买商品
 function VoucherShop_BuyItem(human, nBuyID, nBuyNum)
-    if not human or 0 >= nBuyID or nBuyNum <= 0 or nBuyNum >= 100 then
-        return
+    if not human or 0 >= nBuyID or nBuyNum <= 0 or nBuyNum >= 200 then
+        return Broadcast.sendErr(human, Lang.COMMON_ARGUMENT_ERROR)
     end
 
     local tBuyConfig = VoucherShop_GetShopConfig()
@@ -386,27 +386,27 @@ function VoucherShop_BuyItem(human, nBuyID, nBuyNum)
     end
 
     if tBuyConfig[nBuyID] or tInflateConfig[nBuyID] then
-        print("[VoucherShop_BuyItem] 玩家使用代金券购买代金券礼品,直接返回")
+        -- print("[VoucherShop_BuyItem] 玩家使用代金券购买代金券礼品,直接返回")
         VoucherShop_WriteLog(human, "[VoucherShop_BuyItem]", "玩家使用代金券购买代金券礼品,直接返回")
         return
     end
     
     local tTrueBuyConfig = BuyExcel.buy[nBuyID]
     if not tTrueBuyConfig then
-        print("[VoucherShop_BuyItem] 不存在对应的商品信息 nBuyID = "..nBuyID)
-        return
+        -- print("[VoucherShop_BuyItem] 不存在对应的商品信息 nBuyID = "..nBuyID)
+        return Broadcast.sendErr(human, Lang.COMMON_ARGUMENT_ERROR)
     end
 
     local nDelVoucherNum = tTrueBuyConfig.Voucher * nBuyNum
     if 0 >= nDelVoucherNum then
-        print("[VoucherShop_BuyItem] 该商品无法用代金券购买,配置的数量为空 nBuyID = "..nBuyID.." nDelVoucherNum = "..nDelVoucherNum)
-        return
+        -- print("[VoucherShop_BuyItem] 该商品无法用代金券购买,配置的数量为空 nBuyID = "..nBuyID.." nDelVoucherNum = "..nDelVoucherNum)
+        return Broadcast.sendErr(human, Lang.COMMON_COMFIG_ERROR)
     end
 
     local nNowNum = BagLogic.getItemCnt(human, VoucherShopDefine.VOUCHERITME_ID)
     if nNowNum < nDelVoucherNum then
-        print("[VoucherShop_BuyItem] 对应购买代金券不足直接返回 nBuyID = "..nBuyID.." nDelVoucherNum = "..nDelVoucherNum.." nNowNum = "..nNowNum)
-        return
+        -- print("[VoucherShop_BuyItem] 对应购买代金券不足直接返回 nBuyID = "..nBuyID.." nDelVoucherNum = "..nDelVoucherNum.." nNowNum = "..nNowNum)
+        return Broadcast.sendErr(human, Lang.VOUCHER_NOT_ENOUGH)
     end
 
     if tTrueBuyConfig.module and tTrueBuyConfig.module ~= "" then
@@ -415,8 +415,8 @@ function VoucherShop_BuyItem(human, nBuyID, nBuyNum)
             local nTrueNum = tModule.GetRemainNum(human, nBuyID)
 
             if not nTrueNum or nTrueNum < nBuyNum then
-                print("[VoucherShop_BuyItem] 获取不到对应的配置nBuyID = "..nBuyID.." nDelVoucherNum = "..nDelVoucherNum.." nNowNum = "..nNowNum.." nBuyNum = "..nBuyNum)
-                return
+                -- print("[VoucherShop_BuyItem] 获取不到对应的配置nBuyID = "..nBuyID.." nDelVoucherNum = "..nDelVoucherNum.." nNowNum = "..nNowNum.." nBuyNum = "..nBuyNum)
+                return Broadcast.sendErr(human, Lang.ABS_GIFT_BUY_LIMIT)
             end
         end
     end

+ 25 - 19
script/module/zhuanpan/ZhuanpanGift.lua

@@ -6,6 +6,8 @@ local BagLogic = require("bag.BagLogic")
 local Grid = require("bag.Grid")
 local BuyLogic = require("topup.BuyLogic")
 local ZhuanpanGiftConfig = require("excel.zhuanpan").gift
+local Lang = require("common.Lang")
+local Broadcast = require("broadcast.Broadcast")
 
 local LOGTAG = "zhuanpanGift"
 
@@ -53,44 +55,48 @@ function onCharge(human, buyId, buyNum)
 
     local giftCfg = getCfg(buyId)
     if not giftCfg then
-        return
+        return Broadcast.sendErr(human, Lang.COMMON_COMFIG_ERROR)
     end
 
-    if zhuanpanGiftData and (zhuanpanGiftData[buyId] or 0) >= giftCfg.amount 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
 
+    if buyNum + (zhuanpanGiftData and zhuanpanGiftData[buyId] or 0) > giftCfg.amount then
+        return Broadcast.sendErr(human, Lang.ABS_GIFT_BUY_LIMIT)
+    end
+
     local itemArr = {}
     for idx, itemCfg in ipairs(giftCfg.rewards) do
-        itemArr[idx] = {itemCfg[1], itemCfg[2]}
-        -- itemArr[idx] = {itemCfg[1], itemCfg[2] * buyNum}
+        -- 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
+    -- 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)
+function GetRemainNum(human, nBuyID)
+    local giftCfg = getCfg(nBuyID)
 
---     if not giftCfg then
---         return 0
---     end
+    if not giftCfg then
+        return 0
+    end
 
---     local zhuanpanGiftData = human.db.zhuanpanGiftData
---     if not zhuanpanGiftData or not zhuanpanGiftData[nBuyID] then
---         return giftCfg.amount
---     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
+    return (giftCfg.amount > zhuanpanGiftData[nBuyID]) and (giftCfg.amount - zhuanpanGiftData[nBuyID]) or 0
+end