BusThreeActTask.lua 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577
  1. --------------------------------
  2. -- 文件名 : BusThreeActTask.lua
  3. -- 文件说明 : 新商业活动3-任务
  4. -- 创建时间 : 2025/09/02
  5. -- 创建人 : FC
  6. --------------------------------
  7. local Util = require("common.Util")
  8. local Msg = require("core.Msg")
  9. local Grid = require("bag.Grid")
  10. local BagLogic = require("bag.BagLogic")
  11. local CommonDefine = require("common.CommonDefine")
  12. local BusThreeActConf = require("excel.BusThreeActivity")
  13. local ObjHuman = require("core.ObjHuman")
  14. local TriggerDefine = require("trigger.TriggerDefine")
  15. local TriggerLogic = require("trigger.TriggerLogic")
  16. local ServerCommerceManager = require("serverCommerce.ServerCommerceManager")
  17. local AbsActLogic = require("absAct.AbsActLogic")
  18. local Broadcast = require("broadcast.Broadcast")
  19. local Lang = require("common.Lang")
  20. local YunYingLogic = require("yunying.YunYingLogic")
  21. local AbsActExcel = require("excel.absAct")
  22. local BUSTHREETASKABSID = 7401 -- 对应ABS活动ID
  23. ----------------------------------------- 内部处理开始 -------------------------------------
  24. -- 配置
  25. local function BusThreeActTask_GetTaskCof()
  26. return BusThreeActConf.Task
  27. end
  28. local function BusThreeActTask_GetTaskPointCof()
  29. return BusThreeActConf.TaskPoint
  30. end
  31. -- 订阅事件
  32. local function BusThreeActTask_SubEvent(uuid, nEventType)
  33. TriggerLogic.SubscribeEvent(nEventType, uuid, BusThreeActTask_EventCallBack)
  34. end
  35. -- 创建DB数据
  36. local function CreatDB(human)
  37. human.db.absAct[BUSTHREETASKABSID].Task = {
  38. nTaskPoint = 0, -- 任务积分
  39. TaskPrize = {}, -- 任务数据
  40. TaskPointPrize = {}, -- 任务积分奖励
  41. }
  42. local tConf = BusThreeActTask_GetTaskCof()
  43. local tEvnetType = {}
  44. local tDBTask = human.db.absAct[BUSTHREETASKABSID].Task.TaskPrize
  45. for nID, v in ipairs(tConf) do
  46. if not tDBTask[v.nTaskType] then
  47. tDBTask[v.nTaskType] = {
  48. nFinishNum = 0, -- 完成次数
  49. taskStatus = {}, -- 任务状态
  50. }
  51. end
  52. tDBTask[v.nTaskType].taskStatus[nID] = CommonDefine.COMMON_PRIZE_STATE_NOGET
  53. if not tEvnetType[v.nTaskType] then
  54. BusThreeActTask_SubEvent(human.db._id, v.nTaskType)
  55. tEvnetType[v.nTaskType] = 1
  56. end
  57. end
  58. tConf = BusThreeActTask_GetTaskPointCof()
  59. local tDBTaskPointPrize = human.db.absAct[BUSTHREETASKABSID].Task.TaskPointPrize
  60. for nID, v in pairs(tConf) do
  61. if not tDBTaskPointPrize[nID] then
  62. tDBTaskPointPrize[nID] = CommonDefine.COMMON_PRIZE_STATE_NOGET
  63. end
  64. end
  65. print("[BusThreeActTask_CreatDB] 战区任务 初始化数据完成 name = "..human.db.name)
  66. return true
  67. end
  68. local function CheckAndCreatDB(human)
  69. if not human.db.absAct[BUSTHREETASKABSID] or nil == _G.next(human.db.absAct[BUSTHREETASKABSID])
  70. or not human.db.absAct[BUSTHREETASKABSID].Task then
  71. CreatDB(human)
  72. end
  73. end
  74. -- 获取任务奖励DB数据
  75. local function BusThreeActTask_GetTaskDB(human)
  76. if not human.db.absAct[BUSTHREETASKABSID].Task then
  77. human.db.absAct[BUSTHREETASKABSID].Task = {}
  78. CreatDB(human)
  79. end
  80. return human.db.absAct[BUSTHREETASKABSID].Task
  81. end
  82. -- 获取任务状态
  83. local function BusThreeActTask_GetTaskStatus(human, nID, nTaskType)
  84. local tDBData = BusThreeActTask_GetTaskDB(human)
  85. if not tDBData.TaskPrize or not tDBData.TaskPrize[nTaskType] or not tDBData.TaskPrize[nTaskType].taskStatus[nID] then
  86. print("[BusThreeActTask_GetTaskStatus] 不存在对应的DB数据!!! 没有初始化吗?")
  87. return CommonDefine.COMMON_PRIZE_STATE_NOGET
  88. end
  89. return tDBData.TaskPrize[nTaskType].taskStatus[nID]
  90. end
  91. -- 设置任务状态
  92. local function BusThreeActTask_SetTaskStatus(human, nID, nTaskType, nValue)
  93. local tDBData = BusThreeActTask_GetTaskDB(human)
  94. tDBData.TaskPrize[nTaskType].taskStatus[nID] = nValue
  95. end
  96. -- 获取任务完成次数
  97. local function BusThreeActTask_GetTaskFinishNum(human, nTaskType)
  98. local tDBData = BusThreeActTask_GetTaskDB(human)
  99. if not tDBData.TaskPrize[nTaskType] then
  100. return -1
  101. end
  102. return tDBData.TaskPrize[nTaskType].nFinishNum
  103. end
  104. -- 增加任务完成次数
  105. local function BusThreeActTask_AddTaskFinishNum(human, nTaskType, nAddNum)
  106. local tDBData = BusThreeActTask_GetTaskDB(human)
  107. if not tDBData.TaskPrize[nTaskType] then
  108. return
  109. end
  110. tDBData.TaskPrize[nTaskType].nFinishNum = tDBData.TaskPrize[nTaskType].nFinishNum + nAddNum
  111. end
  112. -- 获取任务积分
  113. local function BusThreeActTask_GetTaskPoint(human)
  114. local tDBData = BusThreeActTask_GetTaskDB(human)
  115. return tDBData.nTaskPoint
  116. end
  117. -- 增加任务积分
  118. local function BusThreeActTask_AddTaskPoint(human, nPoint)
  119. local tDBData = BusThreeActTask_GetTaskDB(human)
  120. tDBData.nTaskPoint = tDBData.nTaskPoint + nPoint
  121. end
  122. -- 获取任务积分奖励状态
  123. local function BusThreeActTask_GetTaskPointPrizeStatus(human, nID)
  124. local tDBData = BusThreeActTask_GetTaskDB(human)
  125. if not tDBData.TaskPointPrize or not tDBData.TaskPointPrize[nID] then
  126. return CommonDefine.COMMON_PRIZE_STATE_NOGET
  127. end
  128. return tDBData.TaskPointPrize[nID]
  129. end
  130. -- 设置 任务积分奖励状态
  131. local function BusThreeActTask_SetTaskPointPrizeStatus(human, nID, nValue)
  132. local tDBData = BusThreeActTask_GetTaskDB(human)
  133. tDBData.TaskPointPrize[nID] = nValue
  134. end
  135. -- 检查任务是否完成
  136. local function BusThreeActTask_CheckTaskStatus(human, nTaskType)
  137. local tConf = BusThreeActTask_GetTaskCof()
  138. local nNowFinishNum = BusThreeActTask_GetTaskFinishNum(human, nTaskType)
  139. local nDay
  140. local bSendRed = false
  141. for nID, v in ipairs(tConf) do
  142. if v.nTaskType == nTaskType then
  143. if nNowFinishNum >= v.nValue then
  144. local nState = BusThreeActTask_GetTaskStatus(human, nID, nTaskType)
  145. if CommonDefine.COMMON_PRIZE_STATE_NOGET == nState then
  146. bSendRed = true
  147. BusThreeActTask_SetTaskStatus(human, nID, v.nTaskType, CommonDefine.COMMON_PRIZE_STATE_CANGET)
  148. -- BusThreeActTask_AddPoint(human, 1)
  149. if not nDay then
  150. nDay = v.nDay
  151. end
  152. end
  153. else
  154. break
  155. end
  156. end
  157. end
  158. if true == bSendRed then
  159. YunYingLogic.sendBanner(human)
  160. local config = AbsActExcel.absActivity[BUSTHREETASKABSID]
  161. YunYingLogic.sendGroupUpdate(YYInfo[BUSTHREETASKABSID], human, config.panelID)
  162. end
  163. end
  164. -- 检查任务点数奖励状态
  165. local function BusThreeActTask_CheckTaskPointStatus(human)
  166. local nNowPoint = BusThreeActTask_GetTaskPoint(human)
  167. local tConf = BusThreeActTask_GetTaskPointCof()
  168. local bSendClient = false
  169. for nID, v in ipairs(tConf) do
  170. if nNowPoint >= v.nPoint then
  171. local nState = BusThreeActTask_GetTaskPointPrizeStatus(human, nID)
  172. if CommonDefine.COMMON_PRIZE_STATE_NOGET == nState then
  173. bSendClient = true
  174. BusThreeActTask_SetTaskPointPrizeStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_CANGET)
  175. end
  176. else
  177. break
  178. end
  179. end
  180. if true == bSendClient then
  181. BusThreeActTask_QueryTaskPoint(human)
  182. end
  183. end
  184. ----------------------------------------回调处理---------------------------------------------------
  185. -- 事件回调通用处理
  186. local function BusThreeActTask_EvnentCommon(nEventType, uuid, nValue)
  187. print("[BusThreeActTask_EvnentCommon] 事件回调通用处理 nEventType = "..nEventType.." uuid = "..uuid)
  188. local human = ObjHuman.onlineUuid[uuid]
  189. if not human then
  190. print("[BusThreeActTask_EvnentCommon] 玩家不在线了? nEventType = "..nEventType)
  191. return
  192. end
  193. print("[BusThreeActTask_EvnentCommon] nEventType = "..nEventType.." nValue = "..nValue.." name = "..human.db.name)
  194. local nOldNum = BusThreeActTask_GetTaskFinishNum(human, nEventType)
  195. print("[BusThreeActTask_EvnentCommon] 久的次数 nOldNum = "..nOldNum)
  196. -- 增加完成次数
  197. BusThreeActTask_AddTaskFinishNum(human, nEventType, nValue)
  198. -- 检查任务状态
  199. BusThreeActTask_CheckTaskStatus(human, nEventType)
  200. end
  201. -- 事件-获得英雄处理
  202. local function BusThreeActTask_EvnentGetHero(nEventType, uuid, nValue1, nValue2)
  203. local human = ObjHuman.onlineUuid[uuid]
  204. if not human then
  205. return
  206. end
  207. local nNum = nValue1
  208. local nStar = nValue2
  209. print("[BusThreeActTask_EvnentGetHero] nEventType = "..nEventType.." nNum = "..nNum.." nStar = "..nStar.." name = "..human.db.name)
  210. local bCheck = false
  211. local tConf = BusThreeActTask_GetTaskCof()
  212. for nID, v in ipairs(tConf) do
  213. if v.nTaskType == nEventType then
  214. if not v.nTaskArgument or v.nTaskArgument == "" then
  215. print("[BusThreeActTask_EvnentGetHero] 获得英雄但是没有获取到对应的配置参数要求")
  216. else
  217. --print("[BusThreeActTask_EvnentGetHero] 存在对应参数 nTaskArgument = "..v.nTaskArgument)
  218. local tTaskArgument = Util.split(v.nTaskArgument , "|")
  219. -- table.print_lua_table(tTaskArgument)
  220. if 2 ~= #tTaskArgument then
  221. print("[BusThreeActTask_EvnentGetHero] 获取的任务 参数数量不正确")
  222. else
  223. if nNum >= tonumber(tTaskArgument[1]) and nStar == tonumber(tTaskArgument[2]) then
  224. --print("BusThreeActTask_EvnentGetHero 条件满足")
  225. BusThreeActTask_AddTaskFinishNum(human, nEventType, 1)
  226. --local nNewNum = BusThreeActTask_GetTaskFinishNum(human, nEventType)
  227. --print("BusThreeActTask_EvnentGetHero 条件满足, 新的数量为 nNewNum = "..nNewNum)
  228. bCheck = true
  229. end
  230. end
  231. end
  232. end
  233. end
  234. BusThreeActTask_CheckTaskStatus(human, nEventType)
  235. end
  236. -- 事件处理
  237. local tEventHandler = nil
  238. -- 起服处理
  239. function Init()
  240. tEventHandler = {
  241. [TriggerDefine.EVENT_TYPE_SWEEP] = BusThreeActTask_EvnentCommon,
  242. [TriggerDefine.CHAT_TIMES] = BusThreeActTask_EvnentCommon,
  243. [TriggerDefine.FRIEND_COMBAT] = BusThreeActTask_EvnentCommon,
  244. [TriggerDefine.EVENT_TYPE_FINDSTAR] = BusThreeActTask_EvnentCommon,
  245. [TriggerDefine.EVENT_TYPE_FATESUMMON] = BusThreeActTask_EvnentCommon,
  246. [TriggerDefine.EVENT_TYPE_OPENBOX] = BusThreeActTask_EvnentCommon,
  247. [TriggerDefine.EVENT_TYPE_CHAMPIONSNUM] = BusThreeActTask_EvnentCommon,
  248. [TriggerDefine.EVENT_TYPE_GETHERO] = BusThreeActTask_EvnentGetHero,
  249. [TriggerDefine.EVENT_TYPE_SHOPBUY] = BusThreeActTask_EvnentCommon,
  250. [TriggerDefine.EVENT_TYPE_UNIONSKILLUP] = BusThreeActTask_EvnentCommon,
  251. [TriggerDefine.DRAWCALL_SERNIOR_CNT] = BusThreeActTask_EvnentCommon,
  252. }
  253. print("[CommerceActTask - Init] tEventHandler 初始化完成")
  254. end
  255. ----------------------------------------- 外部调用开始 -------------------------------------
  256. function BusThreeActTask_EventCallBack(nEventType, uuid, nValue1, nValue2)
  257. if not tEventHandler then
  258. Init()
  259. end
  260. if not tEventHandler or not tEventHandler[nEventType] then
  261. print("[BusThreeActTask_EventCallBack] 不存在对应的处理函数 nEventType = "..nEventType)
  262. return
  263. end
  264. print("[BusThreeActTask_EventCallBack] 收到事件触发回调 nEventType = "..nEventType)
  265. pcall(tEventHandler[nEventType], nEventType, uuid, nValue1, nValue2)
  266. end
  267. function BusThreeActTask_AddPoint(human, nAddPoint)
  268. -- 增加积分
  269. BusThreeActTask_AddTaskPoint(human, nAddPoint)
  270. -- 检查积分奖励状态
  271. BusThreeActTask_CheckTaskPointStatus(human)
  272. end
  273. ----------------------------------------- 客户端请求 -------------------------------------
  274. -- 请求战区集结任务信息
  275. function BusThreeActTask_QueryTask(human, nDay)
  276. local state, nEndTime, nOpenTime = AbsActLogic.isStarted(human, BUSTHREETASKABSID)
  277. if not state then
  278. return Broadcast.sendErr(human, Lang.YUNYING_ERR_TIME)
  279. end
  280. print("[BusThreeActTask_QueryTask] 进入查询任务信息 nDay = "..nDay.." name = "..human.db.name)
  281. CheckAndCreatDB(human)
  282. local tConf = BusThreeActTask_GetTaskCof()
  283. local nDiffDay = Util.diffDay(nOpenTime) + 1
  284. local tMsgData = Msg.gc.GC_NEW_BUSTHREEACT_TASKQUERY
  285. tMsgData.nDay = nDay
  286. tMsgData.nNowDay = nDiffDay
  287. tMsgData.nNowPoint = BusThreeActTask_GetTaskPoint(human)
  288. tMsgData.leftTime = nEndTime - os.time()
  289. print("[BusThreeActTask_QueryTask] nDay = "..nDay.." nDiffDay = "..nDiffDay.." name = "..human.db.name)
  290. local tDay = {}
  291. local tRed = tMsgData.tRed
  292. tRed[0] = 0
  293. local tListData = tMsgData.list
  294. tListData[0] = 0
  295. for nID, v in ipairs(tConf) do
  296. if v.nDay == nDay then
  297. tListData[0] = tListData[0] + 1
  298. local tNode = tListData[tListData[0]]
  299. tNode.nID = nID
  300. tNode.nState = BusThreeActTask_GetTaskStatus(human, nID, v.nTaskType)
  301. tNode.nDay = v.nDay
  302. tNode.nValue = v.nValue
  303. -- tNode.nPoint = v.nPoint
  304. tNode.Desc = v.szDes
  305. tNode.nFinish = BusThreeActTask_GetTaskFinishNum(human, v.nTaskType)
  306. tNode.item[0] = #v.Prize
  307. for i, tItemData in ipairs(v.Prize) do
  308. Grid.makeItem(tNode.item[i], tItemData[1], tItemData[2])
  309. end
  310. end
  311. if not tDay[v.nDay] then
  312. tDay[v.nDay] = 1
  313. tRed[0] = tRed[0] + 1
  314. tRed[v.nDay] = 0
  315. end
  316. if tRed[v.nDay] == 0 and v.nDay <= nDiffDay then
  317. local nState = BusThreeActTask_GetTaskStatus(human, nID, v.nTaskType)
  318. if nState == CommonDefine.COMMON_PRIZE_STATE_CANGET then
  319. tRed[v.nDay] = 1
  320. end
  321. end
  322. end
  323. Msg.send(tMsgData, human.fd)
  324. print("[BusThreeActTask_QueryTask] 发送任务信息完成 name = "..human.db.name)
  325. end
  326. -- 请求领取任务奖励
  327. function BusThreeActTask_GetTaskPrize(human, nDay)
  328. local tConf = BusThreeActTask_GetTaskCof()
  329. local tGoods = {}
  330. local nFinishNum = 0
  331. for nID, v in ipairs(tConf) do
  332. if v.nDay == nDay then
  333. local nState = BusThreeActTask_GetTaskStatus(human, nID, v.nTaskType)
  334. if CommonDefine.COMMON_PRIZE_STATE_CANGET == nState then
  335. for i, tItemData in ipairs(v.Prize) do
  336. if not tGoods[tItemData[1]] then
  337. tGoods[tItemData[1]] = 0
  338. end
  339. tGoods[tItemData[1]] = tGoods[tItemData[1]] + tItemData[2]
  340. end
  341. BusThreeActTask_SetTaskStatus(human, nID, v.nTaskType, CommonDefine.COMMON_PRIZE_STATE_GET)
  342. nFinishNum = nFinishNum + 1
  343. end
  344. end
  345. end
  346. if nil ~= _G.next(tGoods) then
  347. local tItem = {}
  348. for nID, nNum in pairs(tGoods) do
  349. table.insert(tItem, {nID, nNum})
  350. end
  351. BagLogic.addItemList(human, tItem, "BusThreeTask")
  352. BusThreeActTask_AddPoint(human, nFinishNum)
  353. BusThreeActTask_QueryTask(human, nDay)
  354. BusThreeActTask_QueryTaskPoint(human)
  355. YunYingLogic.sendBanner(human)
  356. local config = AbsActExcel.absActivity[BUSTHREETASKABSID]
  357. YunYingLogic.sendGroupUpdate(YYInfo[BUSTHREETASKABSID], human, config.panelID)
  358. end
  359. end
  360. -- 请求任务积分信息
  361. function BusThreeActTask_QueryTaskPoint(human)
  362. print("[BusThreeActTask_QueryTaskPoint] 进入查询任务积分信息 name = "..human.db.name)
  363. local tConf = BusThreeActTask_GetTaskPointCof()
  364. local tMsgData = Msg.gc.GC_NEW_BUSTHREEACT_TASKPOINTQUERY
  365. tMsgData.nNowPoint = BusThreeActTask_GetTaskPoint(human)
  366. CheckAndCreatDB(human)
  367. local tListData = tMsgData.listPoint
  368. tListData[0] = 0
  369. for nID, v in ipairs(tConf) do
  370. tListData[0] = tListData[0] + 1
  371. local tNode = tListData[tListData[0]]
  372. tNode.nID = nID
  373. tNode.nNeedPoint = v.nPoint
  374. tNode.nState = BusThreeActTask_GetTaskPointPrizeStatus(human, nID)
  375. tNode.item[0] = #v.Prize
  376. for i, tItemData in ipairs(v.Prize) do
  377. Grid.makeItem(tNode.item[i], tItemData[1], tItemData[2])
  378. end
  379. end
  380. Msg.send(tMsgData, human.fd)
  381. end
  382. -- 领取任务积分奖励
  383. function BusThreeActTask_GetTaskPointPrize(human)
  384. local tConf = BusThreeActTask_GetTaskPointCof()
  385. local tGoods = {}
  386. for nID, v in ipairs(tConf) do
  387. local nState = BusThreeActTask_GetTaskPointPrizeStatus(human, nID)
  388. if CommonDefine.COMMON_PRIZE_STATE_CANGET == nState then
  389. for i, tItemData in ipairs(v.Prize) do
  390. if not tGoods[tItemData[1]] then
  391. tGoods[tItemData[1]] = 0
  392. end
  393. tGoods[tItemData[1]] = tGoods[tItemData[1]] + tItemData[2]
  394. end
  395. BusThreeActTask_SetTaskPointPrizeStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_GET)
  396. end
  397. end
  398. if nil ~= _G.next(tGoods) then
  399. local tItem = {}
  400. for nID, nNum in pairs(tGoods) do
  401. table.insert(tItem, {nID, nNum})
  402. end
  403. BagLogic.addItemList(human, tItem, "BusThreeTask")
  404. BusThreeActTask_QueryTaskPoint(human)
  405. YunYingLogic.sendBanner(human)
  406. local config = AbsActExcel.absActivity[BUSTHREETASKABSID]
  407. YunYingLogic.sendGroupUpdate(YYInfo[BUSTHREETASKABSID], human, config.panelID)
  408. end
  409. end
  410. function isRed(human)
  411. local tConf = BusThreeActTask_GetTaskCof()
  412. local state, nEndTime, nOpenTime = AbsActLogic.isStarted(human, BUSTHREETASKABSID)
  413. if not state then
  414. return false
  415. end
  416. CheckAndCreatDB(human)
  417. if 0 >= nOpenTime then
  418. print("[BusThreeActTask_isRed] 不正确的活动开启时间")
  419. return false
  420. end
  421. local nDiffDay = Util.diffDay(nOpenTime) + 1
  422. for nID, v in ipairs(tConf) do
  423. if v.nDay <= nDiffDay then
  424. local nState = BusThreeActTask_GetTaskStatus(human, nID, v.nTaskType)
  425. if CommonDefine.COMMON_PRIZE_STATE_CANGET == nState then
  426. return true
  427. end
  428. end
  429. end
  430. tConf = BusThreeActTask_GetTaskPointCof()
  431. for nID, v in ipairs(tConf) do
  432. local nState = BusThreeActTask_GetTaskPointPrizeStatus(human, nID)
  433. if CommonDefine.COMMON_PRIZE_STATE_CANGET == nState then
  434. return true
  435. end
  436. end
  437. return false
  438. end
  439. -- 订阅任务数据
  440. function BusThreeActTask_HumanSubEvent(human)
  441. local tConf = BusThreeActTask_GetTaskCof()
  442. local tTaskType = {}
  443. for nID, v in ipairs(tConf) do
  444. if not tTaskType[v.nTaskType] then
  445. local nState = BusThreeActTask_GetTaskStatus(human, nID, v.nTaskType)
  446. -- 没有完成才订阅
  447. if nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
  448. tTaskType[v.nTaskType] = 1
  449. end
  450. end
  451. end
  452. -- 订阅事件
  453. for nTaskType, v in pairs(tTaskType) do
  454. BusThreeActTask_SubEvent(human.db._id, nTaskType)
  455. print("[BusThreeActTask_SubEvent] 玩家订阅了事件 nTaskType = "..nTaskType)
  456. end
  457. end
  458. function onLogin(human)
  459. local state, nEndTime, nOpenTime = AbsActLogic.isStarted(human, BUSTHREETASKABSID)
  460. if not state then
  461. return
  462. end
  463. BusThreeActTask_HumanSubEvent(human)
  464. print("[BusThreeActTask_onLogin] 玩家登录订阅事件完成 name = "..human.db.name)
  465. end
  466. function isOpen(human, YYInfo, funcConfig)
  467. print("[BusThreeActTask__isOpen] 进入判断")
  468. local state, endTime, startTime = AbsActLogic.isStarted(human, funcConfig and funcConfig.funcID or BUSTHREETASKABSID)
  469. if not state then
  470. print("[BusThreeActTask_isOpen] 当前活动未开启")
  471. return
  472. end
  473. print("[BusThreeActTask__isOpen] 进入判断 endTime = "..endTime.." startTime = "..startTime)
  474. return true, endTime, startTime
  475. end
  476. function isActive(human, YYInfo, funcConfig)
  477. return not isOpen(human, YYInfo, funcConfig)
  478. end