HonorJourney.lua 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913
  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. --print("[HonorJourneyTaskQuery] nID = "..nID.." nState = "..nState.."\n")
  268. if CommonDefine.COMMON_PRIZE_STATE_GET ~= nState then
  269. local bSow = value.isVisiable == HONORJOURNEY_SHOWTASK and true or false
  270. -- 获取前置任务状态
  271. if nPreTaskID then
  272. local nPreTaskState = HonorJourney_GetTaskStatus(human, nPreTaskID)
  273. if CommonDefine.COMMON_PRIZE_STATE_GET == nPreTaskState then
  274. bSow = true
  275. else
  276. bSow = false
  277. end
  278. end
  279. --print("[HonorJourneyTaskQuery] nID = "..nID.." bSow = "..(bSow == true and 1 or 0))
  280. -- 能领取了都要显示出来
  281. -- if CommonDefine.COMMON_PRIZE_STATE_CANGET == nState then
  282. -- bSow = true
  283. -- end
  284. -- 显示才下发
  285. if true == bSow then
  286. cnt = cnt + 1
  287. msgRet.list[cnt].taskID = nID
  288. msgRet.list[cnt].desc = value.taskDesc
  289. msgRet.list[cnt].maxCnt = value.taskProcess
  290. local len = 0
  291. for i = 1, #value.reward do
  292. len = len + 1
  293. local itemId = value.reward[i][1]
  294. local itemCnt = value.reward[i][2]
  295. Grid.makeItem(msgRet.list[cnt].itemData[len], itemId, itemCnt)
  296. end
  297. msgRet.list[cnt].itemData[0] = len
  298. msgRet.list[cnt].jump = value.panelID or 0
  299. msgRet.list[cnt].finishCnt = HonorJourney_GetTaskFinishNum(human, nID)
  300. msgRet.list[cnt].isGet = (nState == CommonDefine.COMMON_PRIZE_STATE_GET) and 1 or 0
  301. if cnt >= 30 then
  302. msgRet.list[0] = cnt
  303. msgRet.nFirst = nFirst
  304. msgRet.nEnd = nSendLen == HONORJOURNEY_LEN and 1 or 0
  305. print("[HonorJourneyTaskQuery] 发送数据 cnt = "..cnt.." nFirst = "..nFirst.." nSendLen = "..nSendLen)
  306. Msg.send(msgRet, human.fd)
  307. nFirst = 0
  308. cnt = 0
  309. end
  310. end
  311. end
  312. end
  313. print("[HonorJourneyTaskQuery] 循环遍历结束 cnt = "..cnt.." nFirst = "..nFirst.." nSendLen = "..nSendLen)
  314. msgRet.list[0] = cnt
  315. msgRet.nFirst = nFirst
  316. msgRet.nEnd = 1
  317. print("[HonorJourneyTaskQuery] 最后一次发送数据 cnt = "..cnt.." nFirst = "..nFirst.." nSendLen = "..nSendLen)
  318. Msg.send(msgRet, human.fd)
  319. end
  320. function onHonorJourneyTaskHuoYue(human,sum)
  321. if not human.db.HonorJourney then return end
  322. human.db.HonorJourney.nowHuoYue = (human.db.HonorJourney.nowHuoYue or 0) + sum
  323. YunYingLogic.onCallBack(human, "onDailyTask",sum)
  324. end
  325. --统计奖励
  326. local function calcReward(human, awardCfg)
  327. for i = 1, #awardCfg do
  328. local itemId = awardCfg[i][1]
  329. local itemCnt = awardCfg[i][2]
  330. if itemId == ItemDefine.ITME_HUOYUE_ID then
  331. onHonorJourneyTaskHuoYue(human,itemCnt)
  332. else
  333. local newCnt = math.ceil(itemCnt)
  334. --BagLogic.updateMomentItem(2, itemId, itemCnt)
  335. BagLogic.updateMomentItem(2, itemId, newCnt)
  336. end
  337. end
  338. end
  339. function HonorJourneyTaskGetReward(human)
  340. if RoleSystemLogic.isOpen(human, RoleSystemDefine.ROLE_SYS_ID_803) ~= true then
  341. print("[HonorJourneyTaskGetReward] 未开启直接返回")
  342. return
  343. end
  344. -- print("[HonorJourneyTaskGetReward] 1111111")
  345. local tAddItem, nAddPoint = {}, 0
  346. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  347. local nState = HonorJourney_GetTaskStatus(human, nID)
  348. -- print("[HonorJourneyTaskGetReward] nID = "..nID.." nState = "..nState)
  349. if CommonDefine.COMMON_PRIZE_STATE_CANGET == nState then
  350. HonorJourney_SetTaskStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_GET)
  351. for _, tGoods in ipairs(v.reward) do
  352. local nGoodsID = tGoods[1]
  353. local nGoodsNum = tGoods[2]
  354. if not tAddItem[nGoodsID] and nGoodsID ~= ItemDefine.ITEM_HONOR_ID then
  355. tAddItem[nGoodsID] = 0
  356. end
  357. if nGoodsID ~= ItemDefine.ITEM_HONOR_ID then
  358. tAddItem[nGoodsID] = tAddItem[nGoodsID] + nGoodsNum
  359. else
  360. nAddPoint = nAddPoint + nGoodsNum
  361. end
  362. end
  363. -- nAddPoint = nAddPoint + v.taskCnt
  364. end
  365. end
  366. if nil ~= _G.next(tAddItem) then
  367. local tAddGoods = {}
  368. for nGoodsID, nGoodsNum in pairs(tAddItem) do
  369. table.insert(tAddGoods, {nGoodsID, nGoodsNum})
  370. end
  371. BagLogic.addItemList(human, tAddGoods, "honorjourney")
  372. -- 增加积分,并更新状态
  373. HonorJourney_AddTaskPoint(human, nAddPoint)
  374. HonorJourney_CheckTaskPointStatus(human)
  375. HonorJourneyTaskQuery(human)
  376. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  377. end
  378. end
  379. local function huoYueBoxCanGet(human,boxID)
  380. local HonorJourneyDB = human.db.HonorJourney
  381. if not HonorJourneyDB then return end
  382. local isGet = HonorJourneyDB.huoYueBox and HonorJourneyDB.huoYueBox[boxID] or 0
  383. if isGet ~= 0 then return end
  384. local nowHuoYue = HonorJourneyDB.nowHuoYue or 0
  385. local huoYueBoxConfig = HonorJourneyExcel.Reward[boxID]
  386. if nowHuoYue <= 0 or nowHuoYue < huoYueBoxConfig.needHuoYue then return end
  387. return true
  388. end
  389. -- 领取活跃宝箱
  390. function CG_HONORJOURNEYTASK_GET_HUOYUEBOX(human, nBoxID)
  391. local tConfig = HonorJourneyExcel.Reward[nBoxID]
  392. if not tConfig then
  393. return
  394. end
  395. local nNowPoint = HonorJourney_GetTaskPoint(human)
  396. if nNowPoint < tConfig.needcnt then
  397. return
  398. end
  399. local nState = HonorJourney_GetTaskPointPrize(human, nBoxID)
  400. if nState ~= CommonDefine.COMMON_PRIZE_STATE_CANGET then
  401. return
  402. end
  403. HonorJourney_SetTaskPointPrize(human, nBoxID, CommonDefine.COMMON_PRIZE_STATE_GET)
  404. BagLogic.addItemList(human, tConfig.reward, "honorjourney")
  405. HonorJourneyTaskQuery(human)
  406. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  407. end
  408. function isDot(human)
  409. -- 主界面的任务包含2个标签 每日任务/成就
  410. if RoleSystemLogic.isOpen(human, RoleSystemDefine.ROLE_SYS_ID_803) ~= true then
  411. print("[HonorJourney_isDot] 当前系统未开放直接返回false")
  412. return false
  413. end
  414. HonorJourneyTask_CheckCreateDB(human)
  415. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  416. local nState = HonorJourney_GetTaskStatus(human, nID)
  417. if nState == CommonDefine.COMMON_PRIZE_STATE_CANGET then
  418. return true
  419. end
  420. end
  421. for nID, v in ipairs(HonorJourneyExcel.Reward) do
  422. local nState = HonorJourney_GetTaskPointPrize(human, nID)
  423. if nState == CommonDefine.COMMON_PRIZE_STATE_CANGET then
  424. return true
  425. end
  426. end
  427. return false
  428. end
  429. -- 事件处理
  430. local tEventHandler = nil
  431. -- 起服处理
  432. local function HonorJourneyTask_EvnentCommon(nEventType, uuid, nValue, nArgumentType)
  433. print("当前进入荣耀历程增加次数..............................",nEventType, nArgumentType)
  434. local human = ObjHuman.onlineUuid[uuid]
  435. if not human then
  436. print("[HonorJourneyTask_EvnentCommon] 玩家不在线了? nEventType = "..nEventType)
  437. return
  438. end
  439. local tTaskID = getIDbyEventAndArgumentType(nEventType, nArgumentType)
  440. if nil ~= _G.next(tTaskID) then
  441. for _, nID in ipairs(tTaskID) do
  442. local nStatus = HonorJourney_GetTaskStatus(human, nID)
  443. if nStatus == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  444. HonorJourneyTask_AddTaskFinishNum(human,nID, nValue)
  445. HonorJourney_CheckTaskStatus(human, nID)
  446. end
  447. end
  448. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  449. end
  450. end
  451. local function HonorJourney_EvnentGetHero(nEventType, uuid, nValue1, nValue2)
  452. local human = ObjHuman.onlineUuid[uuid]
  453. if not human then
  454. print("[HonorJourney_EvnentGetHero] 不存在对应的人物直接返回 nEventType = "..nEventType.." uuid = "..uuid)
  455. return
  456. end
  457. local nNum = nValue1
  458. local nStar = nValue2
  459. print("[HonorJourney_EvnentGetHero] nEventType = "..nEventType.." nNum = "..nNum.." nStar = "..nStar.." name = "..human.db.name)
  460. local bCheck, nTaskID = false, 0
  461. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  462. if v.triggerType == nEventType then
  463. if not v.taskArgument or v.taskArgument == "" then
  464. print("[HonorJourney_EvnentGetHero] 获得英雄但是没有获取到对应的配置参数要求")
  465. else
  466. local tTaskArgument = Util.split(v.taskArgument , "|")
  467. table.print_lua_table(tTaskArgument)
  468. if 2 ~= #tTaskArgument then
  469. print("[HonorJourneyTask_EvnentGetHero] 获取的任务 参数数量不正确")
  470. else
  471. if nNum >= tonumber(tTaskArgument[1]) and nStar == tonumber(tTaskArgument[2]) then
  472. local nStatus = HonorJourney_GetTaskStatus(human, nID)
  473. if nStatus == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  474. HonorJourneyTask_AddTaskFinishNum(human, nID, 1)
  475. bCheck = true
  476. nTaskID = nID
  477. end
  478. break
  479. end
  480. end
  481. end
  482. end
  483. end
  484. --检查任务是否完成
  485. if true == bCheck then
  486. HonorJourney_CheckTaskStatus(human, nTaskID)
  487. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  488. end
  489. end
  490. -- 战斗力改变
  491. local function HonorJourney_PowerChange(nEventType, uuid, nValue1, nValue2)
  492. local human = ObjHuman.onlineUuid[uuid]
  493. if not human then
  494. return
  495. end
  496. local tTaksID = {}
  497. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  498. if v.triggerType == nEventType then
  499. local nState = HonorJourney_GetTaskStatus(human, nID)
  500. if nValue1 >= v.taskProcess and nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  501. table.insert(tTaksID, nID)
  502. end
  503. end
  504. end
  505. if tTaksID and nil ~= _G.next(tTaksID) then
  506. for _, nID in pairs(tTaksID) do
  507. HonorJourneyTask_SetTaskFinishNum(human, nID, nValue1)
  508. HonorJourney_CheckTaskStatus(human, nID)
  509. -- HonorJourney_SetTaskStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_CANGET)
  510. end
  511. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  512. end
  513. end
  514. -- 凤凰等级
  515. local function HonorJourney_FengHuangLv(nEventType, uuid, nValue1, nValue2)
  516. local human = ObjHuman.onlineUuid[uuid]
  517. if not human then
  518. return
  519. end
  520. local tTaksID = {}
  521. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  522. if v.triggerType == nEventType then
  523. local nState = HonorJourney_GetTaskStatus(human, nID)
  524. if nValue1 >= v.taskProcess and nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  525. table.insert(tTaksID, nID)
  526. end
  527. end
  528. end
  529. if tTaksID and nil ~= _G.next(tTaksID) then
  530. for _, nID in pairs(tTaksID) do
  531. HonorJourneyTask_SetTaskFinishNum(human, nID, nValue1)
  532. -- HonorJourney_SetTaskStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_CANGET)
  533. HonorJourney_CheckTaskStatus(human, nID)
  534. end
  535. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  536. end
  537. end
  538. -- 打开宝箱
  539. local function HonorJourney_OpenBox(nEventType, uuid, nValue1, nBoxType)
  540. print("[HonorJourney_OpenBox] 进入打开宝箱回调 nValue1 = "..nValue1.." nBoxType = "..nBoxType)
  541. local human = ObjHuman.onlineUuid[uuid]
  542. if not human then
  543. return
  544. end
  545. local tTaksID = {}
  546. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  547. if v.triggerType == nEventType then
  548. local nNeedBoxType = v.taskArgument
  549. local nState = HonorJourney_GetTaskStatus(human, nID)
  550. if nBoxType == nNeedBoxType and nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  551. table.insert(tTaksID, nID)
  552. end
  553. end
  554. end
  555. if tTaksID and nil ~= _G.next(tTaksID) then
  556. for _, nID in pairs(tTaksID) do
  557. HonorJourneyTask_AddTaskFinishNum(human, nID, nValue1)
  558. HonorJourney_CheckTaskStatus(human, nID)
  559. end
  560. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  561. else
  562. print("[HonorJourney_OpenBox] 不存在满足条件的任务")
  563. end
  564. end
  565. -- 获得装备或者符文
  566. local function HonorJourneyTask_GetEquiporFuWen(nEventType, uuid, nQuality, nNum)
  567. local human = ObjHuman.onlineUuid[uuid]
  568. if not human then
  569. return
  570. end
  571. print("[HonorJourneyTask_GetEquiporFuWen] nEventType = "..nEventType.." nQuality = "..nQuality.." nNum = "..nNum)
  572. local tTaksID = {}
  573. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  574. if v.triggerType == nEventType then
  575. local nState = HonorJourney_GetTaskStatus(human, nID)
  576. if nQuality == v.taskArgument and nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  577. table.insert(tTaksID, nID)
  578. end
  579. end
  580. end
  581. if tTaksID and nil ~= _G.next(tTaksID) then
  582. for _, nID in pairs(tTaksID) do
  583. print("[HonorJourneyTask_GetEquiporFuWen] 进行判断的任务ID = "..nID)
  584. HonorJourneyTask_AddTaskFinishNum(human, nID, nNum)
  585. HonorJourney_CheckTaskStatus(human, nID)
  586. end
  587. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  588. end
  589. end
  590. -- 秘宝或者遗物激活
  591. local function HonorJourneyTask_ItemActivate(nEventType, uuid, nItemID, nItemNum)
  592. local human = ObjHuman.onlineUuid[uuid]
  593. if not human then
  594. return
  595. end
  596. print("[HonorJourneyTask_ItemActivate] nEventType = "..nEventType.." nItemID = "..nItemID.." nItemNum = "..nItemNum)
  597. local tTaksID = {}
  598. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  599. if v.triggerType == nEventType then
  600. local nState = HonorJourney_GetTaskStatus(human, nID)
  601. if nItemID == v.taskArgument and nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  602. table.insert(tTaksID, nID)
  603. end
  604. end
  605. end
  606. if tTaksID and nil ~= _G.next(tTaksID) then
  607. for _, nID in pairs(tTaksID) do
  608. -- print("[HonorJourneyTask_ItemActivate] 进行判断的任务ID = "..nID)
  609. HonorJourneyTask_AddTaskFinishNum(human, nID, nItemNum)
  610. HonorJourney_CheckTaskStatus(human, nID)
  611. end
  612. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  613. end
  614. end
  615. -- 等级改变
  616. local function HonorJourneyTask_LvChange(nEventType, uuid, nValue1, nValue2)
  617. local human = ObjHuman.onlineUuid[uuid]
  618. if not human then
  619. return
  620. end
  621. print("[HonorJourneyTask_LvChange] nEventType = "..nEventType.." nValue1 = "..nValue1.." nValue2 = "..nValue2)
  622. local tTaksID = {}
  623. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  624. if v.triggerType == nEventType then
  625. local nState = HonorJourney_GetTaskStatus(human, nID)
  626. if nValue2 >= v.taskProcess and nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  627. table.insert(tTaksID, nID)
  628. end
  629. end
  630. end
  631. if tTaksID and nil ~= _G.next(tTaksID) then
  632. for _, nID in pairs(tTaksID) do
  633. -- print("[HonorJourneyTask_ItemActivate] 进行判断的任务ID = "..nID)
  634. HonorJourneyTask_SetTaskFinishNum(human, nID, nValue2)
  635. HonorJourney_CheckTaskStatus(human, nID)
  636. end
  637. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  638. end
  639. end
  640. -- 境界提升
  641. local function HonorJourneyTask_JingjieLvChange(nEventType, uuid, nValue1, nValue2)
  642. local human = ObjHuman.onlineUuid[uuid]
  643. if not human then
  644. return
  645. end
  646. print("[HonorJourneyTask_JingjieLvChange] nEventType = "..nEventType.." nValue1 = "..nValue1.." nValue2 = "..nValue2)
  647. local tTaksID = {}
  648. for nID, v in pairs(HonorJourneyExcel.HonorJourney) do
  649. if v.triggerType == nEventType then
  650. local nState = HonorJourney_GetTaskStatus(human, nID)
  651. if nValue2 >= v.taskArgument and nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  652. table.insert(tTaksID, nID)
  653. end
  654. end
  655. end
  656. if tTaksID and nil ~= _G.next(tTaksID) then
  657. for _, nID in pairs(tTaksID) do
  658. print("[HonorJourneyTask_JingjieLvChange] 进行判断的任务ID = "..nID)
  659. HonorJourneyTask_SetTaskFinishNum(human, nID, 1)
  660. HonorJourney_CheckTaskStatus(human, nID)
  661. end
  662. RoleSystemLogic.onDot(human, RoleSystemDefine.ROLE_SYS_ID_803)
  663. end
  664. end
  665. function Init()
  666. tEventHandler = {
  667. [TriggerDefine.CHAT_TIMES] = HonorJourneyTask_EvnentCommon,
  668. [TriggerDefine.FRIEND_COMBAT] = HonorJourneyTask_EvnentCommon,
  669. [TriggerDefine.EVENT_TYPE_FATESUMMON] = HonorJourneyTask_EvnentCommon,
  670. [TriggerDefine.EVENT_TYPE_OPENBOX] = HonorJourney_OpenBox,
  671. [TriggerDefine.EVENT_TYPE_GETHERO] = HonorJourney_EvnentGetHero,
  672. [TriggerDefine.EVENT_TYPE_SHOPBUY] = HonorJourneyTask_EvnentCommon,
  673. [TriggerDefine.EVENT_TYPE_ELITESUMMON] = HonorJourneyTask_EvnentCommon,
  674. [TriggerDefine.FUWEN_HECHENG] = HonorJourneyTask_EvnentCommon,
  675. [TriggerDefine.GOLD_POINTS_NUM] = HonorJourneyTask_EvnentCommon,
  676. [TriggerDefine.VOUCHER_BUY_NUM] = HonorJourneyTask_EvnentCommon,
  677. [TriggerDefine.DRAGON_PEARL] = HonorJourneyTask_EvnentCommon,
  678. [TriggerDefine.ANCIENTG_CHARGING] = HonorJourneyTask_EvnentCommon,
  679. [TriggerDefine.SECRET_REALM] = HonorJourneyTask_EvnentCommon,
  680. [TriggerDefine.ZHANDOULI] = HonorJourney_PowerChange,
  681. [TriggerDefine.FENGHUANGLV] = HonorJourney_FengHuangLv,
  682. [TriggerDefine.MOZHU_CHALLENGE] = HonorJourneyTask_EvnentCommon,
  683. [TriggerDefine.ZHANBU_SYNTHESIS] = HonorJourneyTask_EvnentCommon,
  684. [TriggerDefine.UNION_DONATE] = HonorJourneyTask_EvnentCommon,
  685. [TriggerDefine.EVENT_TYPE_SWEEP] = HonorJourneyTask_EvnentCommon,
  686. [TriggerDefine.FUWEN_GETQUALITY] = HonorJourneyTask_GetEquiporFuWen,
  687. [TriggerDefine.EQUIP_GETQUALITY] = HonorJourneyTask_GetEquiporFuWen,
  688. [TriggerDefine.FUWEN_RESET] = HonorJourneyTask_EvnentCommon,
  689. [TriggerDefine.EQUIP_REFINEMENT] = HonorJourneyTask_EvnentCommon,
  690. [TriggerDefine.HUMAN_LV_UP] = HonorJourneyTask_LvChange,
  691. [TriggerDefine.REALM_UPGRADE] = HonorJourneyTask_JingjieLvChange,
  692. [TriggerDefine.YJTREASURE_PASS_LEVEL] = HonorJourneyTask_ItemActivate,
  693. [TriggerDefine.MIBAO_ACTIVATE] = HonorJourneyTask_ItemActivate,
  694. [TriggerDefine.YIWU_ACTIVATE] = HonorJourneyTask_ItemActivate,
  695. [TriggerDefine.ZHONGZU_LEVEL] = HonorJourneyTask_ItemActivate,
  696. [TriggerDefine.MIBAO_ALLSTAR] = HonorJourneyTask_EvnentCommon,
  697. [TriggerDefine.YIWU_ALLSTAR] = HonorJourneyTask_EvnentCommon,
  698. }
  699. end
  700. --订阅事件
  701. local function HonorJourney_SubEvent(uuid, nEventType)
  702. print("当前进入荣耀历程订阅事件 注册 nEventType = "..nEventType)
  703. TriggerLogic.SubscribeEvent(nEventType, uuid, HonorJourneyTask_EventCallBack)
  704. end
  705. local function HonorJourney_OnLoginSubEvent(human)
  706. if not human then
  707. print("[HonorJourney_OnLoginSubEvent] 不存在对应的人物, 订阅事件失败")
  708. return
  709. end
  710. local uuid = human.db._id
  711. HonorJourney_SubEvent(uuid, TriggerDefine.EVENT_TYPE_OPENBOX)
  712. HonorJourney_SubEvent(uuid, TriggerDefine.EVENT_TYPE_GETHERO)
  713. HonorJourney_SubEvent(uuid, TriggerDefine.FUWEN_HECHENG)
  714. HonorJourney_SubEvent(uuid, TriggerDefine.MOZHU_CHALLENGE)
  715. HonorJourney_SubEvent(uuid, TriggerDefine.ZHANBU_SYNTHESIS)
  716. HonorJourney_SubEvent(uuid, TriggerDefine.EVENT_TYPE_SHOPBUY)
  717. HonorJourney_SubEvent(uuid, TriggerDefine.GOLD_POINTS_NUM)
  718. HonorJourney_SubEvent(uuid, TriggerDefine.UNION_DONATE)
  719. HonorJourney_SubEvent(uuid, TriggerDefine.VOUCHER_BUY_NUM)
  720. HonorJourney_SubEvent(uuid, TriggerDefine.EVENT_TYPE_FATESUMMON)
  721. HonorJourney_SubEvent(uuid, TriggerDefine.EVENT_TYPE_ELITESUMMON)
  722. HonorJourney_SubEvent(uuid, TriggerDefine.FRIEND_COMBAT)
  723. HonorJourney_SubEvent(uuid, TriggerDefine.ZHANDOULI)
  724. HonorJourney_SubEvent(uuid, TriggerDefine.FENGHUANGLV)
  725. HonorJourney_SubEvent(uuid, TriggerDefine.CHAT_TIMES)
  726. HonorJourney_SubEvent(uuid, TriggerDefine.DRAGON_PEARL)
  727. HonorJourney_SubEvent(uuid, TriggerDefine.ANCIENTG_CHARGING)
  728. HonorJourney_SubEvent(uuid, TriggerDefine.FUWEN_GETQUALITY)
  729. HonorJourney_SubEvent(uuid, TriggerDefine.EQUIP_GETQUALITY)
  730. HonorJourney_SubEvent(uuid, TriggerDefine.EVENT_TYPE_SWEEP)
  731. -- 符文重铸次数
  732. HonorJourney_SubEvent(uuid, TriggerDefine.FUWEN_RESET)
  733. -- 装备洗练
  734. HonorJourney_SubEvent(uuid, TriggerDefine.EQUIP_REFINEMENT)
  735. -- 境界提升
  736. HonorJourney_SubEvent(uuid, TriggerDefine.REALM_UPGRADE)
  737. -- 遗迹探险层数
  738. HonorJourney_SubEvent(uuid, TriggerDefine.YJTREASURE_PASS_LEVEL)
  739. -- 秘宝激活
  740. HonorJourney_SubEvent(uuid, TriggerDefine.MIBAO_ACTIVATE)
  741. -- 遗物激活
  742. HonorJourney_SubEvent(uuid, TriggerDefine.YIWU_ACTIVATE)
  743. -- 种族试炼
  744. HonorJourney_SubEvent(uuid, TriggerDefine.ZHONGZU_LEVEL)
  745. -- 等级提升
  746. HonorJourney_SubEvent(uuid, TriggerDefine.HUMAN_LV_UP)
  747. HonorJourney_SubEvent(uuid, TriggerDefine.MIBAO_ALLSTAR)
  748. HonorJourney_SubEvent(uuid, TriggerDefine.YIWU_ALLSTAR)
  749. end
  750. -- 回调,增加次数
  751. function HonorJourneyTask_EventCallBack(nEventType, uuid, nValue1, nValue2)
  752. if not tEventHandler then
  753. Init()
  754. end
  755. if not tEventHandler or not tEventHandler[nEventType] then
  756. print("当前已经返回",nEventType)
  757. return
  758. end
  759. print("[HonorJourneyTask_EventCallBack] 触发事件回调 nEventType = "..nEventType.." nValue1 = "..nValue1)
  760. pcall(tEventHandler[nEventType], nEventType, uuid, nValue1, nValue2)
  761. print("[HonorJourneyTask_EventCallBack] 触发事件回调 处理结束 ")
  762. end
  763. function onLogin(human)
  764. print("当前进入荣耀历程登录")
  765. HonorJourneyTask_CheckCreateDB(human)
  766. HonorJourneyTask_CheckFinshTask(human)
  767. HonorJourney_OnLoginSubEvent(human)
  768. -- HonorJourneyTaskQuery(human, true)
  769. end
  770. function HonorJourney_GMClear(human)
  771. HonorJourneyTask_CreateDB(human)
  772. print("[HonorJourney_GMClear] 重置数据成功")
  773. end
  774. function HonorJourney_GMAddPoint(human, nAddPoint)
  775. HonorJourney_AddTaskPoint(human, nAddPoint)
  776. HonorJourney_CheckTaskPointStatus(human)
  777. end