| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580 |
- -- 历练 --
- local Lang = require("common.Lang")
- local Util = require("common.Util")
- local Msg = require("core.Msg")
- local ObjHuman = require("core.ObjHuman")
- local LiLianExcel = require("excel.liLian")
- local LiLianTaskExcel = require("excel.liLian").group
- local BagLogic = require("bag.BagLogic")
- local Grid = require("bag.Grid")
- local RoleSystemLogic = require("roleSystem.RoleSystemLogic")
- local RoleSystemDefine = require("roleSystem.RoleSystemDefine")
- local CombatDefine = require("combat.CombatDefine")
- local HeroExcel = require("excel.hero")
- local YjTreasureLogic = require("yjTreasure.YjTreasureLogic")
- local ChatHandler = require("chat.Handler")
- local Broadcast = require("broadcast.Broadcast")
- local ChatLogic = require("chat.ChatLogic")
- local RoleDBLogic = require("role.RoleDBLogic")
- local Timer = require("core.Timer")
- LILIAN_TASK_TYPE1 = 1 --竞技历练
- LILIAN_TASK_TYPE2 = 2 --战斗历练
- LILIAN_TASK_TYPE3 = 3 --终极历练
- LILIAN_TASK_TYPE4 = 4 --达标奖励
- LILIAN_TASK1 = 1 --皇冠联赛中,6回合内战胜高战力对手,累计{1}次 o
- LILIAN_TASK2 = 2 --皇冠联赛中,4回合内战胜高战力对手,累计{1}次 o
- LILIAN_TASK3 = 3 --众神之战累计进入{1}次32强 o
- LILIAN_TASK4 = 4 --众神之战累计进入{1}次8强 o
- LILIAN_TASK5 = 5 --获得{1}次众神之战冠军 o
- LILIAN_TASK6 = 6 --天梯争霸赛季结算时获得前{1}名 o
- LILIAN_TASK7 = 7 --天梯争霸累计挑战胜利{1}次 o
- LILIAN_TASK8 = 8 --巅峰段位赛累计获胜{1}场 x
- LILIAN_TASK9 = 9 --巅峰段位赛结算时达到铂金及以上段位 x
- LILIAN_TASK10 = 10 --巅峰段位赛结算时达到钻石及以上段位 x
- LILIAN_TASK11 = 11 --巅峰段位赛赛季结算时获得前{1}名 x
- LILIAN_TASK12 = 12 --通关通天塔{1}层 o
- LILIAN_TASK13 = 13 --挑战公会boss,当场累计造成{1}伤害 o
- LILIAN_TASK14 = 14 --公会战中累计获得{1}次个人胜利 o
- LILIAN_TASK15 = 15 --通关{1}次圣树试炼普通难度 o
- LILIAN_TASK16 = 16 --通关{1}次圣树试炼精英难度 o
- LILIAN_TASK17 = 17 --通关{1}次圣树试炼噩梦难度 o
- LILIAN_TASK18 = 18 --进入遗迹探宝{1}层 o
- LILIAN_TASK19 = 19 --遗迹探宝中累计击败{1}守卫 o
- LILIAN_TASK20 = 20 --单场公会boss累计造成{1}中毒伤害 o
- LILIAN_TASK21 = 21 --单场通天塔累计造成{1}流血伤害 o
- LILIAN_TASK22 = 22 --单场公会战累计造成{1}燃烧伤害 o
- LILIAN_TASK23 = 23 --通关无尽之路{1}关 x
- LILIAN_TASK24 = 24 --通关任意圣殿第{1}关 x
- LILIAN_TASK25 = 25 --本周内通关每个圣殿第{1}关 x
- LILIAN_TASK26 = 26 --守望圣殿排行榜结算时累计获得{1}次前10 x
- LILIAN_TASK27 = 27 --守望圣殿排行榜结算时累计获得{1}次前3 x
- LILIAN_TASK28 = 28 --完美通关神之领域前{1}章 x
- LILIAN_TASK29 = 29 --最高战力达到{1}万 o
- LILIAN_TASK30 = 30 --当前拥有{1}个10星英雄 o
- LILIAN_TASK31 = 31 --当前拥有{1}个11星英雄 o
- LILIAN_TASK32 = 32 --使{1}个恶魔英雄达到10星 1 o
- LILIAN_TASK33 = 33 --使{1}个恶魔英雄达到11星 o
- LILIAN_TASK34 = 34 --使{1}个不死英雄达到10星 2 o
- LILIAN_TASK35 = 35 --使{1}个不死英雄达到11星 o
- LILIAN_TASK36 = 36 --使{1}个圣堂英雄达到10星 3 o
- LILIAN_TASK37 = 37 --使{1}个圣堂英雄达到11星 o
- LILIAN_TASK38 = 38 --使{1}个神谕英雄达到10星 4 o
- LILIAN_TASK39 = 39 --使{1}个神谕英雄达到11星 o
- LILIAN_TASK40 = 40 --使{1}个混沌英雄达到10星 5 o
- LILIAN_TASK41 = 41 --使{1}个混沌英雄达到11星 o
- LILIAN_TASK42 = 42 --任意一场众神之战中{1}次竞猜全部正确 o
- LILIAN_TASK43 = 43 --普通招募累计活动{1}个5星英雄 o
- LILIAN_TASK44 = 44 --友情招募累计获得{1}个5星英雄 o
- LILIAN_TASK45 = 45 --累计获得{1}个神话符文 o
- LILIAN_TASK46 = 46 --累计获得{1}个传说符文 o
- LILIAN_TASK47 = 47 --累计领悟{1}本初级兵书 o
- LILIAN_TASK48 = 48 --累计领悟{1}本中级兵书 o
- LILIAN_TASK49 = 49 --累计充值{1}钻石 o
- LILIAN_TASK50 = 50 --公会建设中累计花费{1}钻石 o
- LILIAN_TASK51 = 51 --获得{1}次公会红包的手气最佳 o
- LILIAN_TASK52 = 52 --发放的红包累计超过{1}钻石 o
- LILIAN_TASK53 = 53 --累计完成{1}个历练任务 o
- LILIAN_OUTID1 = 1 --皇冠联赛中,x回合内战胜高战力对手,累计{1}次
- LILIAN_OUTID2 = 2 --众神之战累计进入{1}次x强
- LILIAN_OUTID3 = 3 --天梯争霸赛季结算时获得前{1}名
- LILIAN_OUTID4 = 4 --天梯争霸累计挑战胜利{1}次
- LILIAN_OUTID5 = 5 --巅峰段位赛累计获胜{1}场
- LILIAN_OUTID6 = 6 --巅峰段位赛结算时达到x及以上段位
- LILIAN_OUTID7 = 7 --巅峰段位赛赛季结算时获得前{1}名
- LILIAN_OUTID8 = 8 --通关通天塔{1}层
- LILIAN_OUTID9 = 9 --挑战公会boss,当场累计造成{1}伤害
- LILIAN_OUTID10 = 10 --公会战中累计获得{1}次个人胜利
- LILIAN_OUTID11 = 11 --通关{1}次圣树试炼x难度
- LILIAN_OUTID12 = 12 --进入遗迹探宝{1}层
- LILIAN_OUTID13 = 13 --遗迹探宝中累计击败{1}守卫
- LILIAN_OUTID14 = 14 --单场公会boss累计造成{1}中毒伤害
- LILIAN_OUTID15 = 15 --单场通天塔累计造成{1}流血伤害
- LILIAN_OUTID16 = 16 --单场公会战累计造成{1}燃烧伤害
- LILIAN_OUTID17 = 17 --通关无尽之路{1}关
- LILIAN_OUTID18 = 18 --通关任意圣殿第{1}关
- LILIAN_OUTID19 = 19 --本周内通关每个圣殿第{1}关
- LILIAN_OUTID20 = 20 --守望圣殿排行榜结算时累计获得{1}次前x
- LILIAN_OUTID21 = 21 --完美通关神之领域前{1}章
- LILIAN_OUTID22 = 22 --最高战力达到{1}
- LILIAN_OUTID23 = 23 --当前拥有{1}个x星英雄
- LILIAN_OUTID24 = 24 --使{1}个x英雄达到x星
- LILIAN_OUTID25 = 25 --任意一场众神之战中{1}次竞猜全部正确
- LILIAN_OUTID26 = 26 --普通招募累计活动{1}个x星英雄
- LILIAN_OUTID27 = 27 --友情招募累计获得{1}个x星英雄
- LILIAN_OUTID28 = 28 --累计获得{1}个x符文
- LILIAN_OUTID29 = 29 --累计充值{1}钻石
- LILIAN_OUTID30 = 30 --公会建设中累计花费{1}钻石
- LILIAN_OUTID31 = 31 --获得{1}次公会红包的手气最佳
- LILIAN_OUTID32 = 32 --发放的红包累计超过{1}钻石
- LILIAN_OUTID33 = 33 --累计完成{1}个历练任务
- LILIAN_OUT2TASK = {
- [LILIAN_OUTID1] = {LILIAN_TASK1,LILIAN_TASK2},
- [LILIAN_OUTID2] = {LILIAN_TASK3,LILIAN_TASK4,LILIAN_TASK5},
- [LILIAN_OUTID3] = {LILIAN_TASK6},
- [LILIAN_OUTID4] = {LILIAN_TASK7},
- [LILIAN_OUTID5] = {LILIAN_TASK8},
- [LILIAN_OUTID6] = {LILIAN_TASK9,LILIAN_TASK10},
- [LILIAN_OUTID7] = {LILIAN_TASK11},
- [LILIAN_OUTID8] = {LILIAN_TASK12},
- [LILIAN_OUTID9] = {LILIAN_TASK13},
- [LILIAN_OUTID10] = {LILIAN_TASK14},
- [LILIAN_OUTID11] = {LILIAN_TASK15,LILIAN_TASK16,LILIAN_TASK17},
- [LILIAN_OUTID12] = {LILIAN_TASK18},
- [LILIAN_OUTID13] = {LILIAN_TASK19},
- [LILIAN_OUTID14] = {LILIAN_TASK20},
- [LILIAN_OUTID15] = {LILIAN_TASK21},
- [LILIAN_OUTID16] = {LILIAN_TASK22},
- [LILIAN_OUTID17] = {LILIAN_TASK23},
- [LILIAN_OUTID18] = {LILIAN_TASK24},
- [LILIAN_OUTID19] = {LILIAN_TASK25},
- [LILIAN_OUTID20] = {LILIAN_TASK26,LILIAN_TASK27},
- [LILIAN_OUTID21] = {LILIAN_TASK28},
- [LILIAN_OUTID22] = {LILIAN_TASK29},
- [LILIAN_OUTID23] = {LILIAN_TASK30,LILIAN_TASK31},
- [LILIAN_OUTID24] = {LILIAN_TASK32,LILIAN_TASK33,LILIAN_TASK34,LILIAN_TASK35,LILIAN_TASK36,LILIAN_TASK37,LILIAN_TASK38,LILIAN_TASK39,LILIAN_TASK40,LILIAN_TASK41},
- [LILIAN_OUTID25] = {LILIAN_TASK42},
- [LILIAN_OUTID26] = {LILIAN_TASK43},
- [LILIAN_OUTID27] = {LILIAN_TASK44},
- [LILIAN_OUTID28] = {LILIAN_TASK45,LILIAN_TASK46,LILIAN_TASK47,LILIAN_TASK48},
- [LILIAN_OUTID29] = {LILIAN_TASK49},
- [LILIAN_OUTID30] = {LILIAN_TASK50},
- [LILIAN_OUTID31] = {LILIAN_TASK51},
- [LILIAN_OUTID32] = {LILIAN_TASK52},
- [LILIAN_OUTID33] = {LILIAN_TASK53},
- }
- LILIAN_STATE_NOT = 0 -- 未完成
- LILIAN_STATE_CAN = 1 -- 可获取
- LILIAN_STATE_HAD = 2 -- 已获取
- -- 根据历练类型获取配表
- local function getConfigByType(lilianType)
- if lilianType == LILIAN_TASK_TYPE1 then
- return LiLianExcel.jjcLiLian
- elseif lilianType == LILIAN_TASK_TYPE2 then
- return LiLianExcel.combatLiLian
- elseif lilianType == LILIAN_TASK_TYPE3 then
- return LiLianExcel.finalLiLian
- elseif lilianType == LILIAN_TASK_TYPE4 then
- return LiLianExcel.dabiaoReward
- end
- end
- -- 获取历练组id详细历练配置
- -- config 历练类型配表
- -- groupID 历练任务组
- function getLiLianConf(human,config,groupID)
- -- 初始化历练db
- human.db.liLianGroup = human.db.liLianGroup or {}
- human.db.liLianGroup[groupID] = human.db.liLianGroup[groupID] or {0,1}
- local liLianDB = human.db.liLianGroup[groupID]
- local groupConfig = LiLianTaskExcel[groupID]
- if groupConfig == nil then
- return
- end
-
- local liLianID = groupConfig.sub[liLianDB[2]]
- return config[liLianID],groupConfig,liLianID
- end
- -- 获取背包中传入星级英雄个数
- local function getStarHeroCnt(human,starTarget)
- local cnt = 0
- for index, heroGrid in pairs(human.db.heroBag) do
- if index ~= 0 then
- local id = heroGrid and (heroGrid.id or heroGrid.heroID)
- local config = id and HeroExcel.hero[id]
- local star = config and config.star or 0
- if star == starTarget then
- cnt = cnt + 1
- end
- end
- end
- return cnt
- end
- -- 获取任务组完成次数
- local function getFinishCntByTask(human,groupID)
- --通天塔
- if groupID == LILIAN_TASK12 then
- return human.db.tower and human.db.tower.lv or 0
- --遗迹探宝
- elseif groupID == LILIAN_TASK18 then
- return YjTreasureLogic.getLayerMax(human)
- -- --无尽之路
- -- elseif task == LILIAN_TASK23 then
- -- return
- -- --任意圣殿x关
- -- elseif task == LILIAN_TASK24 then
- -- return
- -- --每个圣殿x关
- -- elseif task == LILIAN_TASK25 then
- -- return
- -- --神之领域x章
- -- elseif task == LILIAN_TASK28 then
- -- return
- --x个10星英雄
- elseif groupID == LILIAN_TASK30 then
- return getStarHeroCnt(human,10)
- --x个11星英雄
- elseif groupID == LILIAN_TASK31 then
- return getStarHeroCnt(human,11)
- --累充
- elseif groupID == LILIAN_TASK49 then
- return human.db.topupAcountDaily or 0
- end
- return human.db.liLian and human.db.liLian.taskRecord and human.db.liLian.taskRecord[groupID] or 0
- end
- -- 根据历练类型及历练id获取历练状态
- local function getStateByLiLianID(human,taskType,id)
- local config = getConfigByType(taskType)
- if not config or not config[id] then
- return LILIAN_STATE_NOT
- end
- if human.db.liLian
- and human.db.liLian[taskType]
- and human.db.liLian[taskType].getList
- and human.db.liLian[taskType].getList[id] then
- return LILIAN_STATE_HAD
- end
- local need = config[id].param
- local now = getFinishCntByTask(human,config[id].task)
- local taskConfig = LiLianExcel.tasks[config[id].task]
- if taskConfig.compareType ~= 0 then
- if now <= need and now ~= 0 then return LILIAN_STATE_CAN end
- else
- if now >= need then return LILIAN_STATE_CAN end
- end
- return LILIAN_STATE_NOT
- end
- -- 构造历练任务结构体
- local function makeLiLianTask(human,net,config,taskType,id)
- net.id = id
- net.taskName = config.taskName
- net.taskDesc = config.desc
- net.finishCnt = getFinishCntByTask(human,config.task)
- net.needCnt = config.param
- net.state = getStateByLiLianID(human,taskType,id)
- net.panelID = config.panelID
- net.items[0] = #config.reward
- for i=1,#config.reward do
- Grid.makeItem(net.items[i],config.reward[i][1],config.reward[i][2])
- end
- end
- -- 获取一个类型所有任务完成数量
- local function getAllFinishCnt(human,taskType)
- local getList = nil
- if human.db.liLian
- and human.db.liLian[taskType]
- and human.db.liLian[taskType]
- and human.db.liLian[taskType].getList then
- getList = human.db.liLian[taskType].getList
- end
-
- local cnt = 0
- if getList then
- for _,_ in pairs(getList) do
- cnt = cnt + 1
- end
- end
- local config = getConfigByType(taskType)
- return cnt,#config
- end
- -- 红点检查
- local function isRedByTaskType(human,taskType)
- local config = getConfigByType(taskType)
- for i=1,#config do
- local state = getStateByLiLianID(human,taskType,i)
- if state == LILIAN_STATE_CAN then
- return true
- end
- end
- end
- --
- local function makeLiLianTaskState(human,net,taskType)
- net[0] = 4
- local index = 0
- for i=1,4 do
- index = index + 1
- net[index].taskType = i
- local finishCnt,needCnt = getAllFinishCnt(human,i)
- net[index].finishCnt = finishCnt
- net[index].needCnt = needCnt
- net[index].isRed = isRedByTaskType(human,i) and 1 or 0
- end
- end
- -- 查询历练
- function lilianQuery(human,taskType)
- local config = getConfigByType(taskType)
- if not config then return end
- local msgRet = Msg.gc.GC_LILIAN_QUERY
- msgRet.taskType = taskType
-
- local len = #LiLianTaskExcel
- local count = 0
- for i=1,len do
- if LiLianTaskExcel[i].taskType == taskType then
- local lilianConfig,groupConfig,id = getLiLianConf(human,config,i)
- if lilianConfig ~= nil then
- count = count + 1
- makeLiLianTask(human,msgRet.lists[count],lilianConfig,taskType,id)
- end
- end
- end
-
- msgRet.lists[0] = count
- makeLiLianTaskState(human,msgRet.taskState,taskType)
- --Msg.trace(msgRet)
- Msg.send(msgRet,human.fd)
- end
- function lilianGet(human,taskType,liLianID)
- local config = getConfigByType(taskType)
- if not config or not config[liLianID] then
- return
- end
- local state = getStateByLiLianID(human,taskType,liLianID)
- if state ~= LILIAN_STATE_CAN then
- return
- end
- human.db.liLian = human.db.liLian or {}
- human.db.liLian[taskType] = human.db.liLian[taskType] or {}
- human.db.liLian[taskType].getList = human.db.liLian[taskType].getList or {}
- human.db.liLian[taskType].getList[liLianID] = liLianID
-
- human.db.liLianGroup = human.db.liLianGroup or {}
- human.db.liLianGroup[config[liLianID].task] = human.db.liLianGroup[config[liLianID].task] or {0,1}
- human.db.liLianGroup[config[liLianID].task][2] = human.db.liLianGroup[config[liLianID].task][2] + 1
- BagLogic.addItemList(human, config[liLianID].reward, "li_lian")
- lilianQuery(human,taskType)
- onCallback(human,LILIAN_OUTID33,1,nil,nil,true)
- end
- --
- function setCnt(human,task,param1,noAdd)
- if noAdd then
- human.db.liLian = human.db.liLian or {}
- human.db.liLian.taskRecord = human.db.liLian.taskRecord or {}
- human.db.liLian.taskRecord[task] = param1
- else
- human.db.liLian = human.db.liLian or {}
- human.db.liLian.taskRecord = human.db.liLian.taskRecord or {}
- human.db.liLian.taskRecord[task] = (human.db.liLian.taskRecord[task] or 0 ) + param1
- end
- -- print("human.db.liLian.taskRecord[task]",human.db.liLian.taskRecord[task])
- end
- -- 触发回调
- function onCallback(human,outID,param1,param2,param3,noAdd)
- if not LILIAN_OUT2TASK[outID] then return end
- for i=1,#LILIAN_OUT2TASK[outID] do
- local task = LILIAN_OUT2TASK[outID][i]
- local taskConfig = LiLianExcel.tasks[task]
- local set = true
- local paramCnf = taskConfig.param
- if #paramCnf > 0 then
- local paramCnf1 = paramCnf[1]
- local paramCnf2 = paramCnf[2] or 0
- if param2 ~= paramCnf1 then
- set = nil
- end
- if paramCnf2 ~= 0 then
- if param3 ~= paramCnf2 then
- set = nil
- end
- end
- if outID == LILIAN_OUTID1 or outID == LILIAN_OUTID2 or outID == LILIAN_OUTID20 then
- if param2 <= paramCnf1 then
- set = true
- end
- end
- else
- local nowCnt = getFinishCntByTask(human,task)
- if nowCnt ~= 0 then
- if taskConfig.compareType ~= 0 then
- if nowCnt <= param1 then
- set = nil
- end
- else
- if nowCnt >= param1 then
- set = nil
- end
- end
- end
- end
- if set then
- setCnt(human,task,param1,noAdd)
- end
- end
- end
- function onCallbackByUuid(uuid,task,param1,param2,param3,noAdd)
- do return end
- local target = ObjHuman.onlineUuid[uuid]
- if target and target.fd then
- onCallback(target,task,param1,param2,param3,noAdd)
- else
- local fakeDB = RoleDBLogic.getDb(uuid,{liLian = 1})
- if fakeDB then
- local fakeHuman = {}
- fakeHuman.db = fakeDB
- onCallback(fakeHuman,task,param1,param2,param3,noAdd)
- ObjHuman.save(fakeHuman)
- end
- end
- end
- function onCallbackByCombat(human,combatInfo)
- do return end
- if not combatInfo then return end
-
- local attacker = combatInfo.attacker
- local defender = combatInfo.defender
- local combatType = combatInfo.type
- if combatType ~= CombatDefine.COMBAT_TYPE2 or --皇冠联赛/冠军联赛(进攻)
- combatType ~= CombatDefine.COMBAT_TYPE11 or --公会boss
- combatType ~= CombatDefine.COMBAT_TYPE12 or --公会战(进攻)
- combatType ~= CombatDefine.COMBAT_TYPE6 then --通天塔/恶魔之塔
- return
- end
- if attacker.uuid ~= human.db._id then return end
-
- if attacker.zhandouli < defender.zhandouli and combatType == CombatDefine.COMBAT_TYPE2 then
- onCallback(human,LILIAN_OUTID1,1,combatInfo.result.round)
- end
-
- local totalzhongdu = nil
- local totalliuxue = nil
- local totalranshao = nil
- local totalhurt = nil
- for pos = 1, CombatDefine.COMBAT_HERO_CNT do
- local obj = objList and objList[pos]
- if obj then
- local extraCombatRecord = obj.extraCombatRecord
- local zhongdu = extraCombatRecord and extraCombatRecord.zhongdu or 0
- local liuxue = extraCombatRecord and extraCombatRecord.liuxue or 0
- local ranshao = extraCombatRecord and extraCombatRecord.ranshao or 0
- local hurt = obj.result and obj.result[1] or 0
- if zhongdu > 0 and combatType == CombatDefine.COMBAT_TYPE11 then
- totalzhongdu = (totalzhongdu or 0) + zhongdu
- end
- if liuxue > 0 and combatType == CombatDefine.COMBAT_TYPE6 then
- totalliuxue = (totalliuxue or 0) + liuxue
- end
- if ranshao > 0 and combatType == CombatDefine.COMBAT_TYPE12 then
- totalranshao = (totalranshao or 0) + ranshao
- end
- if hurt > 0 and combatType == CombatDefine.COMBAT_TYPE11 then
- totalhurt = (totalhurt or 0) + hurt
- end
- end
- end
- if totalzhongdu then
- onCallback(human,LILIAN_OUTID14,totalzhongdu)
- end
- if totalliuxue then
- onCallback(human,LILIAN_OUTID15,totalliuxue)
- end
- if totalranshao then
- onCallback(human,LILIAN_OUTID16,totalliuxue)
- end
- if totalhurt then
- onCallback(human,LILIAN_OUTID9,totalhurt)
- end
- end
- -- 历练分享
- function lilianShare(human,taskType,id,shareType)
- local state = getStateByLiLianID(human,taskType,id)
- if state ~= LILIAN_STATE_HAD then return end
- if shareType ~= ChatHandler.CHAT_TYPE_WORLD and shareType ~= ChatHandler.CHAT_TYPE_UNION and shareType ~= ChatHandler.CHAT_TYPE_MIDDLE then
- return
- end
-
- -- 如果是分享在世界上检测是否在聊天CD 中
- if shareType == ChatHandler.CHAT_TYPE_WORLD and human.worldChatTime and human.worldChatTime + CHAT_CD > Timer.now then
- local cdLeftSec = math.ceil((CHAT_CD - (Timer.now - human.worldChatTime))/1000)
- Broadcast.sendDown(human, Util.format(Lang.CHAT_TIME_SHORT, cdLeftSec))
- return
- end
- if shareType == ChatHandler.CHAT_TYPE_UNION and human.db.unionUuid == nil then
- return Broadcast.sendErr(human, Lang.UNION_PLAYER_IN_NO)
- end
-
- local shareConf = LiLianExcel.share[taskType]
- if not shareConf then return end
- local config = getConfigByType(taskType)
- if not config then return end
- local name = shareConf.name
- local desc = shareConf.desc
- local taskName = config[id].taskName
- local content = Util.format(desc,name,taskName)
- local msgNet = {}
- msgNet.msgType = shareType
- msgNet.msg = content
- local flag = ChatLogic.chat(human, msgNet)
- if flag == true then
- Broadcast.sendErr(human, Lang.SHARE_SUCCESS)
- else
- Broadcast.sendErr(human, Lang.SHARE_ERROR)
- end
- end
- function isDot(human)
- for i = 1, 4 do
- if isRedByTaskType(human,i) then
- return true
- end
- end
- return false
- end
|