Esempio n. 1
0
 /**
  * 角色初始化属性
  * @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];
 }
Esempio n. 2
0
 /**
  * 获取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;
 }