| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- local Lang = require("common.Lang")
- local Msg = require("core.Msg")
- local ObjHuman = require("core.ObjHuman")
- local Util = require("common.Util")
- local Grid = require("bag.Grid")
- local Timer = require("core.Timer")
- local BagLogic = require("bag.BagLogic")
- local Broadcast = require("broadcast.Broadcast")
- local BRoleLogic = require("billboard.BRoleLogic")
- local BillboardDB = require("billboard.BillboardDB")
- local BillboardDefine = require("billboard.BillboardDefine")
- local RoleLogic = require("role.RoleLogic")
- local CommonDB = require("common.CommonDB")
- local YunYingLogic = require("yunying.YunYingLogic")
- local AbsActExcel = require("excel.absAct")
- local MailExcel = require("excel.mail")
- local MailManager = require("mail.MailManager")
- local MailDefine = require("mail.MailIdDefine")
- local RoleDBLogic = require("role.RoleDBLogic")
- local AbsActLogic = require("absAct.AbsActLogic")
- function getEndTime()
- local now = os.time()
- local endTime = Util.getDayStartTime(now + 24 * 60 * 60)
- return endTime - now
- end
- function query(human)
- local msgRet = Msg.gc.GC_ABS_ICE_DRAGON_RANK_QUERY
- local board = BillboardDB.getBoard(BillboardDefine.TYPE_DRAGON)
- msgRet.list[0] = 1
- local msgNet = msgRet.list[1]
- msgNet.funcRankType = 3
- msgNet.leftTime = getEndTime()
- msgNet.list[0] = 10
-
- for i = 1, 10 do
- local net = msgNet.list[i]
- net.rank = i
- net.rankNeedValue= 0
- if board and board.rank2data[i] then
- local rankData = board.rank2data[i]
-
- net.uid = rankData.roleBase and rankData.roleBase.uuid or rankData.uuid
- net.rankValue = rankData and rankData.value1 or 0
-
- if rankData and rankData.roleBase then
- net.uid = net.uid or ""
- net.name = rankData.roleBase.name
- net.head = rankData.roleBase.head
- net.headFrame = rankData.roleBase.headFrame
- net.lv = rankData.roleBase.lv
- else
- local userDB = RoleDBLogic.getDb(rankData.uuid)
- net.uid = rankData.uuid
- net.name = userDB.name
- net.head = userDB.head
- net.rankValue = rankData.value1
- net.headFrame = userDB.headFrame
- net.lv = userDB.lv
- end
- else
- net.uid = "-1"
- net.name = ""
- net.head = -1
- net.rankValue = 0
- net.headFrame = -1
- net.lv = -1
- end
- local id = getRewardByRank(i)
- local conf = AbsActExcel.IceRank[id]
- for j, h in ipairs(conf.totalRewards) do
- Grid.makeItem(net.items[j], h[1], h[2])
- end
- net.items[0] = #conf.totalRewards
- end
-
- -- 获取排行区间 奖励 给予前端处理 放到各个名词后面 显示排名奖励
- --[[
- for k, v in ipairs(AbsActExcel.IceRank) do
- local net = msgRet.rankItem[k]
- net.minRank = v.minRank
- net.maxRank = v.maxRank
- net.rankNeedValue = 0
- for j, h in ipairs(v.reward) do
- Grid.makeItem(net.items[j], h[1], h[2])
- end
- net.items[0] = #v.reward
- end
- msgRet.rankItem[0] = #AbsActExcel.IceRank
- ]]
- local myRank = BillboardDB.getRank(BillboardDefine.TYPE_DRAGON, human.db._id)
- if myRank then
- local rankData = BillboardDB.getRankData(BillboardDefine.TYPE_DRAGON, myRank)
- if rankData then
- local net = msgNet.onwerData
- net.rank = myRank
- net.rankValue = rankData and rankData.value1 or 0
- net.items[0] = 0
- end
- else
- local net = msgNet.onwerData
- net.rank = -1
- net.rankValue = rankData and rankData.value1 or 0
- net.items[0] = 0
- end
- -- Msg.trace(msgRet)
- Msg.send(msgRet, human.fd)
- end
- function queryReward(human)
- local msgRet = Msg.gc.GC_ABS_REACH_RANK_REWARD_QUERY
- msgRet.actId = 0
- msgRet.funcRankType = 3
- for k , conf in ipairs(AbsActExcel.IceRank) do
- local net = msgRet.list[k]
- net.minRank = conf.roleMin
- net.maxRank = conf.roleMax
- net.rankNeedValue = 0
-
- for j, h in ipairs(conf.totalRewards) do
- Grid.makeItem(net.items[j], h[1], h[2])
- end
- net.items[0] = #conf.totalRewards
- end
- msgRet.list[0] = #AbsActExcel.IceRank
- Msg.send(msgRet, human.fd)
- end
- function getRewardByRank(rank)
- for k , conf in ipairs(AbsActExcel.IceRank) do
- if conf.roleMin <= rank and conf.roleMax >= rank then
- return k
- end
- end
- end
- function onZero(funcID)
- local absConfig = AbsActExcel.absActivity[funcID]
- if not absConfig then return end
- local funcConfig = YunYingLogic.getFuncConfig(funcID)
- if not funcConfig then return end
- if not AbsActLogic.isStarted(human, funcID) then
- local diffDay = Util.diffDay(absConfig.realEndTime)
- if diffDay ~= 1 then
- return
- end
- end
- local board = BillboardDB.getBoard(BillboardDefine.TYPE_DRAGON)
- if board then
- local mailConfig = MailExcel.mail[MailDefine.MAIL_ID_HEFU_ICE_RANK]
- local title = mailConfig.title
- local senderName = mailConfig.senderName
- local sendList = {}
- local len = 0
- for rank = 1, #board.rank2data do
- local rankData = board.rank2data[rank]
- if rankData then
- local uuid
- if rankData and rankData.roleBase then
- uuid = rankData.roleBase.uuid
- end
- if not uuid then
- uuid = rankData and rankData.uuid or ""
- end
- if uuid then
- len = len + 1
- sendList[len] = {}
- sendList[len].uuid = uuid
- sendList[len].rank = rank
- end
- end
- end
- if len > 0 then
- Timer.addLater(25, iceDragonRankSend, sendList, 0 )
- end
- end
- end
- function iceDragonRankSend(sendList, len)
- if len >= #sendList then return end
- local mailConfig = MailExcel.mail[MailDefine.MAIL_ID_HEFU_ICE_RANK]
- local title = mailConfig.title
- local senderName = mailConfig.senderName
-
- local thisLen = 0
- for i = len + 1 , #sendList do
-
- local uuid = sendList[i].uuid
- local rank = sendList[i].rank
-
- local id = getRewardByRank(rank)
- local conf = AbsActExcel.IceRank[id]
- local content = Util.format(mailConfig.content, rank)
- MailManager.add(MailManager.SYSTEM, uuid, title, content, conf.totalRewards, senderName)
- thisLen = thisLen + 1
- if thisLen >= 10 then
- break
- end
- end
-
- local nextLen = len + thisLen
- if nextLen < #sendList and #sendList > 0 then
- Timer.addLater(2, iceDragonRankSend, sendList, nextLen)
- end
-
- end
|