Selaa lähdekoodia

提交新的商业活动1

SCFC 10 kuukautta sitten
vanhempi
sitoutus
73b331c4ca

+ 5 - 1
script/common/LogDefine.lua

@@ -256,7 +256,11 @@ DEFINE = {
 	MergeLogin				= 260,			 -- 合服登录
 	MergeCharge 			= 261,		     -- 合服充值
 	MergeHuoYue             = 262,			 -- 合服活跃
-	
+	BusOneTask				= 263,			 -- 新商业活动1-任务
+	BusOneBuy				= 264,			 -- 新商业活动1-超值大礼
+	BusOneYuanZheng			= 265,			 -- 新商业活动1-远征豪礼
+	BusOneHeroYuanZheng		= 266,			 -- 新商业活动1-英雄远征
+
 	abs_totalReach          = 500,           -- 周期性活动累计
     abs_singleReach         = 501,           -- 周期性活动单次
     draw_ad_reward         = 601,           -- 观看广告送召唤券

+ 4 - 1
script/core/ObjHuman.lua

@@ -103,6 +103,7 @@ local JjcNewLadderLogic = require("jjcnewladder.jjcNewLadderLogic")
 local WinnerRelicLogic = require("winnerRelic.WinnerRelicLogic")
 local commonOperate = require("core.commonOperate")
 
+
 local Json = require("common.Json")
 
 fds				= fds or {}				-- fd->obj_id,包括创角中+游戏中
@@ -548,6 +549,7 @@ function updateJinbi(human, d, logType,item_id, num)
 	MiddleOption.updateYinliang(human, d, logType)
     if d < 0 then
 	    HeroGrowUp.onCallback(human, HeroGrowUp.TASKTYPE4, -d)
+		TriggerLogic.PublishEvent(TriggerDefine.JINBI_DEL, human.db._id, -d)
     end
 	return true	
 end
@@ -601,7 +603,8 @@ function decZuanshi(human, d, logType, item_id, num, noSend)
 
 	MiddleOption.updateYuanbao(human, d, logType)
 	HeroGrowUp.onCallback(human, HeroGrowUp.TASKTYPE5, -d)
-    YunYingLogic.onCallBack(human, "onDecZuanshi",-d)   
+    YunYingLogic.onCallBack(human, "onDecZuanshi",-d)
+	TriggerLogic.PublishEvent(TriggerDefine.GUYU_DEL, human.db._id, -d)
 	return true
 end
 

+ 213 - 0
script/module/absAct/BusOneActivityBuy.lua

@@ -0,0 +1,213 @@
+--------------------------------
+-- 文件名       :   BusOneActivityBuy.lua
+-- 文件说明     :   新商业活动-购买
+-- 创建时间     :   2025/08/05
+-- 创建人       :   FC
+--------------------------------
+
+local tBuyConf = require("excel.BusoneActivity").Buy
+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 AbsActLogic = require("absAct.AbsActLogic")
+local BuyLogic = require("topup.BuyLogic")
+local ObjHuman = require("core.ObjHuman")
+local BusOneActivityTask = require("absAct.BusOneActivityTask")
+
+local BUSONEBUYABSID = 7202        -- 对应ABS活动ID
+local BUSONEBUY_TYPE_MONEY = 2      -- 钱购买
+
+----------------------------------------- 内部处理开始 -------------------------------------
+-- 创建DB
+local function BusOneBuy_CreatDB(human)
+    if not human.db.absAct[BUSONEBUYABSID] then
+        human.db.absAct[BUSONEBUYABSID] = {}
+    end
+
+    human.db.absAct[BUSONEBUYABSID].tBuyInfo = {}
+    for nID, v in ipairs(tBuyConf) do
+        human.db.absAct[BUSONEBUYABSID].tBuyInfo[nID] = {
+            nBuyNum = 0,
+            nStatus = CommonDefine.COMMON_PRIZE_STATE_NOGET
+        }
+    end
+end
+
+-- 重置DB
+local function BusOneBuy_CheckAndResetDB(human)
+    if not human.db.absAct[BUSONEBUYABSID] or nil == _G.next(human.db.absAct[BUSONEBUYABSID]) 
+        or not human.db.absAct[BUSONEBUYABSID].tBuyInfo then
+        BusOneBuy_CreatDB(human)
+    end
+end
+
+-- 获取购买次数
+local function BusOneBuy_GetBuyNum(human, nID)
+    return human.db.absAct[BUSONEBUYABSID].tBuyInfo[nID].nBuyNum
+end
+
+-- 设置购买次数
+local function BusOneBuy_SetBuyNum(human, nID, nAddNum)
+    human.db.absAct[BUSONEBUYABSID].tBuyInfo[nID].nBuyNum = human.db.absAct[BUSONEBUYABSID].tBuyInfo[nID].nBuyNum  + nAddNum
+end
+
+-- 获取购买状态
+local function BusOneBuy_GetBuyStatus(human, nID)
+    return human.db.absAct[BUSONEBUYABSID].tBuyInfo[nID].nStatus
+end
+
+-- 设置购买状态
+local function BusOneBuy_SetBuyStatus(human, nID, nValue)
+    human.db.absAct[BUSONEBUYABSID].tBuyInfo[nID].nStatus = nValue
+end
+
+-----------------------------------客户端请求-----------------------------
+function BusOneBuy_Query(human)
+    BusOneBuy_CheckAndResetDB(human)
+    
+    local tMsgData = Msg.gc.GC_NEW_BUSONEACT_BUY_QUERY
+    tMsgData.tList[0] = 0
+    for nID, v in ipairs(tBuyConf) do
+        tMsgData.tList[0] = tMsgData.tList[0] + 1
+        local tData = tMsgData.tList[tMsgData.tList[0]]
+        tData.nID = nID
+        tData.nStatus = BusOneBuy_GetBuyStatus(human, nID)
+        tData.nNowBuyNum = BusOneBuy_GetBuyNum(human, nID)
+        tData.nBuyNum = v.nBuyNum
+        tData.nType = v.nType
+        
+        BuyLogic.fontBuyItem(human, tData.tBuyItem, v.nBuyID)
+        if v.nBuyID == 0 then
+            tData.tBuyItem.cost = v.nPrize
+        end
+
+        tData.tPrize[0] = #v.tPrize
+        for i, tItem in ipairs(v.tPrize) do
+            Grid.makeItem(tData.tPrize[i], tItem[1], tItem[2])
+        end
+    end
+
+    Msg.send(tMsgData, human.fd)
+end
+
+function BusOneBuy_Buy(human, nID)
+    local tConf = tBuyConf[nID]
+    if not tConf then
+        print("[BusOneBuy_Buy] 不存在对应的配置 返回 nID = "..nID)
+        return
+    end
+
+    if tConf.nType == BUSONEBUY_TYPE_MONEY then
+        print("[BusOneBuy_Buy] 配置对应的类型不正确 返回 nID = "..nID.." nType = "..tConf.nType)
+        return
+    end
+
+    local nNowBuyNum = BusOneBuy_GetBuyNum(human, nID)
+    if nNowBuyNum >= tConf.nBuyNum then
+        print("[BusOneBuy_Buy] 当前购买的次数大于可购买的次数 返回 nID = "..nID.." nType = "
+                ..tConf.nType.." nNowBuyNum = "..nNowBuyNum)
+        return
+    end
+
+    if not ObjHuman.checkRMB(human, tConf.nPrize) then
+        print("[BusOneBuy_Buy] 当前购买的金币不足 返回 nID = "..nID.." nType = "
+            ..tConf.nType.." nNowBuyNum = "..nNowBuyNum)
+		return
+	end
+	
+	-- 扣消耗
+	ObjHuman.decZuanshi(human, -tConf.nPrize, "BusOneBuy")
+    BusOneBuy_SetBuyNum(human, nID, 1)
+
+    -- BusOneBuy_SetBuyStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_CANGET)
+    BagLogic.addItemList(human, tConf.tPrize, "BusOneBuy")
+
+    BusOneBuy_Query(human)
+end
+
+function BusOneBuy_Get(human)
+    local tItem = {}
+    for nID, v in pairs(tBuyConf) do
+        local nStatus = BusOneBuy_GetBuyStatus(human, nID)
+        if CommonDefine.COMMON_PRIZE_STATE_CANGET == nStatus then
+            for i, tData in ipairs(v.tPrize) do
+                if not tItem[tData[1]] then
+                    tItem[tData[1]] = 0
+                end
+
+                tItem[tData[1]] = tItem[tData[1]] + tData[2]
+            end
+
+            local nNowBuyNum = BusOneBuy_GetBuyNum(human, nID)
+            if nNowBuyNum >= v.nBuyNum then
+                BusOneBuy_SetBuyStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_GET)
+            else
+                BusOneBuy_SetBuyStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_NOGET)
+            end
+        end
+    end
+
+    if nil ~= _G.next(tItem) then
+        local tPrize = {}
+        for nID, nNum in pairs(tItem) do
+            table.insert(tPrize, {nID, nNum})
+        end
+
+        BagLogic.addItemList(human, tPrize, "BusOneBuy")
+        BusOneBuy_Query(human)
+        BusOneActivityTask.BusOneTask_SendRed(human)
+    end
+end
+
+-----------------------------------外部调用-----------------------------
+function isOpen(human, YYInfo, funcConfig)
+    print("[BusOneActivityBuy_isOpen] 进入判断")
+    local state, endTime, startTime = AbsActLogic.isStarted(human, funcConfig and funcConfig.funcID or BUSONEBUYABSID)
+    if not state then 
+        print("[BusOneActivityBuy_isOpen] 当前活动未开启")
+        return 
+    end
+
+    print("[BusOneActivityBuy_isOpen] 进入判断 endTime = "..endTime.." startTime = "..startTime)
+    return true, endTime, startTime
+end
+
+function isActive(human, YYInfo, funcConfig)
+    return not isOpen(human, YYInfo, funcConfig)
+end
+
+function isRed(human, YYInfo, absActConfig)
+    BusOneBuy_CheckAndResetDB(human)
+   
+    for nID, v in pairs(tBuyConf) do
+        local nStatus = BusOneBuy_GetBuyStatus(human, nID)
+        if CommonDefine.COMMON_PRIZE_STATE_CANGET == nStatus then
+            return true
+        end
+    end
+
+    return false
+end
+
+function onCharge(human, price, funcID, buyID)
+    print("[BusOneActivityBuy_onCharge] 进入购买 buyID = "..buyID)
+    local bRed = false
+    for nID, v in pairs(tBuyConf) do
+        if buyID == v.nBuyID then
+            local nStatus = BusOneBuy_GetBuyStatus(human, nID)
+            if nStatus == CommonDefine.COMMON_PRIZE_STATE_NOGET then
+                BusOneBuy_SetBuyStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_CANGET)
+                BusOneBuy_SetBuyNum(human, nID, 1)
+                bRed = true
+            end
+        end
+    end
+
+    if true == bRed then
+        print("[BusOneActivityBuy_onCharge] 进入发送数据 buyID = "..buyID)
+        BusOneBuy_Get(human)
+        BusOneActivityTask.BusOneTask_SendRed(human)
+    end
+end

