Prechádzať zdrojové kódy

所有功能宝箱一键领取

cyzhao 2 dní pred
rodič
commit
fa75932b98

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

@@ -227,6 +227,8 @@ class CmdCode {
      * 金蛇兌換
      */
     const active_FlipCardLottery_Exchange = 6118;
+    
+    const active_Day7_AccumulateDrawreward_All = 6119;
 // </editor-fold>
 // <editor-fold defaultstate="collapsed" desc="任务操作码 - 62xx">
 
@@ -264,6 +266,11 @@ class CmdCode {
      * 观看广告 通知后端
      */
     const cmd_task_lookGuangGao = 6207;
+    
+    /**
+     * 宝箱一键领取
+     */
+    const cmd_task_boxReceived = 6208;
 // </editor-fold>
 //
 // <editor-fold defaultstate="collapsed" desc="背包操作码 - 64xx">

+ 95 - 10
Gameserver/App/process/ActiveProc.php

@@ -58,8 +58,11 @@ class ActiveProc {
                 return self::FlipCardLottery_DrawGrandReward();
             case CmdCode::active_FlipCardLottery_DrawAccumulateReward:          # 6117 领取卡牌累计次数奖励    
                 return self::FlipCardLottery_DrawAccumulateReward();
-            case CmdCode::active_FlipCardLottery_Exchange:                      # 6118 金蛇兌換    6118 金蛇兌換    
+            case CmdCode::active_FlipCardLottery_Exchange:                      # 6118 金蛇兌換  
                 return self::FlipCardLottery_Exchange();
+                
+            case CmdCode::active_Day7_AccumulateDrawreward_All:                 # 6119 
+                return self::Day7_AccumulateDrawreward_All();
             default:
                 Err(ErrCode::cmd_err);
         }
@@ -111,7 +114,7 @@ class ActiveProc {
 
         if (count($arr) > 0) {
             foreach ($arr as $uid) {
-                StlUtil::dictRemove($activeTaskInfo, $uid);                
+                StlUtil::dictRemove($activeTaskInfo, $uid);
             }
         }
 
@@ -237,7 +240,7 @@ class ActiveProc {
             $reward = self::GetCurGrandReward();
             if ($reward != "") {
                 $str = explode(';', $reward);
-                foreach ($lineArr as $orderId) {                   
+                foreach ($lineArr as $orderId) {
                     $s = explode(',', $str[$orderId]);
                     StoreProc::AddMultiItemInStore($s[0] . ',' . $s[1]);
                 }
@@ -271,20 +274,20 @@ class ActiveProc {
         $itemId = 802;
         $item = GameConfig::item();
         foreach ($item as $key => $value) {
-            if($value->itemType == 802){
+            if ($value->itemType == 802) {
                 $itemId = $value->typeId;
                 break;
             }
         }
-        
+
         $itemNum = 0;
-        if(StlUtil::dictHasProperty(ctx()->store->items, $itemId)){
+        if (StlUtil::dictHasProperty(ctx()->store->items, $itemId)) {
             $itemNum = ctx()->store->items->$itemId;
         }
-        
-        my_Assert($itemNum > 0 , ErrCode::notenough_item);               
+
+        my_Assert($itemNum > 0, ErrCode::notenough_item);
         ctx()->store()->removeItem($itemId, 1);
-        
+
         $cardId = self::RandCardReward();
         my_Assert($cardId != 0, ErrCode::active_const_no_err);
         $rewards = GameConfig::glc2()->FlipCardLottery_CardRewards;
@@ -960,6 +963,89 @@ class ActiveProc {
         ));
     }
 
+    /**
+     * 6119
+     * @return type
+     */
+    public static function Day7_AccumulateDrawreward_All() {
+        $loopNum = ctx()->privateData()->day7_accumulate_loopNum;
+
+        $arr = array(0, 1, 2, 3, 4);
+        $arr2 = array(2, 4, 6, 8, 10);
+        $index = 0;
+
+        $dayArr = array();
+        foreach ($arr as $i) {
+            $index += 1;
+            $id = $arr2[$i];
+            $num = $loopNum % 6;
+
+            $confId = $arr2[$i];
+            if ($num == 0) {
+                //是取整数用的
+                $num = $loopNum / 6;
+                $id = $num * 60;
+            } else {
+                //是余数
+                $id += ($loopNum - 1) * 10;
+            }
+
+            if ($index == 5) {
+                if ($num > 0) {
+                    $confId = $num * 10;
+                } else {
+                    $confId = 60;
+                }
+            }
+           
+            $dayArr[] = $id;
+        }
+        
+        foreach ($dayArr as $day) {
+            $yushu = $day % 10;
+            if ($yushu == 0) {
+                $num = $day / 10;
+                if ($num > 6) {
+                    $n = $num % 6;
+                    $typeId = $n * 10;
+                } else {
+                    $typeId = $day;
+                }
+            } else {
+                $typeId = $yushu;
+            }
+            
+            if (ctx()->privateState->day7_accumulate >= $day && !in_array($day, ctx()->privateState->day7_accumulateDrawed)) {              
+                $day_rwd = GameConfig::active_day7_accumulate_getItem($typeId); # 查询奖励数据
+                my_Assert(null != $day_rwd, ErrCode::err_const_no);             # 防御找不到配置
+                StoreProc::AddMultiItemInStore($day_rwd->reward);               # 发放奖励
+                ctx()->privateState->day7_accumulateDrawed[] = $day;
+            }
+        }
+        
+        $tag = true;
+        foreach ($arr2 as $id) {//查看当前这组天奖励是否全部被领取
+            $id += ($loopNum - 1) * 10;
+            if (!in_array($id, ctx()->privateState->day7_accumulateDrawed)) {
+                $tag = false;
+            }
+        }
+
+        if ($tag) {//$typeId % 10 == 0
+            ctx()->privateState->day7_accumulate_loopNum += 1;
+        }          
+       
+        UserProc::updateUserInfo();                                             # 回存
+        return Resp::ok(array('gold' => ctx()->baseInfo->gold,
+                    'cash' => ctx()->baseInfo->cash,
+                    'store' => ctx()->store,
+                    'privateState' => ctx()->privateState,
+                    'reward' => StoreProc::$reward,
+                    'reward_Gem' => StoreProc::$reward_Gem,
+                    'reward_equip' => StoreProc::$reward_equip,
+        ));
+    }
+
     /**
      * 限时贩卖 2天一刷
      */
@@ -1161,5 +1247,4 @@ class ActiveProc {
                     'reward_equip' => StoreProc::$reward_equip,
         ));
     }
-
 }

+ 8 - 8
Gameserver/App/process/StoreProc.php

@@ -978,7 +978,7 @@ class StoreProc {
                 break;
             }
         }
-        $mo = GameConfig::gem_slotposition_getItem($ins_equip->qual);
+        $mo = GameConfig::gem_slotposition_getItem($ins_equip->qual);     
         my_Assert(null != $mo, ErrCode::err_const_no);
         switch ($type) {
             case 1://镶嵌
@@ -1068,16 +1068,16 @@ class StoreProc {
         }
 
         $ins_equip->gemSetSlot = $gemSetSlotDic;
-        ctx()->store(true)->equip->$equipUid = $ins_equip;
+        //ctx()->store(true)->equip->$equipUid = $ins_equip;
 
         TaskProc::OnSetSpecialQualGem();
         FightProc::Ranking_FightPower();
-        UserProc::updateUserInfo();
-        return Resp::ok(array(
-                    'gold' => 0,
-                    'store' => ctx()->store,
-                    'task' => ctx()->task,
-        ));
+//        UserProc::updateUserInfo();
+//        return Resp::ok(array(
+//                    'gold' => 0,
+//                    'store' => ctx()->store,
+//                    'task' => ctx()->task,
+//        ));
     }
 
     /**

+ 51 - 3
Gameserver/App/process/TaskProc.php

@@ -36,11 +36,59 @@ class TaskProc {
                 return TaskProc::taskPrizesAllreceived();
             case CmdCode::cmd_task_lookGuangGao:                                # 6207 观看广告 通知后端
                 return TaskProc::LookGuangGao();
+            case CmdCode::cmd_task_boxReceived:                                 # 6208 宝箱一键领取
+                return TaskProc::boxReceived();
             default:
                 Err(ErrCode::cmd_err);
         }
     }
 
+    /**
+     * 6208 宝箱一键领取
+     * @return type
+     */
+    public static function boxReceived() {
+        list($type) = req()->paras;
+
+        $point = 0;
+        switch ($type) {
+            case Enum_ActiveTaskType::Day7:
+                $point = ctx()->task->day7Point;
+                break;
+            case Enum_ActiveTaskType::DailyTask:
+                $point = ctx()->task->dailyTaskPoint;
+                break;
+            case Enum_ActiveTaskType::WeekTask:
+                $point = ctx()->task->weekTaskPoint;
+                break;
+            default:
+                break;
+        }
+        $dic = GameConfig::activepointreward();
+        foreach ($dic as $key => $mo) {
+            if ($type != $mo->type) {
+                continue;
+            }
+            $strId = $type . "-" . $mo->pointId;
+            if ($point >= $mo->pointId && !in_array($strId, ctx()->task->activePointReceived) && $mo->reward_show == null) {
+                ctx()->task->activePointReceived[] = $strId;
+                StoreProc::AddMultiItemInStore($mo->reward);
+            }
+        }
+
+        UserProc::updateUserInfo();
+        return Resp::ok(array("task" => ctx()->task,
+                    "store" => ctx()->store,
+                    "reward" => StoreProc::$reward,
+                    'reward_Gem' => StoreProc::$reward_Gem,
+                    'reward_equip' => StoreProc::$reward_equip,
+                    'gold' => ctx()->baseInfo->gold,
+                    'cash' => ctx()->baseInfo->cash,
+                    'heros' => ctx()->heros,
+                    
+        ));
+    }
+
     /**
      * 6207 观看广告 通知后端
      * @return type
@@ -545,7 +593,7 @@ class TaskProc {
         $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::OnLogin_Accumulate, Enum_PropelType::add, 1, array());
         self::CheckActiveTaskConditions($taskEventArg);
     }
-    
+
     static function OnLogin_Accumulate_FlipCard() {
         $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::OnLogin_Accumulate, Enum_PropelType::add, 1, array());
         self::CheckActiveTaskConditions($taskEventArg);
@@ -859,7 +907,7 @@ class TaskProc {
         $taskEventArg = new Ins_TaskEventArgs(Enum_ActiveTaskCmdType::ReceiveGateBoxReward, Enum_PropelType::add, 1, array());
         self::CheckActiveTaskConditions($taskEventArg);
     }
-    
+
 // </editor-fold>
 //
 // <editor-fold defaultstate="collapsed" desc="活动任务是否完成的检测-">
@@ -879,7 +927,7 @@ class TaskProc {
             if ($ins_TaskStep_Active->mo()->cmd == $taskParam->taskType) {
                 if ($ins_TaskStep_Active->isStatusType()) {//校验状态类的                                      
                     $cur = $ins_TaskStep_Active->calcStatusCur();
-                    if ($cur != $ins_TaskStep_Active->cur) {                                               
+                    if ($cur != $ins_TaskStep_Active->cur) {
                         $ins_TaskStep_Active->cur = $cur;
                         if ($ins_TaskStep_Active->cur >= $ins_TaskStep_Active->max()) {
                             $ins_TaskStep_Active->cur = $ins_TaskStep_Active->max();