Эх сурвалжийг харах

“战令需求修改完成”

cyzhao 7 сар өмнө
parent
commit
c63c17d4ad

+ 2 - 2
Gameserver/App/model/User/Info_PrivateState.php

@@ -386,13 +386,13 @@ class Info_PrivateState extends Object_ext {
      * 活跃点战令开启时间戳记录
      * @var type
      */
-    public $battlePass_activePoint_open_ts = 0;
+    public $battlePass_activePoint_refersh_ts = 0;
 
     /**
      * 体力战令开启时间戳记录
      * @var type
      */
-    public $battlePass_tili_open_ts = 0;
+    public $battlePass_tili_refersh_ts = 0;
     
     /**
      * 战令统计的 日常周常 活跃点

+ 13 - 7
Gameserver/App/process/FightProc.php

@@ -1000,13 +1000,6 @@ class FightProc {
                 ActiveProc::DailyResetDay7Task(true);
             }
             
-            if ($mo->funTypeId == 5 && $mo->id == Enum_SubFunType::ActivePoint_BattlePass) {
-                ctx()->privateState->battlePass_activePoint_open_ts = now();                            
-            }
-            
-            if ($mo->funTypeId == 19 && $mo->id == Enum_SubFunType::Tili_BattleBass) {
-                ctx()->privateState->battlePass_tili_open_ts = now();   
-            }
         }
     }
 
@@ -1019,6 +1012,19 @@ class FightProc {
             if ($mo->type == 3 && $mo->id == Enum_SubFunType::LimitTsSale && ctx()->privateState->nextDayLogin == 0 && now() >= $mo->startTs) {
                 ActiveProc::ResetLimitTsBuy();
             }
+            
+            if($mo->type == 3 && $mo->id == Enum_SubFunType::ActivePoint_BattlePass && ctx()->privateState->battlePass_activePoint_refersh_ts == 0 && now() >= $mo->startTs){
+                ctx()->privateState->battlePass_activePoint_refersh_ts = TimeUtil::getNextDayTs($mo->startTs, $mo->ts);
+                ctx()->privateData(true)->battlePass_activePoint_cost_ts = 0;
+                ctx()->privateData(true)->battlePass_taskPoint = 0;
+                ActiveProc::ResetBattlePassReward(Enum_SubFunType::ActivePoint_BattlePass);
+            }
+            if($mo->type == 3 && $mo->id == Enum_SubFunType::Tili_BattleBass && ctx()->privateState->battlePass_tili_refersh_ts == 0 && now() >= $mo->startTs){
+                ctx()->privateState->battlePass_tili_refersh_ts = TimeUtil::getNextDayTs($tili_BattleBassMo->startTs, $tili_BattleBass_day);                              
+                ctx()->privateData(true)->battlePass_tili_cost_ts = 0;
+                ctx()->privateData(true)->battlePass_tili = 0;
+                ActiveProc::ResetBattlePassReward(Enum_SubFunType::Tili_BattleBass);
+            }
         }
     }
 

+ 12 - 10
Gameserver/App/process/UserProc.php

@@ -493,25 +493,27 @@ class UserProc {
         $curDay = TimeUtil::totalDays();
         $nextDay = TimeUtil::totalDays(ctx()->privateState->nextDayLogin);
 
-        $mo = GameConfig::subfun_unlock_getItem(Enum_SubFunType::LimitTsSale);
-        $day = $mo->ts;
+        $limitTsSaleMo = GameConfig::subfun_unlock_getItem(Enum_SubFunType::LimitTsSale);
+        $day = $limitTsSaleMo->ts;
         if (ctx()->privateState->nextDayLogin > 0 && $curDay - $nextDay >= $day) {
             ActiveProc::ResetLimitTsBuy();
         }
         
-        $nowtime = time(); 
-        $curMonth = date('m', $nowtime); // 当前指定日期的月份        
-        $lastMonth_activePoint = date('m',ctx()->privateState->battlePass_activePoint_open_ts);
-        if($curMonth != $lastMonth_activePoint){
-            ctx()->privateState->battlePass_activePoint_open_ts = now();
+        $activePoint_BattlePassMo = GameConfig::subfun_unlock_getItem(Enum_SubFunType::ActivePoint_BattlePass);
+        $activePoint_BattlePass_day = $activePoint_BattlePassMo->ts;
+        $activePoint_refersh_tsDay = TimeUtil::totalDays(ctx()->privateState->battlePass_activePoint_refersh_ts);
+        if (ctx()->privateState->battlePass_activePoint_refersh_ts > 0 && $curDay - $activePoint_refersh_tsDay >= $activePoint_BattlePass_day) {
+            ctx()->privateState->battlePass_activePoint_refersh_ts = TimeUtil::getNextDayTs($activePoint_BattlePassMo->startTs, $activePoint_BattlePass_day);
             ctx()->privateData(true)->battlePass_activePoint_cost_ts = 0;
             ctx()->privateData(true)->battlePass_taskPoint = 0;
             ActiveProc::ResetBattlePassReward(Enum_SubFunType::ActivePoint_BattlePass);
         }
         
-        $lastMonth_tili = date('m',ctx()->privateState->battlePass_tili_open_ts);
-        if($curMonth != $lastMonth_tili){
-            ctx()->privateState->battlePass_tili_open_ts = now();
+        $tili_BattleBassMo = GameConfig::subfun_unlock_getItem(Enum_SubFunType::Tili_BattleBass);
+        $tili_BattleBass_day = $tili_BattleBassMo->ts;
+        $tili_BattleBass_refershDay = TimeUtil::totalDays(ctx()->privateState->battlePass_tili_refersh_ts);
+        if (ctx()->privateState->battlePass_tili_refersh_ts > 0 && $curDay - $tili_BattleBass_refershDay >= $tili_BattleBass_day) {
+            ctx()->privateState->battlePass_tili_refersh_ts = TimeUtil::getNextDayTs($tili_BattleBassMo->startTs, $tili_BattleBass_day);                              
             ctx()->privateData(true)->battlePass_tili_cost_ts = 0;
             ctx()->privateData(true)->battlePass_tili = 0;
             ActiveProc::ResetBattlePassReward(Enum_SubFunType::Tili_BattleBass);

+ 15 - 0
Gameserver/App/util/TimeUtil.php

@@ -263,6 +263,21 @@ class TimeUtil {
         return date($fmt, $ts);
     }
 
+    /**
+     * 隔几天一刷新,获取上次刷新的时间戳 以便计算下次隔几天该刷新了
+     * @param type $startTs
+     * @param type $day
+     */
+    public static function getNextDayTs($startTs, $day) {
+        $startDay = TimeUtil::totalDays($startTs);
+        $nextDay = TimeUtil::totalDays();
+
+        $num = $nextDay - $startDay;
+        $refershType = $num % $day; //day 2天一刷新 余数只会是0 或 1; 0:两天后在刷新,1就是已经过了一天了,在过一天就刷新,当前时间减一天
+
+        return now() - 86400 * $refershType;
+    }
+
 }
 
 /**