+ 418 - 0
script/module/absAct/BusOneActivityHeroYuanZheng.lua

@@ -0,0 +1,418 @@
+--------------------------------
+-- 文件名       :   BusOneActivityHeroYuanZheng.lua
+-- 文件说明     :   新商业活动-英雄远征
+-- 创建时间     :   2025/08/06
+-- 创建人       :   FC
+--------------------------------
+
+local tBusoneActivityConf = require("excel.BusoneActivity")
+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 AbsActLogic = require("absAct.AbsActLogic")
+local BuyLogic = require("topup.BuyLogic")
+local YunYingLogic = require("yunying.YunYingLogic")
+local BusOneActivityTask = require("absAct.BusOneActivityTask")
+local BusOneActivityYuanZheng = require("absAct.BusOneActivityYuanZheng")
+
+
+local BUSONEHEROYUANZHENGABSID = 7204        -- 对应ABS活动ID
+local BUSONEHEROYUANZHENGMAXLAYERS = nil     -- 最大层数
+local BUSONEHEROYUANZHENGMAXROUND = nil      -- 最大轮数
+local BUSONEHEROYUANZHENGBAOHU = 2          -- 保护抽取
+local BUSONEHEROYUANZHENGDGOODID = 1039      -- 物品ID
+
+----------------------------------------- 内部处理开始 -------------------------------------
+-- 获取权重配置
+local function BusOneHeroYuanZheng_GetWeightConf()
+    return tBusoneActivityConf.HeroWeight
+end
+
+-- 获取奖励配置
+local function BusOneHeroYuanZheng_GetHeroConf()
+    return tBusoneActivityConf.HeroYuanZheng
+end
+
+local function BusOneHeroYuanZheng_GetMaxLayers()
+    if nil == BUSONEHEROYUANZHENGMAXLAYERS then
+        BUSONEHEROYUANZHENGMAXLAYERS = 0
+        for _, v in ipairs(tBusoneActivityConf.HeroYuanZheng) do
+            if v.nLayers > BUSONEHEROYUANZHENGMAXLAYERS then
+                BUSONEHEROYUANZHENGMAXLAYERS = v.nLayers
+            end
+        end
+    end
+
+    return BUSONEHEROYUANZHENGMAXLAYERS
+end
+
+-- 获取最大轮数
+local function BusOneHeroYuanZheng_GetMaxRound()
+    if nil == BUSONEHEROYUANZHENGMAXROUND then
+        BUSONEHEROYUANZHENGMAXROUND = 0
+        for _, v in ipairs(tBusoneActivityConf.HeroYuanZheng) do
+            if v.nRound > BUSONEHEROYUANZHENGMAXROUND then
+                BUSONEHEROYUANZHENGMAXROUND = v.nRound
+            end
+        end
+    end
+
+    return BUSONEHEROYUANZHENGMAXROUND
+end
+
+-- 创建DB
+local function BusOneHeroYuanZheng_CreatDB(human)
+    if not human.db.absAct[BUSONEHEROYUANZHENGABSID] then
+        human.db.absAct[BUSONEHEROYUANZHENGABSID] = {}
+    end
+
+    human.db.absAct[BUSONEHEROYUANZHENGABSID].tLayers = {
+        nRound = 1,
+        nLayers = -1,
+        tStatus = {},
+    }
+
+    local nMaxLayers = BusOneHeroYuanZheng_GetMaxLayers()
+
+    for i = 0, nMaxLayers, 1 do
+        human.db.absAct[BUSONEHEROYUANZHENGABSID].tLayers.tStatus[i] = CommonDefine.COMMON_PRIZE_STATE_NOGET
+    end
+    
+end
+
+-- 重置DB
+local function BusOneHeroYuanZheng_CheckAndResetDB(human)
+    if not human.db.absAct[BUSONEHEROYUANZHENGABSID] or nil == _G.next(human.db.absAct[BUSONEHEROYUANZHENGABSID]) 
+        or not human.db.absAct[BUSONEHEROYUANZHENGABSID].tLayers then
+            BusOneHeroYuanZheng_CreatDB(human)
+    end
+end
+
+-- 获取当前远征轮数
+local function BusOneHeroYuanZheng_GetRound(human)
+    return human.db.absAct[BUSONEHEROYUANZHENGABSID].tLayers.nRound
+end
+
+-- 设置远征轮数
+local function BusOneHeroYuanZheng_SetRound(human, nValue)
+    human.db.absAct[BUSONEHEROYUANZHENGABSID].tLayers.nRound = nValue
+end
+
+-- 获取当前远征层数
+local function BusOneHeroYuanZheng_GetLayers(human)
+    return human.db.absAct[BUSONEHEROYUANZHENGABSID].tLayers.nLayers
+end
+
+-- 设置远征层数
+local function BusOneHeroYuanZheng_SetLayers(human, nValue)
+    human.db.absAct[BUSONEHEROYUANZHENGABSID].tLayers.nLayers = nValue
+end
+
+-- 获取当前远征状态
+local function BusOneHeroYuanZheng_GetStatus(human, nID)
+    return human.db.absAct[BUSONEHEROYUANZHENGABSID].tLayers.tStatus[nID]
+end
+
+-- 设置远征状态
+local function BusOneHeroYuanZheng_SetStatus(human, nID, nValue)
+    human.db.absAct[BUSONEHEROYUANZHENGABSID].tLayers.tStatus[nID] = nValue
+end
+
+-- 进行对应轮数
+local function BusOneHeroYuanZheng_EnterRound(human, nRound)
+    local nMaxRound = BusOneHeroYuanZheng_GetMaxRound()
+    if nMaxRound < nRound then
+        return
+    end
+
+    BusOneHeroYuanZheng_SetRound(human, nRound)
+    BusOneHeroYuanZheng_SetLayers(human, -1)
+    local nMaxLayers = BusOneHeroYuanZheng_GetMaxLayers()
+
+    for i = 0, nMaxLayers, 1 do
+        human.db.absAct[BUSONEHEROYUANZHENGABSID].tLayers.tStatus[i] = CommonDefine.COMMON_PRIZE_STATE_NOGET
+    end
+end
+
+-----------------------------------客户端请求-----------------------------
+-- 请求英雄远征
+function BusOneHeroYuanZheng_Query(human)
+    BusOneHeroYuanZheng_CheckAndResetDB(human)
+
+    local tMsgData = Msg.gc.GC_NEW_BUSONEACT_HERO_QUERY
+    local tWeightConf = BusOneHeroYuanZheng_GetWeightConf()
+    tMsgData.tFenShu[0] = #tWeightConf
+    for i, v in ipairs(tWeightConf) do
+        tMsgData.tFenShu[i] = v.nWeight
+    end
+
+    tMsgData.nRound = BusOneHeroYuanZheng_GetRound(human)
+    tMsgData.nLayers = BusOneHeroYuanZheng_GetLayers(human)
+
+    local tConf = BusOneHeroYuanZheng_GetHeroConf()
+    tMsgData.tLayersInfo[0] = 0
+
+    for _, v in ipairs(tConf) do
+        if v.nRound == tMsgData.nRound then
+            local nLayers = v.nLayers
+            tMsgData.tLayersInfo[0] = tMsgData.tLayersInfo[0] + 1
+            local tData = tMsgData.tLayersInfo[tMsgData.tLayersInfo[0]]
+            tData.nLayers = nLayers
+            tData.nStatus = BusOneHeroYuanZheng_GetStatus(human, nLayers)
+
+            tData.tPrize[0] = #v.tPrize
+            for i, tItem in ipairs(v.tPrize) do
+                local nGoodsID = tItem[1]
+                local nGoodsNum = tItem[2]
+    
+                Grid.makeItem(tData.tPrize[i], nGoodsID, nGoodsNum)
+            end
+        end
+    end
+
+    Msg.send(tMsgData, human.fd)
+end
+
+-- 请求参与
+function BusOneHeroYuanZheng_Join(human)
+    BusOneHeroYuanZheng_CheckAndResetDB(human)
+    
+    local nGoodsNum = BagLogic.getItemCnt(human, BUSONEHEROYUANZHENGDGOODID)
+    if 0 >= nGoodsNum then
+        print("[BusOneHeroYuanZheng_Join] 物品不足 nGoodsNum = "..nGoodsNum)
+        return
+    end
+
+    local nNowLayers = BusOneHeroYuanZheng_GetLayers(human)
+    if nNowLayers ~= -1 then
+        print("[BusOneHeroYuanZheng_Join] 当前层数不正确 nNowLayers = "..nNowLayers)
+        return
+    end
+
+    local tWeightConf = BusOneHeroYuanZheng_GetWeightConf()
+    local nAllWeight = 0
+    local tWeight = {}
+    for _, v in ipairs(tWeightConf) do
+        if v.nWeight >= 0  then
+            nAllWeight = nAllWeight + v.nLayers
+            table.insert(tWeight, {nWeight = nAllWeight, nFenShu = v.nWeight})
+        end
+    end
+
+    local nRandWeight = math.random(1, nAllWeight)
+    local nFenShu = nil
+    for _, v in ipairs(tWeight) do
+        if v.nWeight >= nRandWeight then
+            nFenShu = v.nFenShu
+            break
+        end
+    end
+
+    local nNewLayers = nNowLayers + nFenShu
+    BusOneHeroYuanZheng_SetLayers(human, nNewLayers)
+    BusOneHeroYuanZheng_SetStatus(human, nNewLayers, CommonDefine.COMMON_PRIZE_STATE_CANGET)
+    
+    local nRound = BusOneHeroYuanZheng_GetRound(human)
+    local tConf = BusOneHeroYuanZheng_GetHeroConf()
+
+    local tMsgData = Msg.gc.GC_NEW_BUSONEACT_HERO_JOIN
+    tMsgData.nFenShu = nFenShu
+    tMsgData.nLayers = nNewLayers
+    tMsgData.tLayersInfo[0] = 0
+
+    for _, v in ipairs(tConf) do
+        if v.nRound == nRound then
+            local nLayers = v.nLayers
+            tMsgData.tLayersInfo[0] = tMsgData.tLayersInfo[0] + 1
+            local tData = tMsgData.tLayersInfo[tMsgData.tLayersInfo[0]]
+            tData.nLayers = nLayers
+            tData.nStatus = BusOneHeroYuanZheng_GetStatus(human, nLayers)
+
+            tData.tPrize[0] = #v.tPrize
+            for i, tItem in ipairs(v.tPrize) do
+                local nGoodsID = tItem[1]
+                local nGoodsNum = tItem[2]
+    
+                Grid.makeItem(tData.tPrize[i], nGoodsID, nGoodsNum)
+            end
+        end
+    end
+
+    BagLogic.delItem(human, BUSONEHEROYUANZHENGBAOHU, 1, "BusOneHeroYuanZheng")
+
+    Msg.send(tMsgData, human.fd)
+    print("[BusOneHeroYuanZheng_Join] 发送数据完成")
+    BusOneActivityYuanZheng.BusOneYuanZheng_NumChange(human, 1)
+    BusOneActivityTask.BusOneTask_SendRed(human)
+end
+
+-- 请求抽取
+function BusOneHeroYuanZheng_Do(human, nOperate)
+    local nDelNum = nOperate == BUSONEHEROYUANZHENGBAOHU and 1 or 0
+    local nGoodsNum = BagLogic.getItemCnt(human, BUSONEHEROYUANZHENGDGOODID)
+    if nGoodsNum < nDelNum then
+        print("[BusOneHeroYuanZheng_Do] 进行抽取 当前的可抽取的数量不正确 nGoodsNum = "..nGoodsNum.." nDelNum = "..nDelNum)
+        return
+    end
+
+    local tWeightConf = BusOneHeroYuanZheng_GetWeightConf()
+    local nAllWeight = 0
+    local tWeight = {}
+    for _, v in ipairs(tWeightConf) do
+        if v.nWeight >= 0  then
+            nAllWeight = nAllWeight + v.nLayers
+            table.insert(tWeight, {nWeight = nAllWeight, nFenShu = v.nWeight})
+        else
+            if nOperate ~= BUSONEHEROYUANZHENGBAOHU then
+                nAllWeight = nAllWeight + v.nLayers
+                table.insert(tWeight, {nWeight = nAllWeight, nFenShu = v.nWeight})
+            end
+        end
+    end
+
+    local nRandWeight = math.random(1, nAllWeight)
+    local nFenShu = nil
+    for _, v in ipairs(tWeight) do
+        if v.nWeight >= nRandWeight then
+            nFenShu = v.nFenShu
+            break
+        end
+    end
+
+    local nNowLayers = BusOneHeroYuanZheng_GetLayers(human)
+    local nMaxLayers = BusOneHeroYuanZheng_GetMaxLayers()
+    
+    local nNextLayer = nNowLayers + nFenShu
+    if nNextLayer > 0 then
+        nNextLayer = nNextLayer > nMaxLayers and nMaxLayers or nNextLayer
+        BusOneHeroYuanZheng_SetStatus(human, nNowLayers, CommonDefine.COMMON_PRIZE_STATE_NOGET)
+        BusOneHeroYuanZheng_SetLayers(human, nNextLayer)
+        BusOneHeroYuanZheng_SetStatus(human, nNextLayer, CommonDefine.COMMON_PRIZE_STATE_CANGET)
+    else
+        if nNextLayer < 0  then
+            nNextLayer = -1
+            -- 重置为第一轮
+            BusOneHeroYuanZheng_EnterRound(human, 1)
+        else
+            BusOneHeroYuanZheng_SetStatus(human, nNowLayers, CommonDefine.COMMON_PRIZE_STATE_NOGET)
+            BusOneHeroYuanZheng_SetLayers(human, nNextLayer)
+            BusOneHeroYuanZheng_SetStatus(human, nNextLayer, CommonDefine.COMMON_PRIZE_STATE_CANGET)
+        end
+    end
+
+
+    local tMsgData = Msg.gc.GC_NEW_BUSONEACT_HERO_DO
+    tMsgData.nFenShu = nFenShu
+    tMsgData.nLayers = nNextLayer
+    tMsgData.nRound = BusOneHeroYuanZheng_GetRound(human)
+    tMsgData.tLayersInfo[0] = 0
+
+    local tConf = BusOneHeroYuanZheng_GetHeroConf()
+    for _, v in ipairs(tConf) do
+        if v.nRound == tMsgData.nRound then
+            local nLayers = v.nLayers
+            tMsgData.tLayersInfo[0] = tMsgData.tLayersInfo[0] + 1
+            local tData = tMsgData.tLayersInfo[tMsgData.tLayersInfo[0]]
+            tData.nLayers = nLayers
+            tData.nStatus = BusOneHeroYuanZheng_GetStatus(human, nLayers)
+
+            tData.tPrize[0] = #v.tPrize
+            for i, tItem in ipairs(v.tPrize) do
+                local nGoodsID = tItem[1]
+                local nGoodsNum = tItem[2]
+    
+                Grid.makeItem(tData.tPrize[i], nGoodsID, nGoodsNum)
+            end
+        end
+    end
+
+    if nDelNum > 0 then
+        BagLogic.delItem(human, BUSONEHEROYUANZHENGBAOHU, nDelNum, "BusOneHeroYuanZheng")
+    end
+
+    BusOneActivityYuanZheng.BusOneYuanZheng_NumChange(human, 1)
+    BusOneActivityTask.BusOneTask_SendRed(human)
+    Msg.send(tMsgData, human.fd)
+end
+
+-- 请求领取奖励
+function BusOneHeroYuanZheng_Get(human, nLayers, nIndex)
+    local nRound = BusOneHeroYuanZheng_GetRound(human)
+    local nNowLayers = BusOneHeroYuanZheng_GetLayers(human)
+
+    if nLayers ~= nNowLayers then
+        print("[BusOneHeroYuanZheng_Get] 请求领取奖励的层数和记录的不一致 nLayers = "..nLayers.." nNowLayers = "..nNowLayers)
+        return
+    end
+
+    local tItem = {}
+    local tConf = BusOneHeroYuanZheng_GetHeroConf()
+    for _, v in ipairs(tConf) do
+        if v.nRound == nRound and v.nLayers == nNowLayers then
+            BusOneHeroYuanZheng_SetStatus(human, nNowLayers, CommonDefine.COMMON_PRIZE_STATE_GET)
+
+            for i, value in ipairs(v.tPrize) do
+                if i == nIndex then
+                    table.insert(tItem, {value[1], value[2]})
+                    break
+                end
+            end
+        end
+    end
+
+    if nil ~= _G.next(tItem) then
+        BagLogic.addItemList(human, tItem, "BusOneHeroYuanZheng")
+        local nNextRound = nRound + 1
+        local nMaxRound = BusOneHeroYuanZheng_GetMaxRound()
+        local nMaxLayers = BusOneHeroYuanZheng_GetMaxLayers()
+        print("[BusOneHeroYuanZheng_Get] 当前轮数 nRound = "..nRound.." nNextRound = "..nNextRound.." nMaxRound = "..nMaxRound)
+        if nNextRound <= nMaxRound and nNowLayers == nMaxLayers then
+            print("[BusOneHeroYuanZheng_Get] 进入下一轮")
+            BusOneHeroYuanZheng_EnterRound(human, nNextRound)
+        else
+            print("[BusOneHeroYuanZheng_Get] 重置为第一轮")
+            BusOneHeroYuanZheng_EnterRound(human, 1)
+        end
+
+        BusOneHeroYuanZheng_Query(human)
+        BusOneActivityTask.BusOneTask_SendRed(human)
+    else
+        print("[BusOneHeroYuanZheng_Get] 不存在对应的奖励 nLayers = "..nLayers.." nIndex = "..nIndex)
+    end
+end
+
+-----------------------------------外部调用-----------------------------
+function isOpen(human, YYInfo, funcConfig)
+    print("[BusOneHeroYuanZheng_isOpen] 进入判断")
+
+    local state, endTime, startTime = AbsActLogic.isStarted(human, funcConfig and funcConfig.funcID or BUSONEHEROYUANZHENGABSID)
+    if not state then
+        print("[BusOneHeroYuanZheng_isOpen] 当前活动未开启")
+        return 
+    end
+    print("[BusOneHeroYuanZheng_isOpen] 进入判断 endTime = "..endTime.." startTime = "..startTime)
+    return true, endTime, startTime
+end
+
+function isActive(human, YYInfo, funcConfig)
+    return not isOpen(human, YYInfo, funcConfig)
+end
+
+function isRed(human, YYInfo, absActConfig)
+    BusOneHeroYuanZheng_CheckAndResetDB(human)
+
+    local tConf = BusOneHeroYuanZheng_GetHeroConf()
+    local nRound = BusOneHeroYuanZheng_GetRound(human)
+    for _, v in ipairs(tConf) do
+        if v.nRound == nRound then
+            local nStatus = BusOneHeroYuanZheng_GetStatus(human, v.nLayers)
+            if nStatus == CommonDefine.COMMON_PRIZE_STATE_CANGET then
+                return true
+            end
+        end
+    end
+    
+    return false
+end

