HonorJourney.lua 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941
  1. local Lang = require("common.Lang")
  2. local Util = require("common.Util")
  3. local Msg = require("core.Msg")
  4. local ObjHuman = require("core.ObjHuman")
  5. local DailyTaskExcel = require("excel.HonorJourney")
  6. local BagLogic = require("bag.BagLogic")
  7. local Grid = require("bag.Grid")
  8. local ChatPaoMaLogic = require("chat.ChatPaoMaLogic")
  9. local RoleSystemLogic = require("roleSystem.RoleSystemLogic")
  10. local RoleSystemDefine = require("roleSystem.RoleSystemDefine")
  11. local ItemDefine = require("bag.ItemDefine")
  12. local ChengjiuLogic = require("chengjiu.ChengjiuLogic")
  13. local ChengjiuDefine = require("chengjiu.ChengjiuDefine")
  14. local YunYingLogic = require("yunying.YunYingLogic")
  15. local HonorJourneyExcel = require("excel.HonorJourney")
  16. local CommonDefine = require("common.CommonDefine")
  17. local TriggerLogic = require("trigger.TriggerLogic")
  18. local TriggerDefine = require("trigger.TriggerDefine")
  19. local YjTreasureDBLogic = require("yjTreasure.YjTreasureDB")
  20. -- HonorJourney ={
  21. -- nPoint = 0, -- 荣耀积分
  22. -- TaskPrize = { -- 任务数据
  23. --[id] = {finishNum}
  24. --}
  25. --},
  26. -- TaskPointPrize = {}, -- 任务积分奖励
  27. -- }
  28. local HONORJOURNEY_SHOWTASK = 1 -- 显示任务
  29. local HONORJOURNEY_NOWSHOWTASK = 0 -- 非显示任务(需要完成前置任务)
  30. local HONORJOURNEY_LEN = nil -- 荣耀任务长度
  31. -- 初始化DB数据
  32. local function HonorJourneyTask_CreateDB(human)
  33. human.db.HonorJourney = {
  34. nPoint = 0, -- 荣耀积分
  35. TaskPointPrize = {}, -- 任务积分奖励
  36. TaskPrize = {
  37. --[[
  38. [nID] = {
  39. nFinishNum = xx,
  40. nState = 0
  41. }
  42. ]]
  43. }
  44. }
  45. local tTaskPrize = human.db.HonorJourney.TaskPrize
  46. local tConf = HonorJourneyExcel.HonorJourney
  47. for nID, v in pairs(tConf) do
  48. if not tTaskPrize[nID] then
  49. tTaskPrize[nID] = {
  50. nFinishNum = 0,
  51. nState = CommonDefine.COMMON_PRIZE_STATE_NOGET
  52. }
  53. else
  54. print("[HonorJourneyTask_CreateDB] 配置了重复的奖励ID nID = "..nID)
  55. end
  56. end
  57. tConf = HonorJourneyExcel.Reward
  58. local tTaskPointPrize = human.db.HonorJourney.TaskPointPrize
  59. for nID, v in ipairs(tConf) do
  60. if not tTaskPointPrize[nID] then
  61. tTaskPointPrize[nID] = CommonDefine.COMMON_PRIZE_STATE_NOGET
  62. else
  63. print("[HonorJourneyTask_CreateDB] 配置了重复的奖励ID nID = "..nID)
  64. end
  65. end
  66. end
  67. -- 检测是否初始化DB数据
  68. local function HonorJourneyTask_CheckCreateDB(human)
  69. if human.db.HonorJourney and nil ~= _G.next(human.db.HonorJourney) then
  70. return
  71. end
  72. HonorJourneyTask_CreateDB(human)
  73. end
  74. -- 增加任务完成次数
  75. local function HonorJourneyTask_AddTaskFinishNum(human, nID, nValue)
  76. local tDBTaskPrize = human.db.HonorJourney.TaskPrize
  77. tDBTaskPrize[nID].nFinishNum = tDBTaskPrize[nID].nFinishNum + nValue
  78. end
  79. -- 设置任务完成次数
  80. local function HonorJourneyTask_SetTaskFinishNum(human, nID, nValue)
  81. local tDBTaskPrize = human.db.HonorJourney.TaskPrize
  82. tDBTaskPrize[nID].nFinishNum = nValue
  83. end
  84. function HonorJourney_GetTaskCof()
  85. return HonorJourneyExcel
  86. end
  87. local function HonorJourneyTask_GetTaskDB(human)
  88. if not human.db.HonorJourney then
  89. HonorJourneyTask_CreateDB(human)
  90. end
  91. return human.db.HonorJourney
  92. end
  93. -- 获取任务完成次数
  94. local function HonorJourney_GetTaskFinishNum(human, nID)
  95. local tDBData = HonorJourneyTask_GetTaskDB(human)
  96. if not tDBData.TaskPrize[nID] then
  97. print("[HonorJourney_GetTaskFinishNum] 不存在对应的任务ID nID = "..nID)
  98. return 0
  99. end
  100. return tDBData.TaskPrize[nID].nFinishNum
  101. end
  102. -- 获取任务状态
  103. local function HonorJourney_GetTaskStatus(human, nID)
  104. local tDBData = HonorJourneyTask_GetTaskDB(human)
  105. if not tDBData.TaskPrize or not tDBData.TaskPrize[nID] or not tDBData.TaskPrize[nID].nState then
  106. return CommonDefine.COMMON_PRIZE_STATE_NOGET
  107. end
  108. return tDBData.TaskPrize[nID].nState
  109. end
  110. -- 设置任务状态
  111. local function HonorJourney_SetTaskStatus(human, nID, nValue)
  112. local tDBData = HonorJourneyTask_GetTaskDB(human)
  113. tDBData.TaskPrize[nID].nState = nValue
  114. end
  115. -- 获取任务累积奖励状态
  116. local function HonorJourney_GetTaskPointPrize(human, nID)
  117. local tDBData = HonorJourneyTask_GetTaskDB(human)
  118. if not tDBData.TaskPointPrize or not tDBData.TaskPointPrize[nID] then
  119. return CommonDefine.COMMON_PRIZE_STATE_NOGET
  120. end
  121. return tDBData.TaskPointPrize[nID]
  122. end
  123. -- 设置任务累积奖励状态
  124. local function HonorJourney_SetTaskPointPrize(human, nID, nValue)
  125. local tDBData = HonorJourneyTask_GetTaskDB(human)
  126. if not tDBData.TaskPointPrize or not tDBData.TaskPointPrize[nID] then
  127. return
  128. end
  129. tDBData.TaskPointPrize[nID] = nValue
  130. end
  131. -- 获取积分
  132. local function HonorJourney_GetTaskPoint(human)
  133. return human.db.HonorJourney.nPoint
  134. end
  135. -- 增加积分
  136. local function HonorJourney_AddTaskPoint(human, nPoint)
  137. human.db.HonorJourney.nPoint = human.db.HonorJourney.nPoint + nPoint
  138. end
  139. -- 检测任务状态
  140. function HonorJourney_CheckTaskStatus(human,nID)
  141. local nNowFinishNum = HonorJourney_GetTaskFinishNum(human, nID)
  142. local tConf = HonorJourneyExcel.HonorJourney[nID]
  143. print("[HonorJourney_CheckTaskStatus] nID = "..nID.." nNowFinishNum = "..nNowFinishNum.." taskProcess = "..tConf.taskProcess)
  144. if nNowFinishNum >= tConf.taskProcess then
  145. print("[HonorJourney_CheckTaskStatus] 满足条件 nID = "..nID)
  146. local nState = HonorJourney_GetTaskStatus(human, nID)
  147. if CommonDefine.COMMON_PRIZE_STATE_NOGET == nState then
  148. print("[HonorJourney_CheckTaskStatus] 进行设置 nID = "..nID)
  149. HonorJourney_SetTaskStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_CANGET)
  150. -- local msgRet = Msg.gc.GC_WEEKSHARE_SET
  151. -- msgRet.type = 5
  152. -- msgRet.desc = tConf.taskDesc
  153. -- Msg.send(msgRet,human.fd)
  154. end
  155. end
  156. end
  157. -- 检测任务积分奖励状态
  158. local function HonorJourney_CheckTaskPointStatus(human)
  159. local nNowPoint = HonorJourney_GetTaskPoint(human)
  160. for nID, v in ipairs(HonorJourneyExcel.Reward) do
  161. if v.needcnt > nNowPoint then
  162. break
  163. end
  164. local nState = HonorJourney_GetTaskPointPrize(human, nID)
  165. if nState == CommonDefine.COMMON_PRIZE_STATE_NOGET and nNowPoint >= v.needcnt then
  166. HonorJourney_SetTaskPointPrize(human, nID, CommonDefine.COMMON_PRIZE_STATE_CANGET)
  167. end
  168. end
  169. end
  170. local function getIDbyEventAndArgumentType(nEventType, nArgumentType)
  171. local tTaskID = {}
  172. for id,cfg in pairs(HonorJourneyExcel.HonorJourney) do
  173. if cfg.triggerType == nEventType then
  174. if nArgumentType then
  175. local argumentNum = tonumber(string.sub(tostring(cfg.taskArgument), -1))
  176. if nArgumentType == argumentNum then
  177. table.insert(tTaskID, id)
  178. end
  179. else
  180. table.insert(tTaskID, id)
  181. end
  182. end
  183. end
  184. return tTaskID
  185. end
  186. -- 获取前置任务
  187. local function HonorJourney_Gettaskpre(id)
  188. if not id or not HonorJourneyExcel.HonorJourney or not HonorJourneyExcel.HonorJourney[id] then
  189. return nil
  190. end
  191. local taskPre = HonorJourneyExcel.HonorJourney[id].taskPre
  192. if type(taskPre) ~= "number" then
  193. return nil
  194. end
  195. return taskPre
  196. end
  197. local function HonorJourneyTask_CheckFinshTask(human)
  198. if human.db.moshou and human.db.moshou.lv then
  199. local nNowFengHuangLv = human.db.moshou.lv
  200. print("[HonorJourneyTask_CheckFinshTask] 当前凤凰等级 nNowFengHuangLv = "..nNowFengHuangLv)
  201. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  202. if v.triggerType == TriggerDefine.FENGHUANGLV then
  203. local nState = HonorJourney_GetTaskStatus(human, nID)
  204. if nNowFengHuangLv >= v.taskProcess and nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  205. print("[HonorJourneyTask_CheckFinshTask] 当前凤凰等级大于任务配置的等级 nNowFengHuangLv = "..nNowFengHuangLv.." taskProcess = "..v.taskProcess)
  206. HonorJourneyTask_SetTaskFinishNum(human, nID, nNowFengHuangLv)
  207. HonorJourney_CheckTaskStatus(human, nID)
  208. end
  209. end
  210. end
  211. else
  212. print("[HonorJourneyTask_CheckFinshTask] 不存在对应的凤凰数据 name = "..human.db.name)
  213. end
  214. -- 检测遗迹通关数
  215. local layerData = YjTreasureDBLogic.getLayerDataByUuid(human.db._id)
  216. if layerData and layerData.layer then
  217. local nowLayer = layerData.layer
  218. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  219. if v.triggerType == TriggerDefine.YJTREASURE_PASS_LEVEL then
  220. local nState = HonorJourney_GetTaskStatus(human, nID)
  221. if nowLayer >= v.taskProcess and nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  222. print("[HonorJourneyTask_CheckFinshTask] 当前遗迹通关数大于任务配置的等级 nowLayer = "..nowLayer.." taskProcess = "..v.taskProcess)
  223. HonorJourneyTask_SetTaskFinishNum(human, nID, nowLayer)
  224. HonorJourney_CheckTaskStatus(human, nID)
  225. elseif nowLayer < v.taskProcess and nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  226. local nNowNum = HonorJourney_GetTaskFinishNum(human, nID)
  227. if nNowNum < nowLayer then
  228. HonorJourneyTask_SetTaskFinishNum(human, nID, nowLayer)
  229. end
  230. end
  231. end
  232. end
  233. end
  234. -- 检查新加的任务
  235. local tTaskPrize = human.db.HonorJourney.TaskPrize
  236. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  237. if not tTaskPrize[nID] then
  238. tTaskPrize[nID] = {
  239. nFinishNum = 0,
  240. nState = CommonDefine.COMMON_PRIZE_STATE_NOGET
  241. }
  242. end
  243. end
  244. end
  245. function HonorJourneyTaskQuery(human, isOnLogin)
  246. print("当前进入荣耀历程查询")
  247. local sendErr = isOnLogin == false and true or false
  248. if RoleSystemLogic.isOpen(human, RoleSystemDefine.ROLE_SYS_ID_803, sendErr) ~= true then
  249. return
  250. end
  251. -- 先组装活跃数据
  252. local nNowPoint = HonorJourney_GetTaskPoint(human)
  253. local msgRet = Msg.gc.GC_HONORJOURNEY_QUERY
  254. msgRet.nowHuoYue = nNowPoint
  255. msgRet.huoYueBox[0] = 1
  256. local ret = 1
  257. -- 初始化box数据结构
  258. for nID, v in ipairs(HonorJourneyExcel.Reward) do
  259. local nState = HonorJourney_GetTaskPointPrize(human, nID)
  260. print("[HonorJourneyTaskQuery] nID = "..nID .." nState = "..nState)
  261. if nState ~= CommonDefine.COMMON_PRIZE_STATE_GET then
  262. msgRet.huoYueBox[ret].boxID = nID
  263. msgRet.huoYueBox[ret].needHuoYue = v.needcnt
  264. msgRet.huoYueBox[ret].items[0] = #v.reward
  265. for nIndex, tGoods in ipairs(v.reward) do
  266. local itemID = tGoods[1]
  267. local itemCnt = tGoods[2]
  268. Grid.makeItem(msgRet.huoYueBox[ret].items[nIndex], itemID, itemCnt)
  269. end
  270. msgRet.huoYueBox[ret].isGet = 0
  271. break
  272. end
  273. end
  274. -- 组装荣耀数据
  275. local HonorJourneyConfig = HonorJourneyExcel.HonorJourney
  276. if not HonorJourneyConfig then return end
  277. if not HONORJOURNEY_LEN then
  278. HONORJOURNEY_LEN = 0
  279. for nID, _ in pairs(HonorJourneyConfig) do
  280. HONORJOURNEY_LEN = HONORJOURNEY_LEN + 1
  281. end
  282. end
  283. local nFirst, cnt, nSendLen = 1, 0, 0
  284. for nID, value in pairs(HonorJourneyConfig) do
  285. local nPreTaskID = HonorJourney_Gettaskpre(nID)
  286. local nState = HonorJourney_GetTaskStatus(human, nID)
  287. nSendLen = nSendLen + 1
  288. --print("[HonorJourneyTaskQuery] nID = "..nID.." nState = "..nState.."\n")
  289. if CommonDefine.COMMON_PRIZE_STATE_GET ~= nState then
  290. local bSow = value.isVisiable == HONORJOURNEY_SHOWTASK and true or false
  291. -- 获取前置任务状态
  292. if nPreTaskID then
  293. local nPreTaskState = HonorJourney_GetTaskStatus(human, nPreTaskID)
  294. if CommonDefine.COMMON_PRIZE_STATE_GET == nPreTaskState then
  295. bSow = true
  296. else
  297. bSow = false
  298. end
  299. else
  300. if CommonDefine.COMMON_PRIZE_STATE_CANGET == nState then
  301. bSow = true
  302. end
  303. end
  304. --print("[HonorJourneyTaskQuery] nID = "..nID.." bSow = "..(bSow == true and 1 or 0))
  305. -- 能领取了都要显示出来
  306. -- if CommonDefine.COMMON_PRIZE_STATE_CANGET == nState then
  307. -- bSow = true
  308. -- end
  309. -- 显示才下发
  310. if true == bSow then
  311. cnt = cnt + 1
  312. msgRet.list[cnt].taskID = nID
  313. msgRet.list[cnt].desc = value.taskDesc
  314. msgRet.list[cnt].maxCnt = value.taskProcess
  315. local len = 0
  316. for i = 1, #value.reward do
  317. len = len + 1
  318. local itemId = value.reward[i][1]
  319. local itemCnt = value.reward[i][2]
  320. Grid.makeItem(msgRet.list[cnt].itemData[len], itemId, itemCnt)
  321. end
  322. msgRet.list[cnt].itemData[0] = len
  323. msgRet.list[cnt].jump = value.panelID or 0
  324. msgRet.list[cnt].finishCnt = HonorJourney_GetTaskFinishNum(human, nID)
  325. msgRet.list[cnt].isGet = (nState == CommonDefine.COMMON_PRIZE_STATE_GET) and 1 or 0
  326. if cnt >= 30 then
  327. msgRet.list[0] = cnt
  328. msgRet.nFirst = nFirst
  329. msgRet.nEnd = nSendLen == HONORJOURNEY_LEN and 1 or 0
  330. print("[HonorJourneyTaskQuery] 发送数据 cnt = "..cnt.." nFirst = "..nFirst.." nSendLen = "..nSendLen)
  331. Msg.send(msgRet, human.fd)
  332. nFirst = 0
  333. cnt = 0
  334. end
  335. end
  336. end
  337. end
  338. print("[HonorJourneyTaskQuery] 循环遍历结束 cnt = "..cnt.." nFirst = "..nFirst.." nSendLen = "..nSendLen)
  339. msgRet.list[0] = cnt
  340. msgRet.nFirst = nFirst
  341. msgRet.nEnd = 1
  342. print("[HonorJourneyTaskQuery] 最后一次发送数据 cnt = "..cnt.." nFirst = "..nFirst.." nSendLen = "..nSendLen)
  343. Msg.send(msgRet, human.fd)
  344. end
  345. function onHonorJourneyTaskHuoYue(human,sum)
  346. if not human.db.HonorJourney then return end
  347. human.db.HonorJourney.nowHuoYue = (human.db.HonorJourney.nowHuoYue or 0) + sum
  348. YunYingLogic.onCallBack(human, "onDailyTask",sum)
  349. end
  350. --统计奖励
  351. local function calcReward(human, awardCfg)
  352. for i = 1, #awardCfg do
  353. local itemId = awardCfg[i][1]
  354. local itemCnt = awardCfg[i][2]
  355. if itemId == ItemDefine.ITME_HUOYUE_ID then
  356. onHonorJourneyTaskHuoYue(human,itemCnt)
  357. else
  358. local newCnt = math.ceil(itemCnt)
  359. --BagLogic.updateMomentItem(2, itemId, itemCnt)
  360. BagLogic.updateMomentItem(2, itemId, newCnt)
  361. end
  362. end
  363. end
  364. function HonorJourneyTaskGetReward(human)
  365. if RoleSystemLogic.isOpen(human, RoleSystemDefine.ROLE_SYS_ID_803) ~= true then
  366. print("[HonorJourneyTaskGetReward] 未开启直接返回")
  367. return
  368. end
  369. -- print("[HonorJourneyTaskGetReward] 1111111")
  370. local tAddItem, nAddPoint = {}, 0
  371. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  372. local nState = HonorJourney_GetTaskStatus(human, nID)
  373. -- print("[HonorJourneyTaskGetReward] nID = "..nID.." nState = "..nState)
  374. if CommonDefine.COMMON_PRIZE_STATE_CANGET == nState then
  375. HonorJourney_SetTaskStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_GET)
  376. for _, tGoods in ipairs(v.reward) do
  377. local nGoodsID = tGoods[1]
  378. local nGoodsNum = tGoods[2]
  379. if not tAddItem[nGoodsID] and nGoodsID ~= ItemDefine.ITEM_HONOR_ID then
  380. tAddItem[nGoodsID] = 0
  381. end
  382. if nGoodsID ~= ItemDefine.ITEM_HONOR_ID then
  383. tAddItem[nGoodsID] = tAddItem[nGoodsID] + nGoodsNum
  384. else
  385. nAddPoint = nAddPoint + nGoodsNum
  386. end
  387. end
  388. -- nAddPoint = nAddPoint + v.taskCnt
  389. end
  390. end
  391. if nil ~= _G.next(tAddItem) then
  392. local tAddGoods = {}
  393. for nGoodsID, nGoodsNum in pairs(tAddItem) do
  394. table.insert(tAddGoods, {nGoodsID, nGoodsNum})
  395. end
  396. BagLogic.addItemList(human, tAddGoods, "honorjourney")
  397. -- 增加积分,并更新状态
  398. HonorJourney_AddTaskPoint(human, nAddPoint)
  399. HonorJourney_CheckTaskPointStatus(human)
  400. HonorJourneyTaskQuery(human)
  401. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  402. end
  403. end
  404. local function huoYueBoxCanGet(human,boxID)
  405. local HonorJourneyDB = human.db.HonorJourney
  406. if not HonorJourneyDB then return end
  407. local isGet = HonorJourneyDB.huoYueBox and HonorJourneyDB.huoYueBox[boxID] or 0
  408. if isGet ~= 0 then return end
  409. local nowHuoYue = HonorJourneyDB.nowHuoYue or 0
  410. local huoYueBoxConfig = HonorJourneyExcel.Reward[boxID]
  411. if nowHuoYue <= 0 or nowHuoYue < huoYueBoxConfig.needHuoYue then return end
  412. return true
  413. end
  414. -- 领取活跃宝箱
  415. function CG_HONORJOURNEYTASK_GET_HUOYUEBOX(human, nBoxID)
  416. local tConfig = HonorJourneyExcel.Reward[nBoxID]
  417. if not tConfig then
  418. return
  419. end
  420. local nNowPoint = HonorJourney_GetTaskPoint(human)
  421. if nNowPoint < tConfig.needcnt then
  422. return
  423. end
  424. local nState = HonorJourney_GetTaskPointPrize(human, nBoxID)
  425. if nState ~= CommonDefine.COMMON_PRIZE_STATE_CANGET then
  426. return
  427. end
  428. HonorJourney_SetTaskPointPrize(human, nBoxID, CommonDefine.COMMON_PRIZE_STATE_GET)
  429. BagLogic.addItemList(human, tConfig.reward, "honorjourney")
  430. HonorJourneyTaskQuery(human)
  431. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  432. end
  433. function isDot(human)
  434. -- 主界面的任务包含2个标签 每日任务/成就
  435. if RoleSystemLogic.isOpen(human, RoleSystemDefine.ROLE_SYS_ID_803) ~= true then
  436. print("[HonorJourney_isDot] 当前系统未开放直接返回false")
  437. return false
  438. end
  439. HonorJourneyTask_CheckCreateDB(human)
  440. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  441. local nState = HonorJourney_GetTaskStatus(human, nID)
  442. if nState == CommonDefine.COMMON_PRIZE_STATE_CANGET then
  443. return true
  444. end
  445. end
  446. for nID, v in ipairs(HonorJourneyExcel.Reward) do
  447. local nState = HonorJourney_GetTaskPointPrize(human, nID)
  448. if nState == CommonDefine.COMMON_PRIZE_STATE_CANGET then
  449. return true
  450. end
  451. end
  452. return false
  453. end
  454. -- 事件处理
  455. local tEventHandler = nil
  456. -- 起服处理
  457. local function HonorJourneyTask_EvnentCommon(nEventType, uuid, nValue, nArgumentType)
  458. print("当前进入荣耀历程增加次数..............................",nEventType, nArgumentType)
  459. local human = ObjHuman.onlineUuid[uuid]
  460. if not human then
  461. print("[HonorJourneyTask_EvnentCommon] 玩家不在线了? nEventType = "..nEventType)
  462. return
  463. end
  464. local tTaskID = getIDbyEventAndArgumentType(nEventType, nArgumentType)
  465. if nil ~= _G.next(tTaskID) then
  466. for _, nID in ipairs(tTaskID) do
  467. local nStatus = HonorJourney_GetTaskStatus(human, nID)
  468. if nStatus == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  469. HonorJourneyTask_AddTaskFinishNum(human,nID, nValue)
  470. HonorJourney_CheckTaskStatus(human, nID)
  471. end
  472. end
  473. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  474. end
  475. end
  476. local function HonorJourney_EvnentGetHero(nEventType, uuid, nValue1, nValue2)
  477. local human = ObjHuman.onlineUuid[uuid]
  478. if not human then
  479. print("[HonorJourney_EvnentGetHero] 不存在对应的人物直接返回 nEventType = "..nEventType.." uuid = "..uuid)
  480. return
  481. end
  482. local nNum = nValue1
  483. local nStar = nValue2
  484. print("[HonorJourney_EvnentGetHero] nEventType = "..nEventType.." nNum = "..nNum.." nStar = "..nStar.." name = "..human.db.name)
  485. local bCheck, nTaskID = false, 0
  486. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  487. if v.triggerType == nEventType then
  488. if not v.taskArgument or v.taskArgument == "" then
  489. print("[HonorJourney_EvnentGetHero] 获得英雄但是没有获取到对应的配置参数要求")
  490. else
  491. local tTaskArgument = Util.split(v.taskArgument , "|")
  492. table.print_lua_table(tTaskArgument)
  493. if 2 ~= #tTaskArgument then
  494. print("[HonorJourneyTask_EvnentGetHero] 获取的任务 参数数量不正确")
  495. else
  496. if nNum >= tonumber(tTaskArgument[1]) and nStar == tonumber(tTaskArgument[2]) then
  497. local nStatus = HonorJourney_GetTaskStatus(human, nID)
  498. if nStatus == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  499. HonorJourneyTask_AddTaskFinishNum(human, nID, 1)
  500. bCheck = true
  501. nTaskID = nID
  502. end
  503. break
  504. end
  505. end
  506. end
  507. end
  508. end
  509. --检查任务是否完成
  510. if true == bCheck then
  511. HonorJourney_CheckTaskStatus(human, nTaskID)
  512. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  513. end
  514. end
  515. -- 战斗力改变
  516. local function HonorJourney_PowerChange(nEventType, uuid, nValue1, nValue2)
  517. local human = ObjHuman.onlineUuid[uuid]
  518. if not human then
  519. return
  520. end
  521. local tTaksID = {}
  522. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  523. if v.triggerType == nEventType then
  524. local nState = HonorJourney_GetTaskStatus(human, nID)
  525. if nValue1 >= v.taskProcess and nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  526. table.insert(tTaksID, nID)
  527. end
  528. end
  529. end
  530. if tTaksID and nil ~= _G.next(tTaksID) then
  531. for _, nID in pairs(tTaksID) do
  532. HonorJourneyTask_SetTaskFinishNum(human, nID, nValue1)
  533. HonorJourney_CheckTaskStatus(human, nID)
  534. -- HonorJourney_SetTaskStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_CANGET)
  535. end
  536. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  537. end
  538. end
  539. -- 凤凰等级
  540. local function HonorJourney_FengHuangLv(nEventType, uuid, nValue1, nValue2)
  541. local human = ObjHuman.onlineUuid[uuid]
  542. if not human then
  543. return
  544. end
  545. local tTaksID = {}
  546. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  547. if v.triggerType == nEventType then
  548. local nState = HonorJourney_GetTaskStatus(human, nID)
  549. if nValue1 >= v.taskProcess and nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  550. table.insert(tTaksID, nID)
  551. end
  552. end
  553. end
  554. if tTaksID and nil ~= _G.next(tTaksID) then
  555. for _, nID in pairs(tTaksID) do
  556. HonorJourneyTask_SetTaskFinishNum(human, nID, nValue1)
  557. -- HonorJourney_SetTaskStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_CANGET)
  558. HonorJourney_CheckTaskStatus(human, nID)
  559. end
  560. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  561. end
  562. end
  563. -- 打开宝箱
  564. local function HonorJourney_OpenBox(nEventType, uuid, nValue1, nBoxType)
  565. print("[HonorJourney_OpenBox] 进入打开宝箱回调 nValue1 = "..nValue1.." nBoxType = "..nBoxType)
  566. local human = ObjHuman.onlineUuid[uuid]
  567. if not human then
  568. return
  569. end
  570. local tTaksID = {}
  571. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  572. if v.triggerType == nEventType then
  573. local nNeedBoxType = v.taskArgument
  574. local nState = HonorJourney_GetTaskStatus(human, nID)
  575. if nBoxType == nNeedBoxType and nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  576. table.insert(tTaksID, nID)
  577. end
  578. end
  579. end
  580. if tTaksID and nil ~= _G.next(tTaksID) then
  581. for _, nID in pairs(tTaksID) do
  582. HonorJourneyTask_AddTaskFinishNum(human, nID, nValue1)
  583. HonorJourney_CheckTaskStatus(human, nID)
  584. end
  585. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  586. else
  587. print("[HonorJourney_OpenBox] 不存在满足条件的任务")
  588. end
  589. end
  590. -- 获得装备或者符文
  591. local function HonorJourneyTask_GetEquiporFuWen(nEventType, uuid, nQuality, nNum)
  592. local human = ObjHuman.onlineUuid[uuid]
  593. if not human then
  594. return
  595. end
  596. print("[HonorJourneyTask_GetEquiporFuWen] nEventType = "..nEventType.." nQuality = "..nQuality.." nNum = "..nNum)
  597. local tTaksID = {}
  598. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  599. if v.triggerType == nEventType then
  600. local nState = HonorJourney_GetTaskStatus(human, nID)
  601. if nQuality == v.taskArgument and nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  602. table.insert(tTaksID, nID)
  603. end
  604. end
  605. end
  606. if tTaksID and nil ~= _G.next(tTaksID) then
  607. for _, nID in pairs(tTaksID) do
  608. print("[HonorJourneyTask_GetEquiporFuWen] 进行判断的任务ID = "..nID)
  609. HonorJourneyTask_AddTaskFinishNum(human, nID, nNum)
  610. HonorJourney_CheckTaskStatus(human, nID)
  611. end
  612. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  613. end
  614. end
  615. -- 秘宝或者遗物激活
  616. local function HonorJourneyTask_ItemActivate(nEventType, uuid, nItemID, nItemNum)
  617. local human = ObjHuman.onlineUuid[uuid]
  618. if not human then
  619. return
  620. end
  621. print("[HonorJourneyTask_ItemActivate] nEventType = "..nEventType.." nItemID = "..nItemID.." nItemNum = "..nItemNum)
  622. local tTaksID = {}
  623. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  624. if v.triggerType == nEventType then
  625. local nState = HonorJourney_GetTaskStatus(human, nID)
  626. if nItemID == v.taskArgument and nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  627. table.insert(tTaksID, nID)
  628. end
  629. end
  630. end
  631. if tTaksID and nil ~= _G.next(tTaksID) then
  632. for _, nID in pairs(tTaksID) do
  633. -- print("[HonorJourneyTask_ItemActivate] 进行判断的任务ID = "..nID)
  634. HonorJourneyTask_AddTaskFinishNum(human, nID, nItemNum)
  635. HonorJourney_CheckTaskStatus(human, nID)
  636. end
  637. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  638. end
  639. end
  640. -- 等级改变
  641. local function HonorJourneyTask_LvChange(nEventType, uuid, nValue1, nValue2)
  642. local human = ObjHuman.onlineUuid[uuid]
  643. if not human then
  644. return
  645. end
  646. print("[HonorJourneyTask_LvChange] nEventType = "..nEventType.." nValue1 = "..nValue1.." nValue2 = "..nValue2)
  647. local tTaksID = {}
  648. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  649. if v.triggerType == nEventType then
  650. local nState = HonorJourney_GetTaskStatus(human, nID)
  651. if nValue2 >= v.taskProcess and nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  652. table.insert(tTaksID, nID)
  653. end
  654. end
  655. end
  656. if tTaksID and nil ~= _G.next(tTaksID) then
  657. for _, nID in pairs(tTaksID) do
  658. -- print("[HonorJourneyTask_ItemActivate] 进行判断的任务ID = "..nID)
  659. HonorJourneyTask_SetTaskFinishNum(human, nID, nValue2)
  660. HonorJourney_CheckTaskStatus(human, nID)
  661. end
  662. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  663. end
  664. end
  665. -- 境界提升
  666. local function HonorJourneyTask_JingjieLvChange(nEventType, uuid, nValue1, nValue2)
  667. local human = ObjHuman.onlineUuid[uuid]
  668. if not human then
  669. return
  670. end
  671. print("[HonorJourneyTask_JingjieLvChange] nEventType = "..nEventType.." nValue1 = "..nValue1.." nValue2 = "..nValue2)
  672. local tTaksID = {}
  673. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  674. if v.triggerType == nEventType then
  675. local nState = HonorJourney_GetTaskStatus(human, nID)
  676. if nValue2 >= v.taskArgument and nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  677. table.insert(tTaksID, nID)
  678. end
  679. end
  680. end
  681. if tTaksID and nil ~= _G.next(tTaksID) then
  682. for _, nID in pairs(tTaksID) do
  683. print("[HonorJourneyTask_JingjieLvChange] 进行判断的任务ID = "..nID)
  684. HonorJourneyTask_SetTaskFinishNum(human, nID, 1)
  685. HonorJourney_CheckTaskStatus(human, nID)
  686. end
  687. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  688. end
  689. end
  690. function Init()
  691. tEventHandler = {
  692. [TriggerDefine.CHAT_TIMES] = HonorJourneyTask_EvnentCommon,
  693. [TriggerDefine.FRIEND_COMBAT] = HonorJourneyTask_EvnentCommon,
  694. [TriggerDefine.EVENT_TYPE_FATESUMMON] = HonorJourneyTask_EvnentCommon,
  695. [TriggerDefine.EVENT_TYPE_OPENBOX] = HonorJourney_OpenBox,
  696. [TriggerDefine.EVENT_TYPE_GETHERO] = HonorJourney_EvnentGetHero,
  697. [TriggerDefine.EVENT_TYPE_SHOPBUY] = HonorJourneyTask_EvnentCommon,
  698. [TriggerDefine.EVENT_TYPE_ELITESUMMON] = HonorJourneyTask_EvnentCommon,
  699. [TriggerDefine.FUWEN_HECHENG] = HonorJourneyTask_EvnentCommon,
  700. [TriggerDefine.GOLD_POINTS_NUM] = HonorJourneyTask_EvnentCommon,
  701. [TriggerDefine.VOUCHER_BUY_NUM] = HonorJourneyTask_EvnentCommon,
  702. [TriggerDefine.DRAGON_PEARL] = HonorJourneyTask_EvnentCommon,
  703. [TriggerDefine.ANCIENTG_CHARGING] = HonorJourneyTask_EvnentCommon,
  704. [TriggerDefine.SECRET_REALM] = HonorJourneyTask_EvnentCommon,
  705. [TriggerDefine.ZHANDOULI] = HonorJourney_PowerChange,
  706. [TriggerDefine.FENGHUANGLV] = HonorJourney_FengHuangLv,
  707. [TriggerDefine.MOZHU_CHALLENGE] = HonorJourneyTask_EvnentCommon,
  708. [TriggerDefine.ZHANBU_SYNTHESIS] = HonorJourneyTask_EvnentCommon,
  709. [TriggerDefine.UNION_DONATE] = HonorJourneyTask_EvnentCommon,
  710. [TriggerDefine.EVENT_TYPE_SWEEP] = HonorJourneyTask_EvnentCommon,
  711. [TriggerDefine.FUWEN_GETQUALITY] = HonorJourneyTask_GetEquiporFuWen,
  712. [TriggerDefine.EQUIP_GETQUALITY] = HonorJourneyTask_GetEquiporFuWen,
  713. [TriggerDefine.FUWEN_RESET] = HonorJourneyTask_EvnentCommon,
  714. [TriggerDefine.EQUIP_REFINEMENT] = HonorJourneyTask_EvnentCommon,
  715. [TriggerDefine.HUMAN_LV_UP] = HonorJourneyTask_LvChange,
  716. [TriggerDefine.REALM_UPGRADE] = HonorJourneyTask_JingjieLvChange,
  717. [TriggerDefine.YJTREASURE_PASS_LEVEL] = HonorJourneyTask_EvnentCommon,
  718. [TriggerDefine.MIBAO_ACTIVATE] = HonorJourneyTask_ItemActivate,
  719. [TriggerDefine.YIWU_ACTIVATE] = HonorJourneyTask_ItemActivate,
  720. [TriggerDefine.ZHONGZU_LEVEL] = HonorJourneyTask_ItemActivate,
  721. [TriggerDefine.MIBAO_ALLSTAR] = HonorJourneyTask_EvnentCommon,
  722. [TriggerDefine.YIWU_ALLSTAR] = HonorJourneyTask_EvnentCommon,
  723. }
  724. end
  725. --订阅事件
  726. local function HonorJourney_SubEvent(uuid, nEventType)
  727. print("当前进入荣耀历程订阅事件 注册 nEventType = "..nEventType)
  728. TriggerLogic.SubscribeEvent(nEventType, uuid, HonorJourneyTask_EventCallBack)
  729. end
  730. local function HonorJourney_OnLoginSubEvent(human)
  731. if not human then
  732. print("[HonorJourney_OnLoginSubEvent] 不存在对应的人物, 订阅事件失败")
  733. return
  734. end
  735. local uuid = human.db._id
  736. HonorJourney_SubEvent(uuid, TriggerDefine.EVENT_TYPE_OPENBOX)
  737. HonorJourney_SubEvent(uuid, TriggerDefine.EVENT_TYPE_GETHERO)
  738. HonorJourney_SubEvent(uuid, TriggerDefine.FUWEN_HECHENG)
  739. HonorJourney_SubEvent(uuid, TriggerDefine.MOZHU_CHALLENGE)
  740. HonorJourney_SubEvent(uuid, TriggerDefine.ZHANBU_SYNTHESIS)
  741. HonorJourney_SubEvent(uuid, TriggerDefine.EVENT_TYPE_SHOPBUY)
  742. HonorJourney_SubEvent(uuid, TriggerDefine.GOLD_POINTS_NUM)
  743. HonorJourney_SubEvent(uuid, TriggerDefine.UNION_DONATE)
  744. HonorJourney_SubEvent(uuid, TriggerDefine.VOUCHER_BUY_NUM)
  745. HonorJourney_SubEvent(uuid, TriggerDefine.EVENT_TYPE_FATESUMMON)
  746. HonorJourney_SubEvent(uuid, TriggerDefine.EVENT_TYPE_ELITESUMMON)
  747. HonorJourney_SubEvent(uuid, TriggerDefine.FRIEND_COMBAT)
  748. HonorJourney_SubEvent(uuid, TriggerDefine.ZHANDOULI)
  749. HonorJourney_SubEvent(uuid, TriggerDefine.FENGHUANGLV)
  750. HonorJourney_SubEvent(uuid, TriggerDefine.CHAT_TIMES)
  751. HonorJourney_SubEvent(uuid, TriggerDefine.DRAGON_PEARL)
  752. HonorJourney_SubEvent(uuid, TriggerDefine.ANCIENTG_CHARGING)
  753. HonorJourney_SubEvent(uuid, TriggerDefine.FUWEN_GETQUALITY)
  754. HonorJourney_SubEvent(uuid, TriggerDefine.EQUIP_GETQUALITY)
  755. HonorJourney_SubEvent(uuid, TriggerDefine.EVENT_TYPE_SWEEP)
  756. -- 符文重铸次数
  757. HonorJourney_SubEvent(uuid, TriggerDefine.FUWEN_RESET)
  758. -- 装备洗练
  759. HonorJourney_SubEvent(uuid, TriggerDefine.EQUIP_REFINEMENT)
  760. -- 境界提升
  761. HonorJourney_SubEvent(uuid, TriggerDefine.REALM_UPGRADE)
  762. -- 遗迹探险层数
  763. HonorJourney_SubEvent(uuid, TriggerDefine.YJTREASURE_PASS_LEVEL)
  764. -- 秘宝激活
  765. HonorJourney_SubEvent(uuid, TriggerDefine.MIBAO_ACTIVATE)
  766. -- 遗物激活
  767. HonorJourney_SubEvent(uuid, TriggerDefine.YIWU_ACTIVATE)
  768. -- 种族试炼
  769. HonorJourney_SubEvent(uuid, TriggerDefine.ZHONGZU_LEVEL)
  770. -- 等级提升
  771. HonorJourney_SubEvent(uuid, TriggerDefine.HUMAN_LV_UP)
  772. HonorJourney_SubEvent(uuid, TriggerDefine.MIBAO_ALLSTAR)
  773. HonorJourney_SubEvent(uuid, TriggerDefine.YIWU_ALLSTAR)
  774. end
  775. -- 回调,增加次数
  776. function HonorJourneyTask_EventCallBack(nEventType, uuid, nValue1, nValue2)
  777. if not tEventHandler then
  778. Init()
  779. end
  780. if not tEventHandler or not tEventHandler[nEventType] then
  781. print("当前已经返回",nEventType)
  782. return
  783. end
  784. print("[HonorJourneyTask_EventCallBack] 触发事件回调 nEventType = "..nEventType.." nValue1 = "..nValue1)
  785. pcall(tEventHandler[nEventType], nEventType, uuid, nValue1, nValue2)
  786. print("[HonorJourneyTask_EventCallBack] 触发事件回调 处理结束 ")
  787. end
  788. function onLogin(human)
  789. print("当前进入荣耀历程登录")
  790. HonorJourneyTask_CheckCreateDB(human)
  791. HonorJourneyTask_CheckFinshTask(human)
  792. HonorJourney_OnLoginSubEvent(human)
  793. -- HonorJourneyTaskQuery(human, true)
  794. end
  795. function HonorJourney_GMClear(human)
  796. HonorJourneyTask_CreateDB(human)
  797. print("[HonorJourney_GMClear] 重置数据成功")
  798. end
  799. function HonorJourney_GMAddPoint(human, nAddPoint)
  800. HonorJourney_AddTaskPoint(human, nAddPoint)
  801. HonorJourney_CheckTaskPointStatus(human)
  802. end