cyzhao 5 giorni fa
parent
commit
ebf06c8e05

+ 1 - 1
Gameserver/App/model/User/E_GuideTypeState.php

@@ -43,7 +43,7 @@ class E_GuideTypeState extends Enum{
     const HeroChange_Guide = 9;
     
     //10.主线任务 领取奖励得到第一颗灵宠蛋
-    const MainTaskPrize_PetEgg_Guide = 10;
+    const PetEgg_Guide = 10;
     
     //11.灵宠孵化上阵探索引导
     const Pet_Guide = 11;

+ 5 - 1
Gameserver/App/process/FightProc.php

@@ -639,6 +639,7 @@ class FightProc {
             if ($ins_gateInfo->MaxSeconds >= $ts1 && !in_array(1, $ins_gateInfo->FirstReward)) {
                 $ins_gateInfo->FirstReward[] = 1;
                 GuideProc::HeroChange_Guide_Trigger($gateId, 1);
+                GuideProc::Pet_Guide_Trigger($gateId, 1);
                 StoreProc::AddMultiItemInStore($gateMo->first_reward1);
             }
 
@@ -646,12 +647,14 @@ class FightProc {
             if ($ins_gateInfo->MaxSeconds >= $ts2 && !in_array(2, $ins_gateInfo->FirstReward)) {
                 $ins_gateInfo->FirstReward[] = 2;
                 GuideProc::HeroChange_Guide_Trigger($gateId, 2);
+                GuideProc::Pet_Guide_Trigger($gateId, 2);
                 StoreProc::AddMultiItemInStore($gateMo->first_reward2);
             }
 
             if ($ins_gateInfo->pass > 0 && !in_array(3, $ins_gateInfo->FirstReward)) {
                 $ins_gateInfo->FirstReward[] = 3;
                 GuideProc::HeroChange_Guide_Trigger($gateId, 3);
+                GuideProc::Pet_Guide_Trigger($gateId, 3);
                 StoreProc::AddMultiItemInStore($gateMo->first_reward3);
             }
             ctx()->gates->GateList->$gateId = $ins_gateInfo;
@@ -724,6 +727,7 @@ class FightProc {
             my_Assert(!in_array($mask, $gateInfo->FirstReward), ErrCode::gate_GatePriceHasReceive);
             $gateInfo->FirstReward[] = $mask;
             GuideProc::HeroChange_Guide_Trigger($gateId, $index);
+            GuideProc::Pet_Guide_Trigger($gateId, $index);
 
             StoreProc::AddMultiItemInStore($prize);
         }
@@ -771,7 +775,7 @@ class FightProc {
         if ($resultType) {                                                      # 胜利
             self::skillUnlock_gate($resultType, $gateId); //备注 这个接口位置不能动
             GuideProc::GateBoxReceived_Guide_Trigger($gateId, 1);
-
+            GuideProc::MainTaskPrize_PetEgg_Guide_Trigger($gateId, 1);
             if (ctx()->gates->GateList->$gateId->pass == 0) {
                 ctx()->gates->GateList->$gateId->pass = 1;
 

+ 38 - 23
Gameserver/App/process/GuideProc.php

@@ -108,40 +108,55 @@ class GuideProc {
             ctx()->privateData(true)->funUnlockRecord_3[] = E_GuideTypeState::HeroChange_Guide;
         }
     }
-    
+     
     /**
-     * 10 在主界面检测到 某任务正好处在当前任务 且已经是完成状态[所以这个只在关卡通关后检测因为通关就完成 ]
+     * 10 领取关卡章节宝箱硬引导[触发条件为“玩家初次通关”]
+     * @param type $gateId
+     * @param type $pass
      */
-    public static function MainTaskPrize_PetEgg_Guide_Trigger() {
-        $mo = GameConfig::guide_getItem(E_GuideTypeState::MainTaskPrize_PetEgg_Guide, 0);
-        
-        $taskId = $mo->paras0;
-        $dic = ctx()->task->activeTaskInfo;
-        $tag = false;
-        foreach ($dic as $uid => $task) {
-            $ins_task = new Ins_TaskStep_Active($task);
-            if($ins_task->mo()->type == Enum_ActiveTaskType::MainTask && $ins_task->typeId == $taskId && $ins_task->state == Enum_TaskCardStateType::finish){
-                $tag = true;
-                break;
-            }
+    public static function MainTaskPrize_PetEgg_Guide_Trigger($gateId,$pass) {
+        $mo = GameConfig::guide_getItem(E_GuideTypeState::PetEgg_Guide, 0);
+        $paras0 = $mo->paras0;
+        if ($paras0 == $gateId && ctx()->gates->GateList->$gateId->pass == 0 && $pass == 1) {
+            ctx()->privateData(true)->funUnlockRecord_3[] = E_GuideTypeState::PetEgg_Guide;
         }
-        
-        if ($tag) {
-            ctx()->privateData(true)->funUnlockRecord_3[] = E_GuideTypeState::MainTaskPrize_PetEgg_Guide;
-        }       
+             
+//        $gateId = $mo->paras0;
+//        $dic = ctx()->task->activeTaskInfo;
+//        $tag = false;
+//        foreach ($dic as $uid => $task) {
+//            $ins_task = new Ins_TaskStep_Active($task);
+//            if($ins_task->mo()->type == Enum_ActiveTaskType::MainTask && $ins_task->typeId == $taskId && $ins_task->state == Enum_TaskCardStateType::finish){
+//                $tag = true;
+//                break;
+//            }
+//        }
+//        
+//        if ($tag) {
+//            ctx()->privateData(true)->funUnlockRecord_3[] = E_GuideTypeState::MainTaskPrize_PetEgg_Guide;
+//        }       
     }
     
     /**
-     * 特定的某个主线任务领取奖励的时候触发
-     * @param type $taskId
+     * 宠物硬引导   触发条件为“玩家领取了某关卡第X个章节宝箱”
+     * @param type $gateId
+     * @param type $boxIndex
      */
-    public static function Pet_Guide_Trigger($taskId) {
+    public static function Pet_Guide_Trigger($gateId, $boxIndex) {
         $mo = GameConfig::guide_getItem(E_GuideTypeState::Pet_Guide, 0);
-        $tId = $mo->paras0;
+        $paras0Str = explode(',', $mo->paras0);
 
-        if ($tId == $taskId) {
+        if ($paras0Str[0] == $gateId && $paras0Str[1] == $boxIndex) {
             ctx()->privateData(true)->funUnlockRecord_3[] = E_GuideTypeState::Pet_Guide;
         }
+        
+        
+//        $mo = GameConfig::guide_getItem(E_GuideTypeState::Pet_Guide, 0);
+//        $tId = $mo->paras0;
+//
+//        if ($tId == $taskId) {
+//            ctx()->privateData(true)->funUnlockRecord_3[] = E_GuideTypeState::Pet_Guide;
+//        }
     }
 
 }

+ 1 - 1
Gameserver/App/process/TaskProc.php

@@ -243,7 +243,7 @@ class TaskProc {
 
 
         GuideProc::EquipLvUp_Guide_Trigger($ins_activeTaskInfo->typeId);
-        GuideProc::Pet_Guide_Trigger($ins_activeTaskInfo->typeId);
+        //GuideProc::Pet_Guide_Trigger($ins_activeTaskInfo->typeId);
 
         UserProc::updateUserInfo();
         return Resp::ok(array("task" => ctx()->task,

+ 4 - 4
Gameserver/App/process/UserProc.php

@@ -74,10 +74,10 @@ class UserProc {
         if (in_array($guideType, ctx()->privateState->funUnlockRecord_3) && $guide_type_forceSave == true) {
             StlUtil::arrayRemove(ctx()->privateState->funUnlockRecord_3, $guideType);
             
-            if ($guideType == E_GuideTypeState::MainTaskPrize_PetEgg_Guide)
-            {
-                ctx()->privateState->funUnlockRecord_3[] = E_GuideTypeState::Pet_Guide;            
-            }         
+//            if ($guideType == E_GuideTypeState::MainTaskPrize_PetEgg_Guide)
+//            {
+//                ctx()->privateState->funUnlockRecord_3[] = E_GuideTypeState::Pet_Guide;            
+//            }         
         }
 
         UserProc::updateUserInfo();                                             # 回写数据