+ 375 - 0
script/module/absAct/BusOneActivityTask.lua

@@ -0,0 +1,375 @@
+--------------------------------
+-- 文件名       :   BusOneActivityTask.lua
+-- 文件说明     :   新商业活动-任务
+-- 创建时间     :   2025/08/05
+-- 创建人       :   FC
+--------------------------------
+
+local tTaskConf = require("excel.BusoneActivity").Task
+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 AbsActLogic = require("absAct.AbsActLogic")
+local YunYingLogic = require("yunying.YunYingLogic")
+local TriggerLogic = require("trigger.TriggerLogic")
+local TriggerDefine = require("trigger.TriggerDefine")
+local ObjHuman = require("core.ObjHuman")
+local BusOneActivityBuy = require("absAct.BusOneActivityBuy")
+local BusOneActivityYuanZheng = require("absAct.BusOneActivityYuanZheng")
+local BusOneActivityHero = require("absAct.BusOneActivityHeroYuanZheng")
+
+local BUSONETASKABSID = 7201        -- 对应ABS活动ID
+local BUSONECHOSETASKNUM = 5    -- 选择任务数量
+-- 事件处理
+local tEventHandler = nil
+----------------------------------------- 内部处理开始 -------------------------------------
+-- 获取任务DB数据
+local function BusOneTask_GetAllTask(human)
+    return human.db.absAct[BUSONETASKABSID].tTaskInfo.tChoseTask
+end
+
+local function BusOneTask_SubEvent(uuid, nEventType)
+    print("当前进入荣耀历程订阅事件 注册 nEventType = "..nEventType)
+    TriggerLogic.SubscribeEvent(nEventType, uuid, BusOneTask_EventCallBack)
+end
+
+-- 订阅任务
+local function BusOneTask_BeginSubEvent(human)
+    local uuid = human.db._id
+    local tTaskDBData = BusOneTask_GetAllTask(human)
+    for nID, v in pairs(tTaskDBData) do
+        local tConfig = tTaskConf[nID]
+        if tConfig then
+            BusOneTask_SubEvent(uuid, tConfig.nType)
+        end
+    end
+end
+
+-- 清空任务数据
+local function BusOneTask_ClearTask(human)
+    human.db.absAct[BUSONETASKABSID].tTaskInfo.tChoseTask = {}
+end
+
+-- 选择任务操作
+local function BusOneTask_ChoseTask(human)
+    BusOneTask_ClearTask(human)
+
+    local tType, tTypeTaskNum = {}, {}
+    for nID, v in ipairs(tTaskConf) do
+        if not tType[v.nType] then
+            tType[v.nType] = 1
+        end
+
+        if not tTypeTaskNum[v.nType] then
+            tTypeTaskNum[v.nType] = {}
+        end
+
+        table.insert(tTypeTaskNum[v.nType], nID)
+    end
+
+    local tChoseType, tChoseNum = {}, 0
+    for i = 1, 100, 1 do
+        if tChoseNum == BUSONECHOSETASKNUM then
+            break
+        end
+
+        for nType, value in pairs(tType) do
+            local nRandNum = math.random(1, 100)
+            if 0 == nRandNum % 2 then
+                if not tChoseType[nType] then
+                    tChoseType[nType] = 1
+                    tChoseNum = tChoseNum + 1
+                    break
+                end
+            end
+        end
+    end
+
+    if tChoseNum ~= BUSONECHOSETASKNUM then
+        print("[BusOneTask_ChoseTask] 没有正确的选择出任务类型的个数")
+        return
+    end
+
+    for nType, _ in pairs(tChoseType) do
+        local nLen = #tTypeTaskNum[nType]
+        local nIndex = math.random(1, nLen)
+        local nChoseID = tTypeTaskNum[nType][nIndex]
+
+        human.db.absAct[BUSONETASKABSID].tTaskInfo.tChoseTask[nChoseID] = {
+            nStatus = CommonDefine.COMMON_PRIZE_STATE_NOGET,
+            nFinish = 0,
+        }
+    end
+end
+
+-- 创建DB数据
+local function BusOneTask_CreateDB(human)
+    if not human.db.absAct[BUSONETASKABSID] then
+        human.db.absAct[BUSONETASKABSID] = {}
+    end
+
+    human.db.absAct[BUSONETASKABSID].tTaskInfo = {
+        nRefresh = os.time(),
+        tChoseTask = {},
+    }
+
+    BusOneTask_ChoseTask(human)
+    BusOneTask_BeginSubEvent(human)
+end
+
+-- 检测DB数据
+local function BusOneTask_CheckDB(human)
+    if not human.db.absAct[BUSONETASKABSID] or nil == _G.next(human.db.absAct[BUSONETASKABSID]) 
+        or not human.db.absAct[BUSONETASKABSID].tTaskInfo then
+        BusOneTask_CreateDB(human)
+    end
+end
+
+-- 获取任务状态
+local function BusOneTask_GetTaskStatus(human, nID)
+    return human.db.absAct[BUSONETASKABSID].tTaskInfo.tChoseTask[nID].nStatus
+end
+
+-- 设置任务状态
+local function BusOneTask_SetTaskStatus(human, nID, nStatus)
+    human.db.absAct[BUSONETASKABSID].tTaskInfo.tChoseTask[nID].nStatus = nStatus
+end
+
+-- 获取任务完成次数
+local function BusOneTask_GetTaskFinishNum(human, nID)
+    return human.db.absAct[BUSONETASKABSID].tTaskInfo.tChoseTask[nID].nFinish
+end
+
+-- 设置任务状态
+local function BusOneTask_AddTaskFinishNum(human, nID, nAddNum)
+    human.db.absAct[BUSONETASKABSID].tTaskInfo.tChoseTask[nID].nFinish = human.db.absAct[BUSONETASKABSID].tTaskInfo.tChoseTask[nID].nFinish + nAddNum
+end
+
+-- 获取任务刷新时间
+local function BusOneTask_GetTaskTime(human)
+    return human.db.absAct[BUSONETASKABSID].tTaskInfo.nRefresh
+end
+
+-- 设置任务刷新时间
+local function BusOneTask_SetTaskTime(human, nValue)
+    human.db.absAct[BUSONETASKABSID].tTaskInfo.nRefresh = nValue
+end
+
+-- 检测和重置任务数据
+local function BusOneTask_CheckAndResetTask(human)
+    local nLastTime = BusOneTask_GetTaskTime(human)
+    if nil == Util.isSameDay(nLastTime) then
+        BusOneTask_SetTaskTime(human, os.time())
+        BusOneTask_ChoseTask(human)
+        BusOneTask_BeginSubEvent(human)
+    end
+end
+
+-- 获得英雄
+local function BusOneTask_GetHero(nEventType, uuid, nValue1, nValue2)
+    local human = ObjHuman.onlineUuid[uuid]
+    if not human then
+        print("[BusOneTask_GetHero] 玩家不在线了? nEventType = "..nEventType)
+        return
+    end
+    
+    local nNum = nValue1
+    local nStar = nValue2
+
+    local tAllDBData = BusOneTask_GetAllTask(human)
+    local bSend = false
+    for nID, v in pairs(tAllDBData) do
+        local tConfig = tTaskConf[nID]
+        if tConfig and tConfig.nType == nEventType and tConfig.ExtraParameter then
+            if v.nStatus == CommonDefine.COMMON_PRIZE_STATE_NOGET then
+                local tTaskArgument = Util.split(v.taskArgument , "|")
+                if nNum >= tonumber(tTaskArgument[1]) and nStar == tonumber(tTaskArgument[2]) then
+                    v.nFinish = v.nFinish + 1
+                    if v.nFinish >= tConfig.nNeedFinish then
+                        v.nStatus = CommonDefine.COMMON_PRIZE_STATE_CANGET
+                        bSend = true
+                    end
+                    break
+                end
+            end
+        end
+    end
+end
+
+local function BusOneTask_Common(nEventType, uuid, nValue, nArgumentType)
+    local human = ObjHuman.onlineUuid[uuid]
+    if not human then
+        print("[BusOneTask_Common] 玩家不在线了? nEventType = "..nEventType)
+        return
+    end
+
+    local tAllDBData = BusOneTask_GetAllTask(human)
+    local bSend = false
+    for nID, v in pairs(tAllDBData) do
+        local tConfig = tTaskConf[nID]
+        if tConfig and tConfig.nType == nEventType then
+            if v.nStatus == CommonDefine.COMMON_PRIZE_STATE_NOGET then
+                v.nFinish = v.nFinish + nValue
+                if v.nFinish >= tConfig.nNeedFinish then
+                    v.nStatus = CommonDefine.COMMON_PRIZE_STATE_CANGET
+                    bSend = true
+                end
+                break
+            end
+        end
+    end
+end
+
+-----------------------------------客户端请求-----------------------------
+function BusOneTask_Query(human)
+    BusOneTask_CheckDB(human)
+
+    local tMsgData = Msg.gc.GC_NEW_BUSONEACT_TASK_QUERY
+    tMsgData.tTaskList[0] = 0
+    local tTaskDB = BusOneTask_GetAllTask(human)
+    print("[BusOneTask_Query] 开始打印任务数据")
+    table.print_lua_table(tTaskDB)
+    print("[BusOneTask_Query] 结束打印任务数据")
+
+    for nID, v in pairs(tTaskDB) do
+        local tConfig = tTaskConf[nID]
+        if tConfig  then
+            tMsgData.tTaskList[0] = tMsgData.tTaskList[0] + 1
+            local tData = tMsgData.tTaskList[tMsgData.tTaskList[0]]
+            tData.nID = nID
+            tData.szDes = tConfig.szDes
+            tData.nStatus = v.nStatus
+            tData.nNowFinishNum = v.nFinish
+            tData.nNeedFinishNum = tConfig.nNeedFinish
+
+            tData.tPrize[0] = #tConfig.tPrize
+            for i, tItem in ipairs(tConfig.tPrize) do
+                local nGoodsID = tItem[1]
+                local nGoodsNum = tItem[2]
+
+                Grid.makeItem(tData.tPrize[i], nGoodsID, nGoodsNum)
+            end
+        else
+            print("[BusOneTask_Query] 不存在对应的任务ID配置 nID = "..nID)
+        end
+    end
+
+    Msg.send(tMsgData, human.fd)
+end
+
+function BusOneTask_Get(human)
+    local tTaskDB = BusOneTask_GetAllTask(human)
+    local tItem = {}
+    for nID, v in pairs(tTaskDB) do
+        local tConfig = tTaskConf[nID]
+        if tConfig and v.nStatus == CommonDefine.COMMON_PRIZE_STATE_CANGET then
+            v.nStatus = CommonDefine.COMMON_PRIZE_STATE_GET
+            for _, tGoods in ipairs(tConfig.tPrize) do
+                local nGoodsID = tGoods[1]
+                local nGoodsNum = tGoods[2]
+                if not tItem[nGoodsID] then
+                    tItem[nGoodsID] = 0
+                end
+
+                tItem[nGoodsID] = tItem[nGoodsID] + nGoodsNum
+            end
+        end
+    end
+
+    if nil ~=  _G.next(tItem) then
+        local tGoods = {}
+        for nID, nNum in pairs(tItem) do
+            table.insert(tGoods, {nID, nNum})
+        end
+
+        BagLogic.addItemList(human, tGoods, "BusOneTask")
+        BusOneTask_Query(human)
+    end
+end
+
+-----------------------------------外部调用-----------------------------
+function isOpen(human, YYInfo, funcConfig)
+    print("[BusOneActivityTask_isOpen] 进入判断")
+    local state, endTime, startTime = AbsActLogic.isStarted(human, funcConfig and funcConfig.funcID or BUSONETASKABSID)
+    if not state then
+        print("[BusOneActivityTask_isOpen] 当前活动未开启")
+        return
+    end
+
+    print("[BusOneActivityTask_isOpen] 进入判断 endTime = "..endTime.." startTime = "..startTime)
+
+    return true, endTime, startTime
+end
+
+function isActive(human, YYInfo, funcConfig)
+    return not isOpen(human, YYInfo, funcConfig)
+end
+
+function isRed(human, YYInfo, absActConfig)
+    BusOneTask_CheckDB(human)
+    local tDBData = BusOneTask_GetAllTask(human)
+    for nID, v in pairs(tDBData) do
+        if CommonDefine.COMMON_PRIZE_STATE_CANGET ==  v.nStatus then
+            return true
+        end
+    end
+
+    return false
+end
+
+function onLogin(human)
+    if false == isOpen(human) then
+        return
+    end
+
+    print("[BusOneTask_onLogin] 玩家登录进行处理")
+    BusOneTask_CheckDB(human)
+    BusOneTask_CheckAndResetTask(human)
+end
+
+function onZeroAll()
+    -- 遍历在线玩家
+    for uuid, human in pairs(ObjHuman.onlineUuid) do
+        onLogin(human)
+    end
+end
+
+function Init()
+    tEventHandler = {
+        [TriggerDefine.EVENT_TYPE_GETHERO] = BusOneTask_GetHero,  -- 获得英雄
+        [TriggerDefine.EVENT_TYPE_FATESUMMON] = BusOneTask_Common,   -- 天命召唤
+        [TriggerDefine.EVENT_TYPE_FINDSTAR] = BusOneTask_Common,     -- 寻星
+        [TriggerDefine.DRAWCALL_SERNIOR_CNT] = BusOneTask_Common,    -- 高抽
+        [TriggerDefine.EQUIP_REFINEMENT] = BusOneTask_Common,        -- 装备洗练
+        [TriggerDefine.JINBI_DEL] = BusOneTask_Common,               -- 消耗金币
+        [TriggerDefine.GUYU_DEL] = BusOneTask_Common,                -- 消耗古玉
+        [TriggerDefine.JINGYAN_DEL] = BusOneTask_Common,             -- 消耗经验
+
+    }
+end
+
+function BusOneTask_EventCallBack(nEventType, uuid, nValue1, nValue2)
+    if not tEventHandler then
+        Init()
+    end
+
+    if not tEventHandler or not tEventHandler[nEventType] then
+        print("[BusOneTask_EventCallBack] 不存在对应的处理函数 当前已经返回",nEventType)
+        return
+    end
+
+    pcall(tEventHandler[nEventType], nEventType, uuid, nValue1, nValue2)
+end
+
+function BusOneTask_SendRed(human)
+    local tMsgData = Msg.gc.GC_NEW_BUSONEACT_SEND_RED
+    tMsgData.tListRed[0] = 4
+    tMsgData.tListRed[1] = isRed(human) == true and 1 or 0
+    tMsgData.tListRed[2] = BusOneActivityBuy.isRed(human) == true and 1 or 0
+    tMsgData.tListRed[3] = BusOneActivityYuanZheng.isRed(human) == true and 1 or 0
+    tMsgData.tListRed[4] = BusOneActivityHero.isRed(human) == true and 1 or 0
+
+    Msg.send(tMsgData, human.fd)
+end

