HonorJourney.lua 27 KB

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