Ver código fonte

添加了任务步骤回撤接口.

王刚 3 anos atrás
pai
commit
ee0696ff97

+ 6 - 1
Gameserver/Amfphp/base/CmdCode.php

@@ -352,6 +352,11 @@ class CmdCode {
      */
     const cmd_Task_setTracingCard = 6219;
 
+    /**
+     * [6220] 任务步骤 - 回档重置
+     */
+    const cmd_task_StepFallBack = 6220;
+
     //
 // </editor-fold>
 // <editor-fold defaultstate="collapsed" desc="任务卡商城">
@@ -520,7 +525,7 @@ class CmdCode {
     const cmd_hero_tupo = 6328;
 
     /**
-     *言灵替换
+     * 言灵替换
      */
     const cmd_hero_YanLingReplace = 6329;
 // </editor-fold>

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

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2022-01-26 10:19:55
+ // 日期: 2022-03-03 11:18:47
 ////////////////////
 
 /**

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

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2022-01-12 10:04:23
+ // 日期: 2022-03-02 15:18:46
 ////////////////////
 
 

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

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2022-01-25 09:13:30
+ // 日期: 2022-03-02 15:17:36
 ////////////////////
 
 

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

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2022-01-25 09:13:30
+ // 日期: 2022-03-02 15:17:36
 ////////////////////
 
 

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

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2021-12-22 14:41:59
+ // 日期: 2022-03-02 09:57:28
 ////////////////////
 
 

+ 6 - 1
Gameserver/Amfphp/model/Const/sm_task_step.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2021-12-21 14:38:06
+ // 日期: 2022-03-03 10:38:20
 ////////////////////
 
 
@@ -88,6 +88,11 @@ class sm_task_step
     */
     public $next;
 
+    /**
+    * @var String 如果发生重新登录或者切换场景的情况,回撤到指定的步骤id(2022.3.3)(该步骤的完成度也回撤) default(0) 
+    */
+    public $fallback;
+
     /**
     * @var String 描述  
     */

+ 33 - 4
Gameserver/Amfphp/process/TaskProc.php

@@ -58,6 +58,8 @@ class TaskProc {
                 return self::OnTaskCard_StepActionDone();
             case CmdCode::cmd_Task_setTracingCard:                              # 6219 设置当前追踪的任务卡
                 return TaskProc::SetTracingCard();
+            case CmdCode::cmd_task_StepFallBack:                                # 6220 任务步骤回撤重置
+                return TaskProc::OnTaskStep_FallBack();
 // --------------   任务卡商城 -----------------------------
             case CmdCode::cmd_taskcard_shop_open:                               # 6231 任务卡商店 - 开启
                 return self::OnTaskCardShopOpen();
@@ -490,6 +492,36 @@ class TaskProc {
         return Resp::ok($pri->taskCardTracing);                                 # 返回成功
     }
 
+    /**
+     * [6220] 任务步骤 - 回撤
+     */
+    static function OnTaskStep_FallBack() {
+        // 遍历检查是否有任务步骤需要回撤 
+        $taskCards = req()->userInfo->game->store->taskcards;                   # 快速访问store 
+        foreach ($taskCards as $uid => &$card) {                                # 加了&符号,理论上就能直接修改原始元素
+            $card = new Ins_TaskCard($card);                                    # 任务卡对象
+            $fallbackID = 0;
+            $stepArr = array();
+            foreach ($card->curSteps as &$tsp) {                                # 初期里面只有一个任务
+                $tsp = new Ins_TaskStep($tsp);
+                if ($tsp->mo()->fallback > 0) {                                 # 找到需要回撤的步骤,删除此步骤
+                    $fallbackID = $tsp->mo()->fallback;
+                } else {
+                    $stepArr[] = $tsp;
+                }
+            }
+            foreach ($stepArr as &$tsp) {                                       # 回撤上一步的进度
+                if ($tsp->typeId == $fallbackID) {
+                    $tsp->cur = 0;
+                }
+            }
+            $card->curSteps = $stepArr;                                         # 更新任务步骤集合
+        }
+        req()->userInfo->game->store->taskcards = $taskCards;                   # 更新任务卡
+        UserProc::updateUserInfo();
+        return Resp::ok();
+    }
+
     //
 // </editor-fold>
     // <editor-fold defaultstate="collapsed" desc="  任务接口 ">
@@ -1075,7 +1107,6 @@ class TaskProc {
     static function CheckTaskCardConditions($taskParam) {
         $bUpdate = false;
         $tasks = req()->userInfo->game->store->taskcards;
-//        var_dump(json_encode($tasks));
         foreach ($tasks as $tid => &$task) {
             $task = new Ins_TaskCard($task);
             if ($task->state != Enum_TaskCardStateType::ing) {
@@ -1084,11 +1115,9 @@ class TaskProc {
             foreach ($task->curSteps as &$tsp) {                                # 初期里面只有一个任务
                 $tsp = new Ins_TaskStep($tsp);
                 if ($tsp->check_new($taskParam)) {
-//                    CLog::err("推进");
                     $bUpdate = true;
                     $tsp->propel($taskParam);
-                    NormalEventProc::OnTaskCardStep_Process($task->uid, $tsp->typeId); # 任务进度更新
-//                    CLog::err($task);
+                    NormalEventProc::OnTaskCardStep_Process($task->uid, $tsp->typeId); # 任务进度更新 
                     if ($tsp->isFinish()) {
                         NormalEventProc::OnTaskCardStep_Complete($task->uid, $tsp->typeId); # 广播任务步骤完成事件
 //                        $tsp->doFinishAct();