+ 272 - 0
script/module/absAct/BusOneActivityYuanZheng.lua

@@ -0,0 +1,272 @@
+--------------------------------
+-- 文件名       :   BusOneActivityYuanZheng.lua
+-- 文件说明     :   新商业活动-远征豪礼
+-- 创建时间     :   2025/08/06
+-- 创建人       :   FC
+--------------------------------
+
+local tYuanZhengConf = require("excel.BusoneActivity").YuanZhengGift
+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 AbsActLogic = require("absAct.AbsActLogic")
+local BuyLogic = require("topup.BuyLogic")
+local YunYingLogic = require("yunying.YunYingLogic")
+local BusOneActivityTask = require("absAct.BusOneActivityTask")
+
+
+local BUSONEYUANZHENGABSID = 7203        -- 对应ABS活动ID
+
+local BUSONEYUANZHENG_PAY_NOGET = 0     -- 不可领取
+local BUSONEYUANZHENG_PAY_BUY = 1       -- 已购买
+local BUSONEYUANZHENG_PAY_HUOYUE = 2    -- 活跃度到达要求
+local BUSONEYUANZHENG_PAY_CANGET = 3    -- 可以领取
+local BUSONEYUANZHENG_PAY_GET = 4       -- 已领取
+
+----------------------------------------- 内部处理开始 -------------------------------------
+-- 创建DB
+local function BusOneYuanZheng_CreatDB(human)
+    if not human.db.absAct[BUSONEYUANZHENGABSID] then
+        human.db.absAct[BUSONEYUANZHENGABSID] = {}
+    end
+
+    human.db.absAct[BUSONEYUANZHENGABSID].tGiftInfo = {
+        nNum = 0,
+        tStatus = {}
+    }
+
+    local tStatus = human.db.absAct[BUSONEYUANZHENGABSID].tGiftInfo.tStatus
+    for nID, v in ipairs(tYuanZhengConf) do
+        tStatus[nID] = {
+            nFreeStatus = CommonDefine.COMMON_PRIZE_STATE_NOGET,
+            nPayStatus = BUSONEYUANZHENG_PAY_NOGET
+        }
+    end
+end
+
+-- 重置DB
+local function BusOneYuanZheng_CheckAndResetDB(human)
+    if not human.db.absAct[BUSONEYUANZHENGABSID] or nil == _G.next(human.db.absAct[BUSONEYUANZHENGABSID]) 
+        or not human.db.absAct[BUSONEYUANZHENGABSID].tGiftInfo then
+        BusOneYuanZheng_CreatDB(human)
+    end
+end
+
+-- 获取当前远征次数
+local function BusOneYuanZheng_GetBuyNum(human)
+    return human.db.absAct[BUSONEYUANZHENGABSID].tGiftInfo.nNum
+end
+
+-- 设置购买次数
+local function BusOneYuanZheng_SetBuyNum(human, nAddNum)
+    human.db.absAct[BUSONEYUANZHENGABSID].tGiftInfo.nNum = human.db.absAct[BUSONEYUANZHENGABSID].tGiftInfo.nNum + nAddNum
+end
+
+-- 获取当前免费奖励状态
+local function BusOneYuanZheng_GetFreeStatus(human, nID)
+    return human.db.absAct[BUSONEYUANZHENGABSID].tGiftInfo.tStatus[nID].nFreeStatus
+end
+
+-- 设置免费奖励状态
+local function BusOneYuanZheng_SetFreeStatus(human, nID, nValue)
+    human.db.absAct[BUSONEYUANZHENGABSID].tGiftInfo.tStatus[nID].nFreeStatus = nValue
+end
+
+-- 获取当前付费奖励状态
+local function BusOneYuanZheng_GetPayStatus(human, nID)
+    return human.db.absAct[BUSONEYUANZHENGABSID].tGiftInfo.tStatus[nID].nPayStatus
+end
+
+-- 设置付费奖励状态
+local function BusOneYuanZheng_SetPayStatus(human, nID, nValue)
+    human.db.absAct[BUSONEYUANZHENGABSID].tGiftInfo.tStatus[nID].nPayStatus = nValue
+end
+
+-----------------------------------客户端请求-----------------------------
+function BusOneYuanZheng_Query(human)
+    BusOneYuanZheng_CheckAndResetDB(human)
+
+    local tMsgData = Msg.gc.GC_NEW_BUSONEACT_YUANZHENG_QUERY
+    tMsgData.tList[0] = 0
+    for nID, v in ipairs(tYuanZhengConf) do
+        tMsgData.tList[0] = tMsgData.tList[0] + 1
+        local tData = tMsgData.tList[tMsgData.tList[0]]
+        tData.nID = nID
+        tData.nFreeStatus = BusOneYuanZheng_GetFreeStatus(human, nID)
+        local nPayStatus = BusOneYuanZheng_GetPayStatus(human, nID)
+        tData.nPayStatus = CommonDefine.COMMON_PRIZE_STATE_NOGET
+        tData.bBuy = 0
+        if nPayStatus == BUSONEYUANZHENG_PAY_CANGET then
+            tData.nPayStatus = CommonDefine.COMMON_PRIZE_STATE_CANGET
+        elseif BUSONEYUANZHENG_PAY_GET == nPayStatus then
+            tData.nPayStatus = CommonDefine.COMMON_PRIZE_STATE_GET
+        end
+
+        if nPayStatus ~= BUSONEYUANZHENG_PAY_NOGET and BUSONEYUANZHENG_PAY_HUOYUE ~= nPayStatus then
+            tData.bBuy = 1
+        end
+
+        tData.nFinishNum = BusOneYuanZheng_GetBuyNum(human)
+        tData.nNeedNum = v.nNum
+
+        -- 购买项
+        BuyLogic.fontBuyItem(human, tData.tBuyItem, v.nBuyID)
+
+        tData.tFreePrize[0] = #v.tFreePrize
+        for i, tItem in ipairs(v.tFreePrize) do
+            local nGoodsID = tItem[1]
+            local nGoodsNum = tItem[2]
+
+            Grid.makeItem(tData.tFreePrize[i], nGoodsID, nGoodsNum)
+        end
+
+        tData.tPayPrize[0] = #v.tPayPrize
+        for i, tItem in ipairs(v.tPayPrize) do
+            local nGoodsID = tItem[1]
+            local nGoodsNum = tItem[2]
+
+            Grid.makeItem(tData.tPayPrize[i], nGoodsID, nGoodsNum)
+        end
+    end
+
+    Msg.send(tMsgData, human.fd)
+end
+
+function BusOneYuanZheng_Get(human)
+    local tGoods = {}
+    for nID, v in ipairs(tYuanZhengConf) do
+        local nFreeStatus = BusOneYuanZheng_GetFreeStatus(human, nID)
+        if CommonDefine.COMMON_PRIZE_STATE_CANGET == nFreeStatus then
+            BusOneYuanZheng_SetFreeStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_GET)
+            for _, tItem in ipairs(v.tFreePrize) do
+                local nGoodsID = tItem[1]
+                local nGoodsNum = tItem[2]
+
+                if not tGoods[nGoodsID] then
+                    tGoods[nGoodsID] = 0
+                end
+
+                tGoods[nGoodsID] = tGoods[nGoodsID] + nGoodsNum
+            end
+        end
+
+        local nPayStatus = BusOneYuanZheng_GetPayStatus(human, nID)
+        if BUSONEYUANZHENG_PAY_CANGET == nPayStatus then
+            BusOneYuanZheng_SetPayStatus(human, nID, BUSONEYUANZHENG_PAY_GET)
+            for _, tItem in ipairs(v.tPayPrize) do
+                local nGoodsID = tItem[1]
+                local nGoodsNum = tItem[2]
+
+                if not tGoods[nGoodsID] then
+                    tGoods[nGoodsID] = 0
+                end
+
+                tGoods[nGoodsID] = tGoods[nGoodsID] + nGoodsNum
+            end
+        end
+    end
+
+    if nil ~= _G.next(tGoods) then
+        local tItem = {}
+        for nGoodID, nGoodNum in pairs(tGoods) do
+            table.insert(tItem, {nGoodID, nGoodNum})
+        end
+
+        BagLogic.addItemList(human, tItem, "BusOneYuanZheng")
+        BusOneYuanZheng_Query(human)
+
+        YunYingLogic.sendBanner(human)
+        BusOneActivityTask.BusOneTask_SendRed(human)
+    end
+end
+
+-----------------------------------外部调用-----------------------------
+function isOpen(human, YYInfo, funcConfig)
+    print("[BusOneYuanZheng_isOpen] 进入判断")
+    local state, endTime, startTime = AbsActLogic.isStarted(human, funcConfig and funcConfig.funcID or BUSONEYUANZHENGABSID)
+    if not state then 
+        print("[BusOneYuanZheng_isOpen] 当前活动未开启")
+        return 
+    end
+    print("[BusOneYuanZheng_isOpen] 进入判断 endTime = "..endTime.." startTime = "..startTime)
+    return true, endTime, startTime
+end
+
+function isActive(human, YYInfo, funcConfig)
+    return not isOpen(human, YYInfo, funcConfig)
+end
+
+function isRed(human, YYInfo, absActConfig)
+    BusOneYuanZheng_CheckAndResetDB(human)
+
+    for nID, v in ipairs(tYuanZhengConf) do
+        local nFreeStatus = BusOneYuanZheng_GetFreeStatus(human, nID)
+        local nPayStatus = BusOneYuanZheng_GetPayStatus(human, nID)
+        if CommonDefine.COMMON_PRIZE_STATE_CANGET == nFreeStatus or
+            BUSONEYUANZHENG_PAY_CANGET == nPayStatus then
+            return true
+        end
+    end
+
+    return false
+end
+
+function onCharge(human, price, funcID, buyID)
+    print("[BusOneYuanZheng_onCharge] 进入购买 buyID = "..buyID)
+
+    BusOneYuanZheng_CheckAndResetDB(human)
+
+    for nID, v in ipairs(tYuanZhengConf) do
+        if v.nBuyID == buyID then
+            local nPayStatus = BusOneYuanZheng_GetPayStatus(human, nID)
+            if BUSONEYUANZHENG_PAY_NOGET == nPayStatus then
+                BusOneYuanZheng_SetPayStatus(human, nID, BUSONEYUANZHENG_PAY_BUY)
+            elseif BUSONEYUANZHENG_PAY_HUOYUE == nPayStatus then
+                BusOneYuanZheng_SetPayStatus(human, nID, BUSONEYUANZHENG_PAY_CANGET)
+            end
+        end
+    end
+
+    print("[BusOneYuanZheng_onCharge] 发送协议完成")
+
+    BusOneYuanZheng_Query(human)
+    BusOneActivityTask.BusOneTask_SendRed(human)
+end
+
+function BusOneYuanZheng_NumChange(human, nNum)
+    if 0 >= nNum then
+        return
+    end
+
+    BusOneYuanZheng_CheckAndResetDB(human)
+    local nOldNum = BusOneYuanZheng_GetBuyNum(human)
+    BusOneYuanZheng_SetBuyNum(human, nNum)
+
+    local nNewNum = nOldNum + nNum
+    local bSend = false
+    for nID, v in ipairs(tYuanZhengConf) do
+        if nNewNum >= v.nNum then
+            local nFreeStatus = BusOneYuanZheng_GetFreeStatus(human, nID)
+            local nPayStatus = BusOneYuanZheng_GetPayStatus(human, nID)
+            if nFreeStatus == CommonDefine.COMMON_PRIZE_STATE_NOGET then
+                BusOneYuanZheng_SetFreeStatus(human, nID, CommonDefine.COMMON_PRIZE_STATE_CANGET)
+                bSend = true
+            end
+
+            if BUSONEYUANZHENG_PAY_NOGET == nPayStatus then
+                BusOneYuanZheng_SetPayStatus(human, nID, BUSONEYUANZHENG_PAY_HUOYUE)
+                bSend = true
+            elseif BUSONEYUANZHENG_PAY_BUY == nPayStatus then
+                BusOneYuanZheng_SetPayStatus(human, nID, BUSONEYUANZHENG_PAY_CANGET)
+                bSend = true
+            end
+        end
+    end
+
+    if true == bSend then
+        YunYingLogic.sendBanner(human)
+        BusOneActivityTask.BusOneTask_SendRed(human)
+    end
+end

