| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- ---------------------------------------------------
- -- 开服有礼
- ---------------------------------------------------
- local Util = require("common.Util")
- local Lang = require("common.Lang")
- local Broadcast = require("broadcast.Broadcast")
- local OpenAct = require("present.OpenAct")
- local PresentExcel = require("excel.present")
- local OpenActExcel = require("excel.openAct")
- local MailExcel = require("excel.mail")
- local Msg = require("core.Msg")
- local ObjHuman = require("core.ObjHuman")
- local MailManager = require("mail.MailManager")
- local BagLogic = require("bag.BagLogic")
- local Grid = require("bag.Grid")
- local KingWorldLogic = require("present.KingWorldLogic")
- local YunYingLogic = require("yunying.YunYingLogic")
- local PanelDefine = require("broadcast.PanelDefine")
- local SevenDayGiftLogic = require("present.SevenDayGiftLogic")
- local CommonDB = require("common.CommonDB")
- local BuyLogic = require("topup.BuyLogic")
- local GuideLogic = require("guide.GuideLogic")
- GIFT_STATE_NONE = 0 -- 不可领取
- GIFT_STATE_GET = 1 -- 可领取
- GIFT_STATE_BUY = 2 -- 可购买
- GIFT_STATE_HADBUY = 3 -- 已购买
- -- 初始db
- local function initDB(human)
- human.db.openServerGift = {}
- human.db.openServerGift.free = {}
- human.db.openServerGift.cost = {}
- end
- local function getDB(human)
- if not human.db.openServerGift then
- initDB(human)
- end
- return human.db.openServerGift
- end
- -- 免费礼包状态
- function getFreeState(human, day)
- if not human.db.openServerGift then
- return
- end
- local data = human.db.openServerGift
- return data.free[day]
- end
- -- 付费礼包状态
- function getCostState(human, day)
- if not human.db.openServerGift then
- return
- end
- local data = human.db.openServerGift
- local limitCnt = OpenActExcel.openServerGift[day].limitCnt
- if data.cost[day] == nil or data.cost[day] < limitCnt then
- return
- else
- return 0
- end
- end
- local function setFreeState(human, day)
- local data = getDB(human)
- data.free[day] = GIFT_STATE_HADBUY
- end
- local function setCostState(human, day)
- local data = getDB(human)
- data.cost[day] = data.cost[day] or 0
- data.cost[day] = data.cost[day] + 1
- end
- -- 获取礼包状态
- function getGiftState(human, day)
- local freeState = getFreeState(human, day)
- local costState = getCostState(human, day)
- local flag = OpenAct.getOpenActTime(OpenAct.OPEN_ACT_SERVER_GIFT)
- local openDay = CommonDB.getServerOpenDay()
- if flag == nil or openDay == nil or openDay < day then
- return GIFT_STATE_NONE
- end
- if freeState == nil then
- return GIFT_STATE_GET
- elseif costState == nil then
- return GIFT_STATE_BUY
- end
-
- return GIFT_STATE_HADBUY
- end
- -- 查询
- function query(human)
- local msgRet = Msg.gc.GC_PRESENT_OPEN_SERVER_QUERY
- msgRet.list[0] = #OpenActExcel.openServerGift
- for day = 1, msgRet.list[0] do
- local cf = OpenActExcel.openServerGift[day]
- local net = msgRet.list[day]
- net.day = day
- net.state = getGiftState(human, day)
- local itemConfig = nil
- net.nowCnt = 0
- net.limitCnt = 0
- if net.state == GIFT_STATE_BUY then
- itemConfig = cf.freeGift
- --itemConfig = cf.costGift
- net.nowCnt = human.db.openServerGift.cost[day] or 0
- net.limitCnt = cf.limitCnt
- else
- itemConfig = cf.freeGift
- end
- net.item[0] = #itemConfig
- for j = 1, net.item[0] do
- local itemID = itemConfig[j][1]
- local itemCnt = itemConfig[j][2]
- Grid.makeItem(net.item[j], itemID, itemCnt)
- end
- net.buyItem[0] = 0
- --BuyLogic.fontBuyItem(human, net.buyItem, cf.buyID)
- end
- Msg.send(msgRet, human.fd)
- end
- -- 领取奖励
- function gift(human, day)
- local cf = OpenActExcel.openServerGift[day]
- if not cf then
- return Broadcast.sendErr(human, Lang.ITEM_BUY_ERROR)
- end
- local state = getGiftState(human, day)
- if state ~= GIFT_STATE_GET then
- if state == GIFT_STATE_NONE then
- return Broadcast.sendErr(human, Lang.PRESENT_SEVENLOGINDAY_GET_DAYERR)
- end
- return Broadcast.sendErr(human, Lang.YUNYING_GET_ERR_HADGET)
- end
- setFreeState(human, day)
- --发放物品
- local itemConfig = OpenActExcel.openServerGift[day].freeGift
- local len = #itemConfig
- for i = 1,len do
- local itemID = itemConfig[i][1]
- local itemCnt = itemConfig[i][2]
- BagLogic.addItem(human,itemID,itemCnt,"open_server_gift")
- end
- BagLogic.sendItemGetList(human, itemConfig, "open_server_gift")
- for k, v in pairs(funcID) do
- YunYingLogic.updateIcon(YYInfo[k], human)
- YunYingLogic.sendGroupUpdate(YYInfo[k], human, PanelDefine.PANEL_ID_3602)
- break
- end
- if day == 2 then
- KingWorldLogic.setState(human,2)
- end
- GuideLogic.setDoSpecialGuide(human, GuideLogic.SKIPTYPE_JUMP_OPEN_SERVER_GIFT)
- query(human)
- end
- -- 红点
- function isRed(human)
- for day in ipairs(OpenActExcel.openServerGift) do
- local state = getGiftState(human, day)
- if state == GIFT_STATE_NONE then
- break
- end
- if state == GIFT_STATE_GET then
- return true
- end
- end
- end
- function buyGift(human,day)
- -- 校验状态是否为能买
- local state = getGiftState(human, day)
- if state ~= GIFT_STATE_BUY then
- return
- end
- -- 设置购买数量
- setCostState(human,day)
- -- 发放道具
- local itemConfig = OpenActExcel.openServerGift[day].costGift
- local len = #itemConfig
- for i = 1,len do
- local itemID = itemConfig[i][1]
- local itemCnt = itemConfig[i][2]
- BagLogic.addItem(human,itemID,itemCnt,"open_server_gift")
- end
- BagLogic.sendItemGetList(human, itemConfig, "open_server_gift")
- query(human)
- end
- function isBaseOpen(human,noSend)
- local openLv = YunYingLogic.getOpenLvByPanelID(PanelDefine.PANEL_ID_3602)
- if human.db.lv < openLv then
- if not noSend then
- local str = Util.format(Lang.ROLE_LEV_ERROR,openLv)
- return Broadcast.sendErr(human,str)
- end
- end
- local flag = OpenAct.getOpenActTime(OpenAct.OPEN_ACT_SERVER_GIFT)
- if not flag then
- return
- end
- return true
- end
- function isOpen(human)
- if isBaseOpen(human,true) then
- return true
- end
- end
- function getLeftTime()
- local openDay = CommonDB.getServerOpenDay()
- if openDay == nil then
- return 0
- end
- local OpenActConfig = OpenActExcel.openAct[1]
- if not OpenActConfig then return 0 end
- local sDay = OpenActConfig.sDay;
- local eDay = OpenActConfig.eDay;
- if openDay >= sDay and openDay <= eDay then
- local time = os.time();
- local openTime = CommonDB.getServerOpenTime()
- if openTime == 0 then
- return 0
- end
- local endTime = Util.getDayStartTime(openTime) + eDay * 86400
- return endTime - time
- end
- return 0
- end
|