Example #1
0
 /**
  * 获取装备的属性
  * @param $arrPropConfig
  * @return mixed
  */
 public function get_equip_attr($arrPropConfig)
 {
     if (($arrPropConfig['type'] == 1 or $arrPropConfig['type'] == 6) && !isset($arrPropConfig['base_attr'])) {
         if ($arrPropConfig['rechage'] == 1) {
             #首充
             $rechage_config = Cache_Rechage::getInstance()->get_rechage($arrPropConfig['prop_id']);
             if (empty($rechage_config)) {
                 $arrPropConfig['base_attr'] = array();
                 $arrPropConfig['addition_attr'] = array();
             } else {
                 if ($rechage_config['base_attribute']) {
                     $base = explode(":", $rechage_config['base_attribute']);
                     $arrPropConfig['base_attr'][$base[0]] = $base[1];
                 }
                 if ($rechage_config['add_attribute']) {
                     $addition = explode("|", $rechage_config['add_attribute']);
                     foreach ($addition as $attrs) {
                         $attr = explode(":", $attrs);
                         $arrPropConfig['addition_attr'][$attr[0]] = $attr[1];
                     }
                 }
                 if ($rechage_config['use_level']) {
                     $arrPropConfig['level'] = $rechage_config['use_level'];
                 }
                 if ($rechage_config['strengthen_level']) {
                     $arrPropConfig['intensive_level'] = $rechage_config['strengthen_level'];
                     $intensify_config = Cache_Forge::getInstance()->get_intensify_info($rechage_config['strengthen_level']);
                     $arrPropConfig['intensive_desc'] = Game_EquipIntensifier::get_latest_intensive_desc($arrPropConfig, $intensify_config);
                 }
             }
             return $arrPropConfig;
         } else {
             #$equip = Cache_EquipBaseAttr::getInstance()->get_equip_base_attr($arrPropConfig['sub_type'],$arrPropConfig['quality'],$arrPropConfig['level'],$arrPropConfig['star_level']);
             $equip = Cache_EquipBaseAttr::getInstance()->generate_prop_attr($arrPropConfig['type'], $arrPropConfig['sub_type'], $arrPropConfig['quality'], $arrPropConfig['level'], $arrPropConfig['vocation_limit'], $arrPropConfig['star_level']);
             if ($arrPropConfig['type'] == 6 && $arrPropConfig['sub_type'] == 7 && $arrPropConfig['attr_not_rand']) {
                 # 翅膀装备羽心类可能要求附加属性不随机
                 $stable_addition_attr = array();
                 # 获取翅膀装备信息
                 $item_info = Cache_PlayerWing::getInstance()->get_wing_equip_gift_info($arrPropConfig['prop_id']);
                 if (!empty($item_info)) {
                     $attr_key_hash = Struct_Prop::$_sort_priority;
                     # 使用这个哈希可以确保属性key的有效性及顺序性
                     foreach ($attr_key_hash as $attr_key => $val) {
                         if (!empty($item_info[$attr_key])) {
                             $stable_addition_attr[$attr_key] = $item_info[$attr_key];
                         }
                     }
                 }
                 if (!empty($stable_addition_attr)) {
                     $equip['addition_attr'] = $stable_addition_attr;
                 }
             }
             $arrPropConfig['star_level'] = $equip['star_level'];
             if (!empty($equip['base_attr'])) {
                 $arrPropConfig['base_attr'] = $equip['base_attr'];
             }
             if (!empty($equip['addition_attr'])) {
                 $arrPropConfig['addition_attr'] = $equip['addition_attr'];
             }
             if (!empty($equip['refine_attr'])) {
                 $arrPropConfig['refine_attr'] = $equip['refine_attr'];
             }
             if (!empty($equip['refine_info'])) {
                 $arrPropConfig['refine_info'] = $equip['refine_info'];
             }
             return $arrPropConfig;
         }
     } else {
         return $arrPropConfig;
     }
 }
Example #2
0
 /**
  * 获取翅膀的推荐道具
  * @param $player_id
  * @param $wing_id
  * @param $part
  * @return array
  */
 public function get_recommend_wing_equip($player_id, $wing_id, $part)
 {
     $obj_player_detail_data = $this->get_data('PlayerDetail');
     $data = $obj_player_detail_data->get_player_detail($player_id, array('wing_info'));
     if (isset($data['wing_info'][$wing_id])) {
         $level = $data['wing_info'][$wing_id]['lvl'];
     } else {
         $level = 1;
     }
     $recommend = Cache_WingEquipRecommend::getInstance()->get_recommend($level, $part, $wing_id);
     $out = array();
     if (!empty($recommend)) {
         $item = Cache_Prop::getInstance()->get_prop_info($recommend['item_id']);
         $equip = Cache_EquipBaseAttr::getInstance()->get_equip_base_attr($item['type'], $item['sub_type'], $item['quality'], $item['level'], $recommend['star_level']);
         $item['star_level'] = $equip['star_level'];
         $item['base_attr'] = $equip['base_attr'];
         $item['addition_attr'] = $equip['addition_attr'];
         $out['equip'] = Struct_Prop::get_prop_struct($item);
     }
     return $out;
 }
Example #3
0
 private function _forward_compatibility_for_wing_equip_addition_attr(&$prop_detail)
 {
     if (empty($prop_detail) || !is_array($prop_detail)) {
         return;
     }
     if ($prop_detail['type'] != 6) {
         return;
     }
     if (empty($prop_detail['star_level'])) {
         $arrPropConfig = Cache_Prop::getInstance()->get_prop_info($prop_detail['prop_id']);
         $equip = Cache_EquipBaseAttr::getInstance()->generate_prop_attr($arrPropConfig['type'], $arrPropConfig['sub_type'], $arrPropConfig['quality'], $arrPropConfig['level'], $arrPropConfig['vocation_limit'], $arrPropConfig['star_level']);
         $prop_detail['star_level'] = $equip['star_level'];
         if (!empty($equip['base_attr'])) {
             $prop_detail['base_attr'] = $equip['base_attr'];
         }
         if (!empty($equip['addition_attr'])) {
             $prop_detail['addition_attr'] = $equip['addition_attr'];
         }
     } elseif (intval($prop_detail['refine_version']) < 12) {
         $addition_attr_key_list = array_keys($prop_detail['addition_attr']);
         # 版本修正时避免再次随机
         $equip = Cache_EquipBaseAttr::getInstance()->generate_prop_attr($prop_detail['type'], $prop_detail['sub_type'], $prop_detail['quality'], $prop_detail['level'], $prop_detail['vocation_limit'], $prop_detail['star_level'], $addition_attr_key_list);
         if (!empty($equip['base_attr'])) {
             $prop_detail['base_attr'] = $equip['base_attr'];
         }
         if (!empty($equip['addition_attr'])) {
             $prop_detail['addition_attr'] = $equip['addition_attr'];
         }
     }
 }