cyzhao 10 сар өмнө
parent
commit
484e1850dd

+ 7 - 0
Gameserver/App/base/CmdCode.php

@@ -157,6 +157,13 @@ class CmdCode {
      * 领取活跃点宝箱奖励
      */
     const cmd_task_receiveActivePointBoxReward = 6205;
+    
+    /**
+     * 一键领取
+     */
+    const cmd_task_prizesAllreceived = 6206;
+
+
 // </editor-fold>
 //
 // <editor-fold defaultstate="collapsed" desc="背包操作码 - 64xx">

+ 2 - 0
Gameserver/App/process/FightProc.php

@@ -105,6 +105,8 @@ class FightProc {
         my_Assert($gateInfo->tz_state >= $index, ErrCode::gate_GateNoUnlock);   # 已解锁当前难度
         my_Assert(Bits::GetBitValue($gateInfo->tz_rewards, $index - 1) == false, ErrCode::gate_GatePriceHasReceive);
         $gateInfo->tz_rewards = Bits::SetBitValue($gateInfo->tz_rewards, $index - 1, true); # 更新领取记录
+        
+        StoreProc::AddMultiItemInStore($gateInfo->tz_rewards);
         UserProc::updateUserInfo();
         return Resp::ok();
     }

+ 78 - 5
Gameserver/App/process/TaskProc.php

@@ -32,11 +32,85 @@ class TaskProc {
                 return TaskProc::receiveActiveTaskReward();
             case CmdCode::cmd_task_receiveActivePointBoxReward:                 # 6205 领取活跃点宝箱奖励
                 return TaskProc::receiveActivePointBoxReward();
+            case CmdCode::cmd_task_prizesAllreceived:                           # 6206 任务奖励一键领取 
+                return TaskProc::taskPrizesAllreceived();
             default:
                 Err(ErrCode::cmd_err);
         }
     }
 
+    /**
+     *  6206 任务奖励一键领取
+     */
+    public static function taskPrizesAllreceived() {
+        list($type) = req()->paras;
+
+        $dic = ctx()->task->activeTaskInfo;
+        $arr = array();
+        if ($type == Enum_ActiveTaskType::Day7) {
+            $startDay = TimeUtil::totalDays(ctx()->task->day7_startTs);
+            $endDay = $startDay + 6;
+
+            if (TimeUtil::totalDays() <= $endDay) {
+                $num = TimeUtil::totalDays() - $startDay;
+                foreach ($dic as $uid => $task) {
+                    $t = new Ins_TaskStep_Active($task);
+                    if ($t->mo()->type == $type && $t->mo()->day <= $num + 1 && $t->state == Enum_TaskCardStateType::finish) {
+                        $arr[] = $uid;
+                    }
+                }
+            }
+        } else {
+            foreach ($dic as $uid => $task) {
+                $t = new Ins_TaskStep_Active($task);
+                if ($t->mo()->type == $type && $t->isFinish()) {
+                    $arr[] = $uid;
+                }
+            }
+        }
+        $point = 0;
+        foreach ($arr as $uid) {
+            $t = new Ins_TaskStep_Active(ctx()->task->activeTaskInfo->$uid);
+            if ($t->mo()->activePoint != null) {
+                $list = explode(',', $t->mo()->activePoint);
+                $point += $list[1];
+            }
+            StoreProc::AddMultiItemInStore($t->mo()->prizes);
+            if ($t->mo()->prizes != null) {
+                $reward = explode(',', $t->mo()->prizes);
+                if (GameConfig::item_getItem($reward[0])->itemType == 201) {
+                    SystemProc::GetGem_GreaterOrangeQual_Active(req()->zoneid, ctx()->baseInfo->name, $reward[0]);
+                }
+            }
+        }
+
+        switch ($type) {
+            case Enum_ActiveTaskType::Day7:
+                ctx()->task->day7Point += $point;
+                break;
+            case Enum_ActiveTaskType::DailyTask:
+                ctx()->task->dailyTaskPoint += $point;
+                break;
+            case Enum_ActiveTaskType::WeekTask:
+                ctx()->task->weekTaskPoint += $point;
+                break;
+            default:
+                break;
+        }
+
+        $str = "5," . $point;
+        StoreProc::$reward[] = $str;
+
+        UserProc::updateUserInfo();
+        return Resp::ok(array("task" => ctx()->task,
+                    "store" => ctx()->store,
+                    'reward' => StoreProc::$reward,
+                    'reward_Gem' => StoreProc::$reward_Gem,
+                    'gold' => ctx()->baseInfo->gold,
+                    'cash' => ctx()->baseInfo->cash,
+        ));
+    }
+
     /**
      *  6205 领取活跃点宝箱奖励
      */
@@ -113,7 +187,7 @@ class TaskProc {
         ctx()->task->activeTaskInfo->$uid->drawTs = now();
 
         self::InitNextMainTask($uid);
-        
+
         $activePointArr = explode(',', $ins_activeTaskInfo->mo()->activePoint);
         switch ($ins_activeTaskInfo->mo()->type) {
             case Enum_ActiveTaskType::Day7:
@@ -146,10 +220,10 @@ class TaskProc {
         if ($ins_activeTaskInfo->mo()->type != Enum_ActiveTaskType::MainTask) {
             return;
         }
-        
+
         StlUtil::dictRemove(ctx()->task->activeTaskInfo, $uid);
-        $nextId = $ins_activeTaskInfo->mo()->next;        
-        if ($nextId != null) {           
+        $nextId = $ins_activeTaskInfo->mo()->next;
+        if ($nextId != null) {
             self::MainTaskInit($nextId);
         }
     }
@@ -349,7 +423,6 @@ class TaskProc {
 //            self::MainTaskInit(glc()->FirstMainTaskId);          
 //        }
 //    }
-
 // <editor-fold defaultstate="collapsed" desc="不同活动任务监测信息-">
 
     /**