+ 52 - 0
script/module/absAct/Handler.lua

@@ -34,6 +34,10 @@ local AbsLoginRewardLogic = require("absAct.AbsLoginRewardLogic")
 local AbsDiscountStoreLogic = require("absAct.AbsDiscountStoreLogic")
 local AbsExcellentGiftLogic = require("absAct.AbsExcellentGiftLogic")
 local AbsLotteryCardLogic = require("absAct.AbsLotteryCardLogic")
+local BusOneActivityTask = require("absAct.BusOneActivityTask")
+local BusOneActivityBuy = require("absAct.BusOneActivityBuy")
+local BusOneActivityYuanZheng = require("absAct.BusOneActivityYuanZheng")
+local BusOneActivityHero = require("absAct.BusOneActivityHeroYuanZheng")
 
 function CG_ABS_ACT_DETAIL_QUERY(human, msg)
     AbsActLogic.actDetailQuery(human,msg.id)
@@ -299,4 +303,52 @@ end
 
 function CG_LOTTERYCARD_RESET(human, msg)
     AbsLotteryCardLogic.ResetAward(human, msg.id)
+end
+
+-----------------------------------------------------新商业化活动1——每日任务--------------------------------------------------
+function CG_NEW_BUSONEACT_TASK_QUERY(human, msg)
+    BusOneActivityTask.BusOneTask_Query(human)
+end
+
+function CG_NEW_BUSONEACT_TASK_GET(human, msg)
+    BusOneActivityTask.BusOneTask_Get(human)
+end
+
+-----------------------------------------------------新商业化活动1——超值大礼--------------------------------------------------
+function CG_NEW_BUSONEACT_BUY_QUERY(human, msg)
+    BusOneActivityBuy.BusOneBuy_Query(human)
+end
+
+function CG_NEW_BUSONEACT_BUY_BUYFREE(human, msg)
+    BusOneActivityBuy.BusOneBuy_Buy(human, msg.nID)
+end
+
+function CG_NEW_BUSONEACT_BUY_GET(human, msg)
+    -- BusOneActivityBuy.BusOneBuy_Get(human)
+end
+
+-----------------------------------------------------新商业化活动1——远征豪礼--------------------------------------------------
+function CG_NEW_BUSONEACT_YUANZHENG_QUERY(human, msg)
+    BusOneActivityYuanZheng.BusOneYuanZheng_Query(human)
+end
+
+function CG_NEW_BUSONEACT_YUANZHENG_GET(human, msg)
+    BusOneActivityYuanZheng.BusOneYuanZheng_Get(human)
+end
+
+-----------------------------------------------------新商业化活动1——英雄远征--------------------------------------------------
+function CG_NEW_BUSONEACT_HERO_QUERY(human, msg)
+    BusOneActivityHero.BusOneHeroYuanZheng_Query(human)
+end
+
+function CG_NEW_BUSONEACT_HERO_JOIN(human, msg)
+    BusOneActivityHero.BusOneHeroYuanZheng_Join(human)
+end
+
+function CG_NEW_BUSONEACT_HERO_DO(human, msg)
+    BusOneActivityHero.BusOneHeroYuanZheng_Do(human, msg.nOperate)
+end
+
+function CG_NEW_BUSONEACT_HERO_GET(human, msg)
+    BusOneActivityHero.BusOneHeroYuanZheng_Get(human, msg.nLayers, msg.nIndex)
 end

