cyzhao před 3 měsíci
rodič
revize
96b4e4b707

+ 7 - 3
Gameserver/App/base/CmdCode.php

@@ -204,20 +204,24 @@ class CmdCode {
     const cmd_active_YanBaoBuyItemActive_drawReward = 6113;
     
     /**
-     * 
+     * 领取卡牌奖励
      */
     const active_FlipCardLottery_DrawCardReward = 6114;
 
     /**
-     * 
+     * 金蛇献瑞购买抽奖券
      */
     const active_FlipCardLottery_BuyTickets = 6115;
     
     /**
-     * 
+     *  领取大奖信息
      */
     const active_FlipCardLottery_DrawGrandReward = 6116;
 
+    /**
+     * 领取卡牌累计次数奖励
+     */
+    const active_FlipCardLottery_DrawAccumulateReward = 6117;
 
 // </editor-fold>
 // <editor-fold defaultstate="collapsed" desc="任务操作码 - 62xx">

+ 17 - 1
Gameserver/App/configs/GameConfig.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2025-02-12 14:32:11
+ // 日期: 2025-02-13 17:24:54
 ////////////////////
 
 namespace loyalsoft;
@@ -1144,6 +1144,22 @@ class GameConfig {
         return self::get_hash_item('activity_flipcardlottery_grandreward', $itemid);
     }
     /**
+    * 
+    * @return \activity_flipcardlottery_accumulate
+    */
+    public static function activity_flipcardlottery_accumulate()
+    { 
+        static $a = null; 
+        return self::initValue($a, 'activity_flipcardlottery_accumulate');
+    }
+    /**
+    * @return \sm_activity_flipcardlottery_accumulate activity_flipcardlottery_accumulate item数据 
+    */
+    public static function activity_flipcardlottery_accumulate_getItem($itemid)
+    { 
+        return self::get_hash_item('activity_flipcardlottery_accumulate', $itemid);
+    }
+    /**
     * 当前版本(时间戳)
     * @return \ver
     */

+ 17 - 1
Gameserver/App/model/Const/GameConfig.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2025-02-13 17:11:43
+ // 日期: 2025-02-14 11:48:59
 ////////////////////
 
 /**
@@ -1142,6 +1142,22 @@ class GameConfig {
         return self::get_hash_item('activity_flipcardlottery_grandreward', $itemid);
     }
     /**
+    * 
+    * @return \activity_flipcardlottery_accumulate
+    */
+    public static function activity_flipcardlottery_accumulate()
+    { 
+        static $a = null; 
+        return self::initValue($a, 'activity_flipcardlottery_accumulate');
+    }
+    /**
+    * @return \sm_activity_flipcardlottery_accumulate activity_flipcardlottery_accumulate item数据 
+    */
+    public static function activity_flipcardlottery_accumulate_getItem($itemid)
+    { 
+        return self::get_hash_item('activity_flipcardlottery_accumulate', $itemid);
+    }
+    /**
     * 当前版本(时间戳)
     * @return \ver
     */

+ 3 - 2
Gameserver/App/model/Const/sm_activeTask.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2025-02-13 16:42:11
+ // 日期: 2025-02-14 10:45:22
 ////////////////////
 
 
@@ -29,7 +29,8 @@ class sm_activeTask
     public $day;
 
     /**
-    * @var Int32 解锁内容类型 1: 7日狂欢 2 日常 3周常 4 :主线任务 default(0) 
+    * @var Int32 解锁内容类型 1: 7日狂欢 2 日常 3周常 4 :主线任务
+    *  5:金蛇献瑞任务 default(0) 
     */
     public $type;
 

+ 3 - 2
Gameserver/App/model/Const/sm_activeTask_type.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2025-02-13 16:42:11
+ // 日期: 2025-02-14 10:45:22
 ////////////////////
 
 
@@ -29,7 +29,8 @@ class sm_activeTask_type
     public $day;
 
     /**
-    * @var Int32 解锁内容类型 1: 7日狂欢 2 日常 3周常 4 :主线任务 default(0) 
+    * @var Int32 解锁内容类型 1: 7日狂欢 2 日常 3周常 4 :主线任务
+    *  5:金蛇献瑞任务 default(0) 
     */
     public $type;
 

+ 42 - 0
Gameserver/App/model/Const/sm_activity_flipcardlottery_accumulate.php

@@ -0,0 +1,42 @@
+<?php
+////////////////////
+ // 由CodeGenerator创建。
+ // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
+ // author: gwang 
+ // 日期: 2025-02-13 17:23:33
+////////////////////
+
+
+/**
+ * Static Model activity_flipcardlottery_accumulate 
+ */
+class sm_activity_flipcardlottery_accumulate
+{
+
+    /**
+    * @var Int32 次数  
+    */
+    public $id;
+
+    /**
+    * @var String 图片  
+    */
+    public $icon;
+
+    /**
+    * @var String 奖品  
+    */
+    public $reward;
+
+    /**
+    * @var String 描述信息  
+    */
+    public $desc;
+
+    /**
+    * @var String 额外字段  
+    */
+    public $etc;
+
+}
+

+ 6 - 1
Gameserver/App/model/Const/sm_glc2.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2025-02-12 11:59:37
+ // 日期: 2025-02-14 11:50:52
 ////////////////////
 
 
@@ -78,5 +78,10 @@ class sm_glc2
     */
     public $FlipCardLottery_BuyTickets_MaxNumLimit;
 
+    /**
+    * @var String 金蛇抽奖任务初始化数据  
+    */
+    public $FlipCardLotteryTask;
+
 }
 

