HonorJourney.lua 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657
  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. -- HonorJourney ={
  20. -- nPoint = 0, -- 荣耀积分
  21. -- TaskPrize = { -- 任务数据
  22. --[id] = {finishNum}
  23. --}
  24. --},
  25. -- TaskPointPrize = {}, -- 任务积分奖励
  26. -- }
  27. local HONORJOURNEY_SHOWTASK = 1 -- 显示任务
  28. local HONORJOURNEY_NOWSHOWTASK = 0 -- 非显示任务(需要完成前置任务)
  29. -- 初始化DB数据
  30. local function HonorJourneyTask_CreateDB(human)
  31. human.db.HonorJourney = {
  32. nPoint = 0, -- 荣耀积分
  33. TaskPointPrize = {}, -- 任务积分奖励
  34. TaskPrize = {
  35. --[[
  36. [nID] = {
  37. nFinishNum = xx,
  38. nState = 0
  39. }
  40. ]]
  41. }
  42. }
  43. local tTaskPrize = human.db.HonorJourney.TaskPrize
  44. local tConf = HonorJourneyExcel.HonorJourney
  45. for nID, v in ipairs(tConf) do
  46. if not tTaskPrize[nID] then
  47. tTaskPrize[nID] = {
  48. nFinishNum = 0,
  49. nState = CommonDefine.COMMON_PRIZE_STATE_NOGET
  50. }
  51. else
  52. print("[HonorJourneyTask_CreateDB] 配置了重复的奖励ID nID = "..nID)
  53. end
  54. end
  55. tConf = HonorJourneyExcel.Reward
  56. local tTaskPointPrize = human.db.HonorJourney.TaskPointPrize
  57. for nID, v in ipairs(tConf) do
  58. if not tTaskPointPrize[nID] then
  59. tTaskPointPrize[nID] = CommonDefine.COMMON_PRIZE_STATE_NOGET
  60. else
  61. print("[HonorJourneyTask_CreateDB] 配置了重复的奖励ID nID = "..nID)
  62. end
  63. end
  64. end
  65. -- 检测是否初始化DB数据
  66. local function HonorJourneyTask_CheckCreateDB(human)
  67. if human.db.HonorJourney and nil ~= _G.next(human.db.HonorJourney) then
  68. return
  69. end
  70. HonorJourneyTask_CreateDB(human)
  71. end
  72. -- 增加任务完成次数
  73. local function HonorJourneyTask_AddTaskFinishNum(human, nID, nValue)
  74. local tDBTaskPrize = human.db.HonorJourney.TaskPrize
  75. tDBTaskPrize[nID].nFinishNum = tDBTaskPrize[nID].nFinishNum + nValue
  76. end
  77. function HonorJourney_GetTaskCof()
  78. return HonorJourneyExcel
  79. end
  80. local function HonorJourneyTask_GetTaskDB(human)
  81. if not human.db.HonorJourney then
  82. HonorJourneyTask_CreateDB(human)
  83. end
  84. return human.db.HonorJourney
  85. end
  86. -- 获取任务完成次数
  87. local function HonorJourney_GetTaskFinishNum(human, nID)
  88. local tDBData = HonorJourneyTask_GetTaskDB(human)
  89. if not tDBData.TaskPrize[nID] then
  90. return 0
  91. end
  92. return tDBData.TaskPrize[nID].nFinishNum
  93. end
  94. -- 获取任务状态
  95. local function HonorJourney_GetTaskStatus(human, nID)
  96. local tDBData = HonorJourneyTask_GetTaskDB(human)
  97. if not tDBData.TaskPrize or not tDBData.TaskPrize[nID] or not tDBData.TaskPrize[nID].isget then
  98. return CommonDefine.COMMON_PRIZE_STATE_NOGET
  99. end
  100. return tDBData.TaskPrize[nID].nState
  101. end
  102. -- 设置任务状态
  103. local function HonorJourney_SetTaskStatus(human, nID, nValue)
  104. local tDBData = HonorJourneyTask_GetTaskDB(human)
  105. tDBData.TaskPrize[nID].nState = nValue
  106. end
  107. -- 获取任务累积奖励状态
  108. local function HonorJourney_GetTaskPointPrize(human, nID)
  109. local tDBData = HonorJourneyTask_GetTaskDB(human)
  110. if not tDBData.TaskPointPrize or not tDBData.TaskPointPrize[nID] then
  111. return CommonDefine.COMMON_PRIZE_STATE_NOGET
  112. end
  113. return tDBData.TaskPointPrize[nID]
  114. end
  115. -- 设置任务累积奖励状态
  116. local function HonorJourney_SetTaskPointPrize(human, nID, nValue)
  117. local tDBData = HonorJourneyTask_GetTaskDB(human)
  118. if not tDBData.TaskPointPrize or not tDBData.TaskPointPrize[nID] then
  119. return
  120. end
  121. tDBData.TaskPointPrize[nID] = nValue
  122. end
  123. -- 获取积分
  124. local function HonorJourney_GetTaskPoint(human)
  125. return human.db.HonorJourney.nPoint
  126. end
  127. -- 增加积分
  128. local function HonorJourney_AddTaskPoint(human, nPoint)
  129. human.db.HonorJourney.nPoint = human.db.HonorJourney.nPoint + nPoint
  130. end
  131. -- 检测任务状态
  132. function HonorJourney_CheckTaskStatus(human,nID)
  133. local nNowFinishNum = HonorJourney_GetTaskFinishNum(human, nID)
  134. local tConf = HonorJourneyExcel.HonorJourney[nID]
  135. if nNowFinishNum >= tConf.taskProcess then
  136. local nState = HonorJourney_GetTaskStatus(human, nID)
  137. if CommonDefine.COMMON_PRIZE_STATE_NOGET == nState then
  138. HonorJourney_SetTaskStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_CANGET)
  139. end
  140. end
  141. end
  142. -- 检测任务积分奖励状态
  143. local function HonorJourney_CheckTaskPointStatus(human)
  144. local nNowPoint = HonorJourney_GetTaskPoint(human)
  145. for nID, v in ipairs(HonorJourneyExcel.Reward) do
  146. if v.needcnt > nNowPoint then
  147. break
  148. end
  149. local nState = HonorJourney_GetTaskPointPrize(human, nID)
  150. if nState == CommonDefine.COMMON_PRIZE_STATE_NOGET and nNowPoint >= v.needcnt then
  151. HonorJourney_SetTaskPointPrize(human, nID, CommonDefine.COMMON_PRIZE_STATE_CANGET)
  152. end
  153. end
  154. end
  155. local function getIDbyEventAndArgumentType(nEventType, nArgumentType)
  156. local tTaskID = {}
  157. for id,cfg in pairs(HonorJourneyExcel.HonorJourney) do
  158. if cfg.triggerType == nEventType then
  159. if nArgumentType then
  160. local argumentNum = tonumber(string.sub(tostring(cfg.taskArgument), -1))
  161. if nArgumentType == argumentNum then
  162. table.insert(tTaskID, id)
  163. end
  164. else
  165. table.insert(tTaskID, id)
  166. end
  167. end
  168. end
  169. return tTaskID
  170. end
  171. -- 获取前置任务
  172. local function HonorJourney_Gettaskpre(id)
  173. if not id or not HonorJourneyExcel.HonorJourney or not HonorJourneyExcel.HonorJourney[id] then
  174. return nil
  175. end
  176. local taskPre = HonorJourneyExcel.HonorJourney[id].taskPre
  177. if type(taskPre) ~= "number" then
  178. return nil
  179. end
  180. return taskPre
  181. end
  182. function HonorJourneyTaskQuery(human, isOnLogin)
  183. print("当前进入荣耀历程查询")
  184. local sendErr = isOnLogin == false and true or false
  185. if RoleSystemLogic.isOpen(human, RoleSystemDefine.ROLE_SYS_ID_801, sendErr) ~= true then
  186. return
  187. end
  188. print("1111111111111111111111111111111")
  189. local HonorJourneyConfig = HonorJourneyExcel.HonorJourney
  190. if not HonorJourneyConfig then return end
  191. local data = human and human.db and human.db.HonorJourney
  192. local msgRet = Msg.gc.GC_HONORJOURNEY_QUERY
  193. local cnt = 0
  194. for nID, value in pairs(HonorJourneyConfig) do
  195. local nPreTaskID = HonorJourney_Gettaskpre(nID)
  196. -- 临时测试代码,解决老号问题
  197. if not human.db.HonorJourney.TaskPrize or not human.db.HonorJourney.TaskPrize[nID] or not human.db.HonorJourney.TaskPrize[nID].nState then
  198. HonorJourneyTask_CreateDB(human)
  199. end
  200. local nState = HonorJourney_GetTaskStatus(human, nID)
  201. local nFinishNum = HonorJourney_GetTaskFinishNum(human, nID)
  202. print("[HonorJourneyTaskQuery] nID = "..nID.." nState = "..nState.." nFinishNum = "..nFinishNum.." maxCnt = "..value.taskProcess)
  203. if CommonDefine.COMMON_PRIZE_STATE_GET ~= nState then
  204. local bSow = true
  205. -- 获取前置任务状态
  206. if nPreTaskID then
  207. local nPreTaskState = HonorJourney_GetTaskStatus(human, nPreTaskID)
  208. print("[HonorJourneyTaskQuery] 存在前置任务 nID = "..nID.." nPreTaskID = "..nPreTaskID.." nPreTaskState = "..nPreTaskState)
  209. if CommonDefine.COMMON_PRIZE_STATE_NOGET == nPreTaskState then
  210. bSow = false
  211. end
  212. end
  213. -- 显示才下发
  214. if value.isVisiable == HONORJOURNEY_SHOWTASK or true == bSow then
  215. cnt = cnt + 1
  216. msgRet.list[cnt].taskID = nID
  217. msgRet.list[cnt].desc = value.taskDesc
  218. msgRet.list[cnt].maxCnt = value.taskProcess
  219. local len = 0
  220. for i = 1, #value.reward do
  221. len = len + 1
  222. local itemId = value.reward[i][1]
  223. local itemCnt = value.reward[i][2]
  224. Grid.makeItem(msgRet.list[cnt].itemData[len], itemId, itemCnt)
  225. end
  226. msgRet.list[cnt].itemData[0] = len
  227. msgRet.list[cnt].jump = value.panelID or 0
  228. msgRet.list[cnt].finishCnt = HonorJourney_GetTaskFinishNum(human, nID)
  229. msgRet.list[cnt].isGet = (nState == CommonDefine.COMMON_PRIZE_STATE_CANGET) and 1 or 0
  230. end
  231. end
  232. end
  233. msgRet.list[0] = cnt
  234. local huoYueBoxConfig = HonorJourneyExcel.Reward
  235. local nNowPoint = HonorJourney_GetTaskPoint(human)
  236. msgRet.nowHuoYue = nNowPoint
  237. msgRet.huoYueBox[0] = 1
  238. local ret = 1
  239. -- 初始化box数据结构
  240. for nID, v in ipairs(HonorJourneyExcel.Reward) do
  241. local nState = HonorJourney_GetTaskPointPrize(human, nID)
  242. if nState ~= CommonDefine.COMMON_PRIZE_STATE_GET then
  243. msgRet.huoYueBox[ret].boxID = nID
  244. msgRet.huoYueBox[ret].needHuoYue = v.needcnt
  245. msgRet.huoYueBox[ret].items[0] = 1 -- 现在每个box只有1个奖励
  246. local itemID = v.reward[1]
  247. local itemCnt = v.reward[2]
  248. Grid.makeItem(msgRet.huoYueBox[ret].items[1], itemID, itemCnt)
  249. msgRet.huoYueBox[ret].isGet = 0
  250. break
  251. end
  252. end
  253. -- table.print_lua_table(msgRet)
  254. print("荣耀历程数据查询成功!")
  255. --Msg.trace(msgRet)
  256. Msg.send(msgRet, human.fd)
  257. print("协议下发成功!")
  258. end
  259. function onHonorJourneyTaskHuoYue(human,sum)
  260. if not human.db.HonorJourney then return end
  261. human.db.HonorJourney.nowHuoYue = (human.db.HonorJourney.nowHuoYue or 0) + sum
  262. YunYingLogic.onCallBack(human, "onDailyTask",sum)
  263. end
  264. --统计奖励
  265. local function calcReward(human, awardCfg)
  266. for i = 1, #awardCfg do
  267. local itemId = awardCfg[i][1]
  268. local itemCnt = awardCfg[i][2]
  269. if itemId == ItemDefine.ITME_HUOYUE_ID then
  270. onHonorJourneyTaskHuoYue(human,itemCnt)
  271. else
  272. local newCnt = math.ceil(itemCnt)
  273. --BagLogic.updateMomentItem(2, itemId, itemCnt)
  274. BagLogic.updateMomentItem(2, itemId, newCnt)
  275. end
  276. end
  277. end
  278. function HonorJourneyTaskGetReward(human)
  279. if RoleSystemLogic.isOpen(human, RoleSystemDefine.ROLE_SYS_ID_801) ~= true then
  280. print("[HonorJourneyTaskGetReward] 未开启直接返回")
  281. return
  282. end
  283. print("[HonorJourneyTaskGetReward] 1111111")
  284. local tAddItem, nAddPoint = {}, 0
  285. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  286. local nState = HonorJourney_GetTaskStatus(human, nID)
  287. print("[HonorJourneyTaskGetReward] nID = "..nID.." nState = "..nState)
  288. if CommonDefine.COMMON_PRIZE_STATE_CANGET == nState then
  289. HonorJourney_SetTaskStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_GET)
  290. for _, tGoods in ipairs(v.reward) do
  291. local nGoodsID = tGoods[1]
  292. local nGoodsNum = tGoods[2]
  293. if not tAddItem[nGoodsID] then
  294. tAddItem[nGoodsID] = 0
  295. end
  296. tAddItem[nGoodsID] = tAddItem[nGoodsID] + nGoodsNum
  297. end
  298. nAddPoint = nAddPoint + v.taskCnt
  299. end
  300. end
  301. print("[HonorJourneyTaskGetReward] 22222")
  302. if nil ~= _G.next(tAddItem) then
  303. print("[HonorJourneyTaskGetReward] 333333")
  304. local tAddGoods = {}
  305. for nGoodsID, nGoodsNum in pairs(tAddItem) do
  306. table.insert(tAddGoods, {nGoodsID, nGoodsNum})
  307. end
  308. BagLogic.addItemList(human, tAddGoods, "honorjourney")
  309. -- 增加积分,并更新状态
  310. HonorJourney_AddTaskPoint(human, nAddPoint)
  311. HonorJourney_CheckTaskPointStatus(human)
  312. HonorJourneyTaskQuery(human)
  313. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_801)
  314. end
  315. end
  316. local function huoYueBoxCanGet(human,boxID)
  317. local HonorJourneyDB = human.db.HonorJourney
  318. if not HonorJourneyDB then return end
  319. local isGet = HonorJourneyDB.huoYueBox and HonorJourneyDB.huoYueBox[boxID] or 0
  320. if isGet ~= 0 then return end
  321. local nowHuoYue = HonorJourneyDB.nowHuoYue or 0
  322. local huoYueBoxConfig = HonorJourneyExcel.Reward[boxID]
  323. if nowHuoYue <= 0 or nowHuoYue < huoYueBoxConfig.needHuoYue then return end
  324. return true
  325. end
  326. -- 领取活跃宝箱
  327. function CG_HONORJOURNEYTASK_GET_HUOYUEBOX(human, nBoxID)
  328. local tConfig = HonorJourneyExcel.Reward[nBoxID]
  329. if not tConfig then
  330. return
  331. end
  332. local nNowPoint = HonorJourney_GetTaskPoint(human)
  333. if nNowPoint < tConfig.needcnt then
  334. return
  335. end
  336. local nState = HonorJourney_GetTaskPointPrize(human, nBoxID)
  337. if nState ~= CommonDefine.COMMON_PRIZE_STATE_CANGET then
  338. return
  339. end
  340. HonorJourney_SetTaskPointPrize(human, nBoxID, CommonDefine.COMMON_PRIZE_STATE_GET)
  341. local tAddItem =
  342. {
  343. {tConfig.reward[1], tConfig.reward[2],}
  344. }
  345. BagLogic.addItemList(human, tAddItem, "honorjourney")
  346. HonorJourneyTaskQuery(human)
  347. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_801)
  348. end
  349. function isDot(human)
  350. -- 主界面的任务包含2个标签 每日任务/成就
  351. if RoleSystemLogic.isOpen(human, RoleSystemDefine.ROLE_SYS_ID_801) ~= true then
  352. return false
  353. end
  354. HonorJourneyTask_CheckCreateDB(human)
  355. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  356. local nState = HonorJourney_GetTaskStatus(human, nID)
  357. if nState == CommonDefine.COMMON_PRIZE_STATE_CANGET then
  358. return true
  359. end
  360. end
  361. for nID, v in ipairs(HonorJourneyExcel.Reward) do
  362. local nState = HonorJourney_GetTaskPointPrize(human, nID)
  363. if nState == CommonDefine.COMMON_PRIZE_STATE_CANGET then
  364. return true
  365. end
  366. end
  367. return false
  368. end
  369. -- 事件处理
  370. local tEventHandler = nil
  371. -- 起服处理
  372. local function HonorJourneyTask_EvnentCommon(nEventType, uuid, nValue, nArgumentType)
  373. print("当前进入荣耀历程增加次数..............................",nArgumentType)
  374. local human = ObjHuman.onlineUuid[uuid]
  375. if not human then
  376. print("[HonorJourneyTask_EvnentCommon] 玩家不在线了? nEventType = "..nEventType)
  377. return
  378. end
  379. local tTaskID = getIDbyEventAndArgumentType(nEventType,nArgumentType)
  380. if nil ~= _G.next(tTaskID) then
  381. for _, nID in ipairs(tTaskID) do
  382. HonorJourneyTask_AddTaskFinishNum(human,nID, nValue)
  383. HonorJourney_CheckTaskStatus(human, nID)
  384. end
  385. end
  386. end
  387. local function HonorJourney_EvnentGetHero(nEventType, uuid, nValue1, nValue2)
  388. local human = ObjHuman.onlineUuid[uuid]
  389. if not human then
  390. return
  391. end
  392. local nNum = nValue1
  393. local nStar = nValue2
  394. print("[HonorJourney_EvnentGetHero] nEventType = "..nEventType.." nNum = "..nNum.." nStar = "..nStar.." name = "..human.db.name)
  395. local bCheck, nTaskID = false, 0
  396. local tConf = HonorJourney_GetTaskCof()
  397. for nID, v in ipairs(tConf) do
  398. if v.triggerType == nEventType then
  399. if not v.taskArgument or v.taskArgument == "" then
  400. print("[HonorJourney_EvnentGetHero] 获得英雄但是没有获取到对应的配置参数要求")
  401. else
  402. local tTaskArgument = Util.split(v.taskArgument , "|")
  403. table.print_lua_table(tTaskArgument)
  404. if 2 ~= #tTaskArgument then
  405. print("[HonorJourneyTask_EvnentGetHero] 获取的任务 参数数量不正确")
  406. else
  407. if nNum >= tonumber(tTaskArgument[1]) and nStar == tonumber(tTaskArgument[2]) then
  408. HonorJourneyTask_AddTaskFinishNum(human, nID, 1)
  409. bCheck = true
  410. nTaskID = nID
  411. break
  412. end
  413. end
  414. end
  415. end
  416. end
  417. --检查任务是否完成
  418. if true == bCheck then
  419. HonorJourney_CheckTaskStatus(human, nTaskID)
  420. end
  421. end
  422. -- 战斗力改变
  423. local function HonorJourney_PowerChange(nEventType, uuid, nValue1, nValue2)
  424. local human = ObjHuman.onlineUuid[uuid]
  425. if not human then
  426. return
  427. end
  428. local tTaksID = {}
  429. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  430. if v.triggerType == nEventType then
  431. local nState = HonorJourney_GetTaskStatus(human, nID)
  432. if nValue1 >= v.taskProcess and nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  433. table.insert(tTaksID, nID)
  434. end
  435. end
  436. end
  437. if tTaksID and nil ~= _G.next(tTaksID) then
  438. for _, nID in pairs(tTaksID) do
  439. HonorJourneyTask_AddTaskFinishNum(human, nID, nValue1)
  440. HonorJourney_SetTaskStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_CANGET)
  441. end
  442. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_801)
  443. end
  444. end
  445. -- 凤凰等级
  446. local function HonorJourney_FengHuangLv(nEventType, uuid, nValue1, nValue2)
  447. local human = ObjHuman.onlineUuid[uuid]
  448. if not human then
  449. return
  450. end
  451. local tTaksID = {}
  452. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  453. if v.triggerType == nEventType then
  454. local nState = HonorJourney_GetTaskStatus(human, nID)
  455. if nValue1 >= v.taskProcess and nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  456. table.insert(tTaksID, nID)
  457. end
  458. end
  459. end
  460. if tTaksID and nil ~= _G.next(tTaksID) then
  461. for _, nID in pairs(tTaksID) do
  462. HonorJourneyTask_AddTaskFinishNum(human, nID, nValue1)
  463. HonorJourney_SetTaskStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_CANGET)
  464. end
  465. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_801)
  466. end
  467. end
  468. -- 打开宝箱
  469. local function HonorJourney_OpenBox(nEventType, uuid, nValue1, nBoxType)
  470. local human = ObjHuman.onlineUuid[uuid]
  471. if not human then
  472. return
  473. end
  474. local tTaksID = {}
  475. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  476. if v.triggerType == nEventType then
  477. local nNeedBoxType = v.taskArgument
  478. local nState = HonorJourney_GetTaskStatus(human, nID)
  479. if nBoxType == nNeedBoxType and nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  480. table.insert(tTaksID, nID)
  481. end
  482. end
  483. end
  484. if tTaksID and nil ~= _G.next(tTaksID) then
  485. for _, nID in pairs(tTaksID) do
  486. HonorJourneyTask_AddTaskFinishNum(human, nID, nValue1)
  487. HonorJourney_CheckTaskStatus(human, nID)
  488. end
  489. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_801)
  490. end
  491. end
  492. function Init()
  493. tEventHandler = {
  494. [TriggerDefine.CHAT_TIMES] = HonorJourneyTask_EvnentCommon,
  495. [TriggerDefine.FRIEND_COMBAT] = HonorJourneyTask_EvnentCommon,
  496. [TriggerDefine.EVENT_TYPE_FATESUMMON] = HonorJourneyTask_EvnentCommon,
  497. [TriggerDefine.EVENT_TYPE_OPENBOX] = HonorJourney_OpenBox,
  498. [TriggerDefine.EVENT_TYPE_GETHERO] = HonorJourney_EvnentGetHero,
  499. [TriggerDefine.EVENT_TYPE_SHOPBUY] = HonorJourneyTask_EvnentCommon,
  500. [TriggerDefine.EVENT_TYPE_ELITESUMMON] = HonorJourneyTask_EvnentCommon,
  501. [TriggerDefine.FUWEN_HECHENG] = HonorJourneyTask_EvnentCommon,
  502. [TriggerDefine.GOLD_POINTS_NUM] = HonorJourneyTask_EvnentCommon,
  503. [TriggerDefine.VOUCHER_BUY_NUM] = HonorJourneyTask_EvnentCommon,
  504. [TriggerDefine.DRAGON_PEARL] = HonorJourneyTask_EvnentCommon,
  505. [TriggerDefine.ANCIENTG_CHARGING] = HonorJourneyTask_EvnentCommon,
  506. [TriggerDefine.SECRET_REALM] = HonorJourneyTask_EvnentCommon,
  507. [TriggerDefine.ZHANDOULI] = HonorJourney_PowerChange,
  508. [TriggerDefine.FENGHUANGLV] = HonorJourney_FengHuangLv,
  509. [TriggerDefine.MOZHU_CHALLENGE] = HonorJourneyTask_EvnentCommon,
  510. [TriggerDefine.ZHANBU_SYNTHESIS] = HonorJourneyTask_EvnentCommon,
  511. [TriggerDefine.UNION_DONATE] = HonorJourneyTask_EvnentCommon,
  512. }
  513. end
  514. --订阅事件
  515. local function HonorJourney_SubEvent(uuid, nEventType)
  516. print("当前进入荣耀历程订阅事件")
  517. TriggerLogic.SubscribeEvent(nEventType, uuid, HonorJourneyTask_EventCallBack)
  518. end
  519. local function HonorJourney_OnLoginSubEvent(human)
  520. if not human then
  521. print("[HonorJourney_OnLoginSubEvent] 不存在对应的人物, 订阅事件失败")
  522. return
  523. end
  524. local uuid = human.db._id
  525. HonorJourney_SubEvent(uuid, TriggerDefine.EVENT_TYPE_OPENBOX)
  526. HonorJourney_SubEvent(uuid, TriggerDefine.EVENT_TYPE_GETHERO)
  527. HonorJourney_SubEvent(uuid, TriggerDefine.FUWEN_HECHENG)
  528. HonorJourney_SubEvent(uuid, TriggerDefine.MOZHU_CHALLENGE)
  529. HonorJourney_SubEvent(uuid, TriggerDefine.ZHANBU_SYNTHESIS)
  530. HonorJourney_SubEvent(uuid, TriggerDefine.EVENT_TYPE_SHOPBUY)
  531. HonorJourney_SubEvent(uuid, TriggerDefine.GOLD_POINTS_NUM)
  532. HonorJourney_SubEvent(uuid, TriggerDefine.UNION_DONATE)
  533. HonorJourney_SubEvent(uuid, TriggerDefine.VOUCHER_BUY_NUM)
  534. HonorJourney_SubEvent(uuid, TriggerDefine.EVENT_TYPE_FATESUMMON)
  535. HonorJourney_SubEvent(uuid, TriggerDefine.EVENT_TYPE_ELITESUMMON)
  536. HonorJourney_SubEvent(uuid, TriggerDefine.FRIEND_COMBAT)
  537. HonorJourney_SubEvent(uuid, TriggerDefine.ZHANDOULI)
  538. HonorJourney_SubEvent(uuid, TriggerDefine.FENGHUANGLV)
  539. HonorJourney_SubEvent(uuid, TriggerDefine.CHAT_TIMES)
  540. HonorJourney_SubEvent(uuid, TriggerDefine.DRAGON_PEARL)
  541. HonorJourney_SubEvent(uuid, TriggerDefine.ANCIENTG_CHARGING)
  542. end
  543. -- 回调,增加次数
  544. function HonorJourneyTask_EventCallBack(nEventType, uuid, nValue1, nValue2)
  545. -- if not tEventHandler then
  546. -- Init()
  547. -- end
  548. -- if not tEventHandler or not tEventHandler[nEventType] then
  549. -- print("当前已经返回",nEventType)
  550. -- return
  551. -- end
  552. -- pcall(tEventHandler[nEventType], nEventType, uuid, nValue1, nValue2)
  553. end
  554. function onLogin(human)
  555. print("当前进入荣耀历程登录")
  556. -- HonorJourneyTask_CheckCreateDB(human)
  557. -- HonorJourney_OnLoginSubEvent(human)
  558. -- HonorJourneyTaskQuery(human, true)
  559. end