HonorJourney.lua 27 KB

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