gitxsm 1 месяц назад
Родитель
Сommit
fd85bda376
1 измененных файлов с 18 добавлено и 2 удалено
  1. 18 2
      script/module/baiZhanChengShen/BaiZhanChengShenCS.lua

+ 18 - 2
script/module/baiZhanChengShen/BaiZhanChengShenCS.lua

@@ -13,6 +13,7 @@ local InnerMsg = require("core.InnerMsg")
 local Util = require("common.Util")
 local Timer = require("core.Timer")
 local MiddleManager = require("middle.MiddleManager")
+local CommonDB = require("common.CommonDB")
 local BaiZhanChengShenDB = require("baiZhanChengShen.BaiZhanChengShenDB")
 local BaiZhanChengShenDefine = require("baiZhanChengShen.BaiZhanChengShenDefine")
 local BzcsLog = require("baiZhanChengShen.BaiZhanChengShenLog")
@@ -103,7 +104,15 @@ local function isRunning()
     return isInOpenWday()
 end
 
--- 严格判断当前是否可开启新一轮: 周末 + 距上轮足够 + 已过本轮周六 0:10 + 上轮已结束
+-- 首轮开启前置: 跨服基准开服天数达到阈值(最老服)
+local function isFirstRoundOpenEligible()
+    local openDay = CommonDB.getServerOpenDay() or 0
+    return openDay >= BaiZhanChengShenDefine.BZCS_OPEN_SVR_DAY
+end
+
+-- 严格判断当前是否可开启新一轮:
+-- 周末开放日 + 已过本轮周六 0:10 + 未超过本轮周日 23:00
+-- 首轮还需满足跨服开服天数>=45; 非首轮需满足周期间隔且上轮已结束
 local function canOpenNewRoundNow(now, lastReset, startTime, endTime)
     now = now or os.time()
     if not isInOpenWday() then
@@ -113,7 +122,14 @@ local function canOpenNewRoundNow(now, lastReset, startTime, endTime)
     if now < roundStart then
         return false
     end
+    local roundEnd = calcRoundEnd(roundStart)
+    if now > roundEnd then
+        return false
+    end
     if lastReset == 0 then
+        if not isFirstRoundOpenEligible() then
+            return false
+        end
         return true
     end
     if Util.diffDay(lastReset) < BaiZhanChengShenDefine.BZCS_CYCLE_DAYS then
@@ -345,7 +361,7 @@ local function tryOpenNewRound(now, lastReset, startTime, endTime)
 end
 
 -- 周期阶段机 (oneMin/onHour 调用):
--- 1) 严格满足开新轮条件(周末/间隔/已过周六0:10/上轮已结束) -> newRoundHandle + ActOpen
+-- 1) 严格满足开新轮条件(含首轮45天门槛、周末窗口 0:10~23:00、间隔/结束检查) -> newRoundHandle + ActOpen
 -- 2) 已过 endTime 且未发奖 -> endRoundHandle
 -- 3) 刚进入可挑战窗口(如周六0:10) -> ActOpen 补偿逻辑服
 local function timedStageHandle()