+ 105 - 91
script/module/absAct/Proto.lua

@@ -1169,116 +1169,130 @@ GC_LOTTERYCARD_RESET = {
 }
 
 ---------------------新商业活动1-每日任务------------------
--- BUSONEACTTASK = {
---     {"nID",                             1,      "int"},     -- 任务ID
---     {"szDes",                           1,      "string"},  -- 任务描述
---     {"nStatus",                         1,      "byte"},    -- 任务状态
---     {"nNowFinishNum",                   1,      "int"},     -- 当前完成次数
---     {"nNeedFinishNum",                  1,      "int"},     -- 需要完成次数
---     {"tPrize",                          5,      ItemData},  -- 奖励
--- }
+BUSONEACTTASK = {
+    {"nID",                             1,      "int"},     -- 任务ID
+    {"szDes",                           1,      "string"},  -- 任务描述
+    {"nStatus",                         1,      "byte"},    -- 任务状态
+    {"nNowFinishNum",                   1,      "int"},     -- 当前完成次数
+    {"nNeedFinishNum",                  1,      "int"},     -- 需要完成次数
+    {"tPrize",                          5,      ItemData},  -- 奖励
+}
 
--- -- 请求任务数据
--- CG_NEW_BUSONEACT_TASK_QUERY = {}
+-- 请求任务数据
+CG_NEW_BUSONEACT_TASK_QUERY = {}
 
