| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- --[[
- absact = {
- task[id] = {
- state = 1
- cnt = 0
- }
- }
- ]]
- local AbsActLogic = require("absAct.AbsActLogic")
- local AbsActExcel = require("excel.absAct")
- local BuyExcel = require("excel.buy")
- local Util = require("common.Util")
- local Msg = require("core.Msg")
- local Grid = require("bag.Grid")
- local BagLogic = require("bag.BagLogic")
- local BuyLogic = require("topup.BuyLogic")
- local ObjHuman = require("core.ObjHuman")
- local Lang = require("common.Lang")
- local Broadcast = require("broadcast.Broadcast")
- local MailManager = require("mail.MailManager")
- local MailExcel = require("excel.mail")
- local YunYingLogic = require("yunying.YunYingLogic")
- function isOpen(human, YYInfo, funcConfig)
- local state, endTime, startTime = AbsActLogic.isStarted(human, funcConfig.funcID)
- if not state then return end
- --[[
- local absAct = human.db.absAct[funcConfig.funcID]
- if not absAct then
- return
- end
- ]]
- return true, endTime, startTime
- end
- function isActive(human, YYInfo, funcConfig)
- return not isOpen(human, YYInfo, funcConfig)
- end
- function fontDailyFixedTask(db,config,net,id)
- net.state = db.task and (db.task[id] and db.task[id].state or 0) or 0
- net.nowCnt = db.task and (db.task[id] and db.task[id].cnt or 0) or 0
- net.needCnt = config.needCnt
- net.desc = config.desc
- net.day = config.day
- net.giftId = id
- local len = #config.item
- for i = 1,len do
- Grid.makeItem(net.item[i],config.item[i][1],config.item[i][2])
- end
- net.item[0] = len
- end
- function getAndSendMsg(human,id)
- -- 判断活动是否开启
- local state, endTime, starTime = AbsActLogic.isStarted(human, id)
- if not state then return end
- local absConfig = AbsActExcel.absActivity[id]
- if not absConfig then return end
- local absAct = human.db.absAct[id]
- if not absAct then
- return
- end
- local nowDay = Util.diffDay(starTime) + 1
- local config = AbsActExcel.dailyFixedTask
- local msgRet = Msg.gc.GC_ABS_DAILY_FIXED_TASK_QUERY
- local len = #config
- local count = 0
- for i = 1,len do
- if config[i].day == nowDay and config[i].actId == absConfig.actId then
- count = count + 1
- local net = msgRet.netList[count]
- fontDailyFixedTask(absAct,config[i],net,i)
- end
- end
- msgRet.netList[0] = count
- Msg.send(msgRet,human.fd)
- end
- function getItem(human,id,giftId)
- -- 判断活动是否开启
- local state, endTime, starTime = AbsActLogic.isStarted(human, id)
- if not state then return end
- local absConfig = AbsActExcel.absActivity[id]
- if not absConfig then return end
- local absAct = human.db.absAct[id]
- if not absAct then
- return
- end
- local nowDay = Util.diffDay(starTime) + 1
- local config = AbsActExcel.dailyFixedTask[giftId]
- if not config or config.day ~= nowDay or config.actId ~= absConfig.actId then
- return
- end
- if absAct.task and absAct.task[giftId] and absAct.task[giftId].state == 2 then
- return
- end
- absAct.task = absAct.task or {}
- absAct.task[giftId] = absAct.task[giftId] or {}
- absAct.task[giftId].state = 2
- BagLogic.addItemList(human, config.item, "dailyFixedTask")
- getAndSendMsg(human,id)
-
- YunYingLogic.sendBanner(human)
- YunYingLogic.updateIcon(YYInfo[id], human)
- YunYingLogic.sendGroupUpdate(YYInfo[id], human, absConfig.panelID)
- end
- function onLogin(human,funcID)
- taskActive(human, 1, funcID,1)
- --特殊处理下活动没开前充值、完成了活跃度任务,任务开启后没玩法完成
- local nowHuoYue = human.db.dailyTask.nowHuoYue or 0
- if nowHuoYue > 0 then
- specailFunc(human, 2, funcID, nowHuoYue)
- end
- local topupAcountDaily = human.db.topupAcountDaily
- if topupAcountDaily and topupAcountDaily > 0 then
- specailFunc(human, 3, funcID, topupAcountDaily)
- end
- end
- function onCharge(human,parameter,funcID)
- taskActive(human, 3, funcID,parameter)
- end
- function onDailyTask(human,funcID, parameter)
- taskActive(human, 2, funcID,parameter)
- end
- function onZhanBuBuyCard(human, funcID, parameter)
- taskActive(human, 4, funcID, parameter)
- end
- --特殊处理下活动没开前充值、完成了活跃度任务,任务开启后没玩法完成
- function specailFunc(human, type, id, cnt)
- local state, endTime, starTime = AbsActLogic.isStarted(human, id)
- if not state then return end
- local absConfig = AbsActExcel.absActivity[id]
- if not absConfig then return end
-
- AbsActLogic.checkAbsActClean(human, id)
- local absAct = human.db.absAct[id]
- if not absAct then
- return
- end
- absAct.task = absAct.task or {}
- local nowDay = Util.diffDay(starTime) + 1
- local config = AbsActExcel.dailyFixedTask
- local len = #config
- for i = 1,len do
- if config[i].day == nowDay and config[i].actId == absConfig.actId and type == config[i].type then
- absAct.task[i] = absAct.task[i] or {}
- absAct.task[i].cnt = absAct.task[i].cnt or 0
- if absAct.task[i].state and absAct.task[i].cnt > 0 then --只处理一次
- break
- end
- absAct.task[i].cnt = cnt
- --absAct.task[i].cnt = absAct.task[i].cnt + cnt
- if absAct.task[i].cnt >= config[i].needCnt then
- absAct.task[i].state = 1
- break
- end
- end
- end
-
- YunYingLogic.sendBanner(human)
- YunYingLogic.updateIcon(YYInfo[id], human)
- YunYingLogic.sendGroupUpdate(YYInfo[id], human, absConfig.panelID)
- end
- -- 每日任务激活
- function taskActive(human, type, id, cnt)
- local state, endTime, starTime = AbsActLogic.isStarted(human, id)
- if not state then return end
- local absConfig = AbsActExcel.absActivity[id]
- if not absConfig then return end
-
- AbsActLogic.checkAbsActClean(human, id)
- local absAct = human.db.absAct[id]
- if not absAct then
- return
- end
- absAct.task = absAct.task or {}
- local nowDay = Util.diffDay(starTime) + 1
- local config = AbsActExcel.dailyFixedTask
- local len = #config
- for i = 1,len do
- if config[i].day == nowDay and config[i].actId == absConfig.actId and type == config[i].type then
- absAct.task[i] = absAct.task[i] or {}
- absAct.task[i].cnt = absAct.task[i].cnt or 0
- if absAct.task[i].state then
- break
- end
- absAct.task[i].cnt = absAct.task[i].cnt + cnt
- if absAct.task[i].cnt >= config[i].needCnt then
- absAct.task[i].state = 1
- break
- end
- end
- end
-
- YunYingLogic.sendBanner(human)
- YunYingLogic.updateIcon(YYInfo[id], human)
- YunYingLogic.sendGroupUpdate(YYInfo[id], human, absConfig.panelID)
- end
- function isRed(human, YYInfo, funcConfig)
- local state,endTime,starTime = AbsActLogic.isStarted(human, funcConfig.funcID)
- if not state then return end
- local absConfig = AbsActExcel.absActivity[funcConfig.funcID]
- local absAct = human.db.absAct[funcConfig.funcID]
- if not absAct then return end
- if not absAct.task then
- return
- end
- local config = AbsActExcel.dailyFixedTask
- local nowDay = Util.diffDay(starTime) + 1
- for k,v in pairs(absAct.task) do
- if v.state == 1 and config[k].actId == absConfig.actId and config[k].day == nowDay then
- return true
- end
- end
- return false
- end
|