Преглед изворни кода

每日商城按照策划案改成正式版

cyzhao пре 1 година
родитељ
комит
f19354588a

+ 1 - 1
Gameserver/App/model/Const/GameConfig.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2024-04-18 10:49:37
+ // 日期: 2024-04-18 16:26:13
 ////////////////////
 
 /**

+ 1 - 1
Gameserver/App/model/Const/sm_hero.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2024-04-18 10:02:47
+ // 日期: 2024-04-18 15:32:47
 ////////////////////
 
 

+ 1 - 1
Gameserver/App/model/Const/sm_item.php

@@ -3,7 +3,7 @@
  // 由CodeGenerator创建。
  // Copyright (C) gwang (wanggangzero@qq.com), Loyalsoft@sjz Inc
  // author: gwang 
- // 日期: 2024-04-15 13:59:35
+ // 日期: 2024-04-18 14:34:04
 ////////////////////
 
 

+ 8 - 0
Gameserver/App/model/User/Info_PrivateState.php

@@ -28,7 +28,15 @@ class Info_PrivateState extends Object_ext {
      */
     #[ArrayType]
     public $dailyShopReceived = array();
+    
+    /**
+     * 每日商店广告次数
+     * @var type
+     */
+    public $dailyShop_GuangGaoNum = 0;
 
+    public $dailyShop_GuangGaoTs = 0;
+    
     /**
      * 每日随机到的信息
      * @var type

+ 31 - 21
Gameserver/App/process/ShopProc.php

@@ -79,29 +79,39 @@ class ShopProc {
             case EnumShopGift::Daily_Shop://每日商店                             
                 $mo = GameConfig::shop_daily_getItem($typeId);
                 my_Assert($mo != null, ErrCode::err_const_no);   
-                
-                if($mo->freeNum > 0){
-                    
-                    
+                              
+                my_Assert(in_array($typeId, $user->privateState->dailyShopRandItems), ErrCode::err_const_no);
+                if($typeId == 1001){
+                    $getNum = 0;
+                    foreach ($user->privateState->dailyShopReceived as $id) {
+                        if($id == $typeId){
+                            $getNum+=1;
+                        }
+                    }
                     
+                    if($getNum >= $mo->num){
+                        my_Assert($user->privateState->dailyShop_GuangGaoNum < $mo->num, ErrCode::user_shop_FreeNumLimit);   
+                        my_Assert(now() - $user->privateState->dailyShop_GuangGaoTs >= $mo->downTs, ErrCode::user_shop_FreeNumLimit);                    
+                        $user->privateState->dailyShop_GuangGaoNum += 1;
+                        $user->privateState->dailyShop_GuangGaoTs = now();
+                    }                                                   
+                } else {                                                               
+                    my_Assert(!in_array($typeId, $user->privateState->dailyShopReceived), ErrCode::user_shop_NotRepeatBuy);   
+
+                    switch ($mo->costType) {                    
+                        case EnumShopCost::Gold:
+                            my_Assert($user->baseInfo->gold>= $mo->costNum, ErrCode::notenough_gold_msg); 
+                            ctx()->baseInfo->Consume_Gold($mo->costNum);
+                            break;
+                        case EnumShopCost::Cash:
+                            my_Assert($user->baseInfo->cash>= $mo->costNum, ErrCode::notenough_cash_msg); 
+                            ctx()->baseInfo->Consume_Cash($mo->costNum);
+                            break;
+                        default:
+                            break;
+                    }                                      
                 }
-                
-                my_Assert(in_array($typeId, $user->privateState->dailyShopRandItems), ErrCode::err_const_no);                                            
-                my_Assert(!in_array($typeId, $user->privateState->dailyShopReceived), ErrCode::user_shop_NotRepeatBuy);   
-                                                                                  
-                switch ($mo->costType) {                    
-                    case EnumShopCost::Gold:
-                        my_Assert($user->baseInfo->gold>= $mo->costNum, ErrCode::notenough_gold_msg); 
-                        ctx()->baseInfo->Consume_Gold($mo->costNum);
-                        break;
-                    case EnumShopCost::Cash:
-                        my_Assert($user->baseInfo->cash>= $mo->costNum, ErrCode::notenough_cash_msg); 
-                        ctx()->baseInfo->Consume_Cash($mo->costNum);
-                        break;
-                    default:
-                        break;
-                }
-                
+                                            
                 StoreProc::AddMultiItemInStore($mo->reward);
                 ctx()->privateState->dailyShopReceived[] = $typeId;