HonorJourney.lua 29 KB

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