Explorar o código

循环周活动>7天

SCFC hai 1 ano
pai
achega
4ee4d4bc24
Modificáronse 1 ficheiros con 532 adicións e 532 borrados
  1. 532 532
      script/module/WeekendLoopActivity/WeekendLoopActManager.lua

+ 532 - 532
script/module/WeekendLoopActivity/WeekendLoopActManager.lua

@@ -1,533 +1,533 @@
---------------------------------
--- 文件名       :  WeekendLoopActManger.lua
--- 文件说明     :  周末冲刺-活动模板管理
--- 创建时间     :   2024/11/25
--- 创建人       :   FC
---------------------------------
-
-local Util = require("common.Util")
-local Lang = require("common.Lang")
-local Broadcast = require("broadcast.Broadcast")
-local MailExcel = require("excel.mail")
-local Msg = require("core.Msg")
-local ObjHuman = require("core.ObjHuman")
-local MailManager = require("mail.MailManager")
-local BagLogic = require("bag.BagLogic")
-local Grid = require("bag.Grid")
-local PanelDefine = require("broadcast.PanelDefine")
-local CommonDB = require("common.CommonDB")
-local BuyLogic = require("topup.BuyLogic")
-local GuideLogic = require("guide.GuideLogic")
-local Log = require("common.Log")
-local WeekLoopActDef = require("WeekendLoopActivity.WeekendLoopActDefine")
-local WeekLoopActCof = require("excel.WeekLoopAct")
-local WeekLoopActHeroStar = require("WeekendLoopActivity.WeekendLoopActHeroStar")
-local YunYingLogic = require("yunying.YunYingLogic")
-local WeekLoopActGuYu = require("WeekendLoopActivity.WeekendLoopActUseGuYu")
-local weekLoopActCard = require("WeekendLoopActivity.WeekendLoopActCard")
-local weekLoopActRank = require("WeekendLoopActivity.WeekendLoopActRank")
-local CommonDB = require("common.CommonDB")
-
--- 活动信息
-tWeekActInfo = nil
--- {
---     nStartTime = nil,       -- 开始时间
---     nEendTime = nil,        -- 结束时间
---     isRun = nil,            -- 是否在活动中
---     nCardBatch = nil,       -- 抽卡批次
--- }
-
--- 加载的模块
-tWeekActModuel = {}
-
------------------------------------------ 内部处理开始 -------------------------------------
--- 下发数据
-local function WeekLoopACT_SendData(tMsgData, fd)
-    Msg.send(tMsgData, fd)
-end
-
--- 下发活动数据
-function WeekLoopACT_SendActInfo(human)
-    if not human or not tWeekActInfo then
-        return
-    end
-
-    print("[WeekLoopACT_SendActInfo] 下发活动数据 开始 ")
-
-    local tMsgData = Msg.gc.GC_WEEKLOOP_ACT_ALLINFO
-    tMsgData.nStartTime = tWeekActInfo.nStartTime
-    tMsgData.nEendTime = tWeekActInfo.nEendTime
-
-    tMsgData.tActID[0] = #WeekLoopActCof.WeekLoopAct
-
-    local nIndex = 1
-    for id, v in pairs(WeekLoopActCof.WeekLoopAct) do
-        local tActData = tMsgData.tActID[nIndex]
-        nIndex = nIndex + 1
-        tActData.ID = id
-        tActData.name = v.name
-        tActData.nSortID = v.sortID
-        tActData.nIcon = v.icon
-        tActData.nPanelID = v.panelID
-        local bRed = false
-        if tWeekActModuel[id] and tWeekActModuel[id].isRed then
-            bRed = tWeekActModuel[id].isRed(human)
-        end
-        
-        -- 特殊处理的命名
-        if WeekLoopActDef.WEEKACT_CARD_PANELID == v.panelID and tWeekActModuel[id] and tWeekActModuel[id].GetName then
-            tActData.name = tWeekActModuel[id].GetName(human)
-        end
-        
-        print("[WeekLoopACT_SendActInfo] name = "..tActData.name)
-        tActData.nRed = bRed and 1 or 0
-    end
-
-    YunYingLogic.sendBanner(human)
-    WeekLoopACT_SendData(tMsgData, human.fd)
-
-    print("[WeekLoopACT_SendActInfo] 下发活动数据 结束 ")
-end
-
--- 获取记录在人物身上的结束时间
-local function WeekLoopACT_GetHumanEndTime(human)
-    if not human then
-        return -1
-    end
-
-    if not human.db.nWeekLoopEndTime then
-        return -1
-    end
-
-    return human.db.nWeekLoopEndTime
-end
-
--- 设置记录在人物身上的结束时间
-local function WeekLoopACT_SetHumanEndTime(human, nTime)
-    if not human or 0 >= nTime then
-        return
-    end
-
-    human.db.nWeekLoopEndTime = nTime
-end
-
--- 获取记录在人物身上的奖励处理标识
-local function WeekLoopACT_GetHumanEndMail(human)
-    if not human then
-        return true
-    end
-
-    -- 没有 则认为未参加上一次活动
-    if not human.db.nWeekLoopEndMail then
-        print("[WeekLoopACT_GetHumanEndMail] 没有参加活动")
-        return true
-    end
-
-    return human.db.nWeekLoopEndMail
-end
-
--- 设置记录在人物身上的奖励处理标识
-local function WeekLoopACT_SetHumanEndMail(human, nValue)
-    if not human or not nValue then
-        return
-    end
-
-    human.db.nWeekLoopEndMail = nValue
-end
-
--- 各个子活动重置活动数据
-local function WeekLoopACT_ResetData(human)
-    if not human then
-        return
-    end
-
-    -- 这里实际上应该 遍历modulefunc
-    WeekLoopActHeroStar.WeekActHeroStar_ResetData(human)
-    WeekLoopActGuYu.WeekActGuYu_ResetData(human)
-    weekLoopActCard.WeekActCard_ResetData(human)
-end
-
--- 各个子活动处理结束数据
-local function WeekLoopACT_HandleEndData(human)
-    if not human then
-        return
-    end
-
-    WeekLoopActHeroStar.WeekActHeroStar_End(human)
-end
-
--- 所有活动初始化数据开始
-local function WeekLoopACT_BeginAllAct(human)
-    if not human or not tWeekActInfo then
-        return
-    end
-
-    local nEndTime = tWeekActInfo.nEendTime
-    
-    print("[WeekLoopACT_BeginAllAct] 所有活动初始化数据开始 ")
-
-    -- 设置时间
-    WeekLoopACT_SetHumanEndTime(human, nEndTime)
-    -- 设置标记
-    WeekLoopACT_SetHumanEndMail(human, false)
-
-    -- 各个子活动重置数据
-    WeekLoopACT_ResetData(human)
-
-    -- 最后下发活动数据
-    WeekLoopACT_SendActInfo(human)
-
-    print("[WeekLoopACT_BeginAllAct] 所有活动初始化数据结束 ")
-end
-
--- 结束所有活动
-local function WeekLoopACT_EndAllAct(human)
-    -- 各个子活动处理数据
-    WeekLoopACT_HandleEndData(human)
-
-    WeekLoopACT_SetHumanEndMail(human, true)
-end
-
--- 活动开始
-local function WeekLoopACT_Begin()
-    if not tWeekActInfo then
-        return
-    end
-
-    -- 遍历在线玩家
-    for uuid, human in pairs(ObjHuman.onlineUuid) do
-        WeekLoopACT_BeginAllAct(human)
-    end
-
-    -- 清理排行榜数据
-    weekLoopActRank.WeekActRank_ResetData()
-end
-
--- 活动结束
-local function WeekLoopACT_End()
-    -- 遍历在线玩家
-    for uuid, human in pairs(ObjHuman.onlineUuid) do
-        WeekLoopACT_EndAllAct(human)
-    end
-
-    -- 排行榜直接处理
-    weekLoopActRank.WeekActRank_End()
-end
-
--- 获取抽卡批次
-function WeekLoopACT_GetCardBatch()
-    local nNowCardBatch = CommonDB.getWeekCardBatch()
-    -- 第一次初始化,设置为2,解决玩家批次不正确的问题
-    if 0 == nNowCardBatch then
-        nNowCardBatch = 2
-        CommonDB.setWeekCardBatch(2)
-    end
-
-    print("[WeekLoopACT_GetCardBatch] nNowCardBatch = "..nNowCardBatch)
-    return nNowCardBatch
-end
-
--- 设置新的批次
-local function WeekLoopACT_SetCardBatch()
-    local nNowCardBatch = CommonDB.getWeekCardBatch()
-    if nil == nNowCardBatch then
-        print("[WeekLoopACT_SetCardBatch] 获取不到批次")
-        CommonDB.setWeekCardBatch(1)
-        return
-    end
-
-    local nLen = (nNowCardBatch + 1) % WeekLoopActDef.WEEKACT_CARD_TYPE_LEN
-    nNowCardBatch = (0 == nLen) and WeekLoopActDef.WEEKACT_CARD_TYPE_LEN or nLen
-    CommonDB.setWeekCardBatch(nNowCardBatch)
-end
-
------------------------------------------ 外部调用开始 -------------------------------------
-function onZeroAll(funcID)
-    local nNowTime = os.time()
-    local tDate = os.date("*t",nNowTime)
-    
-    local nOpenServerDay = CommonDB.getServerOpenDay()
-    if nOpenServerDay < 7 then
-        return
-    end
-
-    if WeekLoopActDef.WEEKACT_TIME ~= tDate.hour then
-        return
-    end
-
-    print("[WeekLoopACT_onZeroAll] 进入定时处理")
-
-    if WeekLoopActDef.WEEKACT_OPENDAY == tDate.wday then
-        print("[WeekLoopACT_onZeroAll] 周末活动开始打印")
-
-        tWeekActInfo = {}
-        tWeekActInfo.isRun = true
-        tWeekActInfo.nStartTime = nNowTime
-
-        -- 计算过期时间,转成0时0分
-        local nNextTime = nNowTime + 4 * 86400
-        local tEndDate = os.date("*t",nNextTime)
-        tEndDate.hour = 0
-        tEndDate.min = 0
-        tEndDate.sec = 0
-
-        local nEndTime = os.time(tEndDate)
-        tWeekActInfo.nEendTime = nEndTime
-        tWeekActInfo.nCardBatch = WeekLoopACT_GetCardBatch()
-
-        -- 活动开始
-        WeekLoopACT_Begin()
-
-        print("[WeekLoopACT_onZeroAll] 时间打印 nStartTime = ".. tWeekActInfo.nStartTime.." nEendTime = "..tWeekActInfo.nEendTime)
-    elseif WeekLoopActDef.WEEKACT_ENDDAY == tDate.wday then
-        print("[WeekLoopACT_onZeroAll] 周末活动结束打印")
- 
-        -- 活动结束
-        WeekLoopACT_End()
-
-        -- 设置新的批次
-        WeekLoopACT_SetCardBatch()
-
-        tWeekActInfo = nil
-    end
-end
-
--- 起服初始化
-function WeekLoopACT_Init()
-    local nNowTime = os.time()
-    local tDate = os.date("*t",nNowTime)
-
-    local nOpenServerDay = CommonDB.getServerOpenDay()
-    if nOpenServerDay < 7 then
-        return
-    end
-
-    print("[WeekLoopACT_Init] 起服初始化 wday = "..tDate.wday.." m = "..tDate.month.." d = "..tDate.day.." h = "..tDate.hour)
-
-    -- 等于星期六 或者 小于星期三
-    if WeekLoopActDef.WEEKACT_OPENDAY == tDate.wday or  WeekLoopActDef.WEEKACT_ENDDAY > tDate.wday then
-        if not tWeekActInfo then
-            tWeekActInfo = {}
-            tWeekActInfo.isRun = true
-            
-            local nDiffDay = WeekLoopActDef.WEEKACT_OPENDAY == tDate.wday and 0 or tDate.wday
-
-            local nTime = nNowTime - nDiffDay * 86400
-            local tCalDate = os.date("*t",nTime)
-            tCalDate.hour = 0
-            tCalDate.min = 0
-            tCalDate.sec = 0
-            tWeekActInfo.nStartTime = os.time(tCalDate)
-
-            local nEndTime =  tWeekActInfo.nStartTime + 4 * 86400
-            tCalDate = os.date("*t",nEndTime)
-            tCalDate.hour = 0
-            tCalDate.min = 0
-            tCalDate.sec = 0
-
-            tWeekActInfo.nEendTime = os.time(tCalDate)
-            tWeekActInfo.nCardBatch = WeekLoopACT_GetCardBatch()
-
-            print("[WeekLoopACT_Init] 时间打印 nStartTime = ".. tWeekActInfo.nStartTime.." nEendTime = "..tWeekActInfo.nEendTime)
-        end
-    end
-
-    for nID, v in pairs(WeekLoopActCof.WeekLoopAct) do
-        local moduleFn = load("return require(\"" .. v.moduleFn .. "\")")()
-        if moduleFn then
-            tWeekActModuel[nID] = moduleFn
-            if moduleFn.Init then
-                local bRet = moduleFn.Init()
-                if false == bRet then
-                    print("[WeekLoopACT_Init] 初始化模块数据失败 nID ".. nID)
-                end
-            end
-            print("[WeekLoopACT_Init] 加载模块成功 name = "..v.name)
-        else
-            print("[WeekLoopACT_Init] 加载模块失败 nID ".. nID)
-        end
-
-    end
-end
-
--- 是否还在活动期间
-function WeekLoopACT_IsRun()
-    if not tWeekActInfo then
-        return false
-    end
-
-    return tWeekActInfo.isRun
-end
-
--- 玩家登录
-function onLogin(human, funcID)
-    if not human then
-        return
-    end
-
-    local nOpenServerDay = CommonDB.getServerOpenDay()
-    if nOpenServerDay < 7 then
-        print("[onLogin] 玩家登录,当前服务器开放时间不足,直接返回 nOpenServerDay = "..nOpenServerDay)
-        return
-    end
-
-    local nLastEndTime = WeekLoopACT_GetHumanEndTime(human)
-    local nState = WeekLoopACT_GetHumanEndMail(human)
-
-    local nSendMail = nState and 1 or 0
-    print("[onLogin] 玩家登录 nSendMail = "..nSendMail)
-
-    -- 未开始
-    if false == WeekLoopACT_IsRun() then
-        if true == nState or -1 >= nLastEndTime then
-            return
-        end
-
-        WeekLoopACT_EndAllAct(human)
-        
-        return
-    end
-
-    -- 当前活动开启,记录的结束时间比当前开始的时间都小说明是新活动
-    if nLastEndTime < tWeekActInfo.nStartTime then
-        if false == nState then
-            -- 处理上一次的奖励数据
-            WeekLoopACT_HandleEndData(human)
-        end
-
-        WeekLoopACT_BeginAllAct(human)
-        
-        return
-    end
-
-    -- 下发活动基础数据
-    if true == WeekLoopACT_IsRun() then
-        WeekLoopACT_SendActInfo(human)
-    end
-end
-
--- 英雄星级改变回调
-function onHeroStarChange(human, funcID, parameter, parameter2)
-    if not human or "table" ~= type(parameter) then
-        return
-    end
-
-    if false == WeekLoopACT_IsRun() then
-        return
-    end
-
-    WeekLoopActHeroStar.WeekActHeroStar_HeroStarUp(human, parameter[1], parameter[2])
-end
-
--- 是否开启
-function isOpen(human, YYInfo, funcConfig)
-    local bRet = WeekLoopACT_IsRun()
-    local nRet = bRet and 1 or 0
-    print("WeekLoopACT_isOpen 结束 nRet = "..nRet)
-    return bRet
-end
-
--- 
-function isActive(human, YYInfo, funcConfig)
-    return not isOpen(human, YYInfo, funcConfig)
-end
-
-function isRed(human, YYInfo, funcConfig)
-    local bRet = false
-    for id, v in pairs(WeekLoopActCof.WeekLoopAct) do
-        if tWeekActModuel[id] and tWeekActModuel[id].isRed then
-            bRet = tWeekActModuel[id].isRed(human)
-            if true == bRet then
-                break
-            end
-        end
-    end
-
-    return bRet
-end
-
--- 消耗古玉回调
-function onDecZuanshi(human, funcID, parameter, parameter2)
-    if not human or "number" ~= type(parameter) then
-        return
-    end
-
-    if false == WeekLoopACT_IsRun() then
-        return
-    end
-
-    local nGuYu = math.abs(parameter)
-    if 0 >= nGuYu then
-        return
-    end
-
-    WeekLoopActGuYu.WeekActGuYu_UseGuYu(human, nGuYu)
-end
-
--- 高级召唤回调
-function onDrawCard(human, funcID, parameter, parameter2)
-    if not human or "number" ~= type(parameter) then
-        return
-    end
-
-    if false == WeekLoopACT_IsRun() then
-        return
-    end
-
-    print("[onDrawCard] 高级召唤回调 parameter = "..parameter)
-    weekLoopActCard.WeekActCard_UseCard(human, parameter, WeekLoopActDef.WEEKACT_CARD_TYPE_HIGH)
-end
-
--- 天命召唤回调
-function onTMDrawCard(human, funcID, parameter, parameter2)
-    if not human or "number" ~= type(parameter) then
-        return
-    end
-
-    if false == WeekLoopACT_IsRun() then
-        return
-    end
-
-    print("[onDrawCard] 天命召唤回调 parameter = "..parameter)
-
-    weekLoopActCard.WeekActCard_UseCard(human, parameter, WeekLoopActDef.WEEKACT_CARD_TYPE_TIANMING)
-end
-
--- 寻星回调
-function onFindStar(human, funcID, parameter, parameter2)
-    if not human or "number" ~= type(parameter) then
-        return
-    end
-
-    if false == WeekLoopACT_IsRun() then
-        return
-    end
-    
-    print("[onDrawCard] 寻星回调 parameter = "..parameter)
-
-    weekLoopActCard.WeekActCard_UseCard(human, parameter, WeekLoopActDef.WEEKACT_CARD_TYPE_FINDSTAR)
-end
-
--- GM 命令
-function GMResetWeekAct(human)
-    if WeekLoopACT_IsRun() then
-        WeekLoopACT_EndAllAct(human)
-
-        WeekLoopACT_SetCardBatch()
-        WeekLoopACT_BeginAllAct(human)
-    end
-end
-
-function onCharge(human, price, funcID, buyID)
-    if not human then
-        return
-    end
-
-    if false == WeekLoopACT_IsRun() then
-        return
-    end
-
-    print("[onCharge] 玩家充值回调开始 name = "..human.db.name.." price = "..price)
-
-    weekLoopActRank.onCharge(human, price, funcID, buyID)
+--------------------------------
+-- 文件名       :  WeekendLoopActManger.lua
+-- 文件说明     :  周末冲刺-活动模板管理
+-- 创建时间     :   2024/11/25
+-- 创建人       :   FC
+--------------------------------
+
+local Util = require("common.Util")
+local Lang = require("common.Lang")
+local Broadcast = require("broadcast.Broadcast")
+local MailExcel = require("excel.mail")
+local Msg = require("core.Msg")
+local ObjHuman = require("core.ObjHuman")
+local MailManager = require("mail.MailManager")
+local BagLogic = require("bag.BagLogic")
+local Grid = require("bag.Grid")
+local PanelDefine = require("broadcast.PanelDefine")
+local CommonDB = require("common.CommonDB")
+local BuyLogic = require("topup.BuyLogic")
+local GuideLogic = require("guide.GuideLogic")
+local Log = require("common.Log")
+local WeekLoopActDef = require("WeekendLoopActivity.WeekendLoopActDefine")
+local WeekLoopActCof = require("excel.WeekLoopAct")
+local WeekLoopActHeroStar = require("WeekendLoopActivity.WeekendLoopActHeroStar")
+local YunYingLogic = require("yunying.YunYingLogic")
+local WeekLoopActGuYu = require("WeekendLoopActivity.WeekendLoopActUseGuYu")
+local weekLoopActCard = require("WeekendLoopActivity.WeekendLoopActCard")
+local weekLoopActRank = require("WeekendLoopActivity.WeekendLoopActRank")
+local CommonDB = require("common.CommonDB")
+
+-- 活动信息
+tWeekActInfo = nil
+-- {
+--     nStartTime = nil,       -- 开始时间
+--     nEendTime = nil,        -- 结束时间
+--     isRun = nil,            -- 是否在活动中
+--     nCardBatch = nil,       -- 抽卡批次
+-- }
+
+-- 加载的模块
+tWeekActModuel = {}
+
+----------------------------------------- 内部处理开始 -------------------------------------
+-- 下发数据
+local function WeekLoopACT_SendData(tMsgData, fd)
+    Msg.send(tMsgData, fd)
+end
+
+-- 下发活动数据
+function WeekLoopACT_SendActInfo(human)
+    if not human or not tWeekActInfo then
+        return
+    end
+
+    print("[WeekLoopACT_SendActInfo] 下发活动数据 开始 ")
+
+    local tMsgData = Msg.gc.GC_WEEKLOOP_ACT_ALLINFO
+    tMsgData.nStartTime = tWeekActInfo.nStartTime
+    tMsgData.nEendTime = tWeekActInfo.nEendTime
+
+    tMsgData.tActID[0] = #WeekLoopActCof.WeekLoopAct
+
+    local nIndex = 1
+    for id, v in pairs(WeekLoopActCof.WeekLoopAct) do
+        local tActData = tMsgData.tActID[nIndex]
+        nIndex = nIndex + 1
+        tActData.ID = id
+        tActData.name = v.name
+        tActData.nSortID = v.sortID
+        tActData.nIcon = v.icon
+        tActData.nPanelID = v.panelID
+        local bRed = false
+        if tWeekActModuel[id] and tWeekActModuel[id].isRed then
+            bRed = tWeekActModuel[id].isRed(human)
+        end
+        
+        -- 特殊处理的命名
+        if WeekLoopActDef.WEEKACT_CARD_PANELID == v.panelID and tWeekActModuel[id] and tWeekActModuel[id].GetName then
+            tActData.name = tWeekActModuel[id].GetName(human)
+        end
+        
+        print("[WeekLoopACT_SendActInfo] name = "..tActData.name)
+        tActData.nRed = bRed and 1 or 0
+    end
+
+    YunYingLogic.sendBanner(human)
+    WeekLoopACT_SendData(tMsgData, human.fd)
+
+    print("[WeekLoopACT_SendActInfo] 下发活动数据 结束 ")
+end
+
+-- 获取记录在人物身上的结束时间
+local function WeekLoopACT_GetHumanEndTime(human)
+    if not human then
+        return -1
+    end
+
+    if not human.db.nWeekLoopEndTime then
+        return -1
+    end
+
+    return human.db.nWeekLoopEndTime
+end
+
+-- 设置记录在人物身上的结束时间
+local function WeekLoopACT_SetHumanEndTime(human, nTime)
+    if not human or 0 >= nTime then
+        return
+    end
+
+    human.db.nWeekLoopEndTime = nTime
+end
+
+-- 获取记录在人物身上的奖励处理标识
+local function WeekLoopACT_GetHumanEndMail(human)
+    if not human then
+        return true
+    end
+
+    -- 没有 则认为未参加上一次活动
+    if not human.db.nWeekLoopEndMail then
+        print("[WeekLoopACT_GetHumanEndMail] 没有参加活动")
+        return true
+    end
+
+    return human.db.nWeekLoopEndMail
+end
+
+-- 设置记录在人物身上的奖励处理标识
+local function WeekLoopACT_SetHumanEndMail(human, nValue)
+    if not human or not nValue then
+        return
+    end
+
+    human.db.nWeekLoopEndMail = nValue
+end
+
+-- 各个子活动重置活动数据
+local function WeekLoopACT_ResetData(human)
+    if not human then
+        return
+    end
+
+    -- 这里实际上应该 遍历modulefunc
+    WeekLoopActHeroStar.WeekActHeroStar_ResetData(human)
+    WeekLoopActGuYu.WeekActGuYu_ResetData(human)
+    weekLoopActCard.WeekActCard_ResetData(human)
+end
+
+-- 各个子活动处理结束数据
+local function WeekLoopACT_HandleEndData(human)
+    if not human then
+        return
+    end
+
+    WeekLoopActHeroStar.WeekActHeroStar_End(human)
+end
+
+-- 所有活动初始化数据开始
+local function WeekLoopACT_BeginAllAct(human)
+    if not human or not tWeekActInfo then
+        return
+    end
+
+    local nEndTime = tWeekActInfo.nEendTime
+    
+    print("[WeekLoopACT_BeginAllAct] 所有活动初始化数据开始 ")
+
+    -- 设置时间
+    WeekLoopACT_SetHumanEndTime(human, nEndTime)
+    -- 设置标记
+    WeekLoopACT_SetHumanEndMail(human, false)
+
+    -- 各个子活动重置数据
+    WeekLoopACT_ResetData(human)
+
+    -- 最后下发活动数据
+    WeekLoopACT_SendActInfo(human)
+
+    print("[WeekLoopACT_BeginAllAct] 所有活动初始化数据结束 ")
+end
+
+-- 结束所有活动
+local function WeekLoopACT_EndAllAct(human)
+    -- 各个子活动处理数据
+    WeekLoopACT_HandleEndData(human)
+
+    WeekLoopACT_SetHumanEndMail(human, true)
+end
+
+-- 活动开始
+local function WeekLoopACT_Begin()
+    if not tWeekActInfo then
+        return
+    end
+
+    -- 遍历在线玩家
+    for uuid, human in pairs(ObjHuman.onlineUuid) do
+        WeekLoopACT_BeginAllAct(human)
+    end
+
+    -- 清理排行榜数据
+    weekLoopActRank.WeekActRank_ResetData()
+end
+
+-- 活动结束
+local function WeekLoopACT_End()
+    -- 遍历在线玩家
+    for uuid, human in pairs(ObjHuman.onlineUuid) do
+        WeekLoopACT_EndAllAct(human)
+    end
+
+    -- 排行榜直接处理
+    weekLoopActRank.WeekActRank_End()
+end
+
+-- 获取抽卡批次
+function WeekLoopACT_GetCardBatch()
+    local nNowCardBatch = CommonDB.getWeekCardBatch()
+    -- 第一次初始化,设置为2,解决玩家批次不正确的问题
+    if 0 == nNowCardBatch then
+        nNowCardBatch = 2
+        CommonDB.setWeekCardBatch(2)
+    end
+
+    print("[WeekLoopACT_GetCardBatch] nNowCardBatch = "..nNowCardBatch)
+    return nNowCardBatch
+end
+
+-- 设置新的批次
+local function WeekLoopACT_SetCardBatch()
+    local nNowCardBatch = CommonDB.getWeekCardBatch()
+    if nil == nNowCardBatch then
+        print("[WeekLoopACT_SetCardBatch] 获取不到批次")
+        CommonDB.setWeekCardBatch(1)
+        return
+    end
+
+    local nLen = (nNowCardBatch + 1) % WeekLoopActDef.WEEKACT_CARD_TYPE_LEN
+    nNowCardBatch = (0 == nLen) and WeekLoopActDef.WEEKACT_CARD_TYPE_LEN or nLen
+    CommonDB.setWeekCardBatch(nNowCardBatch)
+end
+
+----------------------------------------- 外部调用开始 -------------------------------------
+function onZeroAll(funcID)
+    local nNowTime = os.time()
+    local tDate = os.date("*t",nNowTime)
+    
+    local nOpenServerDay = CommonDB.getServerOpenDay()
+    if nOpenServerDay <= 7 then
+        return
+    end
+
+    if WeekLoopActDef.WEEKACT_TIME ~= tDate.hour then
+        return
+    end
+
+    print("[WeekLoopACT_onZeroAll] 进入定时处理")
+
+    if WeekLoopActDef.WEEKACT_OPENDAY == tDate.wday then
+        print("[WeekLoopACT_onZeroAll] 周末活动开始打印")
+
+        tWeekActInfo = {}
+        tWeekActInfo.isRun = true
+        tWeekActInfo.nStartTime = nNowTime
+
+        -- 计算过期时间,转成0时0分
+        local nNextTime = nNowTime + 4 * 86400
+        local tEndDate = os.date("*t",nNextTime)
+        tEndDate.hour = 0
+        tEndDate.min = 0
+        tEndDate.sec = 0
+
+        local nEndTime = os.time(tEndDate)
+        tWeekActInfo.nEendTime = nEndTime
+        tWeekActInfo.nCardBatch = WeekLoopACT_GetCardBatch()
+
+        -- 活动开始
+        WeekLoopACT_Begin()
+
+        print("[WeekLoopACT_onZeroAll] 时间打印 nStartTime = ".. tWeekActInfo.nStartTime.." nEendTime = "..tWeekActInfo.nEendTime)
+    elseif WeekLoopActDef.WEEKACT_ENDDAY == tDate.wday then
+        print("[WeekLoopACT_onZeroAll] 周末活动结束打印")
+ 
+        -- 活动结束
+        WeekLoopACT_End()
+
+        -- 设置新的批次
+        WeekLoopACT_SetCardBatch()
+
+        tWeekActInfo = nil
+    end
+end
+
+-- 起服初始化
+function WeekLoopACT_Init()
+    local nNowTime = os.time()
+    local tDate = os.date("*t",nNowTime)
+
+    local nOpenServerDay = CommonDB.getServerOpenDay()
+    if nOpenServerDay < 7 then
+        return
+    end
+
+    print("[WeekLoopACT_Init] 起服初始化 wday = "..tDate.wday.." m = "..tDate.month.." d = "..tDate.day.." h = "..tDate.hour)
+
+    -- 等于星期六 或者 小于星期三
+    if WeekLoopActDef.WEEKACT_OPENDAY == tDate.wday or  WeekLoopActDef.WEEKACT_ENDDAY > tDate.wday then
+        if not tWeekActInfo then
+            tWeekActInfo = {}
+            tWeekActInfo.isRun = true
+            
+            local nDiffDay = WeekLoopActDef.WEEKACT_OPENDAY == tDate.wday and 0 or tDate.wday
+
+            local nTime = nNowTime - nDiffDay * 86400
+            local tCalDate = os.date("*t",nTime)
+            tCalDate.hour = 0
+            tCalDate.min = 0
+            tCalDate.sec = 0
+            tWeekActInfo.nStartTime = os.time(tCalDate)
+
+            local nEndTime =  tWeekActInfo.nStartTime + 4 * 86400
+            tCalDate = os.date("*t",nEndTime)
+            tCalDate.hour = 0
+            tCalDate.min = 0
+            tCalDate.sec = 0
+
+            tWeekActInfo.nEendTime = os.time(tCalDate)
+            tWeekActInfo.nCardBatch = WeekLoopACT_GetCardBatch()
+
+            print("[WeekLoopACT_Init] 时间打印 nStartTime = ".. tWeekActInfo.nStartTime.." nEendTime = "..tWeekActInfo.nEendTime)
+        end
+    end
+
+    for nID, v in pairs(WeekLoopActCof.WeekLoopAct) do
+        local moduleFn = load("return require(\"" .. v.moduleFn .. "\")")()
+        if moduleFn then
+            tWeekActModuel[nID] = moduleFn
+            if moduleFn.Init then
+                local bRet = moduleFn.Init()
+                if false == bRet then
+                    print("[WeekLoopACT_Init] 初始化模块数据失败 nID ".. nID)
+                end
+            end
+            print("[WeekLoopACT_Init] 加载模块成功 name = "..v.name)
+        else
+            print("[WeekLoopACT_Init] 加载模块失败 nID ".. nID)
+        end
+
+    end
+end
+
+-- 是否还在活动期间
+function WeekLoopACT_IsRun()
+    if not tWeekActInfo then
+        return false
+    end
+
+    return tWeekActInfo.isRun
+end
+
+-- 玩家登录
+function onLogin(human, funcID)
+    if not human then
+        return
+    end
+
+    local nOpenServerDay = CommonDB.getServerOpenDay()
+    if nOpenServerDay < 7 then
+        print("[onLogin] 玩家登录,当前服务器开放时间不足,直接返回 nOpenServerDay = "..nOpenServerDay)
+        return
+    end
+
+    local nLastEndTime = WeekLoopACT_GetHumanEndTime(human)
+    local nState = WeekLoopACT_GetHumanEndMail(human)
+
+    local nSendMail = nState and 1 or 0
+    print("[onLogin] 玩家登录 nSendMail = "..nSendMail)
+
+    -- 未开始
+    if false == WeekLoopACT_IsRun() then
+        if true == nState or -1 >= nLastEndTime then
+            return
+        end
+
+        WeekLoopACT_EndAllAct(human)
+        
+        return
+    end
+
+    -- 当前活动开启,记录的结束时间比当前开始的时间都小说明是新活动
+    if nLastEndTime < tWeekActInfo.nStartTime then
+        if false == nState then
+            -- 处理上一次的奖励数据
+            WeekLoopACT_HandleEndData(human)
+        end
+
+        WeekLoopACT_BeginAllAct(human)
+        
+        return
+    end
+
+    -- 下发活动基础数据
+    if true == WeekLoopACT_IsRun() then
+        WeekLoopACT_SendActInfo(human)
+    end
+end
+
+-- 英雄星级改变回调
+function onHeroStarChange(human, funcID, parameter, parameter2)
+    if not human or "table" ~= type(parameter) then
+        return
+    end
+
+    if false == WeekLoopACT_IsRun() then
+        return
+    end
+
+    WeekLoopActHeroStar.WeekActHeroStar_HeroStarUp(human, parameter[1], parameter[2])
+end
+
+-- 是否开启
+function isOpen(human, YYInfo, funcConfig)
+    local bRet = WeekLoopACT_IsRun()
+    local nRet = bRet and 1 or 0
+    print("WeekLoopACT_isOpen 结束 nRet = "..nRet)
+    return bRet
+end
+
+-- 
+function isActive(human, YYInfo, funcConfig)
+    return not isOpen(human, YYInfo, funcConfig)
+end
+
+function isRed(human, YYInfo, funcConfig)
+    local bRet = false
+    for id, v in pairs(WeekLoopActCof.WeekLoopAct) do
+        if tWeekActModuel[id] and tWeekActModuel[id].isRed then
+            bRet = tWeekActModuel[id].isRed(human)
+            if true == bRet then
+                break
+            end
+        end
+    end
+
+    return bRet
+end
+
+-- 消耗古玉回调
+function onDecZuanshi(human, funcID, parameter, parameter2)
+    if not human or "number" ~= type(parameter) then
+        return
+    end
+
+    if false == WeekLoopACT_IsRun() then
+        return
+    end
+
+    local nGuYu = math.abs(parameter)
+    if 0 >= nGuYu then
+        return
+    end
+
+    WeekLoopActGuYu.WeekActGuYu_UseGuYu(human, nGuYu)
+end
+
+-- 高级召唤回调
+function onDrawCard(human, funcID, parameter, parameter2)
+    if not human or "number" ~= type(parameter) then
+        return
+    end
+
+    if false == WeekLoopACT_IsRun() then
+        return
+    end
+
+    print("[onDrawCard] 高级召唤回调 parameter = "..parameter)
+    weekLoopActCard.WeekActCard_UseCard(human, parameter, WeekLoopActDef.WEEKACT_CARD_TYPE_HIGH)
+end
+
+-- 天命召唤回调
+function onTMDrawCard(human, funcID, parameter, parameter2)
+    if not human or "number" ~= type(parameter) then
+        return
+    end
+
+    if false == WeekLoopACT_IsRun() then
+        return
+    end
+
+    print("[onDrawCard] 天命召唤回调 parameter = "..parameter)
+
+    weekLoopActCard.WeekActCard_UseCard(human, parameter, WeekLoopActDef.WEEKACT_CARD_TYPE_TIANMING)
+end
+
+-- 寻星回调
+function onFindStar(human, funcID, parameter, parameter2)
+    if not human or "number" ~= type(parameter) then
+        return
+    end
+
+    if false == WeekLoopACT_IsRun() then
+        return
+    end
+    
+    print("[onDrawCard] 寻星回调 parameter = "..parameter)
+
+    weekLoopActCard.WeekActCard_UseCard(human, parameter, WeekLoopActDef.WEEKACT_CARD_TYPE_FINDSTAR)
+end
+
+-- GM 命令
+function GMResetWeekAct(human)
+    if WeekLoopACT_IsRun() then
+        WeekLoopACT_EndAllAct(human)
+
+        WeekLoopACT_SetCardBatch()
+        WeekLoopACT_BeginAllAct(human)
+    end
+end
+
+function onCharge(human, price, funcID, buyID)
+    if not human then
+        return
+    end
+
+    if false == WeekLoopACT_IsRun() then
+        return
+    end
+
+    print("[onCharge] 玩家充值回调开始 name = "..human.db.name.." price = "..price)
+
+    weekLoopActRank.onCharge(human, price, funcID, buyID)
 end