/** * 创建玩家装备 * @param $intEquipmentId * @param $intPlayerId * @param int $intPlus */ public function createOwnedEquipment($intEquipmentId, $intPlayerId, $intPlus = 0) { // 取得装备实例 $objEquipment = Equipment::find($intEquipmentId); // 主属性随机值 $this->status_1_add = mt_rand(0, $objEquipment->status_1_add); $this->status_2_add = mt_rand(0, $objEquipment->status_2_add); $this->status_3_add = mt_rand(0, $objEquipment->status_3_add); // 附加属性的计算 // 取得稀有度 $intRare = $objEquipment->rare; // 抽选用稀有度文字列 TODO $strRateType = "rate_low"; // 抽选Type if ($intRare < 7) { $strRateType = "rate_middle"; } else { $strRateType = "rate_high"; } // 抽选List $lstAddStatuses = EquipmentStatus::all(); // 装备的加值 每加1 多一种随机属性 且根据稀有度随机上下限 $intPlusCount = 0; while ($intPlusCount < $intPlus) { $addStatus = $this->_drawing($lstAddStatuses->toArray(), $strRateType); $minValue = $addStatus['min_value'] * $intRare; $maxValue = $addStatus['max_value'] * $intRare; $intPlusCount++; switch ($intPlusCount) { case 1: $this->addition_1_status_id = $addStatus['id']; $this->addition_1_value = mt_rand($minValue, $maxValue); break; case 2: $this->addition_2_status_id = $addStatus['id']; $this->addition_2_value = mt_rand($minValue, $maxValue); break; case 3: $this->addition_3_status_id = $addStatus['id']; $this->addition_3_value = mt_rand($minValue, $maxValue); break; case 4: $this->addition_4_status_id = $addStatus['id']; $this->addition_4_value = mt_rand($minValue, $maxValue); break; default: # code... break; } } // 其他属性设定 $this->player_id = $intPlayerId; $this->equipment_id = $objEquipment->id; $this->plus = $intPlus; $this->equipment_type_id = $objEquipment->type; $this->setUpStatus(); }