| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- --新商业化活动3—天选兑换
- --db
- --[=[
- human.db.absAct[id] = {
- buyRecord = {
- [1] = 2, --key是道具在配置中的id, value是已经购买次数
- [2] = 1,
- }
- }
- ]=]--
- local Util = require("common.Util")
- local Msg = require("core.Msg")
- local Grid = require("bag.Grid")
- local BagLogic = require("bag.BagLogic")
- local AbsActLogic = require("absAct.AbsActLogic")
- local Broadcast = require("broadcast.Broadcast")
- local Lang = require("common.Lang")
- local Config = require("excel.commonact").store
- local LOGTAG = "CommonActShop" --日志标识
- local COMMONACTSHOPABSID = 7502 -- 对应ABS活动ID
- local function CreateDB(human)
- if not human.db.absAct[COMMONACTSHOPABSID] then
- human.db.absAct[COMMONACTSHOPABSID] = {}
- end
- if not human.db.absAct[COMMONACTSHOPABSID].buyRecord then
- human.db.absAct[COMMONACTSHOPABSID].buyRecord = {}
- end
- for index, v in ipairs(Config) do
- human.db.absAct[COMMONACTSHOPABSID].buyRecord[index] = 0
- end
- end
- local function CheckAndCreateDB(human)
- if not human.db.absAct[COMMONACTSHOPABSID] or not human.db.absAct[COMMONACTSHOPABSID].buyRecord then
- CreateDB(human)
- end
- end
- function isOpen(human, YYInfo, funcConfig)
- local state, endTime, startTime = AbsActLogic.isStarted(human, funcConfig.funcID and funcConfig.funcID or COMMONACTSHOPABSID)
- if not state then
- print("[CommonActShop_isOpen] 当前活动未开启")
- return
- end
-
- print("[CommonActShop_isOpen] 进入判断 endTime = "..endTime.." startTime = "..startTime)
- return state, endTime, startTime
- end
- function isActive(human, YYInfo, funcConfig)
- local state = isOpen(human, YYInfo, funcConfig)
- return not state
- end
- --查询
- function CommonActShop_Query(human)
- CheckAndCreateDB(human)
- local state = AbsActLogic.isStarted(human, COMMONACTSHOPABSID)
- if not state then
- print("[CommonActShop_Query] 当前活动未开启")
- return Broadcast.sendErr(human, Lang.YUNYING_ERR_TIME)
- end
- local actData = human.db.absAct[COMMONACTSHOPABSID]
- if not actData then
- print("[CommonActShop_Query] 不存在对应的活动数据")
- return Broadcast.sendErr(human, Lang.YUNYING_ERR_TIME)
- end
- print("[CommonActShop_Query] 正常进入")
- local buyRecord = actData.buyRecord
- local msgRet = Msg.gc.GC_ABS_FESTIVAL_SHOP_QUERY
- local itemVec = msgRet.tGoodInfo
- itemVec[0] = #Config
- for k,v in ipairs(Config) do
- local singleItem = itemVec[k]
- local tempConfig = v
- Grid.makeItem(singleItem.itemData, tempConfig.item[1], tempConfig.item[2])
- singleItem.itemIndex = k
- Grid.makeItem(singleItem.needItem, tempConfig.currencyInfo[1], tempConfig.currencyInfo[2])
- singleItem.maxCanBuy = tempConfig.maxBuyCnt
- singleItem.nowBuy = buyRecord and buyRecord[k] or 0
- singleItem.zhekou = 0
- singleItem.order = 0
- singleItem.needVipLv = 0
- singleItem.rare = 0
- singleItem.limitType = 1
- singleItem.bCanChose = 0
- singleItem.bChose = 0
- end
- Msg.send(msgRet, human.fd)
- end
- --购买商品
- function CommonActShop_Buy(human, itemIdx, buyCnt)
- local state = AbsActLogic.isStarted(human, COMMONACTSHOPABSID)
- if not state then
- return Broadcast.sendErr(human, Lang.YUNYING_ERR_TIME)
- end
- local actData = human.db.absAct[COMMONACTSHOPABSID]
- if not actData then
- return Broadcast.sendErr(human, Lang.YUNYING_ERR_TIME)
- end
- local itemCfg = Config[itemIdx]
- if not itemCfg or buyCnt <= 0 then
- print("[CommonActShop_Buy] 不正确的数据 itemIdx = "..itemIdx.." buyCnt = "..buyCnt)
- return Broadcast.sendErr(human, Lang.COMMON_ARGUMENT_ERROR)
- end
- local buyRecord = actData.buyRecord
- if buyRecord and buyRecord[itemIdx] then
- if buyRecord[itemIdx] + buyCnt > itemCfg.maxBuyCnt then
- return Broadcast.sendErr(human, Lang.COMMON_BUY_NUM_NOT_ENOUGH)
- end
- end
- local currencyInfo = itemCfg.currencyInfo
- local cnt = currencyInfo[2] * buyCnt
- if BagLogic.getItemCnt(human, currencyInfo[1]) < cnt then
- return Broadcast.sendErr(human, Lang.COMMON_ITEM_NOT_ENOUGH)
- end
- BagLogic.delItem(human, currencyInfo[1], cnt, LOGTAG)
- --更新数据
- buyRecord = buyRecord or {}
- buyRecord[itemIdx] = (buyRecord[itemIdx] or 0) + buyCnt
- actData.buyRecord = buyRecord
- --发放奖励
- local itemInfo = itemCfg.item
- BagLogic.addItemList(human, {{itemInfo[1], itemInfo[2] * buyCnt}}, LOGTAG)
- --下发数据
- CommonActShop_Query(human)
- end
|