Browse Source

fixed: 任务卡不可同时激活多张同种任务卡.

gwang 4 years ago
parent
commit
ad54992dc4
2 changed files with 17 additions and 0 deletions
  1. 5 0
      Gameserver/Amfphp/base/ErrCode.php
  2. 12 0
      Gameserver/Amfphp/process/TaskProc.php

+ 5 - 0
Gameserver/Amfphp/base/ErrCode.php

@@ -562,6 +562,11 @@ class ErrCode {
      */
     const taskCard_state = 3512;
 
+    /**
+     * 任务卡-不可激活多张同种类任务卡
+     */
+    const taskCard_active_multi = 3513;
+
 
 // </editor-fold>
     // 

+ 12 - 0
Gameserver/Amfphp/process/TaskProc.php

@@ -257,6 +257,7 @@ class TaskProc {
 
         my_Assert($taskCard->state <= Enum_TaskCardStateType::notopen, ErrCode::taskCard_state); # 任务卡状态异常 
 
+        my_Assert(self::FindSameIngCard($taskCard->typeId), ErrCode::taskCard_active_multi); # 不可激活多张任务卡
         $taskCard->state = Enum_TaskCardStateType::ing;
         $store->taskcards->$taskCardUID = $taskCard;
         UserProc::updateUserInfo();                                             # 回存玩家数据
@@ -264,6 +265,17 @@ class TaskProc {
         return Resp::ok(array('store' => $req->userInfo->game->store));         # 返回值更新背包
     }
 
+    static function FindSameIngCard($typeId) {
+        $cardDic = req()->userInfo->game->store->taskcards;
+        array_walk($cardDic, function ($inst) use($typeId) {
+//             $inst = new Ins_TaskCard($inst);
+            if ($inst->state == Enum_TaskCardStateType::ing && $inst->typeId == $typeId) {
+                return true;
+            }
+        });
+        return false;
+    }
+
     /**
      * [6216] 任务卡 - 领取任务卡奖励
      * @param req $req