|
@@ -30,6 +30,8 @@ class StoreProc {
|
|
|
return StoreProc::refreshStore($req);
|
|
|
// case CmdCode::cmd_store_decomposeItem: # 6406 分解道具
|
|
|
// return StoreProc::decomposeItem($req);
|
|
|
+ case CmdCode::cmd_store_Testcmd: # 6407 测试方法
|
|
|
+ return StoreProc::Test($req);
|
|
|
// case CmdCode::cmd_store_ItemUpgrade: # 6408 装备升级
|
|
|
// return StoreProc::ItemUpgrade($req);
|
|
|
// case CmdCode::cmd_store_GemCompose: # 6408 装备合成
|
|
@@ -39,10 +41,7 @@ class StoreProc {
|
|
|
return StoreProc::WearEquipToHero($req);
|
|
|
case CmdCode::cmd_store_UnWieldEquip: # 6411 将该装备从指定英雄上脱下
|
|
|
return StoreProc::UnWieldEquip($req);
|
|
|
- case CmdCode::cmd_store_WearYanling: # 6416 装备言灵
|
|
|
- return StoreProc::WearYanlingToHero($req);
|
|
|
- case CmdCode::cmd_store_UnWieldYanling: # 6417 卸下言灵
|
|
|
- return StoreProc::UnWieldYanling($req);
|
|
|
+
|
|
|
//
|
|
|
case CmdCode::cmd_store_AddMaxPacketNum: # 6412 扩展包裹格子数量
|
|
|
return StoreProc::AddPacketNum($req);
|
|
@@ -51,13 +50,68 @@ class StoreProc {
|
|
|
//// return StoreProc::MeltEquip($req);
|
|
|
// case CmdCode::cmd_store_PiecesCompose: # 6415 碎片合成
|
|
|
// return StoreProc::composePieces($req);
|
|
|
- case CmdCode::cmd_store_Testcmd: # 6407 测试方法
|
|
|
- return StoreProc::Test($req);
|
|
|
+ case CmdCode::cmd_store_WearYanling: # 6416 装备言灵
|
|
|
+ return StoreProc::WearYanlingToHero($req);
|
|
|
+ case CmdCode::cmd_store_UnWieldYanling: # 6417 卸下言灵
|
|
|
+ return StoreProc::UnWieldYanling($req);
|
|
|
+ case CmdCode::cmd_store_mergeYanlingbook: # 6418 利用言灵召唤书碎片合成召唤书
|
|
|
+ return self::MergeYanlingBook($req);
|
|
|
+ case CmdCode::cmd_store_callyanling: # 6419 利用言灵召唤书召唤言灵
|
|
|
+ return self::CallYanlingByBook($req);
|
|
|
default:
|
|
|
Err(ErrCode::cmd_err);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * [6418] 利用言灵召唤书碎片合成召唤书
|
|
|
+ * @param req $req
|
|
|
+ */
|
|
|
+ static function MergeYanlingBook($req) {
|
|
|
+ list($bookId) = $req->paras; # 参数 言灵召唤书id
|
|
|
+ $user = $req->userInfo->game;
|
|
|
+ $bookIdCfg = GameConfig::item_yanlingbook_getItem($bookId);
|
|
|
+ my_Assert(null != $bookIdCfg, ErrCode::err_const_no); # 找不到言灵书常量
|
|
|
+ list($segId, $num) = explode(',', $bookIdCfg->seg_num); # 解析所需碎片信息
|
|
|
+ $err = self::removeItemFromStore($user->store, $segId, $num); # 扣除 碎片
|
|
|
+ my_Assert(ErrCode::ok == $err, $err); # 防御扣除碎片失败
|
|
|
+ self::PutOverlyingItemInStore($bookId); # 添加召唤书
|
|
|
+ UserProc::updateUserInfo(); # 回写数据
|
|
|
+ return Resp::ok(array(
|
|
|
+ "store" => $req->userInfo->game->store, # # 目前来看只涉及到items变化
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * [6419] 利用言灵召唤书召唤言灵
|
|
|
+ * @param req $req
|
|
|
+ */
|
|
|
+ static function CallYanlingByBook($req) {
|
|
|
+ // 参数: 言灵id
|
|
|
+ // 扣除并检查召唤书数量
|
|
|
+ // 扣除并检查消耗材料数量
|
|
|
+ // 添加言灵
|
|
|
+ // 返回 新的store->item数据
|
|
|
+ list($bookId) = $req->paras; # 参数 利用的言灵召唤书id
|
|
|
+ $user = $req->userInfo->game;
|
|
|
+ $bookIdCfg = GameConfig::item_yanlingbook_getItem($bookId);
|
|
|
+ my_Assert(null != $bookIdCfg, ErrCode::err_const_no); # 找不到言灵书常量
|
|
|
+ $err = self::removeItemFromStore($user->store, $bookId); # 扣除 召唤书
|
|
|
+ my_Assert(ErrCode::ok == $err, $err); # 防御扣除召唤书失败
|
|
|
+ $costs = explode(';', $bookIdCfg->cost_materials);
|
|
|
+ my_Assert(count($costs) > 0, ErrCode::store_book_info); # 召唤书数据有误
|
|
|
+ foreach ($costs as $c) {
|
|
|
+ list($itemId, $num) = explode(',', $bookIdCfg->cost_materials); # 消耗材料
|
|
|
+ $err = self::removeItemFromStore($user->store, $itemId, $num); # 扣除 材料
|
|
|
+ my_Assert(ErrCode::ok == $err, $err); # 防御扣除材料失败
|
|
|
+ }
|
|
|
+ self::PutOverlyingItemInStore($bookIdCfg->yanling_id); # 添加言灵
|
|
|
+ UserProc::updateUserInfo(); # 回写数据
|
|
|
+ return Resp::ok(array(
|
|
|
+ "store" => $req->userInfo->game->store, # # 目前来看只涉及到items变化
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 测试方法
|
|
|
* @param Req $req
|
|
@@ -144,81 +198,20 @@ class StoreProc {
|
|
|
* @param type $itemcount
|
|
|
* @return type
|
|
|
*/
|
|
|
- static function removeItemFromStore($store, $itemId, $itemcount) {
|
|
|
- $typeId = substr($itemId, 0, 3);
|
|
|
- switch ($typeId) {
|
|
|
- case '307': #经验书
|
|
|
- case '305': #扫荡券
|
|
|
- case '304': # 宝石
|
|
|
- if (CommUtil::isPropertyExists($store->items, $itemId)) { //
|
|
|
- if ($store->items->$itemId >= $itemcount) { // 数量足够
|
|
|
- $store->items->$itemId -= $itemcount;
|
|
|
- if ($store->items->$itemId == 0) {
|
|
|
- unset($store->items->$itemId);
|
|
|
- }
|
|
|
- return ErrCode::ok;
|
|
|
- } else {
|
|
|
- return ErrCode::store_itemnotenough; // 道具数量不足
|
|
|
- }
|
|
|
- } else {
|
|
|
- return ErrCode::store_itemno_err;
|
|
|
- }
|
|
|
- break;
|
|
|
- case '310': # 碎片
|
|
|
- case '311': # 碎片
|
|
|
- case '312': # 碎片
|
|
|
- case '313': #装备 碎片
|
|
|
- case '314': #装备 碎片
|
|
|
- case '315': #装备 碎片
|
|
|
- if (CommUtil::isPropertyExists($store->segement, $itemId)) { //
|
|
|
- if ($store->segement->$itemId >= $itemcount) { // 数量足够
|
|
|
- $store->segement->$itemId -= $itemcount;
|
|
|
- if ($store->segement->$itemId == 0) {
|
|
|
- unset($store->segement->$itemId);
|
|
|
- }
|
|
|
- return ErrCode::ok;
|
|
|
- } else {
|
|
|
- return ErrCode::store_itemnotenough; // 道具数量不足
|
|
|
- }
|
|
|
- } else {
|
|
|
- return ErrCode::store_itemno_err;
|
|
|
+ static function removeItemFromStore($store, $itemId, $itemcount = 1) {
|
|
|
+ if (CommUtil::isPropertyExists($store->items, $itemId)) {
|
|
|
+ if ($store->items->$itemId >= $itemcount) { # 数量足够
|
|
|
+ $store->items->$itemId -= $itemcount;
|
|
|
+ if ($store->items->$itemId == 0) {
|
|
|
+ unset($store->items->$itemId);
|
|
|
}
|
|
|
- break;
|
|
|
- default : # 其他
|
|
|
- Err(ErrCode::store_itemcantuse);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 从仓库移出
|
|
|
- * @param type $itemId
|
|
|
- * @param StoreModel $store
|
|
|
- * @return boolean
|
|
|
- */
|
|
|
- static function removeFromStore($itemId, &$store) {
|
|
|
-//return ErrCode::succeed;
|
|
|
- $typid = substr("$itemId", 0, 3); # 取道具分类
|
|
|
- $ok = false;
|
|
|
- switch ($typid) {
|
|
|
- case "101": # 英雄 错误了的路径
|
|
|
- break;
|
|
|
- case '102': # 英雄碎片
|
|
|
- if (CommUtil::isPropertyExists($store->segement, "$itemId") && $store->segement->$itemId > 0) {
|
|
|
- $store->segement->$itemId -= 1;
|
|
|
- $ok = true;
|
|
|
- }
|
|
|
- break;
|
|
|
- case "203": # 宝箱
|
|
|
- if (CommUtil::isPropertyExists($store->boxes, "$itemId") && $store->boxes->$itemId > 0) {
|
|
|
- $store->boxes->$itemId -= 1;
|
|
|
- $ok = true;
|
|
|
- }
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
+ return ErrCode::ok;
|
|
|
+ } else {
|
|
|
+ return ErrCode::store_itemnotenough; # 道具数量不足
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return ErrCode::store_itemno_err; # 没有这个道具
|
|
|
}
|
|
|
- return $ok;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -228,16 +221,11 @@ class StoreProc {
|
|
|
* @return boolean
|
|
|
*/
|
|
|
static function removeEquipFromStore($uid, $typeId, &$req) {
|
|
|
-
|
|
|
$ok = false;
|
|
|
echo var_export($uid);
|
|
|
if (CommUtil::isPropertyExists($req->userInfo->game->store->equipment, $uid)) {
|
|
|
-
|
|
|
- // $con= ConstProc::getItemConst($req->mem, $req->userInfo->game->store->equipment->$uid->typeId);
|
|
|
-
|
|
|
-
|
|
|
+// $con= ConstProc::getItemConst($req->mem, $req->userInfo->game->store->equipment->$uid->typeId);
|
|
|
echo var_export($req->userInfo->game->store->equipment->$uid->typeId);
|
|
|
-
|
|
|
if ($typeId == $req->userInfo->game->store->equipment->$uid->typeId) {
|
|
|
echo "typeid相同";
|
|
|
unset($req->userInfo->game->store->equipment->$uid);
|
|
@@ -246,8 +234,6 @@ class StoreProc {
|
|
|
echo "typeid检验错误";
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
return $ok;
|
|
|
}
|
|
|
|
|
@@ -358,20 +344,23 @@ class StoreProc {
|
|
|
list( $itemId, $num) = $val; # ID, 数量
|
|
|
$smItem = GameConfig::item_base_getItem($itemId); # 道具mo
|
|
|
switch ($smItem->subType) { # 根据类型分别添加到容器中
|
|
|
- case 1: # 金币
|
|
|
+ case META_EXP: # 指挥官经验
|
|
|
+ UserGameModel::Add_Exp($user->baseInfo, $num);
|
|
|
+ break;
|
|
|
+ case META_GOLD_ITEMID: # 金币
|
|
|
UserGameModel::Add_Gold($user->baseInfo, $num);
|
|
|
break;
|
|
|
- case 2: # 钻石
|
|
|
+ case META_CASH_ITEMID: # 钻石
|
|
|
UserGameModel::Add_Cash($user->baseInfo, $num);
|
|
|
break;
|
|
|
- case 3: # 体力
|
|
|
+ case META_tili_ITEMID: # 体力
|
|
|
UserGameModel::Add_tili($req, $num);
|
|
|
break;
|
|
|
- case 4: # 友情值
|
|
|
+ case META_FriendShipPoit_ItemId: # 友情值
|
|
|
UserGameModel::Add_FriendPoint($user->baseInfo, $num);
|
|
|
break;
|
|
|
- case 5:
|
|
|
- $user->pvp->pvpCoins += $num; # 竞技币
|
|
|
+ case META_PVPCOIN_ITEMID: # 竞技币
|
|
|
+ $user->pvp->pvpCoins += $num;
|
|
|
break;
|
|
|
case 101: # 武器
|
|
|
StoreProc::PutEquipInStore($itemId, $req);
|
|
@@ -395,7 +384,6 @@ class StoreProc {
|
|
|
Err(ErrCode::err_innerfault, "落入包裹时,出现了非法物品");
|
|
|
}
|
|
|
}
|
|
|
-// UserProc::updateUserInfo();
|
|
|
return ErrCode::ok; // 返回
|
|
|
}
|
|
|
|
|
@@ -449,7 +437,7 @@ class StoreProc {
|
|
|
* @param int $itemId
|
|
|
* @param int $num
|
|
|
*/
|
|
|
- static function PutOverlyingItemInStore($itemId, $num) {
|
|
|
+ static function PutOverlyingItemInStore($itemId, $num = 1) {
|
|
|
$items = req()->userInfo->game->store->items; # dic: itemid=>number
|
|
|
if (CommUtil::isPropertyExists($items, $itemId)) { # 如果仓库中已经有这种元素,则其数目+=num
|
|
|
$items->$itemId += $num;
|
|
@@ -463,6 +451,7 @@ class StoreProc {
|
|
|
* @param GoodsItemModel $itemModel
|
|
|
* @param Req $req
|
|
|
* @return type
|
|
|
+ * @deprecated since version now
|
|
|
*/
|
|
|
static function addSeprateItem($itemModel, $req) {
|
|
|
Err(ErrCode::err_method_obsoleted, "未更新包裹操作");
|
|
@@ -650,7 +639,7 @@ class StoreProc {
|
|
|
$SegementObj = $req->userInfo->game->store->segement;
|
|
|
$HeroObj = $req->userInfo->game->heros->collectHeros;
|
|
|
$ItemNum = 0;
|
|
|
- ////检查宝石类可叠加物品的格子占用
|
|
|
+////检查宝石类可叠加物品的格子占用
|
|
|
if ($ItemObj) {
|
|
|
foreach ($ItemObj as $value) {
|
|
|
$ItemNum++;
|
|
@@ -661,13 +650,13 @@ class StoreProc {
|
|
|
$ItemNum++;
|
|
|
}
|
|
|
}
|
|
|
- ////检测装备类物品格子占用
|
|
|
+////检测装备类物品格子占用
|
|
|
if ($EquipObj) {
|
|
|
foreach ($EquipObj as $value) {
|
|
|
$ItemNum++;
|
|
|
}
|
|
|
}
|
|
|
- ////检测英雄装备到身上的情况,装备到英雄身上不占格子,要减去.
|
|
|
+////检测英雄装备到身上的情况,装备到英雄身上不占格子,要减去.
|
|
|
if ($HeroObj) {
|
|
|
foreach ($HeroObj as $value) {
|
|
|
// echo var_dump($HeroObj);
|
|
@@ -724,8 +713,7 @@ class StoreProc {
|
|
|
}
|
|
|
|
|
|
// </editor-fold>
|
|
|
-//
|
|
|
-// -------------- 已废弃的代码 -------------------------------
|
|
|
+//
|
|
|
//
|
|
|
//
|
|
|
// <editor-fold defaultstate="collapsed" desc=" 出售 ">
|
|
@@ -740,7 +728,7 @@ class StoreProc {
|
|
|
Err(ErrCode::err_method_obsoleted, "代码需要更新");
|
|
|
$resp = new Resp();
|
|
|
$mem = $req->mem;
|
|
|
- // $user = $req->userInfo->user;
|
|
|
+// $user = $req->userInfo->user;
|
|
|
$store = $req->userInfo->game->store; //$req->userInfo->game->store->items
|
|
|
//客户端参数解析
|
|
|
$type = $req->paras[0]; //1=神兽 2=建筑 //需要判断是否叠加
|
|
@@ -752,19 +740,19 @@ class StoreProc {
|
|
|
$count = 1;
|
|
|
$uid = $req->paras[2];
|
|
|
}//物品的uid
|
|
|
- ////0是type 1是itemid,2是uid或者是数量
|
|
|
+////0是type 1是itemid,2是uid或者是数量
|
|
|
|
|
|
if ($type > 3 && $type < 8) { // 从仓库出售宝石 出售可叠加的物品
|
|
|
$ok = StoreProc::removeItemFromStore($store, $itemId, $count); // 支持移除指定数量
|
|
|
my_Assert($ok == ErrCode::ok, $ok); //1.如果仓库道具移出时出错,则直接返回错误
|
|
|
- // echo "弄弄";
|
|
|
+// echo "弄弄";
|
|
|
$gem = GameConfig::item_getItem($itemId); // ConstProc::getItemConst($itemId);
|
|
|
echo var_export($gem);
|
|
|
//2.检测是否存在该物品的原始物种
|
|
|
if ($gem == null) {
|
|
|
Err(ErrCode::err_godpet_noconst);
|
|
|
}
|
|
|
- // 发金币
|
|
|
+// 发金币
|
|
|
|
|
|
UserGameModel::Add_Gold($req->userInfo->game->baseInfo, $gem->maijia * $count);
|
|
|
$ret = array('resp' => "succeed!");
|
|
@@ -773,14 +761,14 @@ class StoreProc {
|
|
|
} else if ($type == 8) { // 从仓库出售碎片 出售可叠加的物品
|
|
|
$ok = StoreProc::removeItemFromStore($store, $itemId, $count); // 支持移除指定数量
|
|
|
my_Assert($ok == ErrCode::ok, $ok); //1.如果仓库道具移出时出错,则直接返回错误
|
|
|
- // echo "弄弄";
|
|
|
+// echo "弄弄";
|
|
|
$gem = GameConfig::segment_getItem($itemId); // ConstProc::getItemConst($itemId);
|
|
|
- // echo var_export($gem);
|
|
|
+// echo var_export($gem);
|
|
|
//2.检测是否存在该物品的原始物种
|
|
|
if ($gem == null) {
|
|
|
Err(ErrCode::err_godpet_noconst);
|
|
|
}
|
|
|
- // 发金币
|
|
|
+// 发金币
|
|
|
|
|
|
UserGameModel::Add_Gold($req->userInfo->game->baseInfo, $gem->saleGoldPrice * $count);
|
|
|
$ret = array('resp' => "succeed!");
|
|
@@ -822,10 +810,10 @@ class StoreProc {
|
|
|
Err(ErrCode::err_method_obsoleted, "代码需要更新");
|
|
|
$resp = new Resp();
|
|
|
$mem = $req->mem;
|
|
|
- // $user = $req->userInfo->user;
|
|
|
+// $user = $req->userInfo->user;
|
|
|
$store = $req->userInfo->game->store; //$req->userInfo->game->store->items
|
|
|
//客户端参数解析
|
|
|
- ////0是type 1是itemid,2是uid或者是数量
|
|
|
+////0是type 1是itemid,2是uid或者是数量
|
|
|
|
|
|
if ($type > 3 && $type < 8) { // 从仓库出售宝石 出售可叠加的物品
|
|
|
echoLine(":fs::");
|
|
@@ -840,7 +828,7 @@ class StoreProc {
|
|
|
if ($gem == null) {
|
|
|
Err(ErrCode::err_godpet_noconst);
|
|
|
}
|
|
|
- // 发金币
|
|
|
+// 发金币
|
|
|
|
|
|
UserGameModel::Add_Gold($req->userInfo->game->baseInfo, $gem->maijia * $count);
|
|
|
$ret = array('resp' => "succeed!");
|
|
@@ -849,14 +837,14 @@ class StoreProc {
|
|
|
$ok = StoreProc::removeItemFromStore($store, $itemId, $count); // 支持移除指定数量
|
|
|
//1.如果仓库道具移出时出错,则直接返回错误
|
|
|
my_Assert($ok == ErrCode::ok, $ok);
|
|
|
- // echo "弄弄";
|
|
|
+// echo "弄弄";
|
|
|
$gem = GameConfig::segment_getItem($itemId); // ConstProc::getItemConst($itemId);
|
|
|
- // echo var_export($gem);
|
|
|
+// echo var_export($gem);
|
|
|
//2.检测是否存在该物品的原始物种
|
|
|
if ($gem == null) {
|
|
|
Err(ErrCode::err_godpet_noconst);
|
|
|
}
|
|
|
- // 发金币
|
|
|
+// 发金币
|
|
|
|
|
|
UserGameModel::Add_Gold($req->userInfo->game->baseInfo, $gem->saleGoldPrice * $count);
|
|
|
$ret = array('resp' => "succeed!");
|
|
@@ -898,7 +886,7 @@ class StoreProc {
|
|
|
foreach ($obj as $value) {
|
|
|
$type = $value[0];
|
|
|
$itemId = $value[1];
|
|
|
- ////先判断一下物品类型,如果是可叠加的,就按数量取值,如果是不可叠加的就按uid取值
|
|
|
+////先判断一下物品类型,如果是可叠加的,就按数量取值,如果是不可叠加的就按uid取值
|
|
|
if ($type > 3) {
|
|
|
$count = intval($value[2]); // 数量
|
|
|
$uid = 0;
|