| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- ---------------
- -- 福利礼包
- -- type 当前类型
- -- period 当前阶段
- -- cnt 剩余次数
- local Util = require("common.Util")
- local Log = require("common.Log")
- local Lang = require("common.Lang")
- local Msg = require("core.Msg")
- local ObjHuman = require("core.ObjHuman")
- local WelfareGiftExcel = require("excel.present").welfareGift
- local BuyExcel = require("excel.buy")
- local BuyLogic = require("topup.BuyLogic")
- local HeroLogic = require("hero.HeroLogic")
- local BagLogic = require("bag.BagLogic")
- local Grid = require("bag.Grid")
- local Broadcast = require("broadcast.Broadcast")
- local UnionDBLogic = require("union.UnionDBLogic")
- local MailManager = require("mail.MailManager")
- local MailExcel = require("excel.mail")
- local WELFACE_GIFT_EXCEL = {}
- local WELFACE_GIFT_LEN = 0
- function initAfterHot()
- for k, v in ipairs(WelfareGiftExcel) do
- local type = v.type
- if not WELFACE_GIFT_EXCEL[type] then
- WELFACE_GIFT_LEN = WELFACE_GIFT_LEN + 1
- end
- WELFACE_GIFT_EXCEL[type] = WELFACE_GIFT_EXCEL[type] or {}
- WELFACE_GIFT_EXCEL[type][v.period] = k
- end
- end
- function query(human)
- local welfareGift = human.db.welfareGift
- local giftIndex = welfareGift.giftIndex
- if not giftIndex then return end
- local msgRet = Msg.gc.GC_WELFARE_GIFT_QUERY
- local now = os.time()
- local diffTime = Util.getNextDayTime(now, 1)
- msgRet.endTime = diffTime - now
- local len = 0
- for k, v in pairs(WELFACE_GIFT_EXCEL) do
- welfareGift[k] = welfareGift[k] or {}
- local welfare = welfareGift[k]
- local startIndex = 1
- local period = welfare.period or startIndex
- local config = WelfareGiftExcel[v[period]]
- if giftIndex == config.type then
- period = welfare.period or 0
- config = WelfareGiftExcel[v[period]]
- end
- local cnt = welfare.cnt or config.cnt
- len = len + 1
- local net = msgRet.list[len]
- net.id = v[period]
- net.name = config.name
- net.cnt = cnt
- net.cntMax = config.cnt
- net.price = config.price
- net.oldPrice = config.oldPrice
- net.desc = config.desc
- local rewardLen = 0
- for _id, data in ipairs(config.reward) do
- rewardLen = rewardLen + 1
- Grid.makeItem(net.items[rewardLen], data[1], data[2])
- end
- net.items[0] = rewardLen
- end
- msgRet.list[0] = len
- Msg.send(msgRet,human.fd)
- end
- function buy(human, id)
- local config = WelfareGiftExcel[id]
- if not config then return end
- local welfareGift = human.db.welfareGift
- local welfare = welfareGift[config.type]
- if not welfare then return end
- local giftIndex = welfareGift.giftIndex
- if not giftIndex then return end
- local startIndex = 1
- if giftIndex == config.type then
- startIndex = 0
- end
- -- 不是同一级礼包
- local period = welfare.period or startIndex
- if period ~= config.period then return end
- local cnt = welfare.cnt or config.cnt
- if cnt <= 0 then return end
- -- 钻石判断
- local needZuanshi = config.price
- if human.db.zuanshi < needZuanshi then
- return Broadcast.sendErr(human, Lang.COMMON_NO_ZUANSHI)
- end
- -- 扣钻石
- ObjHuman.decZuanshi(human, - needZuanshi, "buySpecific")
- BagLogic.cleanMomentItemList()
- for _id, data in ipairs(config.reward) do
- BagLogic.updateMomentItem(BagLogic.ADDITEM_TYPE_1, data[1], data[2])
- end
- cnt = cnt - 1
- welfare.cnt = cnt
- if welfare.cnt <= 0 then
- period = period + 1
- if not WELFACE_GIFT_EXCEL[config.type][period] then
- query(human)
- return
- end
- welfare.period = period
- end
- local items = {}
- local len = 0
- for k, v in ipairs(config.unionReward) do
- len = len + 1
- local itemID = v[1]
- local itemCnt = v[2]
- items[len] = { itemID, itemCnt }
- end
- for k,v in pairs(items) do
- BagLogic.updateMomentItem(BagLogic.ADDITEM_TYPE_1, v[1],v[2])
- end
- BagLogic.addMomentItemList(human, "buySpecific")
- query(human)
- end
- function updateDaily(human)
- local ramdomIndex = math.random(1, WELFACE_GIFT_LEN)
- human.db.welfareGift = {giftIndex = ramdomIndex}
- end
|