瀏覽代碼

fixed: 并行多步骤任务卡,后续步骤出现时机卡死条件:当前所有步骤已完成.

gwang 4 年之前
父節點
當前提交
c302645e45

+ 1 - 1
Gameserver/Amfphp/model/Const/GameConfig.php

@@ -4,7 +4,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2021-02-24 11:02:08
+ // 日期: 2021-02-24 15:52:15
 ////////////////////
 
 /**

+ 1 - 1
Gameserver/Amfphp/model/Const/sm_taskcard_shop.php

@@ -4,7 +4,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2021-02-22 13:54:10
+ // 日期: 2021-02-24 15:50:48
 ////////////////////
 
 

+ 20 - 13
Gameserver/Amfphp/process/TaskProc.php

@@ -802,29 +802,36 @@ class TaskProc {
             }
             foreach ($task->curSteps as &$tsp) {                                # 初期里面只有一个任务
                 $tsp = new Ins_TaskStep($tsp);
-                var_dump($tsp);
+//                var_dump($tsp);
                 if ($tsp->check_new($taskParam)) {
                     $bUpdate = true;
                     $tsp->propel($taskParam);
                     NormalEventProc::OnTaskCardStep_Process($task->uid, $tsp->typeId); # 任务进度更新
                     if ($tsp->isFinish()) {
-                        if (strlen($tsp->mo()->next) > 0) {                     # 有后续任务
-                            $arr = explode(',', $tsp->mo()->next);
-                            foreach ($arr as $stpid) {
-                                if ($stpid > 0) {
-                                    $task->AddStep($stpid);                     # 将后续任务追加到任务列表中
-                                }
-                            }
-                        }
+
                         NormalEventProc::OnTaskCardStep_Complete($task->uid, $tsp->typeId); # 广播任务步骤完成事件
-                        if ($task->IsFinish()) {                                # 检查是否任务卡的所有步骤都已完成
-                            $task->state = Enum_TaskCardStateType::finish;
-                            NormalEventProc::OnTaskCard_Finish($task->uid, null); # 广播卡完成事件
-                        }
                     }
 //                    break;
                 }
             }
+            if ($task->IsFinish()) {                                            # 检查后添加后续任务
+                $arr = array();
+                foreach ($task->curSteps as &$tsp) {                            # 初期里面只有一个任务
+                    $tsp = new Ins_TaskStep($tsp);
+                    if (strlen($tsp->mo()->next) > 0) {                         # 有后续任务
+                        $arr = explode(',', $tsp->mo()->next);
+                    }
+                }
+                foreach ($arr as $stpid) {                                      # 轮询添加后续任务
+                    if ($stpid > 0) {
+                        $task->AddStep($stpid);                                 # 将后续任务追加到任务列表中
+                    }
+                }
+            }
+            if ($task->IsFinish()) {                                            # 检查是否任务卡的所有步骤都已完成
+                $task->state = Enum_TaskCardStateType::finish;
+                NormalEventProc::OnTaskCard_Finish($task->uid, null);           # 广播卡完成事件
+            }
         }
         if ($bUpdate) {                                                         # 带回数据到客户端
             req()->userInfo->game->store->taskcards = $tasks;

+ 6 - 0
Gameserver/nbproject/private/private.xml

@@ -12,10 +12,16 @@
     </editor-bookmarks>
     <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
         <group>
+            <file>file:/D:/local_svn/0_ylsj2019/ylsj2019Server/Gameserver/Amfphp/process/FightProc.php</file>
             <file>file:/D:/local_svn/0_ylsj2019/ylsj2019Server/Gameserver/Amfphp/process/StoreProc.php</file>
             <file>file:/D:/local_svn/0_ylsj2019/ylsj2019Server/Gameserver/Amfphp/base/CmdCode.php</file>
+            <file>file:/D:/local_svn/0_ylsj2019/ylsj2019Server/Gameserver/Amfphp/process/TaskProc.php</file>
+            <file>file:/D:/local_svn/0_ylsj2019/ylsj2019Server/Gameserver/Amfphp/process/EventProc.php</file>
             <file>file:/D:/local_svn/0_ylsj2019/ylsj2019Server/Gameserver/Amfphp/process/UserProc.php</file>
+            <file>file:/D:/local_svn/0_ylsj2019/ylsj2019Server/Gameserver/Amfphp/process/FightProc/SweepGatesProc.php</file>
+            <file>file:/D:/local_svn/0_ylsj2019/ylsj2019Server/Gameserver/Amfphp/model/User/Ins_TaskCard.php</file>
             <file>file:/D:/local_svn/0_ylsj2019/ylsj2019Server/Gameserver/Amfphp/main.php</file>
+            <file>file:/D:/local_svn/0_ylsj2019/ylsj2019Server/Gameserver/Amfphp/model/User/Ins_TaskStep.php</file>
         </group>
     </open-files>
 </project-private>