/** * 角色初始化属性 * @param $career_type */ public function getInitPlayerAttrData($career_type) { if (!isset($this->_initPlayerAttrData[$career_type])) { //初始化人物属性 $arrRoleAttr = Cache_RoleAttr::getInstance()->get_role_attr($career_type); $arrBaseAttr = array(); foreach (Cache_AttrConfig::getInstance()->get_attr() as $attrKey) { $arrBaseAttr[$attrKey] = $arrRoleAttr[$attrKey]; } $this->_initPlayerAttrData[$career_type] = $arrBaseAttr; } return $this->_initPlayerAttrData[$career_type]; }
/** * 获取avatar 天梯也可以用这个 * @param $player_id * @return array */ public function get_player_avatar($player_id, $monster_id = 0, $career_type = 0, $remote = array(), $remote_player = array()) { $player_avatar = array('monster_id' => 0, 'career_type' => 0, 'avatar' => array()); # 为怪物时,前端自己从相关配置表生成怪物avatar if ($monster_id) { $player_avatar['monster_id'] = $monster_id; return $player_avatar; } # 为玩家时,影响avatar的相关功能顺序为:坐骑>时装>装备>默认 # 默认avatar部分 if ($career_type == 0) { $objPlayer = $this->get_data('Player'); // if(!empty($remote_player)){ // $objPlayer->set_remote($remote_player);#读取远程服务器的数据 // } $career_type = $objPlayer->get_player_info($player_id, 'career_type'); $player_avatar['career_type'] = $career_type; // $objPlayer->clear_remote(); // unset($objPlayer); } $role_attr_config = Cache_RoleAttr::getInstance()->get_role_attr($career_type); if (!empty($role_attr_config['role_avatar'])) { $player_avatar['avatar']['1'] = array('type' => 1, 'equip_view' => $role_attr_config['role_avatar']); } if (!empty($role_attr_config['weapon_avatar'])) { $player_avatar['avatar']['2'] = array('type' => 2, 'equip_view' => $role_attr_config['weapon_avatar']); } # 装备avatar部分 $equip_lists = $this->get_game('Prop')->get_player_equip($player_id, $remote); for ($i = 0; $i < 10; $i++) { if (isset($equip_lists[$i])) { if (!empty($equip_lists[$i]['equip_view'])) { $equip_view = is_string($equip_lists[$i]['equip_view']) ? $equip_lists[$i]['equip_view'] : implode(':', $equip_lists[$i]['equip_view']); switch ($i) { case 0: # 武器 $player_avatar['avatar']['2'] = array('type' => 2, 'equip_view' => $equip_view); break; case 3: # 身体 $player_avatar['avatar']['1'] = array('type' => 1, 'equip_view' => $equip_view); break; default: # do nothing break; } } } } $objPlayerDetail = $this->get_data('PlayerDetail'); // if(!empty($remote_player)){ // $objPlayerDetail->set_remote($remote_player); // } $player_detail = $objPlayerDetail->get_player_detail($player_id, array('equip_wing', 'wing_info', 'fashion_info', 'fashion_fit')); // $objPlayerDetail->clear_remote(); // unset($objPlayerDetail); # 翅膀avatar部分 if (!empty($player_detail['equip_wing'])) { $wing_id = $player_detail['equip_wing']; $wing_lv = $player_detail['wing_info'][$wing_id]['lvl']; $wing_config = Cache_PlayerWing::getInstance()->get_player_wing_info(array('id' => $wing_id, 'level' => $wing_lv)); if (!empty($wing_config)) { $player_avatar['avatar']['3'] = array('type' => 3, 'equip_view' => $wing_config[0]['avatar']); } } # 时装avatar部分 if (!empty($player_detail['fashion_fit']) && is_array($player_detail['fashion_fit'])) { $fashion_config = Cache_Fashion::getInstance()->get_fashion(array_values($player_detail['fashion_fit'])); if (!empty($fashion_config)) { # fashion_type: 1表示身体部位时装 2表示武器部位时装 foreach ($player_detail['fashion_fit'] as $fashion_type => $fashion_sid) { if (empty($fashion_type)) { continue; } # 异常时装数据跳过 $player_avatar['avatar'][$fashion_type] = array('type' => $fashion_type, 'equip_view' => $fashion_config[$fashion_sid]['equip_view']); } } } # 坐骑avatar部分 return $player_avatar; }