فهرست منبع

fixed: 当有新任务卡被激活时也进行追踪的更新检查.

王刚 3 سال پیش
والد
کامیت
5379f97938
1فایلهای تغییر یافته به همراه26 افزوده شده و 27 حذف شده
  1. 26 27
      Gameserver/Amfphp/process/TaskProc.php

+ 26 - 27
Gameserver/Amfphp/process/TaskProc.php

@@ -333,6 +333,8 @@ class TaskProc {
             NormalEventProc::OnTaskCard_Finish($taskCard->uid, null);           # 广播卡完成事件
             NormalEventProc::OnTaskCard_Finish($taskCard->uid, null);           # 广播卡完成事件
         }
         }
         $store->taskcards->$taskCardUID = $taskCard;
         $store->taskcards->$taskCardUID = $taskCard;
+
+        self::autoRecoverTaskTracingState();                                    # 更新任务追踪.
         UserProc::updateUserInfo();                                             # 回存玩家数据
         UserProc::updateUserInfo();                                             # 回存玩家数据
         return Resp::ok(array('store' => req()->userInfo->game->store));         # 返回值更新背包
         return Resp::ok(array('store' => req()->userInfo->game->store));         # 返回值更新背包
     }
     }
@@ -975,44 +977,41 @@ class TaskProc {
     static function autoRecoverTaskTracingState() {
     static function autoRecoverTaskTracingState() {
         $tasks = req()->userInfo->game->store->taskcards;
         $tasks = req()->userInfo->game->store->taskcards;
         $pri = req()->userInfo->game->privateData();
         $pri = req()->userInfo->game->privateData();
-        $tp = 2;
-        $curId = my_null_default($pri->taskCardTracing->$tp, 0);                # 当前追踪中的任务卡id
-        $needRefresh = false;
-        if ($curId > 0) {                                                       # 存在任务卡
-            $curTask = new Ins_TaskCard($tasks->$curId);
-            if ($curTask->state >= 4) {
+        for ($tp = 1; $tp < 5; $tp++) {
+            $curId = my_null_default($pri->taskCardTracing->$tp, 0);            # 当前追踪中的任务卡id
+            $needRefresh = false;
+            if ($curId > 0) {                                                   # 存在任务卡
+                if (CommUtil::isPropertyExists($tasks, $curId)) {
+                    $curTask = new Ins_TaskCard($tasks->$curId);
+                    if ($curTask->state >= 4) {                                 # 任务卡已经被领取奖励, 尝试刷新
+                        $needRefresh = true;
+                    }
+                } else {                                                        # 任务卡已经被删除, 尝试刷新
+                    $needRefresh = true;
+                }
+            } else {                                                            # 没有追踪目标, 尝试刷新
                 $needRefresh = true;
                 $needRefresh = true;
             }
             }
-        }
-
-        if ($needRefresh) {
-            $ok = false;
-            foreach ($tasks as $tid => &$task) {
-                $task = new Ins_TaskCard($task);
 
 
-                switch ($task->mo()->type) {
-                    case 1:                                                     # 主线
-                        break;
-                    case 2:                                                     # 日常
+            if ($needRefresh) {
+                $ok = false;
+                foreach ($tasks as $tid => &$task) {
+                    $task = new Ins_TaskCard($task);
+                    if ($task->mo()->type == $tp) {
                         if ($task->state >= 4) {
                         if ($task->state >= 4) {
                             continue;
                             continue;
                         }
                         }
                         $pri->taskCardTracing->$tp = $tid;
                         $pri->taskCardTracing->$tp = $tid;
                         $ok = true;
                         $ok = true;
-                        break 2;                                                # 终止foreach循环(2层)
-                    case 3:                                                     # 学院
-                        break;
-                    case 4:                                                     # 悬赏
-                        break;
-                    default:
                         break;
                         break;
+                    }
                 }
                 }
+                if (!$ok) {                                                     # 没有找到合适的追踪对象
+                    $pri->taskCardTracing->$tp = 0;                             # 删除所有追踪(剩余任务已经全部完成了)
+                }
+                req()->userInfo->game->store->taskcards = $tasks;
+                req()->userInfo->game->privateState = $pri;
             }
             }
-            if (!$ok) {                                                         # 没有找到合适的追踪对象
-                $pri->taskCardTracing->$tp = 0;                                 # 删除所有追踪(剩余任务已经全部完成了)
-            }
-            req()->userInfo->game->store->taskcards = $tasks;
-            req()->userInfo->game->privateState = $pri;
         }
         }
     }
     }