| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346 |
- local Msg = require("core.Msg")
- local PresentExcel = require("excel.present")
- local Grid = require("bag.Grid")
- local BagLogic = require("bag.BagLogic")
- ACT_TYPE_HERO_RISE_REWARD = 1 -- 奖励
- ACT_TYPE_HERO_RISE_TASK = 2 -- 任务
- ACT_TYPE_HERO_RISE_TASK_TYPE1 = 1 -- 每日任务
- ACT_TYPE_HERO_RISE_TASK_TYPE2 = 2 -- 每周任务
- ACT_TYPE_HERO_RISE_TASK_TYPE3 = 3 -- 终极任务
- ACT_TYPE_HERO_RISE_TASK_ID1 = 1 --
- ACT_TYPE_HERO_RISE_TASK_ID2 = 2 --
- ACT_TYPE_HERO_RISE_TASK_ID3 = 3 --
- ACT_TYPE_HERO_RISE_TASK_ID4 = 4 --
- ACT_TYPE_HERO_RISE_TASK_ID5 = 5 --
- ACT_TYPE_HERO_RISE_TASK_ID6 = 6 --
- ACT_TYPE_HERO_RISE_TASK_ID7 = 7 --
- ACT_TYPE_HERO_RISE_TASK_ID8 = 8 --
- ACT_TYPE_HERO_RISE_TASK_ID9 = 9 --
- ACT_TYPE_HERO_RISE_TASK_ID10 = 10 --
- ACT_TYPE_HERO_RISE_TASK_ID11 = 11 --
- ACT_TYPE_HERO_RISE_TASK_ID12 = 12 --
- ACT_TYPE_HERO_RISE_TASK_ID13 = 13 --
- ACT_TYPE_HERO_RISE_TASK_ID14 = 14 --
- ACT_TYPE_HERO_RISE_TASK_ID15 = 15 --
- ACT_TYPE_HERO_RISE_TASK_ID16 = 16 --
- ACT_TYPE_HERO_RISE_TASK_ID17 = 17 --
- ACT_TYPE_HERO_RISE_TASK_ID18 = 18 --
- ACT_TYPE_HERO_RISE_TASK_ID19 = 19 --
- -- 登录推送
- function onLogin(human)
- local msgRet = Msg.gc.GC_ACT_HERO_RISE_OPEN
- msgRet.isOpen = checkActIsOpen(human)
- Msg.send(msgRet,human.fd)
- if checkActIsOpen(human) == 1 then
- initHeroRiseDB(human)
- end
- end
- -- 检查活动是否开启
- function checkActIsOpen(human)
- if true then
- return 0
- end
- if human.db.lv < 15 then
- return 0
- end
- -- todo
- return 1
- end
- -- 初始化数据
- function initHeroRiseDB(human)
- if human.db.heroRise ~= nil then
- return
- end
- local now = os.time()
- human.db.heroRise = {}
- human.db.heroRise.startTs = now
- human.db.heroRise.endTs = now + 30*24*60*60
- human.db.heroRise.lv = 0
- human.db.heroRise.exp = 0
- human.db.heroRise.rajah = 0
- human.db.heroRise.task = {}
- human.db.heroRise.get = {}
- end
- -- 任务构造
- function makeHeroRiseTask(human,net,data)
- net.id = data.id
- net.name = data.name
- net.desc = data.desc
- net.exp = data.exp
- net.needCnt = data.needCnt
- net.nowCnt = human.db.heroRise.task[data.id] and human.db.heroRise.task[data.id].cnt or 0
- net.state = human.db.heroRise.task[data.id] and human.db.heroRise.task[data.id].state or 0
- end
- -- 查询英雄崛起活动
- function heroRiseQuery(human)
- local isOpen = checkActIsOpen(human)
- if isOpen == 0 then
- return
- end
- if human.db.heroRise == nil then
- return
- end
- local config = PresentExcel.heroRiseReward
- local msgRet = Msg.gc.GC_ACT_HERO_RISE_QUERY_REWARD
- msgRet.riseType = human.db.heroRise.rajah
- msgRet.riseLv = human.db.heroRise.lv
- local needExp = 0
- if human.db.heroRise.lv > 40 then
- needExp = config[40].exp
- else
- needExp = config[human.db.heroRise.lv].exp
- end
- msgRet.needExp = needExp
- msgRet.exp = human.db.heroRise.exp
- local len = #config[0].rajahReward
- for i = 1,len do
- local v = config[0].rajahReward[i]
- Grid.makeItem(msgRet.unLockReward[i],v[1],v[2])
- end
- msgRet.unLockReward[0] = len
- len = #config
- local count = 0
- for i = 1,len do
- count = count + 1
- local heroLen = #config[i].baseReward
- local net = msgRet.heroReward[count]
- net.lv = config[i].lv
- if human.db.heroRise.lv < i then
- net.lock = 0
- else
- net.lock = 1
- end
- for j = 1,heroLen do
- local v = config[i].baseReward[j]
- Grid.makeItem(net.item[j],v[1],v[2])
- end
- net.item[0] = heroLen
- local rNet = msgRet.rajahReward[count]
- rNet.lv = config[i].lv
- if human.db.heroRise.lv < i or human.db.heroRise.rajah == 0 then
- rNet.lock = 0
- else
- rNet.lock = 1
- end
- heroLen = #config[i].exReward
- for j = 1,heroLen do
- local v = config[i].exReward[j]
- Grid.makeItem(rNet.item[j],v[1],v[2])
- end
- rNet.item[0] = heroLen
- end
- msgRet.heroReward[0] = count
- msgRet.rajahReward[0] = count
- local taskConfig = PresentExcel.heroRiseTask
- local taskLen = #taskConfig
- for i = 1,taskLen do
- local v = taskConfig[i]
- if v.type == ACT_TYPE_HERO_RISE_TASK_TYPE1 then
- msgRet.dailyTask[0] = msgRet.dailyTask[0] + 1
- makeHeroRiseTask(human,msgRet.dailyTask[msgRet.dailyTask[0]],v)
- elseif v.type == ACT_TYPE_HERO_RISE_TASK_TYPE2 then
- msgRet.weekTask[0] = msgRet.weekTask[0] + 1
- makeHeroRiseTask(human,msgRet.weekTask[msgRet.weekTask[0]],v)
- elseif v.type == ACT_TYPE_HERO_RISE_TASK_TYPE3 then
- msgRet.ultimateTask[0] = msgRet.ultimateTask[0] + 1
- makeHeroRiseTask(human,msgRet.ultimateTask[msgRet.ultimateTask[0]],v)
- end
- end
- Msg.send(msgRet,human.fd)
- end
- -- 领取任务奖励
- function getTaskReward(human,taskId)
- -- 活动不处于开启状态
- local isOpen = checkActIsOpen(human)
- if isOpen == 0 then
- return
- end
- -- 校验任务是否已达成
- if human.db.heroRise.task[taskId] == nil or
- human.db.heroRise.task[taskId].state ~= 1 then
- return
- end
- -- 清除达成信息
- human.db.heroRise.task[taskId].state = 2
- -- 获取奖励
- local config = PresentExcel.heroRiseTask[taskId]
- addExpTouch(human,config.exp)
- heroRiseQuery(human)
- end
- -- 任务回调
- function taskTouch(human,taskId,condition)
- -- 活动不处于开启状态
- local isOpen = checkActIsOpen(human)
- if isOpen == 0 then
- return
- end
- local config = PresentExcel.heroRiseTask[taskId]
- -- 条件不满足
- if condition ~= config.condition and config.condition ~= 0 then
- return
- end
- -- 初始化任务数据
- if human.db.heroRise.task[taskId] == nil then
- human.db.heroRise.task[taskId] = {}
- human.db.heroRise.task[taskId].cnt = 0
- human.db.heroRise.task[taskId].state = 0
- end
- -- 校验任务是否已完成
- if human.db.heroRise.task[taskId].state ~= 0 then
- return
- end
- human.db.heroRise.task[taskId].cnt = human.db.heroRise.task[taskId].cnt + 1
- if human.db.heroRise.task[taskId].cnt == config.needCnt then
- human.db.heroRise.task[taskId].state = 1
- end
- end
- -- 获取经验回调
- function addExpTouch(human,exp)
- -- 活动不处于开启状态
- local isOpen = checkActIsOpen(human)
- if isOpen == 0 then
- return
- end
- local lv = human.db.heroRise.lv >= 40 and 40 or human.db.heroRise.lv
- local config = PresentExcel.heroRiseReward[lv]
- human.db.heroRise.exp = human.db.heroRise.exp + exp
- local count = 0
- local lvUp = nil
- while true do
- count = count + 1
- if human.db.heroRise.exp >= config.exp then
- human.db.heroRise.exp = human.db.heroRise.exp - config.exp
- human.db.heroRise.lv = human.db.heroRise.lv + 1
- lvUp = 1
- else
- break
- end
- -- 防止死循环
- if count >= 100 then
- break
- end
- end
- if lvUp ~= nil then
- lvUpSendReward(human)
- end
- end
- -- 升级发放奖励回调
- function lvUpSendReward(human)
- -- 活动不处于开启状态
- local isOpen = checkActIsOpen(human)
- if isOpen == 0 then
- return
- end
- local msgRet = Msg.gc.GC_ACT_HERO_RISE_LV_UP
- local item = {}
- for i = 1,human.db.heroRise.lv do
- if human.db.heroRise.get[i] == nil then
- human.db.heroRise.get[i] = 1
- local baseConfig = PresentExcel.baseReward[i]
- local len = #baseConfig
- for j = 1,len do
- if item[baseConfig[j][1]] == nil then
- item[baseConfig[j][1]] = baseConfig[j][2]
- else
- item[baseConfig[j][1]] = item[baseConfig[j][1]] + baseConfig[j][2]
- end
- end
- if human.db.heroRise.rajah == 1 then
- local exConfig = PresentExcel.exReward[i]
- local exLen = #exConfig
- for j = 1,exLen do
- if item[exConfig[j][1]] == nil then
- item[exConfig[j][1]] = exConfig[j][2]
- else
- item[exConfig[j][1]] = item[exConfig[j][1]] + exConfig[j][2]
- end
- end
- end
- end
- end
- BagLogic.addItemList(human, item, "hero_rise")
- local count = 0
- for k,v in pairs(item) do
- count = count + 1
- Grid.makeItem(msgRet.item[count],k,v)
- end
- msgRet.item[0] = count
- msgRet.lv = human.db.heroRise.lv
- msgRet.rajah = human.db.heroRise.rajah
- Msg.send(msgRet,human.fd)
- end
- -- 购买王侯回调
- function buyRajah(human)
- -- 活动不处于开启状态
- local isOpen = checkActIsOpen(human)
- if isOpen == 0 then
- return
- end
- -- 已经是王侯
- if human.db.heroRise.rajah ~= 0 then
- return
- end
- human.db.heroRise.rajah = 1
- local config = PresentExcel.heroRiseReward
- local len = #config[0].rajahReward
- BagLogic.cleanMomentItemList()
- for i = 1,len do
- BagLogic.updateMomentItem(BagLogic.ADDITEM_TYPE_1, config[0].rajahReward[i][1],config[0].rajahReward[i][2])
- end
- for i = 1,human.db.heroRise.lv do
- local exLen = #config[i].exReward
- for j = 1,len do
- BagLogic.updateMomentItem(BagLogic.ADDITEM_TYPE_1, config[i].exReward[j][1],config[i].exReward[j][2])
- end
- end
- BagLogic.addMomentItemList(human, "hero_rise")
- end
|