cmd) { case CmdCode::cmd_store_put: # 6401 放入仓库 return StoreProc::AddItemInStore(); case CmdCode::cmd_store_equip: # 6402 装备 return StoreProc::equip(); case CmdCode::cmd_store_RemoveEquip: # 6403 卸下装备 return StoreProc::RemoveEquip(); case CmdCode::cmd_store_equipUpgrade: # 6404 装备升级 return StoreProc::equipUpgrade(); case CmdCode::cmd_store_equipUpgrade_MaxLv: # 6405 一键升级(装备) return StoreProc::equipUpgrade_MaxLv(); case CmdCode::cmd_store_equipCompose: # 6406 装备合成(升阶/进化) return StoreProc::equipCompose(); case CmdCode::store_equip_fallLevel: #6408 装备降级 return StoreProc::equipFallLevel(); case CmdCode::store_equip_fallQual: #6409 装备降品 return StoreProc::equipFallQual(); default: Err(ErrCode::cmd_err); } } /** * 6409 装备降品 * @return type */ public static function equipFallLevel() { list($uid) = req()->paras;//武器uid $price = self::GetEquipFallLevelInfo($uid); StoreProc::AddMultiItemInStore($price); ctx()->store->equip->$uid->level = 1; UserProc::updateUserInfo(); return Resp::ok(array( 'gold' => ctx()->baseInfo->gold, 'store' => ctx()->store,)); } public static function GetEquipFallLevelInfo($uid) { my_Assert(StlUtil::dictHasProperty(ctx()->store->equip, $uid), ErrCode::user_store_NoEquip); $curLv = ctx()->store->equip->$uid->level; my_Assert($curLv > 1, ErrCode::user_store_equipNoFallLevel); $equipMo = GameConfig::equip_getItem(ctx()->store->equip->$uid->typeId); my_Assert($equipMo != null, ErrCode::err_const_no); $id = $equipMo->position; $strList = explode(';', glc()->equipLeveUpTuzhi); $tuzhiId = 0; foreach ($strList as $str) { $s = explode(',', $str); if ($s[0] == $id) { $tuzhiId = $s[1]; break; } } $dic = GameConfig::equip_levelupgrade(); $gold = 0; $tuzhiNum = 0; for ($i = 1; $i < $curLv; $i++) { $gold += $dic->$i->needGold; $tuzhiNum += $dic->$i->needItemNum; } $price = "1,".$gold.";".$tuzhiId.",".$tuzhiNum; return $price; } /** * 6408 装备降级 * @return type */ public static function equipFallQual() { list($uid) = req()->paras; my_Assert(StlUtil::dictHasProperty(ctx()->store->equip, $uid), ErrCode::user_store_NoEquip); $qual = ctx()->store->equip->$uid->qual; my_Assert($qual > 4, ErrCode::user_store_equipNoFallQual); $sList = explode(';',glc()->equipQualUnlockSkillId); $tag = true; $fallQual = $qual; foreach ($sList as $s) { $str = explode(',', $s); if ($qual == $str[0]) { $tag = false; break; } $num = 0; $fallQual = $str[0]; foreach ($str as $str2) { $num += 1; if ($str2 == $qual) { break; } } } my_Assert($tag, ErrCode::user_store_equipNoFallQual); $posId = 1; $commonId = 0; $commonList = explode(';', glc()->EquipFallQualCommonItem); foreach ($commonList as $str) { $s = explode(',', $str); if ($s[0] == $posId) { $commonId = $s[1]; } } $price = self::GetEquipFallLevelInfo($uid); StoreProc::AddMultiItemInStore($price); if($num -1 > 0){ $num-=1; StoreProc::AddMultiItemInStore($commonId.','.$num); } ctx()->store->equip->$uid->qual = $fallQual; UserProc::updateUserInfo(); return Resp::ok(array( 'gold' => ctx()->baseInfo->gold, 'store' => ctx()->store,)); } /** * 6406 合成 * @return type */ public static function equipCompose() { list($uid) = req()->paras; $user = ctx(); //my_Assert(StlUtil::dictHasProperty($user->store->equip, $uid), ErrCode::user_store_NoEquip); UserProc::updateUserInfo(); return Resp::ok(array( 'heros' => $user->heros, 'store' => $user->store,)); } /** * 装备 * @return type */ public static function equip() { list($uid) = req()->paras; $user = ctx(); my_Assert(StlUtil::dictHasProperty($user->store->equip, $uid), ErrCode::user_store_NoEquip); $mo = GameConfig::equip_getItem($user->store->equip->$uid->typeId); my_Assert($mo != null, ErrCode::err_const_no); $posId = $mo->position; $heroId = $user->heros->CurrentHeroId; $user->store->equip->$uid->posId = $posId; if ($user->store->equipPosition->$posId > 0) { $oldUid = $user->store->equipPosition->$posId; $user->store->equip->$oldUid->posId = 0; } $user->store->equipPosition->$posId = $uid; ctx($user); UserProc::updateUserInfo(); return Resp::ok(array( 'heros' => $user->heros, 'store' => $user->store,)); } /** * 卸下装备 * @return type */ public static function RemoveEquip() { list($posId) = req()->paras; $user = ctx(); $heroId = $user->heros->CurrentHeroId; if ($user->store->equipPosition->$posId > 0) { $oldUid = $user->store->equipPosition->$posId; $user->store->equip->$oldUid->posId = 0; $user->store->equipPosition->$posId = 0; } UserProc::updateUserInfo(); return Resp::ok(array( 'heros' => $user->heros, 'store' => $user->store,)); } /** * 升级装备 * @return type */ public static function equipUpgrade() { list($uid) = req()->paras; //mask = 1:表示战斗中掉落 $user = ctx(); $lv = $user->store->equip->$uid->level; $Mo = GameConfig::equip_levelupgrade_getItem($lv + 1); my_Assert($user->baseInfo->gold >= $Mo->needGold, ErrCode::notenough_gold_msg); $position = GameConfig::equip_getItem($user->store->equip->$uid->typeId)->position; //图纸 $typeId = 0; $strArr = explode(';', GameConfig::globalsettings()->equipLeveUpTuzhi); foreach ($strArr as $str) { $list = explode(',', $str); if ($list[0] == $position) { $typeId = $list[1]; break; } } $num = $Mo->needItemNum; my_Assert(StlUtil::dictHasProperty($user->store->items, $typeId) && $user->store->items->$typeId >= $num, ErrCode::notenough_item); $user->store->removeItem($typeId, $num); $user->store->equip->$uid->level += 1; ctx()->baseInfo->Consume_Gold($Mo->needGold); ctx($user); UserProc::updateUserInfo(); return Resp::ok(array( 'gold' => $user->baseInfo->gold, 'store' => $user->store)); } /** * 装备一键升级 * @return type */ public static function equipUpgrade_MaxLv() { list($uid) = req()->paras; //mask = 1:表示战斗中掉落 $user = ctx(); $equip = $user->store->equip->$uid; $lv = $equip->level; $maxLv = GameConfig::equip_getItem($equip->typeId)->maxLv; $need_gold = 0; $need_item = 0; $itemNum = 0; $position = GameConfig::equip_getItem($equip->typeId)->position; $tuzhiId = 0; $strArr = explode(';', GameConfig::globalsettings()->equipLeveUpTuzhi); foreach ($strArr as $str) { $list = explode(',', $str); if ($list[0] == $position) { $tuzhiId = $list[1]; break; } } $needItem2 = 0; if (StlUtil::dictHasProperty($user->store->items, $tuzhiId)) { $itemNum = $user->store->items->$tuzhiId; } $nGold = 0; $ll = 0; for ($i = $lv + 1; $i <= $maxLv; $i++) { $nGold += GameConfig::equip_levelupgrade_getItem($i)->needGold; $needItem2 += GameConfig::equip_levelupgrade_getItem($i)->needItemNum; if ($user->baseInfo->gold >= $nGold && $itemNum >= $needItem2) { $need_gold = $nGold; $need_item = $needItem2; $ll = $i; continue; } break; } $user->baseInfo->gold -= $need_gold; $user->store->removeItem($tuzhiId, $need_item); $user->store->equip->$uid->level += $ll; ctx($user); UserProc::updateUserInfo(); return Resp::ok(array( 'gold' => $user->baseInfo->gold, //'tili' => $user->baseInfo->tili, 'store' => $user->store, )); } public static function AddItemInStore() { list($rwdStr) = req()->paras; //mask = 1:表示战斗中掉落 $user = ctx(); $err = self::AddMultiItemInStore($rwdStr); my_Assert(ErrCode::ok == $err, $err); UserProc::updateUserInfo(); return Resp::ok(array( //'gold' => $user->baseInfo->gold, //'tili' => $user->baseInfo->tili, //'cash' => $user->baseInfo->cash, 'store' => $user->store)); } /** * 具体奖励存入背包 * @param type $goodsStr * @param type $src */ public static function AddMultiItemInStore($goodsStr, $src = 1) { if($goodsStr == null){ return; } $ary = explode(";", $goodsStr); foreach ($ary as $value) { $val = explode(",", $value); my_Assert(count($val) > 1, "解析奖励字符串出错"); list($itemId, $num) = $val; # ID, 数量 if (GameConfig::equip_getItem($itemId) != null) { self::PutEquipInStore($itemId, $num); } else { $itemMo = GameConfig::item_getItem($itemId); switch ($itemMo->itemType) { case 1: ctx()->baseInfo->Add_Gold($num); break; case 2: ctx()->baseInfo->Add_Cash($num); break; case 3: ctx()->baseInfo->Add_tili($num); break; case 4: ctx()->baseInfo->Add_Exp($num); break; case 100: case 103: self::PutItemsInStore($itemId, $num); break; default: break; } } } } public static function PutItemsInStore($itemId, $num) { $items = ctx()->store->items; if (StlUtil::dictHasProperty($items, $itemId)) { $items->$itemId += $num; } else { $items->$itemId = $num; } ctx()->store->items = $items; } public static function PutEquipInStore($equipId, $num) { if ($equipId == 0) { return; } $n = count((array) ctx()->store->equip) + 1; for ($index = 0; $index < $num; $index++) { $Equip = new Ins_Equip(); $Equip->uid = $n; $Equip->typeId = $equipId; $Equip->qual = GameConfig::equip_getItem($equipId)->qual; ctx()->store->equip->$n = $Equip; $n += 1; } } }