+ 2 - 1
Gameserver/App/model/User/Enum_ActiveTaskCmdType.php

@@ -11,7 +11,8 @@ class Enum_ActiveTaskCmdType extends Enum {
     const OnLogin_X = 102;       //登录第X天
     const OnReceiveTaskPrize = 103;       //领取任务奖励
     const ReName = 104;       //改名字
-    
+    const OnLogin_Accumulate_FlipCard = 105; //金蛇 累计登录天数 
+
     const PassGate_X = 201;       //通关第X关
     const FightNumMainGate = 202;       //参与主线关卡1次
     const FightNumChallengeGate = 203;       //参与挑战副本1次

+ 2 - 0
Gameserver/App/model/User/Enum_ActiveTaskType.php

@@ -12,4 +12,6 @@ class Enum_ActiveTaskType extends Enum {
     const WeekTask = 3;
     
     const MainTask = 4;
+    
+    const FlipCardLotteryTask = 5;
 }

+ 6 - 0
Gameserver/App/model/User/Info_PrivateState.php

@@ -518,6 +518,12 @@ class Info_PrivateState extends Object_ext {
      * @var type
      */
     public $flipCardLottery_endTs = 0;
+    
+    /**
+     * 金蛇献瑞 累计奖励记录
+     */
+    #[ArrayType]
+    public $flipCardLottery_AccumulateReward = array();
 
     public function initialize() {      
         $this->onlineGiftts = 1;

+ 18 - 1
Gameserver/App/model/User/Ins_TaskStep_Active.php

@@ -96,7 +96,7 @@ class Ins_TaskStep_Active extends Object_ext {
                 || $this->mo()->cmd == Enum_ActiveTaskCmdType::PassMainChallengeGate_X_Num || $this->mo()->cmd == Enum_ActiveTaskCmdType::CompleteNumQiLing || $this->mo()->cmd == Enum_ActiveTaskCmdType::CompleteNumSpecialQiLing #
                 || $this->mo()->cmd == Enum_ActiveTaskCmdType::FightGate_X || $this->mo()->cmd == Enum_ActiveTaskCmdType::PassGate_X_state || $this->mo()->cmd == Enum_ActiveTaskCmdType::CloseSkill ||$this->mo()->cmd == Enum_ActiveTaskCmdType::FightRankPrize_Num  #
                 || $this->mo()->cmd == Enum_ActiveTaskCmdType::BuyGold || $this->mo()->cmd == Enum_ActiveTaskCmdType::OnReceiveTaskPrize || $this->mo()->cmd == Enum_ActiveTaskCmdType::FightSweepGate || $this->mo()->cmd == Enum_ActiveTaskCmdType::OpenNumBrightBox_state #
-                || $this->mo()->cmd == Enum_ActiveTaskCmdType::BuyNumDailyShop_state || $this->mo()->cmd == Enum_ActiveTaskCmdType::ComposeNumGem_state || $this->mo()->cmd == Enum_ActiveTaskCmdType::ReceiveGateBoxReward # 
+                || $this->mo()->cmd == Enum_ActiveTaskCmdType::BuyNumDailyShop_state || $this->mo()->cmd == Enum_ActiveTaskCmdType::ComposeNumGem_state || $this->mo()->cmd == Enum_ActiveTaskCmdType::ReceiveGateBoxReward || $this->mo()->cmd == Enum_ActiveTaskCmdType::OnLogin_Accumulate_FlipCard # 
                 ;
     }
 
@@ -267,6 +267,23 @@ class Ins_TaskStep_Active extends Object_ext {
                     }
                 }
                 return $day;
+            case Enum_ActiveTaskCmdType::OnLogin_Accumulate_FlipCard:           # 金蛇 累计登录天数 
+                $day = 0;               
+                $mo = GameConfig::subfun_unlock_getItem(Enum_SubFunType::FlipCardLottery);                
+                if (now()>= $mo->startTs && now()< $mo->endTs) {
+                    $startDay = TimeUtil::totalDays($mo->startTs);
+                    $endDay = TimeUtil::totalDays($mo->endTs);                  
+                    if (TimeUtil::totalDays(now()) <= $endDay) {
+                        $day = 0;
+                        for ($i = $startDay; $i <= $endDay; $i++) {
+                            $day += 1;
+                            if (TimeUtil::totalDays(now()) == $i) {
+                                break;
+                            }
+                        }
+                    }
+                }
+                return $day;             
             case Enum_ActiveTaskCmdType::PassLayer_ChallengeGate:
                 if(ctx()->gates->TowerGate->CurLayer-1 < 0){
                     return 0;

+ 69 - 2
Gameserver/App/process/ActiveProc.php

@@ -55,7 +55,9 @@ class ActiveProc {
             case CmdCode::active_FlipCardLottery_BuyTickets:                    # 6115 金蛇献瑞购买抽奖券
                 return self::FlipCardLottery_BuyTickets();
             case CmdCode::active_FlipCardLottery_DrawGrandReward:               # 6116 领取大奖信息
-                return self::FlipCardLottery_DrawGrandReward();    
+                return self::FlipCardLottery_DrawGrandReward();  
+            case CmdCode::active_FlipCardLottery_DrawAccumulateReward:          # 6117 领取卡牌累计次数奖励    
+                return self::FlipCardLottery_DrawAccumulateReward();
             default:
                 Err(ErrCode::cmd_err);
         }
@@ -70,7 +72,7 @@ class ActiveProc {
         self::ClearOnlineGiftTs();
         ActiveProc::ClearYanBaoBuyItemActive_drawReward();
     }
-
+        
     /**
      * 重置金蛇数据
      */
@@ -83,8 +85,73 @@ class ActiveProc {
             //初始化大奖
             ctx()->privateState->flipCard_RewardRecord = array();
             ctx()->privateData(true)->flipCard_randGrandReward = self::RandGrandReward();
+            
+            ctx()->privateState->flipCardLottery_AccumulateReward = array();
+            //初始化对应任务数据
+            self::InitFlipLotteryTask();
         }
     }
+    /**
+     * 初始化金蛇任务数据
+     */
+    public static function InitFlipLotteryTask() {
+        $activeTaskInfo = ctx()->task->activeTaskInfo;
+        $arr = array();
+        foreach ($activeTaskInfo as $taskUid => $ins_task) {
+            $ins_taskStep_active = new Ins_TaskStep_Active($ins_task);
+            if($ins_taskStep_active->mo()->type == Enum_ActiveTaskType::FlipCardLotteryTask){
+                $arr[] = $taskUid;
+            }
+        }
+        
+        if(count($arr) > 0){
+            foreach ($arr as $uid) {
+                StlUtil::arrayRemove($activeTaskInfo, $uid);
+            }
+        }
+        
+        $list = explode(',',GameConfig::glc2()->FlipCardLotteryTask);
+        $length = ctx()->task->activeTaskLength;
+        foreach ($list as $taskId){
+            $mo = GameConfig::activeTask_getItem($taskId);
+            my_Assert(null != $mo, ErrCode::err_const_no);
+            
+            $length += 1;
+            $ins_TaskStep_Active = new Ins_TaskStep_Active($mo->id);
+            $ins_TaskStep_Active->uid = $length;
+            $ins_TaskStep_Active->state = Enum_TaskCardStateType::ing;
+            ctx()->task->activeTaskInfo->$length = $ins_TaskStep_Active;
+        }
+        ctx()->task->activeTaskLength = $length;
+        self::autoRecoverState_activeTask();
+    }
+    
+    /**
+     * 6117 领取卡牌累计次数奖励    
+     */
+    public static function FlipCardLottery_DrawAccumulateReward() {
+        $dic = GameConfig::activity_flipcardlottery_accumulate();
+        
+        $accumulateRewardList = ctx()->privateState->flipCardLottery_AccumulateReward;
+        $allNum = ctx()->privateState->flipCardNum_all;
+        foreach ($dic as $numId => $mo) {
+            if($allNum >= $numId && !in_array($numId, $accumulateRewardList)){
+                StoreProc::AddMultiItemInStore($mo->reward);
+            }
+        }
+        
+        return Resp::ok(array(
+                    'gold' => ctx()->baseInfo->gold,
+                    'cash' => ctx()->baseInfo->cash,
+                    'store' => ctx()->store,
+                    'heros' => ctx()->heros,
+                    'privateState' => ctx()->privateState,                                             
+                    'reward_equip'=> StoreProc::$reward_equip,
+                    'reward_Gem'=> StoreProc::$reward_Gem,
+                    'reward'=> StoreProc::$reward,           
+        ));
+    }
+    
     
     /**
      * 6116 领取大奖信息

+ 35 - 3
Gameserver/App/process/TaskProc.php

@@ -214,6 +214,9 @@ class TaskProc {
         ctx()->task->activeTaskInfo->$uid->state = Enum_TaskCardStateType::drawed;
         ctx()->task->activeTaskInfo->$uid->drawTs = now();
 
+        //金蛇任务特殊处理
+        self::InitFlipCardTask($uid);
+        //主线任务
         self::InitNextMainTask($uid);
 
         $activePointArr = explode(',', $ins_activeTaskInfo->mo()->activePoint);
@@ -238,9 +241,9 @@ class TaskProc {
                 break;
         }
 
-        
+
         GuideProc::EquipLvUp_Guide_Trigger($ins_activeTaskInfo->typeId);
-        
+
         UserProc::updateUserInfo();
         return Resp::ok(array("task" => ctx()->task,
                     "store" => ctx()->store,
@@ -251,7 +254,7 @@ class TaskProc {
                     'cash' => ctx()->baseInfo->cash,
                     'heros' => ctx()->heros,
                     'privateState' => ctx()->privateState,
-                    'tili_ts'=> ctx()->baseInfo->tili_ts,
+                    'tili_ts' => ctx()->baseInfo->tili_ts,
                     "tili" => ctx()->baseInfo->tili,
         ));
     }
@@ -269,6 +272,27 @@ class TaskProc {
         }
     }
 
+    static function InitFlipCardTask($uid) {
+        $ins_activeTaskInfo = new Ins_TaskStep_Active(ctx()->task->activeTaskInfo->$uid);
+        if ($ins_activeTaskInfo->mo()->type != Enum_ActiveTaskType::FlipCardLotteryTask) {
+            return;
+        }
+        if ($ins_activeTaskInfo->mo()->next == 0) {
+            return;
+        }
+
+        $nextId = $ins_activeTaskInfo->mo()->next;
+        if ($nextId != null) {
+            $ins_TaskStep_Active = new Ins_TaskStep_Active($nextId);
+            $ins_TaskStep_Active->uid = $uid;
+            $ins_TaskStep_Active->cur = $ins_activeTaskInfo->cur;
+            $ins_TaskStep_Active->state = Enum_TaskCardStateType::ing;
+            ctx()->task->activeTaskInfo->$uid = $ins_TaskStep_Active;
+
+            self::autoRecoverState_activeTask();
+        }
+    }
+
     /**
      * 6203 领取成就奖励
      * @return type
@@ -513,6 +537,14 @@ class TaskProc {
         self::CheckActiveTaskConditions($taskEventArg);
     }
 
+    /**
+     * 登录第X天
+     */
+    static function OnLogin_Accumulate_FlipCard() {
+        $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::OnLogin_Accumulate_FlipCard, Enum_PropelType::set, 1, array());
+        self::CheckActiveTaskConditions($taskEventArg);
+    }
+
     /**
      * 通关第X关
      */

+ 1 - 0
Gameserver/App/process/UserProc.php

@@ -569,6 +569,7 @@ class UserProc {
 
         TaskProc::OnLogin_Daily();
         TaskProc::OnLogin_day7();
+        TaskProc::OnLogin_Accumulate_FlipCard();
         TaskProc::checkMainTask();
         FightProc::SubFunDateInit_Config();
     }