Explorar o código

添加回城券定义

王刚 %!s(int64=3) %!d(string=hai) anos
pai
achega
e1fe88f010

+ 2 - 3
Gameserver/Amfphp/AutoLoad.php

@@ -29,7 +29,7 @@ class AutoLoad {
             set_include_path($incPath);
 //            var_dump(get_include_path());
             static $ns = __NAMESPACE__;                                         # 当前命名空间(loyalsoft)
-            spl_autoload_register(function ($className) use ($ns) {              # 框架: 添加自动加载功能
+            spl_autoload_register(function ($className) use ($ns) {             # 框架: 添加自动加载功能
                 if (strncmp($className, $ns, strlen($ns)) == 0) {               # 过滤: 符合当前命名空间的类
                     include str_replace("$ns\\", '', $className) . '.php';      # 约定: 文件名要剔除命名空间
                 }
@@ -51,8 +51,7 @@ require_once ROOTDIR . '/process/UserProc.php';
 require_once ROOTDIR . '/process/FightProc/PVPProc.php';                        # (userproc中引用到了)
 require_once ROOTDIR . '/process/EventProc/CornerSignEventProc.php';            # 角标更新各处插入
 require_once ROOTDIR . '/process/EventProc/NormalEventProc.php';                # 2020年12月新版事件系统
-//require_once ROOTDIR . '/model/User/UserInfoMo.php';                            # 玩家全部数据模型
 require_once ROOTDIR . '/model/User/Data_UserGame.php';                         # 游戏数据
 require_once ROOTDIR . '/model/User/Data_UserProfile.php';                      # 玩家画像
 
-AutoLoad::Init();                                                              // 直接执行初始化
+AutoLoad::Init();                                                               // 直接执行初始化

+ 3 - 3
Gameserver/Amfphp/config.php

@@ -102,9 +102,9 @@ abstract class config {
     }
 
     private function _InitStatSettings() {
-        $stat = new \stdClass();                                                 # 对象初始化
-        $stat->usernumber = true;                                                # 玩家数量
-        $stat->cmd = true;                                                       # 操作记录
+        $stat = new \stdClass();                                                # 对象初始化
+        $stat->usernumber = true;                                               # 玩家数量
+        $stat->cmd = true;                                                      # 操作记录
     }
 
     /**

+ 1 - 1
Gameserver/Amfphp/main.php

@@ -37,7 +37,7 @@ require_once ROOTDIR . '/AutoLoad.php';
 
 /**
  * get dao instance,
- * @version 2019年12月23日 经过梦幻星工场2一年多的使用, 未发现特别明显的bug. 决定侧重使用. -- 王刚
+ * @version  2019年12月23日 经过梦幻星工场2一年多的使用, 未发现特别明显的bug. 决定侧重使用. -- 王刚
  *           2017.06.23     第一版 学习自禅道的开源框架.    -- 王刚
  * @staticvar type $a
  * @return \loyalsoft\dao  注意: dao并非什么好东西,只是一些改进尝试, 稳定性, 性能, 效率尚未得到证明.-gwang 2017.06.23

+ 100 - 99
Gameserver/Amfphp/process/StoreProc.php

@@ -76,17 +76,18 @@ class StoreProc {
             case CmdCode::cmd_store_unlockStore:
                 return StoreProc::unlockStore();
             case CmdCode::map_buyWeapon:                                        #6429 
-                return self::buyWeapon();    
+                return self::buyWeapon();
             case CmdCode::map_getShopWeapon:                                    # 6430                                      
                 return self::getShopWeapon();
+
             case CmdCode::map_buySupplies:                                      #6431 购买补给品
                 return self::buySupplies();
+
             default:
                 Err(ErrCode::cmd_err);
         }
     }
-    
-    
+
     /**
      * 6431 购买补给品
      */
@@ -94,36 +95,35 @@ class StoreProc {
         $npcid = req()->paras[0];       # 提取参数
         $itemid = req()->paras[1];      # 提取参数
         $num = req()->paras[2];         # 提取参数
-               
         //补充shop_supplies的mo       
-        $mo = GameConfig::shop_supplies_getItem($npcid, $itemid);           
+        $mo = GameConfig::shop_supplies_getItem($npcid, $itemid);
         my_Assert($mo != null, ErrCode::err_const_no);
-        
+
         my_Assert($num <= $mo->num, ErrCode::err_const_no);
-        
-        req()->userInfo->game->base(true)->Consume_Gold($mo->cost*$num);
-        $goodsStr = $itemid.','.$num;
+
+        req()->userInfo->game->base(true)->Consume_Gold($mo->cost * $num);
+        $goodsStr = $itemid . ',' . $num;
         StoreProc::AddMultiItemInStore($goodsStr);
-        
+
         UserProc::updateUserInfo();
-        
+
         return Resp::ok();
     }
-    
+
     /**
      * 
      */
     public static function getShopWeapon() {
         $npcid = req()->paras[0];   # 提取参数
-           
+
         self::DailyRefreshWeapon($npcid);
-        
+
         UserProc::updateUserInfo();
-       
+
         return Resp::ok(array(
                     "ret" => 'ok',));
     }
-    
+
     /**
      * 
      * @return type
@@ -131,147 +131,147 @@ class StoreProc {
     public static function buyWeapon() {
         $npcid = req()->paras[0];   # 提取参数	
         $weaponId = req()->paras[1];   # 提取参数	
-        
-        $store = ctx()->store(true);         
+
+        $store = ctx()->store(true);
         $type = 0;
-        
+
         $tag = true;
-        if(StlUtil::dictHasProperty($store->weaponReward, $npcid)){
+        if (StlUtil::dictHasProperty($store->weaponReward, $npcid)) {
             $dic = $store->weaponReward->$npcid;
             foreach ($dic as $k => $list) {
-                if(in_array($weaponId, $list)){
+                if (in_array($weaponId, $list)) {
                     $tag = false;
                     break;
-                }              
+                }
             }
         } else {
-            $tag = false;               
+            $tag = false;
         }
-       
+
         my_Assert($tag == false, ErrCode::store_weaponCantBuy);
-                       
+
         $list = GameConfig::shop_weapon_getItemArray($npcid);
         $cost = 0;
-        foreach ($list as $item) {           
-            $weaponList = explode(';',$item->weaponlist); 
+        foreach ($list as $item) {
+            $weaponList = explode(';', $item->weaponlist);
             foreach ($weaponList as $value) {
-                $pList = explode(',',$value);
-                if(in_array($weaponId, $pList)){
+                $pList = explode(',', $value);
+                if (in_array($weaponId, $pList)) {
                     $type = $item->id;
                     $cost = $item->cost;
                     break 2;
                 }
-            }           
+            }
         }
-        
+
         ctx()->base(true)->Consume_Gold($cost);
-        
+
         $store->weaponReward->$npcid->$type[] = $weaponId;
-        
+
 //        ctx()->store = $store;
-        
+
         UserProc::updateUserInfo();
         return Resp::ok();
     }
-    
+
     /*
      * 每日刷新武器
      */
+
     public static function DailyRefreshWeapon($npcid = null) {
         //没有数据初始化,有数据不在管                   
-        if($npcid != null && !StlUtil::dictHasProperty(ctx()->store()->weaponPool, $npcid)){                   
+        if ($npcid != null && !StlUtil::dictHasProperty(ctx()->store()->weaponPool, $npcid)) {
             $ret = new \stdClass();
             $list = GameConfig::shop_weapon_getItemArray($npcid);
-                     
-            foreach ($list as $value) {               
-                $arr = explode(';',$value->weaponlist);     
+
+            foreach ($list as $value) {
+                $arr = explode(';', $value->weaponlist);
                 foreach ($arr as $item) {
-                    $itemList = explode(',',$item); 
+                    $itemList = explode(',', $item);
                     $id = $itemList[0];
                     $per = $itemList[1];
-                    $ret->$id = $per; 
+                    $ret->$id = $per;
                 }
-                $retArr = array();         
-                $type = $value->id;               
+                $retArr = array();
+                $type = $value->id;
                 $pArr = self::randweapon($ret, $value->num);
                 //数组合并
                 $retArr = array_merge($retArr, $pArr);
-                ctx()->store()->weaponPool->$npcid->$type = $retArr;                                        
+                ctx()->store()->weaponPool->$npcid->$type = $retArr;
             }
-            
         } else {
             //每日登录刷新,刷新的时候把已经购买过的武器去掉;                          
             $dic = ctx()->store()->weaponPool;
-            foreach ($dic as $npcid => $val) {                               
+            foreach ($dic as $npcid => $val) {
                 $list = GameConfig::shop_weapon_getItemArray($npcid);
                 foreach ($list as $value) {
-                    $ret = new \stdClass(); 
-                    $arr = explode(';',$value->weaponlist);     
+                    $ret = new \stdClass();
+                    $arr = explode(';', $value->weaponlist);
                     foreach ($arr as $item) {
-                        $itemList = explode(',',$item); 
+                        $itemList = explode(',', $item);
                         $id = $itemList[0];
                         $per = $itemList[1];
-                        $ret->$id = $per; 
+                        $ret->$id = $per;
                     }
-                    
+
                     $ret2 = $ret;
                     $type = $value->id;
-                    if(StlUtil::dictHasProperty(ctx()->store()->weaponReward, $npcid)){
-                        $weaponList = ctx()->store()->weaponReward->$npcid->$type;                   
+                    if (StlUtil::dictHasProperty(ctx()->store()->weaponReward, $npcid)) {
+                        $weaponList = ctx()->store()->weaponReward->$npcid->$type;
                         foreach ($weaponList as $wid) {
-                            if(StlUtil::dictHasProperty($ret, $wid)){
+                            if (StlUtil::dictHasProperty($ret, $wid)) {
                                 StlUtil::dictRemove($ret, $wid);
                             }
-                        }                   
+                        }
                     }
-                                        
-                    $temp = $ret;                    
-                    if(count((array)$ret)< $value->num){//一旦所有的武器或是不够刷新数量了,重置当前档位
+
+                    $temp = $ret;
+                    if (count((array) $ret) < $value->num) {//一旦所有的武器或是不够刷新数量了,重置当前档位
                         $temp = $ret2;
-                        ctx()->store()->weaponReward->$npcid->$type = array();                   
+                        ctx()->store()->weaponReward->$npcid->$type = array();
                     }
-                    $retArr= array();
-                    
+                    $retArr = array();
+
                     $pArr = self::randweapon($temp, $value->num);
-                    
-                    $retArr = array_merge($retArr, $pArr);                   
-                    ctx()->store()->weaponPool->$npcid->$type = $retArr;                                                         
-                }                              
-            }            
-        }       
+
+                    $retArr = array_merge($retArr, $pArr);
+                    ctx()->store()->weaponPool->$npcid->$type = $retArr;
+                }
+            }
+        }
     }
-    
-    static function randweapon($temp,$limit) {
+
+    static function randweapon($temp, $limit) {
         $resultArr = array();
         $num = 0;
-                while (true) {
-                    $total = 0;
-                    foreach ($temp as $k => $v) {
-                            $total += $v;
-                    }
-                    
-                    $n = rand(1,$total);                   
-                    $start = 0;
-                    foreach ($temp as $id => $per) {                                                                                          
-                        $start += $per;
-                        if($n<=$start){
-                            if(in_array($id, $resultArr)){
-                                StlUtil::dictRemove($temp, $id);
-                                break;
-                            } else {
-                                $resultArr[] = $id;
-                                $num += 1;    
-                                break;                                                                                        
-                            }
-                        }
-                    }
-                    
-                    if($num >= $limit){
+        while (true) {
+            $total = 0;
+            foreach ($temp as $k => $v) {
+                $total += $v;
+            }
+
+            $n = rand(1, $total);
+            $start = 0;
+            foreach ($temp as $id => $per) {
+                $start += $per;
+                if ($n <= $start) {
+                    if (in_array($id, $resultArr)) {
+                        StlUtil::dictRemove($temp, $id);
+                        break;
+                    } else {
+                        $resultArr[] = $id;
+                        $num += 1;
                         break;
                     }
                 }
-                
-                return $resultArr;
+            }
+
+            if ($num >= $limit) {
+                break;
+            }
+        }
+
+        return $resultArr;
     }
 
     /**
@@ -934,6 +934,12 @@ class StoreProc {
                 case 328:                                                       #言灵的突破材料
                 case 329:                                                       #武器的突破石
                 case 330:                                                       #武器的突破材料
+                // 补给品
+                case 341:                                                       # 血瓶
+                case 342:                                                       # 能量瓶
+                case 343:                                                       # 
+                case 344:                                                       # 回城券 -2022.4.13 海哥
+                //
                 case 701:                                                       #宝石
                 case 702:                                                       #设计图纸
                 case 703:                                                       #宝石辅助材料
@@ -945,11 +951,6 @@ class StoreProc {
                 case 313:
                     StoreProc::PutOverlyingItemInStore($itemId, $num);          # 直接进包裹items
                     break;
-                case 341:                                                       # 战场中掉落,不会进入包裹
-                case 342:
-                case 343:
-                    Err(ErrCode::err_innerfault, "落入包裹时,出现了非法物品($itemId)");
-                    break;
                 default :
                     Err(ErrCode::err_innerfault, "落入包裹时,出现了非法物品($itemId)");
             }