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: # 6403 return StoreProc::equipUpgrade(); case CmdCode::cmd_store_equipUpgrade_MaxLv: # 6404 return StoreProc::equipUpgrade_MaxLv(); case CmdCode::cmd_store_equipCompose: # 6404 return StoreProc::equipCompose(); default: Err(ErrCode::cmd_err); } } /** * 合成 * @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->heros->Dic->$heroId->equipPosition->$posId > 0){ $oldUid = $user->heros->Dic->$heroId->equipPosition->$posId; $user->store->equip->$oldUid->posId = 0; } $user->heros->Dic->$heroId->equipPosition->$posId = $uid; 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->heros->Dic->$heroId->equipPosition->$posId > 0){ $oldUid = $user->heros->Dic->$heroId->equipPosition->$posId; $user->store->equip->$oldUid->posId = 0; $user->heros->Dic->$heroId->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; if (StlUtil::dictHasProperty($user->store->items,$typeId) && $user->store->items->$typeId >= $num) { $user->store->removeItem($typeId, $num); } $user->store->equip->$uid->level += 1; 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) { $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 100: case 101: case 102: 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; } } }