--- -- 回复 
--- GC_NEW_BUSONEACT_TASK_QUERY = {
---     {"nBeginTime",                      1,      "int"},
---     {"nEndTime",                        1,      "int"},
---     {"tTaskList",                       5,      BUSONEACTTASK},
--- }
+-- 回复 
+GC_NEW_BUSONEACT_TASK_QUERY = {
+    {"tTaskList",                       5,      BUSONEACTTASK},
+}
 
--- -- 请求领取任务奖励
--- CG_NEW_BUSONEACT_TASK_GET = {}
-
--- ---------------------新商业活动1-超值大礼-------------------
--- BUSONEACTBUY = {
---     {"nID",                             1,      "int"},     -- 任务ID
---     {"nStatus",                         1,      "byte"},    -- 状态
---     {"tPrize",                          5,      ItemData},  -- 奖励
---     {"nNowBuyNum",                      1,      "int"},     -- 当前购买次数
---     {"nBuyNum",                         1,      "int"},     -- 可购买次数
---     {"nType",                           1,      "byte"},    -- 类型
---     {"tBuyItem",                        1,      BuyItem}    -- 购买信息
--- }
+-- 请求领取任务奖励
+CG_NEW_BUSONEACT_TASK_GET = {}
 
--- -- 请求购买礼包
--- CG_NEW_BUSONEACT_BUY_QUERY = {}
+-- 下发红点
+GC_NEW_BUSONEACT_SEND_RED = {
+    {"tListRed",                       5,       "byte"},        -- 红点
+}
 
--- --回复购买礼包数据
--- GC_NEW_BUSONEACT_BUY_QUERY = {
---     {"tList",       10,         BUSONEACTBUY}
--- }
+---------------------新商业活动1-超值大礼-------------------
+BUSONEACTBUY = {
+    {"nID",                             1,      "int"},     -- 任务ID
+    {"nStatus",                         1,      "byte"},    -- 状态
+    {"tPrize",                          5,      ItemData},  -- 奖励
+    {"nNowBuyNum",                      1,      "int"},     -- 当前购买次数
+    {"nBuyNum",                         1,      "int"},     -- 可购买次数
+    {"nType",                           1,      "byte"},    -- 类型
+    {"tBuyItem",                        1,      BuyItem}    -- 购买信息
+}
 
