HonorJourney.lua 34 KB

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