소스 검색

fixed: 任务步骤状态回写失败,原因在于变量名变了.

gwang 4 년 전
부모
커밋
d975055908
2개의 변경된 파일14개의 추가작업 그리고 8개의 파일을 삭제
  1. 3 1
      Gameserver/Amfphp/model/User/Ins_TaskStep.php
  2. 11 7
      Gameserver/Amfphp/process/TaskProc.php

+ 3 - 1
Gameserver/Amfphp/model/User/Ins_TaskStep.php

@@ -74,10 +74,11 @@ class Ins_TaskStep extends Object_ext {
      * @return bool
      */
     public function check_new($taskCardEvent) {
+        var_dump($taskCardEvent);
         if ($this->isFinish()) {
             return true;
         }
-        if ($taskCardEvent->taskType == $this->mo()->cmd) {                     # 事件类型匹配
+        if ($taskCardEvent->taskType != $this->mo()->cmd) {                     # 事件类型匹配
             return false;
         }
         if (strlen($this->mo()->paras) <= 0) {                                  # 无参数
@@ -110,6 +111,7 @@ class Ins_TaskStep extends Object_ext {
      * @param Ins_TaskEventArgs $taskParam
      */
     public function propel($taskParam) {
+        var_dump($taskParam);
         switch ($taskParam->ope) {
             case Enum_PropelType::set:
                 $this->cur = $taskParam->val;

+ 11 - 7
Gameserver/Amfphp/process/TaskProc.php

@@ -676,20 +676,23 @@ class TaskProc {
 
         foreach ($tasks as $tid => &$task) {
             $task = new Ins_TaskCard($task);
-            foreach ($task->curSteps as $stp) {                                 # 初期里面只有一个任务
-                $tsp = new Ins_TaskStep($stp);
+            foreach ($task->curSteps as &$tsp) {                                 # 初期里面只有一个任务
+                $tsp = new Ins_TaskStep($tsp);
                 $bUpdate = $tsp->check_new($taskParam);
+
                 if ($bUpdate) {
-                    NormalEventProc::OnTaskCardStep_Complete($task->typeId, $tsp->typeId); # 广播任务步骤完成事件
+                    NormalEventProc::OnTaskCardStep_Complete($task->uid, $tsp->typeId); # 广播任务步骤完成事件
                     $tsp->propel($taskParam);
+
                     if ($tsp->isFinish()) {
-                        NormalEventProc::OnTaskCard_Finish($task->typeId, null); # 广播卡完成事件
+                        NormalEventProc::OnTaskCard_Finish($task->uid, null); # 广播卡完成事件
                     }
                 }
             }
         }
 
         if ($bUpdate) {                                                         # 带回数据到客户端
+            req()->userInfo->game->store->taskcards = $tasks;
             UserProc::updateUserInfo();                                         # 更新玩家数据
         }
 
@@ -697,7 +700,8 @@ class TaskProc {
     }
 
     static function OnKillMonster($monsterID, $num) {
-        $taskParam = new Ins_TaskParams(Enum_TaskCmdType::KillMonster, $monsterID, $num);
+        $taskParam = new Ins_TaskEventArgs(Enum_TaskCmdType::KillMonster, Enum_PropelType::add, $num, array($monsterID));
+        var_dump($taskParam);
         return self::CheckTaskCardConditions($taskParam);
     }
 
@@ -705,13 +709,13 @@ class TaskProc {
      * 获得道具
      */
     static function OnGainItem($itemId, $num) {
-        $taskParam = new Ins_TaskParams(Enum_TaskCmdType::GainItem, $itemId, $num);
+        $taskParam = new Ins_TaskEventArgs(Enum_TaskCmdType::GainItem, Enum_PropelType::add, $num, array($itemId));
         self::CheckTaskCardConditions($taskParam);
         NormalEventProc::OnBag_new_Item($itemId, $num);
     }
 
     static function OnPlotOver($gate_or_npc_id, $stage) {
-        $taskParam = new Ins_TaskParams(Enum_TaskCmdType::PlotOver, $gate_or_npc_id, "$stage");
+        $taskParam = new Ins_TaskEventArgs(Enum_TaskCmdType::PlotOver, Enum_PropelType::set, 1, array($gate_or_npc_id, "$stage"));
         return self::CheckTaskCardConditions($taskParam);
     }