--- ---------------------新商业活动1-远征豪礼-------------------
--- BUSONEACTYUANZHENG = {
---     {"nID",                             1,      "int"},     -- 任务ID
---     {"nFreeStatus",                     1,      "byte"},    -- 免费礼包状态
---     {"nPayStatus",                      1,      "byte"},    -- 付费礼包状态
---     {"nFinishNum",                      1,      "int"},     -- 完成次数
---     {"nNeedNum",                        1,      "int"},     -- 需要完成次数
---     {"tBuyItem",                        1,      BuyItem}    -- 购买信息
--- }
+-- 请求购买礼包
+CG_NEW_BUSONEACT_BUY_QUERY = {}
 
--- -- 请求远征豪礼
--- CG_NEW_BUSONEACT_YUANZHENG_QUERY = {}
+--回复购买礼包数据
+GC_NEW_BUSONEACT_BUY_QUERY = {
+    {"tList",       10,         BUSONEACTBUY}
+}
 
+-- 购买钻石礼包
+CG_NEW_BUSONEACT_BUY_BUYFREE = {
+    {"nID",         1,          "int"}
+}
 
--- -- 回复远征豪礼
--- CG_NEW_BUSONEACT_YUANZHENG_QUERY = {
---     {"tList",       20,     BUSONEACTYUANZHENG}
--- }
+-- 请求领取礼包
+CG_NEW_BUSONEACT_BUY_GET = {}
 
--- -- 请求领取远征豪礼
--- CG_NEW_BUSONEACT_YUANZHENG_GET = {}
+---------------------新商业活动1-远征豪礼-------------------
+BUSONEACTYUANZHENG = {
+    {"nID",                             1,      "int"},     -- 任务ID
+    {"nFreeStatus",                     1,      "byte"},    -- 免费礼包状态
+    {"nPayStatus",                      1,      "byte"},    -- 付费礼包状态
+    {"nFinishNum",                      1,      "int"},     -- 完成次数
+    {"nNeedNum",                        1,      "int"},     -- 需要完成次数
+    {"bBuy",                            1,      "byte"},    -- 是否购买 0 未 1 购买
+    {"tBuyItem",                        1,      BuyItem},    -- 购买信息
+    {"tFreePrize",                      5,      ItemData},  -- 免费奖励
+    {"tPayPrize",                       5,      ItemData},  -- 免费奖励
+}
 
--- ---------------------新商业活动1-英雄远征-------------------
--- -- 层数信息
--- BUSONEACTHEROCHENGSHU = {
---     {"nLayers",     1,      "byte"},    -- 层数
---     {"nStatus",     1,      "byte"},    -- 状态
---     {"tPrize",      5,      ItemData},  -- 奖励
--- }
+-- 请求远征豪礼
+CG_NEW_BUSONEACT_YUANZHENG_QUERY = {}
 
--- -- 请求英雄远征
--- CG_NEW_BUSONEACT_HERO_QUERY = {}
 
--- -- 回复英雄远征
--- GC_NEW_BUSONEACT_HERO_QUERY = {
---     {"tFenShu",     6,      "int"},     -- 分数
---     {"nRound",      1,      "byte"},    -- 当前轮数
---     {"nLayers",     1,      "byte"},    -- 当前层数
---     {"tLayersInfo", 7,       BUSONEACTHEROCHENGSHU}
--- }
+-- 回复远征豪礼
+GC_NEW_BUSONEACT_YUANZHENG_QUERY = {
+    {"tList",       20,     BUSONEACTYUANZHENG}
+}
 
--- -- 请求参与
--- CG_NEW_BUSONEACT_HERO_JOIN = {}
+-- 请求领取远征豪礼
+CG_NEW_BUSONEACT_YUANZHENG_GET = {}
 
--- -- 回复参与
--- GC_NEW_BUSONEACT_HERO_JOIN = {
---     {"nFenShu",     1,      "int"},     -- 选择的分数
---     {"nLayers",     1,      "byte"},    -- 当前层数
---     {"tLayersInfo", 7,       BUSONEACTHEROCHENGSHU}
--- }
+---------------------新商业活动1-英雄远征-------------------
+-- 层数信息
+BUSONEACTHEROCHENGSHU = {
+    {"nLayers",     1,      "byte"},    -- 层数
+    {"nStatus",     1,      "byte"},    -- 状态
+    {"tPrize",      5,      ItemData},  -- 奖励
+}
 
--- -- 请求抽取
--- CG_NEW_BUSONEACT_HERO_DO = {
---     {"nOperate",    1,      "byte"},    -- 1 正常抽取 2 保护抽取
--- }
+-- 请求英雄远征
+CG_NEW_BUSONEACT_HERO_QUERY = {}
 
--- -- 回复抽取
--- GC_NEW_BUSONEACT_HERO_DO = {
---     {"nResult",     1,      "byte"},    -- 0 失败 1 成功
---     {"nRound",      1,      "byte"},    -- 当前轮数
---     {"nLayers",     1,      "byte"},    -- 当前层数
---     {"tLayersInfo", 7,       BUSONEACTHEROCHENGSHU}
--- }
+-- 回复英雄远征
+GC_NEW_BUSONEACT_HERO_QUERY = {
+    {"tFenShu",     6,      "int"},     -- 分数
+    {"nRound",      1,      "byte"},    -- 当前轮数
+    {"nLayers",     1,      "byte"},    -- 当前层数
+    {"tLayersInfo", 7,       BUSONEACTHEROCHENGSHU}
+}
+
+-- 请求参与
+CG_NEW_BUSONEACT_HERO_JOIN = {}
+
+-- 回复参与
+GC_NEW_BUSONEACT_HERO_JOIN = {
+    {"nFenShu",     1,      "int"},     -- 选择的分数
+    {"nLayers",     1,      "byte"},    -- 当前层数
+    {"tLayersInfo", 7,       BUSONEACTHEROCHENGSHU}
+}
+
+-- 请求抽取
+CG_NEW_BUSONEACT_HERO_DO = {
+    {"nOperate",    1,      "byte"},    -- 1 正常抽取 2 保护抽取
+}
+
+-- 回复抽取
+GC_NEW_BUSONEACT_HERO_DO = {
+    {"nFenShu",     1,      "int"},     -- 选择的分数
+    {"nRound",      1,      "byte"},    -- 当前轮数
+    {"nLayers",     1,      "byte"},    -- 当前层数
+    {"tLayersInfo", 7,       BUSONEACTHEROCHENGSHU}
+}
 
 -- -- 请求领取奖励
--- CG_NEW_BUSONEACT_HERO_GET = {
---     {"nLayers",     1,      "byte"},    -- 选择的层数
---     {"nIndex",      1,      "byte"},    -- 选择的物品ID
--- }
+CG_NEW_BUSONEACT_HERO_GET = {
+    {"nLayers",     1,      "byte"},    -- 选择的层数
+    {"nIndex",      1,      "byte"},    -- 选择的物品ID
+}
 
 
 ---------------------------------新商业活动2-7日任务--------------------------------

+ 3 - 1
script/module/bag/BagLogic.lua

@@ -36,7 +36,8 @@ local HeroGrowUp = require("absAct.HeroGrowUp")
 local CommonDefine = require("common.CommonDefine")
 local CommonDB = require("common.CommonDB")
 local RoleStorageBox = require("roleSystem.RoleStorageBox")
-
+local TriggerDefine = require("trigger.TriggerDefine")
+local TriggerLogic = require("trigger.TriggerLogic")
 
 local ITEM_MOMENT_ADD_LIST = {}
 local jinbi_id=101
@@ -212,6 +213,7 @@ function delItem(human, id, cnt, logType, noSend, byId, byCnt)
 	
     if id == ItemDefine.ITEM_GREEN_EXP_ID then
 		HeroGrowUp.onCallback(human, HeroGrowUp.TASKTYPE18, cnt)
+		TriggerLogic.PublishEvent(TriggerDefine.JINGYAN_DEL, human.db._id, cnt)
 	end	
 	return true
 end

+ 4 - 1
script/module/trigger/TriggerDefine.lua

@@ -60,7 +60,10 @@ MIBAO_ACTIVATE             = 53          --  秘宝激活
 YIWU_ACTIVATE              = 54          --  遗物激活
 ZHONGZU_LEVEL              = 55          --  种族试炼
 MIBAO_ALLSTAR              = 56          --  秘宝总星数
-YIWU_ALLSTAR               = 57          --  遗物总星数             
+YIWU_ALLSTAR               = 57          --  遗物总星数  
+JINBI_DEL                  = 58          --  消耗金币
+GUYU_DEL                   = 59          --  消耗古玉
+JINGYAN_DEL                = 60          --  消耗经验         
 
 
 --触发事件后, 新值与旧值相加

+ 1 - 1
script/module/yunying/CycleActivity.lua

@@ -255,7 +255,7 @@ function onLogin(human)
     end
 
     -- print("[CycleActivity_onLogin] 打印数据")
-    table.print_lua_table(human.db.cycleactivity)
+    --table.print_lua_table(human.db.cycleactivity)
 end
 
 -- 定时