|
@@ -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)");
|
|
|
}
|