|
|
@@ -0,0 +1,560 @@
|
|
|
+--------------------------------
|
|
|
+-- 文件名 : BusThreeActTask.lua
|
|
|
+-- 文件说明 : 新商业活动3-任务
|
|
|
+-- 创建时间 : 2025/09/02
|
|
|
+-- 创建人 : FC
|
|
|
+--------------------------------
|
|
|
+
|
|
|
+local Util = require("common.Util")
|
|
|
+local Msg = require("core.Msg")
|
|
|
+local Grid = require("bag.Grid")
|
|
|
+local BagLogic = require("bag.BagLogic")
|
|
|
+local CommonDefine = require("common.CommonDefine")
|
|
|
+local BusThreeActConf = require("excel.BusThreeActivity")
|
|
|
+local ObjHuman = require("core.ObjHuman")
|
|
|
+local TriggerDefine = require("trigger.TriggerDefine")
|
|
|
+local TriggerLogic = require("trigger.TriggerLogic")
|
|
|
+local ServerCommerceManager = require("serverCommerce.ServerCommerceManager")
|
|
|
+local AbsActLogic = require("absAct.AbsActLogic")
|
|
|
+local Broadcast = require("broadcast.Broadcast")
|
|
|
+local Lang = require("common.Lang")
|
|
|
+
|
|
|
+local BUSTHREETASKABSID = 7401 -- 对应ABS活动ID
|
|
|
+
|
|
|
+----------------------------------------- 内部处理开始 -------------------------------------
|
|
|
+-- 配置
|
|
|
+local function BusThreeActTask_GetTaskCof()
|
|
|
+ return BusThreeActConf.Task
|
|
|
+end
|
|
|
+
|
|
|
+local function BusThreeActTask_GetTaskPointCof()
|
|
|
+ return BusThreeActConf.TaskPoint
|
|
|
+end
|
|
|
+
|
|
|
+-- 订阅事件
|
|
|
+local function BusThreeActTask_SubEvent(uuid, nEventType)
|
|
|
+ TriggerLogic.SubscribeEvent(nEventType, uuid, BusThreeActTask_EventCallBack)
|
|
|
+end
|
|
|
+
|
|
|
+-- 创建DB数据
|
|
|
+local function CreatDB(human)
|
|
|
+ human.db.absAct[BUSTHREETASKABSID].Task = {
|
|
|
+ nTaskPoint = 0, -- 任务积分
|
|
|
+ TaskPrize = {}, -- 任务数据
|
|
|
+ TaskPointPrize = {}, -- 任务积分奖励
|
|
|
+ }
|
|
|
+
|
|
|
+ local tConf = BusThreeActTask_GetTaskCof()
|
|
|
+ local tEvnetType = {}
|
|
|
+ local tDBTask = human.db.absAct[BUSTHREETASKABSID].Task.TaskPrize
|
|
|
+ for nID, v in ipairs(tConf) do
|
|
|
+ if not tDBTask[v.nTaskType] then
|
|
|
+ tDBTask[v.nTaskType] = {
|
|
|
+ nFinishNum = 0, -- 完成次数
|
|
|
+ taskStatus = {}, -- 任务状态
|
|
|
+ }
|
|
|
+ end
|
|
|
+
|
|
|
+ tDBTask[v.nTaskType].taskStatus[nID] = CommonDefine.COMMON_PRIZE_STATE_NOGET
|
|
|
+
|
|
|
+ if not tEvnetType[v.nTaskType] then
|
|
|
+ BusThreeActTask_SubEvent(human.db._id, v.nTaskType)
|
|
|
+ tEvnetType[v.nTaskType] = 1
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ tConf = BusThreeActTask_GetTaskPointCof()
|
|
|
+ local tDBTaskPointPrize = human.db.absAct[BUSTHREETASKABSID].Task.TaskPointPrize
|
|
|
+ for nID, v in pairs(tConf) do
|
|
|
+ if not tDBTaskPointPrize[nID] then
|
|
|
+ tDBTaskPointPrize[nID] = CommonDefine.COMMON_PRIZE_STATE_NOGET
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ print("[BusThreeActTask_CreatDB] 战区任务 初始化数据完成 name = "..human.db.name)
|
|
|
+ return true
|
|
|
+end
|
|
|
+
|
|
|
+local function CheckAndCreatDB(human)
|
|
|
+ if not human.db.absAct[BUSTHREETASKABSID] or nil == _G.next(human.db.absAct[BUSTHREETASKABSID])
|
|
|
+ or not human.db.absAct[BUSTHREETASKABSID].Task then
|
|
|
+ CreatDB(human)
|
|
|
+ end
|
|
|
+end
|
|
|
+
|
|
|
+-- 获取任务奖励DB数据
|
|
|
+local function BusThreeActTask_GetTaskDB(human)
|
|
|
+ if not human.db.absAct[BUSTHREETASKABSID].Task then
|
|
|
+ human.db.absAct[BUSTHREETASKABSID].Task = {}
|
|
|
+ CreatDB(human)
|
|
|
+ end
|
|
|
+
|
|
|
+ return human.db.absAct[BUSTHREETASKABSID].Task
|
|
|
+end
|
|
|
+
|
|
|
+-- 获取任务状态
|
|
|
+local function BusThreeActTask_GetTaskStatus(human, nID, nTaskType)
|
|
|
+ local tDBData = BusThreeActTask_GetTaskDB(human)
|
|
|
+
|
|
|
+ if not tDBData.TaskPrize or not tDBData.TaskPrize[nTaskType] or not tDBData.TaskPrize[nTaskType].taskStatus[nID] then
|
|
|
+ print("[BusThreeActTask_GetTaskStatus] 不存在对应的DB数据!!! 没有初始化吗?")
|
|
|
+ return CommonDefine.COMMON_PRIZE_STATE_NOGET
|
|
|
+ end
|
|
|
+
|
|
|
+ return tDBData.TaskPrize[nTaskType].taskStatus[nID]
|
|
|
+end
|
|
|
+
|
|
|
+-- 设置任务状态
|
|
|
+local function BusThreeActTask_SetTaskStatus(human, nID, nTaskType, nValue)
|
|
|
+ local tDBData = BusThreeActTask_GetTaskDB(human)
|
|
|
+
|
|
|
+ tDBData.TaskPrize[nTaskType].taskStatus[nID] = nValue
|
|
|
+end
|
|
|
+
|
|
|
+-- 获取任务完成次数
|
|
|
+local function BusThreeActTask_GetTaskFinishNum(human, nTaskType)
|
|
|
+ local tDBData = BusThreeActTask_GetTaskDB(human)
|
|
|
+ if not tDBData.TaskPrize[nTaskType] then
|
|
|
+ return -1
|
|
|
+ end
|
|
|
+
|
|
|
+ return tDBData.TaskPrize[nTaskType].nFinishNum
|
|
|
+end
|
|
|
+
|
|
|
+-- 增加任务完成次数
|
|
|
+local function BusThreeActTask_AddTaskFinishNum(human, nTaskType, nAddNum)
|
|
|
+ local tDBData = BusThreeActTask_GetTaskDB(human)
|
|
|
+ if not tDBData.TaskPrize[nTaskType] then
|
|
|
+ return
|
|
|
+ end
|
|
|
+
|
|
|
+ tDBData.TaskPrize[nTaskType].nFinishNum = tDBData.TaskPrize[nTaskType].nFinishNum + nAddNum
|
|
|
+end
|
|
|
+
|
|
|
+-- 获取任务积分
|
|
|
+local function BusThreeActTask_GetTaskPoint(human)
|
|
|
+ local tDBData = BusThreeActTask_GetTaskDB(human)
|
|
|
+ return tDBData.nTaskPoint
|
|
|
+end
|
|
|
+
|
|
|
+-- 增加任务积分
|
|
|
+local function BusThreeActTask_AddTaskPoint(human, nPoint)
|
|
|
+ local tDBData = BusThreeActTask_GetTaskDB(human)
|
|
|
+ tDBData.nTaskPoint = tDBData.nTaskPoint + nPoint
|
|
|
+end
|
|
|
+
|
|
|
+-- 获取任务积分奖励状态
|
|
|
+local function BusThreeActTask_GetTaskPointPrizeStatus(human, nID)
|
|
|
+ local tDBData = BusThreeActTask_GetTaskDB(human)
|
|
|
+ if not tDBData.TaskPointPrize or not tDBData.TaskPointPrize[nID] then
|
|
|
+ return CommonDefine.COMMON_PRIZE_STATE_NOGET
|
|
|
+ end
|
|
|
+
|
|
|
+ return tDBData.TaskPointPrize[nID]
|
|
|
+end
|
|
|
+
|
|
|
+-- 设置 任务积分奖励状态
|
|
|
+local function BusThreeActTask_SetTaskPointPrizeStatus(human, nID, nValue)
|
|
|
+ local tDBData = BusThreeActTask_GetTaskDB(human)
|
|
|
+ tDBData.TaskPointPrize[nID] = nValue
|
|
|
+end
|
|
|
+
|
|
|
+-- 检查任务是否完成
|
|
|
+local function BusThreeActTask_CheckTaskStatus(human, nTaskType)
|
|
|
+ local tConf = BusThreeActTask_GetTaskCof()
|
|
|
+ local nNowFinishNum = BusThreeActTask_GetTaskFinishNum(human, nTaskType)
|
|
|
+ print("[BusThreeActTask_CheckTaskStatus] nNowFinishNum = "..nNowFinishNum)
|
|
|
+ local nDay
|
|
|
+ for nID, v in ipairs(tConf) do
|
|
|
+ if v.nTaskType == nTaskType then
|
|
|
+ if nNowFinishNum >= v.nValue then
|
|
|
+ local nState = BusThreeActTask_GetTaskStatus(human, nID, nTaskType)
|
|
|
+ if CommonDefine.COMMON_PRIZE_STATE_NOGET == nState then
|
|
|
+ BusThreeActTask_SetTaskStatus(human, nID, v.nTaskType, CommonDefine.COMMON_PRIZE_STATE_CANGET)
|
|
|
+ -- BusThreeActTask_AddPoint(human, 1)
|
|
|
+ if not nDay then
|
|
|
+ nDay = v.nDay
|
|
|
+ end
|
|
|
+ end
|
|
|
+ else
|
|
|
+ break
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+end
|
|
|
+
|
|
|
+-- 检查任务点数奖励状态
|
|
|
+local function BusThreeActTask_CheckTaskPointStatus(human)
|
|
|
+ local nNowPoint = BusThreeActTask_GetTaskPoint(human)
|
|
|
+ local tConf = BusThreeActTask_GetTaskPointCof()
|
|
|
+
|
|
|
+ local bSendClient = false
|
|
|
+ for nID, v in ipairs(tConf) do
|
|
|
+ if nNowPoint >= v.nPoint then
|
|
|
+ local nState = BusThreeActTask_GetTaskPointPrizeStatus(human, nID)
|
|
|
+ if CommonDefine.COMMON_PRIZE_STATE_NOGET == nState then
|
|
|
+ bSendClient = true
|
|
|
+ BusThreeActTask_SetTaskPointPrizeStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_CANGET)
|
|
|
+ end
|
|
|
+ else
|
|
|
+ break
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ if true == bSendClient then
|
|
|
+ BusThreeActTask_QueryTaskPoint(human)
|
|
|
+ end
|
|
|
+end
|
|
|
+
|
|
|
+----------------------------------------回调处理---------------------------------------------------
|
|
|
+-- 事件回调通用处理
|
|
|
+local function BusThreeActTask_EvnentCommon(nEventType, uuid, nValue)
|
|
|
+ print("[BusThreeActTask_EvnentCommon] 事件回调通用处理 nEventType = "..nEventType.." uuid = "..uuid)
|
|
|
+ local human = ObjHuman.onlineUuid[uuid]
|
|
|
+ if not human then
|
|
|
+ print("[BusThreeActTask_EvnentCommon] 玩家不在线了? nEventType = "..nEventType)
|
|
|
+ return
|
|
|
+ end
|
|
|
+
|
|
|
+ print("[BusThreeActTask_EvnentCommon] nEventType = "..nEventType.." nValue = "..nValue.." name = "..human.db.name)
|
|
|
+
|
|
|
+ local nOldNum = BusThreeActTask_GetTaskFinishNum(human, nEventType)
|
|
|
+
|
|
|
+ print("[BusThreeActTask_EvnentCommon] 久的次数 nOldNum = "..nOldNum)
|
|
|
+
|
|
|
+ -- 增加完成次数
|
|
|
+ BusThreeActTask_AddTaskFinishNum(human, nEventType, nValue)
|
|
|
+
|
|
|
+ -- 检查任务状态
|
|
|
+ BusThreeActTask_CheckTaskStatus(human, nEventType)
|
|
|
+end
|
|
|
+
|
|
|
+-- 事件-获得英雄处理
|
|
|
+local function BusThreeActTask_EvnentGetHero(nEventType, uuid, nValue1, nValue2)
|
|
|
+ local human = ObjHuman.onlineUuid[uuid]
|
|
|
+ if not human then
|
|
|
+ return
|
|
|
+ end
|
|
|
+
|
|
|
+ local nNum = nValue1
|
|
|
+ local nStar = nValue2
|
|
|
+
|
|
|
+ print("[BusThreeActTask_EvnentGetHero] nEventType = "..nEventType.." nNum = "..nNum.." nStar = "..nStar.." name = "..human.db.name)
|
|
|
+
|
|
|
+ local bCheck = false
|
|
|
+ local tConf = BusThreeActTask_GetTaskCof()
|
|
|
+ for nID, v in ipairs(tConf) do
|
|
|
+ if v.nTaskType == nEventType then
|
|
|
+ if not v.nTaskArgument or v.nTaskArgument == "" then
|
|
|
+ print("[BusThreeActTask_EvnentGetHero] 获得英雄但是没有获取到对应的配置参数要求")
|
|
|
+ else
|
|
|
+ --print("[BusThreeActTask_EvnentGetHero] 存在对应参数 nTaskArgument = "..v.nTaskArgument)
|
|
|
+ local tTaskArgument = Util.split(v.nTaskArgument , "|")
|
|
|
+ -- table.print_lua_table(tTaskArgument)
|
|
|
+ if 2 ~= #tTaskArgument then
|
|
|
+ print("[BusThreeActTask_EvnentGetHero] 获取的任务 参数数量不正确")
|
|
|
+ else
|
|
|
+ if nNum >= tonumber(tTaskArgument[1]) and nStar == tonumber(tTaskArgument[2]) then
|
|
|
+ --print("BusThreeActTask_EvnentGetHero 条件满足")
|
|
|
+ BusThreeActTask_AddTaskFinishNum(human, nEventType, 1)
|
|
|
+ --local nNewNum = BusThreeActTask_GetTaskFinishNum(human, nEventType)
|
|
|
+ --print("BusThreeActTask_EvnentGetHero 条件满足, 新的数量为 nNewNum = "..nNewNum)
|
|
|
+ bCheck = true
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ BusThreeActTask_CheckTaskStatus(human, nEventType)
|
|
|
+end
|
|
|
+
|
|
|
+-- 事件处理
|
|
|
+local tEventHandler = nil
|
|
|
+-- 起服处理
|
|
|
+function Init()
|
|
|
+ tEventHandler = {
|
|
|
+ [TriggerDefine.EVENT_TYPE_SWEEP] = BusThreeActTask_EvnentCommon,
|
|
|
+ [TriggerDefine.CHAT_TIMES] = BusThreeActTask_EvnentCommon,
|
|
|
+ [TriggerDefine.FRIEND_COMBAT] = BusThreeActTask_EvnentCommon,
|
|
|
+ [TriggerDefine.EVENT_TYPE_FINDSTAR] = BusThreeActTask_EvnentCommon,
|
|
|
+ [TriggerDefine.EVENT_TYPE_FATESUMMON] = BusThreeActTask_EvnentCommon,
|
|
|
+ [TriggerDefine.EVENT_TYPE_OPENBOX] = BusThreeActTask_EvnentCommon,
|
|
|
+ [TriggerDefine.EVENT_TYPE_CHAMPIONSNUM] = BusThreeActTask_EvnentCommon,
|
|
|
+ [TriggerDefine.EVENT_TYPE_GETHERO] = BusThreeActTask_EvnentGetHero,
|
|
|
+ [TriggerDefine.EVENT_TYPE_SHOPBUY] = BusThreeActTask_EvnentCommon,
|
|
|
+ [TriggerDefine.EVENT_TYPE_UNIONSKILLUP] = BusThreeActTask_EvnentCommon,
|
|
|
+ [TriggerDefine.DRAWCALL_SERNIOR_CNT] = BusThreeActTask_EvnentCommon,
|
|
|
+ }
|
|
|
+
|
|
|
+ print("[CommerceActTask - Init] tEventHandler 初始化完成")
|
|
|
+end
|
|
|
+
|
|
|
+----------------------------------------- 外部调用开始 -------------------------------------
|
|
|
+function BusThreeActTask_EventCallBack(nEventType, uuid, nValue1, nValue2)
|
|
|
+ if not tEventHandler then
|
|
|
+ Init()
|
|
|
+ end
|
|
|
+
|
|
|
+ if not tEventHandler or not tEventHandler[nEventType] then
|
|
|
+ print("[BusThreeActTask_EventCallBack] 不存在对应的处理函数 nEventType = "..nEventType)
|
|
|
+ return
|
|
|
+ end
|
|
|
+
|
|
|
+ print("[BusThreeActTask_EventCallBack] 收到事件触发回调 nEventType = "..nEventType)
|
|
|
+ pcall(tEventHandler[nEventType], nEventType, uuid, nValue1, nValue2)
|
|
|
+end
|
|
|
+
|
|
|
+function BusThreeActTask_AddPoint(human, nAddPoint)
|
|
|
+ -- 增加积分
|
|
|
+ BusThreeActTask_AddTaskPoint(human, nAddPoint)
|
|
|
+
|
|
|
+ -- 检查积分奖励状态
|
|
|
+ BusThreeActTask_CheckTaskPointStatus(human)
|
|
|
+end
|
|
|
+
|
|
|
+----------------------------------------- 客户端请求 -------------------------------------
|
|
|
+-- 请求战区集结任务信息
|
|
|
+function BusThreeActTask_QueryTask(human, nDay)
|
|
|
+ local state, nEndTime, nOpenTime = AbsActLogic.isStarted(human, BUSTHREETASKABSID)
|
|
|
+ if not state then
|
|
|
+ return Broadcast.sendErr(human, Lang.YUNYING_ERR_TIME)
|
|
|
+ end
|
|
|
+
|
|
|
+ print("[BusThreeActTask_QueryTask] 进入查询任务信息 nDay = "..nDay.." name = "..human.db.name)
|
|
|
+
|
|
|
+ CheckAndCreatDB(human)
|
|
|
+
|
|
|
+ local tConf = BusThreeActTask_GetTaskCof()
|
|
|
+
|
|
|
+ local nDiffDay = Util.diffDay(nOpenTime) + 1
|
|
|
+ local tMsgData = Msg.gc.GC_NEW_BUSTHREEACT_TASKQUERY
|
|
|
+ tMsgData.nDay = nDay
|
|
|
+ tMsgData.nNowDay = nDiffDay
|
|
|
+ tMsgData.nNowPoint = BusThreeActTask_GetTaskPoint(human)
|
|
|
+ tMsgData.leftTime = nEndTime - os.time()
|
|
|
+
|
|
|
+ print("[BusThreeActTask_QueryTask] nDay = "..nDay.." nDiffDay = "..nDiffDay.." name = "..human.db.name)
|
|
|
+
|
|
|
+ local tDay = {}
|
|
|
+ local tRed = tMsgData.tRed
|
|
|
+ tRed[0] = 0
|
|
|
+ local tListData = tMsgData.list
|
|
|
+ tListData[0] = 0
|
|
|
+ for nID, v in ipairs(tConf) do
|
|
|
+ if v.nDay == nDay then
|
|
|
+ tListData[0] = tListData[0] + 1
|
|
|
+ local tNode = tListData[tListData[0]]
|
|
|
+ tNode.nID = nID
|
|
|
+ tNode.nState = BusThreeActTask_GetTaskStatus(human, nID, v.nTaskType)
|
|
|
+ tNode.nDay = v.nDay
|
|
|
+ tNode.nValue = v.nValue
|
|
|
+ -- tNode.nPoint = v.nPoint
|
|
|
+ tNode.Desc = v.szDes
|
|
|
+ tNode.nFinish = BusThreeActTask_GetTaskFinishNum(human, v.nTaskType)
|
|
|
+ tNode.item[0] = #v.Prize
|
|
|
+
|
|
|
+ for i, tItemData in ipairs(v.Prize) do
|
|
|
+ Grid.makeItem(tNode.item[i], tItemData[1], tItemData[2])
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ if not tDay[v.nDay] then
|
|
|
+ tDay[v.nDay] = 1
|
|
|
+ tRed[0] = tRed[0] + 1
|
|
|
+ tRed[v.nDay] = 0
|
|
|
+ end
|
|
|
+
|
|
|
+ if tRed[v.nDay] == 0 and v.nDay <= nDiffDay then
|
|
|
+ local nState = BusThreeActTask_GetTaskStatus(human, nID, v.nTaskType)
|
|
|
+ if nState == CommonDefine.COMMON_PRIZE_STATE_CANGET then
|
|
|
+ tRed[v.nDay] = 1
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ Msg.send(tMsgData, human.fd)
|
|
|
+ print("[BusThreeActTask_QueryTask] 发送任务信息完成 name = "..human.db.name)
|
|
|
+end
|
|
|
+
|
|
|
+-- 请求领取任务奖励
|
|
|
+function BusThreeActTask_GetTaskPrize(human, nDay)
|
|
|
+ local tConf = BusThreeActTask_GetTaskCof()
|
|
|
+ local tGoods = {}
|
|
|
+
|
|
|
+ local nFinishNum = 0
|
|
|
+ for nID, v in ipairs(tConf) do
|
|
|
+ if v.nDay == nDay then
|
|
|
+ local nState = BusThreeActTask_GetTaskStatus(human, nID, v.nTaskType)
|
|
|
+ if CommonDefine.COMMON_PRIZE_STATE_CANGET == nState then
|
|
|
+ for i, tItemData in ipairs(v.Prize) do
|
|
|
+ if not tGoods[tItemData[1]] then
|
|
|
+ tGoods[tItemData[1]] = 0
|
|
|
+ end
|
|
|
+
|
|
|
+ tGoods[tItemData[1]] = tGoods[tItemData[1]] + tItemData[2]
|
|
|
+ end
|
|
|
+
|
|
|
+ BusThreeActTask_SetTaskStatus(human, nID, v.nTaskType, CommonDefine.COMMON_PRIZE_STATE_GET)
|
|
|
+ nFinishNum = nFinishNum + 1
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ if nil ~= _G.next(tGoods) then
|
|
|
+ local tItem = {}
|
|
|
+ for nID, nNum in pairs(tGoods) do
|
|
|
+ table.insert(tItem, {nID, nNum})
|
|
|
+ end
|
|
|
+
|
|
|
+ BagLogic.addItemList(human, tItem, "BusThreeTask")
|
|
|
+
|
|
|
+ BusThreeActTask_AddPoint(human, nFinishNum)
|
|
|
+
|
|
|
+ BusThreeActTask_QueryTask(human, nDay)
|
|
|
+
|
|
|
+ BusThreeActTask_QueryTaskPoint(human)
|
|
|
+ end
|
|
|
+end
|
|
|
+
|
|
|
+-- 请求任务积分信息
|
|
|
+function BusThreeActTask_QueryTaskPoint(human)
|
|
|
+ print("[BusThreeActTask_QueryTaskPoint] 进入查询任务积分信息 name = "..human.db.name)
|
|
|
+ local tConf = BusThreeActTask_GetTaskPointCof()
|
|
|
+
|
|
|
+ local tMsgData = Msg.gc.GC_NEW_BUSTHREEACT_TASKPOINTQUERY
|
|
|
+ tMsgData.nNowPoint = BusThreeActTask_GetTaskPoint(human)
|
|
|
+
|
|
|
+ CheckAndCreatDB(human)
|
|
|
+
|
|
|
+ local tListData = tMsgData.listPoint
|
|
|
+ tListData[0] = 0
|
|
|
+ for nID, v in ipairs(tConf) do
|
|
|
+ tListData[0] = tListData[0] + 1
|
|
|
+ local tNode = tListData[tListData[0]]
|
|
|
+ tNode.nID = nID
|
|
|
+ tNode.nNeedPoint = v.nPoint
|
|
|
+ tNode.nState = BusThreeActTask_GetTaskPointPrizeStatus(human, nID)
|
|
|
+ tNode.item[0] = #v.Prize
|
|
|
+
|
|
|
+ for i, tItemData in ipairs(v.Prize) do
|
|
|
+ Grid.makeItem(tNode.item[i], tItemData[1], tItemData[2])
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ Msg.send(tMsgData, human.fd)
|
|
|
+end
|
|
|
+
|
|
|
+-- 领取任务积分奖励
|
|
|
+function BusThreeActTask_GetTaskPointPrize(human)
|
|
|
+ local tConf = BusThreeActTask_GetTaskPointCof()
|
|
|
+
|
|
|
+ local tGoods = {}
|
|
|
+ for nID, v in ipairs(tConf) do
|
|
|
+ local nState = BusThreeActTask_GetTaskPointPrizeStatus(human, nID)
|
|
|
+ if CommonDefine.COMMON_PRIZE_STATE_CANGET == nState then
|
|
|
+ for i, tItemData in ipairs(v.Prize) do
|
|
|
+ if not tGoods[tItemData[1]] then
|
|
|
+ tGoods[tItemData[1]] = 0
|
|
|
+ end
|
|
|
+
|
|
|
+ tGoods[tItemData[1]] = tGoods[tItemData[1]] + tItemData[2]
|
|
|
+ end
|
|
|
+
|
|
|
+ BusThreeActTask_SetTaskPointPrizeStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_GET)
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ if nil ~= _G.next(tGoods) then
|
|
|
+ local tItem = {}
|
|
|
+ for nID, nNum in pairs(tGoods) do
|
|
|
+ table.insert(tItem, {nID, nNum})
|
|
|
+ end
|
|
|
+
|
|
|
+ BagLogic.addItemList(human, tItem, "BusThreeTask")
|
|
|
+ BusThreeActTask_QueryTaskPoint(human)
|
|
|
+ end
|
|
|
+end
|
|
|
+
|
|
|
+function isRed(human)
|
|
|
+ local tConf = BusThreeActTask_GetTaskCof()
|
|
|
+ local state, nEndTime, nOpenTime = AbsActLogic.isStarted(human, BUSTHREETASKABSID)
|
|
|
+ if not state then
|
|
|
+ return Broadcast.sendErr(human, Lang.YUNYING_ERR_TIME)
|
|
|
+ end
|
|
|
+
|
|
|
+ CheckAndCreatDB(human)
|
|
|
+
|
|
|
+ if 0 >= nOpenTime then
|
|
|
+ print("[BusThreeActTask_isRed] 不正确的活动开启时间")
|
|
|
+ return false
|
|
|
+ end
|
|
|
+
|
|
|
+ local nDiffDay = Util.diffDay(nOpenTime) + 1
|
|
|
+ for nID, v in ipairs(tConf) do
|
|
|
+ if v.nDay <= nDiffDay then
|
|
|
+ local nState = BusThreeActTask_GetTaskStatus(human, nID, v.nTaskType)
|
|
|
+ if CommonDefine.COMMON_PRIZE_STATE_CANGET == nState then
|
|
|
+ return true
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ tConf = BusThreeActTask_GetTaskPointCof()
|
|
|
+ for nID, v in ipairs(tConf) do
|
|
|
+ local nState = BusThreeActTask_GetTaskPointPrizeStatus(human, nID)
|
|
|
+ if CommonDefine.COMMON_PRIZE_STATE_CANGET == nState then
|
|
|
+ return true
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ return false
|
|
|
+end
|
|
|
+
|
|
|
+-- 订阅任务数据
|
|
|
+function BusThreeActTask_HumanSubEvent(human)
|
|
|
+ local tConf = BusThreeActTask_GetTaskCof()
|
|
|
+ local tTaskType = {}
|
|
|
+
|
|
|
+ for nID, v in ipairs(tConf) do
|
|
|
+ if not tTaskType[v.nTaskType] then
|
|
|
+ local nState = BusThreeActTask_GetTaskStatus(human, nID, v.nTaskType)
|
|
|
+ -- 没有完成才订阅
|
|
|
+ if nState == CommonDefine.COMMON_PRIZE_STATE_NOGET then
|
|
|
+ tTaskType[v.nTaskType] = 1
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ -- 订阅事件
|
|
|
+ for nTaskType, v in pairs(tTaskType) do
|
|
|
+ BusThreeActTask_SubEvent(human.db._id, nTaskType)
|
|
|
+ print("[BusThreeActTask_SubEvent] 玩家订阅了事件 nTaskType = "..nTaskType)
|
|
|
+ end
|
|
|
+end
|
|
|
+
|
|
|
+function onLogin(human)
|
|
|
+ local state, nEndTime, nOpenTime = AbsActLogic.isStarted(human, BUSTHREETASKABSID)
|
|
|
+ if not state then
|
|
|
+ return
|
|
|
+ end
|
|
|
+
|
|
|
+ BusThreeActTask_HumanSubEvent(human)
|
|
|
+ print("[BusThreeActTask_onLogin] 玩家登录订阅事件完成 name = "..human.db.name)
|
|
|
+end
|
|
|
+
|
|
|
+
|
|
|
+function isOpen(human, YYInfo, funcConfig)
|
|
|
+ print("[BusThreeActTask__isOpen] 进入判断")
|
|
|
+ local state, endTime, startTime = AbsActLogic.isStarted(human, funcConfig and funcConfig.funcID or BUSTHREETASKABSID)
|
|
|
+ if not state then
|
|
|
+ print("[BusThreeActTask_isOpen] 当前活动未开启")
|
|
|
+ return
|
|
|
+ end
|
|
|
+ print("[BusThreeActTask__isOpen] 进入判断 endTime = "..endTime.." startTime = "..startTime)
|
|
|
+ return true, endTime, startTime
|
|
|
+end
|
|
|
+
|
|
|
+function isActive(human, YYInfo, funcConfig)
|
|
|
+ return not isOpen(human, YYInfo, funcConfig)
|
|
|
+end
|