Beispiel #1
0
 /**
  * 获取玩家基础属性
  *
  * @param unknown_type $player_id
  * @return unknown
  */
 protected function get_player_base_attr($player_id, $calc_buff_attr)
 {
     if (is_null($this->_playerItem)) {
         $this->_playerItem = $this->get_data('Player')->get_player_info($player_id);
     }
     $this->_player = $this->_playerItem;
     if (empty($this->_player)) {
         //玩家不存在
         $this->_player = '20001';
         return false;
     }
     if (empty($this->_playerDetailItem)) {
         $this->_playerDetailItem = $this->get_data('PlayerDetail')->get_player_detail($this->_player['player_id']);
     }
     //基础属性
     //        $baseAttrData = $this->_playerDetailItem['base_attr'];
     //        if(isset($baseAttrData['base_attr'])) $baseAttrData=$baseAttrData['base_attr']; //先这样写有的数据错了等可以清空数据库了 删除
     //        if (is_array($baseAttrData)) {
     //            foreach ($baseAttrData as $key=>$value) {
     //                $this->_player[$key] += $value;
     //            }
     //        }
     $baseAttrData = $this->getInitPlayerAttrData($this->_player['career_type']);
     if (is_array($baseAttrData)) {
         foreach ($baseAttrData as $key => $value) {
             $this->_player[$key] += $value;
             //                    if($key == 'atk_min'){
             //                        Com_Log::write('player_attr_atk_'.$this->_player['player_id'],"base {$value}");
             //                    }
         }
     }
     $this->_player['atk_min'] = $this->_player['atk_max'] = Formula_Player::get_upgrade_atk($this->_player['atk_min'], $this->_player['level']);
     //        Com_Log::write('player_attr_atk_'.$this->_player['player_id'],"atk_min {$this->_player['atk_min']}");
     $this->_player['arm'] = $this->_player['arm'] = Formula_Player::get_upgrade_arm($this->_player['arm'], $this->_player['level']);
     $this->_player['hp'] = $this->_player['hp'] = Formula_Player::get_upgrade_hp($this->_player['hp'], $this->_player['level']);
     if ($this->_player['map_id'] == 2100) {
         $this->_player['atk_min'] += 500;
         #策划要求序章攻击加500
     }
     $equip_move_speed = 0;
     if (!empty($this->_playerDetailItem['equip_attr'])) {
         foreach ($this->_playerDetailItem['equip_attr'] as $key => $value) {
             if ($key == 'move_speed') {
                 $equip_move_speed = $value;
             } else {
                 $this->_player[$key] += $value;
             }
         }
     }
     if (!empty($this->_playerDetailItem['fairy_attr_1'])) {
         foreach ($this->_playerDetailItem['fairy_attr_1'] as $key => $value) {
             $this->_player[$key] += $value;
         }
     }
     if (!empty($this->_playerDetailItem['fairy_attr_2'])) {
         foreach ($this->_playerDetailItem['fairy_attr_2'] as $key => $value) {
             $this->_player[$key] += $value;
         }
     }
     if (!empty($this->_playerDetailItem['fashion_attr'])) {
         foreach ($this->_playerDetailItem['fashion_attr'] as $key => $value) {
             $this->_player[$key] += $value;
         }
     }
     if (!empty($this->_playerDetailItem['union_achieve_attr'])) {
         foreach ($this->_playerDetailItem['union_achieve_attr'] as $key => $value) {
             $this->_player[$key] += $value;
         }
     }
     if (!empty($this->_playerDetailItem['achieve_attr_1'])) {
         foreach ($this->_playerDetailItem['achieve_attr_1'] as $key => $value) {
             $this->_player[$key] += $value;
         }
     }
     if (!empty($this->_playerDetailItem['achieve_attr_2'])) {
         foreach ($this->_playerDetailItem['achieve_attr_2'] as $key => $value) {
             $this->_player[$key] += $value;
         }
     }
     # 培养属性加成
     if (!empty($this->_playerDetailItem['train_attr_info']) && is_array($this->_playerDetailItem['train_attr_info'])) {
         foreach ($this->_playerDetailItem['train_attr_info'] as $key => $value) {
             $this->_player[$key] += $value;
         }
     }
     # --------------------------------------------------------------------
     # 培养套装激活效果计算
     # --------------------------------------------------------------------
     $train_set_attr_addition = $this->get_game('Train')->get_player_train_set_attr_addition($this->_player['player_id'], $this->_playerItem, $this->_playerDetailItem);
     # 培养套装加成信息
     if (!empty($train_set_attr_addition)) {
         foreach ($train_set_attr_addition as $attr_key => $attr_val) {
             if (!is_numeric($attr_key)) {
                 # 忽略技能等级的加成
                 $this->_player[$attr_key] += $attr_val;
             }
         }
     }
     # --------------------------------------------------------------------
     #---------------------------------------------------------------------
     #翅膀属性
     #---------------------------------------------------------------------
     if (!empty($this->_playerDetailItem['equip_wing'])) {
         $wing_attr = $this->_playerDetailItem['wing_info'][$this->_playerDetailItem['equip_wing']];
         $addition = 0;
         $attr_addition = array();
         if ($this->_playerDetailItem['equip_wing'] == 7) {
             if (isset($this->_playerDetailItem['wing_info'][8]) && $this->_playerDetailItem['wing_info'][8]['activation'] == 2) {
                 $add_config = Cache_WingAddition::getInstance()->get_wing_addition($this->_playerDetailItem['wing_info'][8]['lvl']);
                 $addition = $add_config['addition'] / 10000;
                 $attr_addition = $this->_playerDetailItem['wing_info'][8]['attr'];
                 if (!empty($this->_playerDetailItem['wing_info'][8]['equip_attr']) && Com_Array::is_good_arr($this->_playerDetailItem['wing_info'][8]['equip_attr'])) {
                     foreach ($this->_playerDetailItem['wing_info'][8]['equip_attr'] as $attr_type => $attr_val) {
                         $attr_addition[$attr_type] += ceil($attr_val);
                     }
                 }
                 foreach ($attr_addition as $attr_type => $attr_val) {
                     $attr_addition[$attr_type] = $attr_val * $addition;
                 }
             }
         }
         if ($this->_playerDetailItem['equip_wing'] == 8) {
             if (isset($this->_playerDetailItem['wing_info'][7]) && $this->_playerDetailItem['wing_info'][7]['activation'] == 2) {
                 $add_config = Cache_WingAddition::getInstance()->get_wing_addition($this->_playerDetailItem['wing_info'][7]['lvl']);
                 $addition = $add_config['addition'] / 10000;
                 $attr_addition = $this->_playerDetailItem['wing_info'][7]['attr'];
                 if (!empty($this->_playerDetailItem['wing_info'][7]['equip_attr']) && Com_Array::is_good_arr($this->_playerDetailItem['wing_info'][7]['equip_attr'])) {
                     foreach ($this->_playerDetailItem['wing_info'][7]['equip_attr'] as $attr_type => $attr_val) {
                         $attr_addition[$attr_type] += ceil($attr_val);
                     }
                 }
                 foreach ($attr_addition as $attr_type => $attr_val) {
                     $attr_addition[$attr_type] = $attr_val * $addition;
                 }
             }
         }
         $w_attr = array();
         if (!empty($wing_attr['attr'])) {
             foreach ($wing_attr['attr'] as $key => $value) {
                 $w_attr[$key] += $value;
             }
         }
         if (!empty($wing_attr['equip_attr'])) {
             foreach ($wing_attr['equip_attr'] as $key => $value) {
                 $w_attr[$key] += $value;
             }
         }
         if (!empty($attr_addition)) {
             foreach ($attr_addition as $key => $value) {
                 $w_attr[$key] += $value;
             }
         }
         if (!empty($w_attr)) {
             foreach ($w_attr as $key => $value) {
                 $this->_player[$key] += $value;
             }
         }
     }
     #---------------------------------------------------------------------
     #文斌的属性
     #---------------------------------------------------------------------
     if (!empty($this->_playerDetailItem['player_grade_attr'])) {
         foreach ($this->_playerDetailItem['player_grade_attr'] as $key => $value) {
             $this->_player[$key] += $value;
         }
     }
     #---------------------------------------------------------------------
     #帮会的属性
     #---------------------------------------------------------------------
     if (!empty($this->_playerDetailItem['union_player_attr'])) {
         foreach ($this->_playerDetailItem['union_player_attr'] as $key => $value) {
             $this->_player[$key] += $value;
         }
     }
     #---------------------------------------------------------------------
     #声望的属性
     #---------------------------------------------------------------------
     if (!empty($this->_playerDetailItem['fame_attr'])) {
         foreach ($this->_playerDetailItem['fame_attr'] as $key => $value) {
             $this->_player[$key] += $value;
         }
     }
     if (!empty($this->_playerDetailItem['vip_special_attr'])) {
         foreach ($this->_playerDetailItem['vip_special_attr'] as $key => $value) {
             $this->_player[$key] += $this->_player[$key] * ($value / 10000);
         }
     }
     if ($calc_buff_attr) {
         #TODO:看这个参数是不是要算buff属性 现在是排行查看的时候要计算 登陆的时候获取人物帐数据的的时候不用
         if (!empty($this->_playerDetailItem['dower_info'])) {
             $arr_buff = array();
             foreach ($this->_playerDetailItem['dower_info'] as $val) {
                 $dower = Cache_Dower::getInstance()->get_dower_info($val['dower_id'], $val['dower_lv']);
                 if (!empty($dower)) {
                     $skillPassive = Cache_SkillPassive::getInstance()->get_skill_passive_info(array('sid' => $dower['skill_id'], 'level' => $val['dower_lv']));
                     if (!empty($skillPassive['buff_id1'])) {
                         $arr_buff[] = $skillPassive['buff_id1'];
                     }
                     if (!empty($skillPassive['buff_id2'])) {
                         $arr_buff[] = $skillPassive['buff_id2'];
                     }
                 }
             }
             if ($arr_buff) {
                 $buff_data = Cache_SkillBuff::getInstance()->get_buff_data($arr_buff);
                 if ($buff_data) {
                     foreach ($buff_data as $val) {
                         $attr_key = $this->get_game('BuffData')->get_attr_by_buff_type($val['param1']);
                         if ($val['buff_type'] == 'mod_fight_attr') {
                             $this->_playerDetailItem['buff_attr'][$attr_key] += $val['param2'];
                         }
                         if ($val['buff_type'] == 'mod_fight_attr_%') {
                             $this->_playerDetailItem['buff_attr_per'][$attr_key] += $val['param2'];
                         }
                     }
                 }
             }
         }
         #---------------------------------------------------------------------
         #buff属性
         #---------------------------------------------------------------------
         if (!empty($this->_playerDetailItem['buff_attr'])) {
             foreach ($this->_playerDetailItem['buff_attr'] as $key => $value) {
                 if ($key == 'hp' || $key == 'atk_min' || $key == 'arm') {
                     $this->_player[$key] += intval($this->_player[$key] * ($value / 10000));
                 }
             }
         }
         #---------------------------------------------------------------------
         #buff百分比属性
         #---------------------------------------------------------------------
         if (!empty($this->_playerDetailItem['buff_attr_per'])) {
             foreach ($this->_playerDetailItem['buff_attr_per'] as $key => $value) {
                 if ($key == 'hp' || $key == 'atk_min' || $key == 'arm') {
                     $this->_player[$key] += intval($this->_player[$key] * ($value / 100));
                 }
             }
         }
     }
     //        #vip特权加成  vip升级的时候挪到
     //
     //        $vip_level_config = Cache_VipLevelLimit::getInstance()->get_limit_info($this->_player['privilege_level'],10066);
     //
     //        if($vip_level_config){
     //            $this->_player['hp'] += $this->_player['hp'] * ($vip_level_config['max_times']/10000);
     //        }
     //        $vip_level_config = Cache_VipLevelLimit::getInstance()->get_limit_info($this->_player['privilege_level'],10067);
     //        if($vip_level_config){
     //            $this->_player['atk_min'] += $this->_player['atk_min'] * ($vip_level_config['max_times']/10000);
     //        }
     //        $vip_level_config = Cache_VipLevelLimit::getInstance()->get_limit_info($this->_player['privilege_level'],10068);
     //        if($vip_level_config){
     //            $this->_player['arm'] += $this->_player['arm'] * ($vip_level_config['max_times']/10000);
     //        }
     if ($equip_move_speed > 0) {
         $this->_player['move_speed'] = $this->_player['move_speed'] * (1 + $equip_move_speed / 10000);
     }
     ###统一向上取整
     foreach (Cache_AttrConfig::get_attr() as $key) {
         $this->_player[$key] = intval($this->_player[$key]);
     }
     return $this->_player;
 }
Beispiel #2
0
 public function buff_attr($player_id, $part_update = true)
 {
     $data = $this->get_data('PlayerBuffData')->get_buff_data($player_id);
     $buff_data = array();
     if ($data) {
         $buff_sid = array();
         //            $time = time();
         foreach ($data as $val) {
             //                if(($val['save_time']+$val['duration_total']/1000) > $time){
             $buff_sid[] = $val['buff_sid'];
             //                }
         }
         if ($buff_sid) {
             $buff_data = Cache_SkillBuff::getInstance()->get_buff_data($buff_sid);
         }
     }
     $buff_attr = array();
     $buff_attr_per = array();
     $buff_exp_addition = array();
     if (!empty($buff_data)) {
         foreach ($buff_data as $val) {
             $attr_key = $this->get_attr_by_buff_type($val['param1']);
             if ($val['buff_type'] == 'mod_fight_attr') {
                 $buff_attr[$attr_key] += $val['param2'];
             }
             if ($val['buff_type'] == 'mod_fight_attr_%') {
                 $buff_attr_per[$attr_key] += $val['param2'];
             }
             if ($val['buff_type'] == 'mod_exp_%') {
                 $buff_exp_addition['exp'] += $val['param1'];
             }
         }
         //            Com_Log::write("buff_attr".$player_id,"buff_attr".var_export($buff_attr,true));
         //            Com_Log::write("buff_attr".$player_id,"buff_attr_per".var_export($buff_attr_per,true));
     }
     $result = $this->get_data('PlayerDetail')->update_player_detail($player_id, array('buff_attr' => $buff_attr, 'buff_attr_per' => $buff_attr_per, 'buff_exp_addition' => $buff_exp_addition));
     if (!$part_update) {
         $objPlayer = $this->get_data('Player');
         $player_info = $objPlayer->get_player_info($player_id);
         $objFpowerCalc = $this->get_game('FpowerCalc');
         $objFpowerCalc->set_player_info($player_info);
         $player_fpower = $objFpowerCalc->calc_player_fpower($player_id);
         $player_info['fpower'] = $player_fpower['fpower'];
         $update_fpower['buff_fpower'] = $player_fpower['buff_fpower'];
         $update_fpower['fpower'] = $player_info['fpower'] + $player_info['sq_fpower'] + $player_info['skill_fpower'] + $player_info['equip_fpower'];
         $sum_fpower = $update_fpower['fpower'] + $player_info['hero_fpower'] + $player_info['fairy_fpower'] + $player_info['wing_fpower'] + $update_fpower['buff_fpower'];
         $update_fpower['sum_fpower'] = $sum_fpower;
         $objPlayer->update_player_info($player_id, $update_fpower);
         $syn_item['buff_fpower'] = $update_fpower['buff_fpower'];
         SynPlayer::set_syn_data($syn_item);
         $data = SynPlayer::get_data();
         Protocol::input($player_id, 7, 4, 417, array(0 => $data['m'], 1 => $data['u']));
     }
     if ($result && $part_update) {
         Protocol_Player::p2c_part_update($player_id, array('attr' => ''));
     }
 }
Beispiel #3
0
 /**
  * 面板
  * @param $player_id
  * @param $type 0 本方面板信息; 1 对手面板信息
  * @return array
  */
 public function get_panel($player_id, $type = 0)
 {
     if (!in_array($type, array(0, 1))) {
         //参数错误
         $this->throw_error(10107, 6010123);
     }
     $player_info = $this->get_data('Player')->get_player_info($player_id, array('name', 'level', 'career_type', 'vip', 'sum_fpower', 'union_id', 'union_grab_domain_init'));
     if (!$player_info['union_id']) {
         $this->throw_error(6010154);
     }
     $ntime = $time = time();
     $flush_time = strtotime('05:00');
     $week = $this->get_week($time);
     //公会是否进入战斗
     $time = $this->get_data('UnionGrabDomain')->get_revise_time($time);
     $wk = date('W', $time);
     //第几周
     $out = array();
     $out['type'] = $type;
     //0
     $out['used_times'] = $this->get_data('PlayerDailyTime')->get_player_used_time($player_id, 'union_grab_domain_use_times') + 0;
     //1
     $grab_domain_conf = Cache_UnionGrabDomain::getInstance()->get_base_conf();
     $start_time = strtotime($grab_domain_conf['start_time']);
     $end_time = strtotime($grab_domain_conf['end_time']);
     $reward_time = strtotime($grab_domain_conf['reward_time']);
     $week_end = $grab_domain_conf['week_end'];
     if ($week > $week_end) {
         $status = 3;
         $show_day = date('Ymd', $time - ($week - $week_end) * 86400);
         $grab_domain_info = $this->get_data('UnionGrabDomain')->get_domain_info($show_day);
         if (!$grab_domain_info) {
             $this->throw_error(6010155, 6010156);
         }
     } else {
         if ($ntime < $flush_time) {
             $status = 3;
         } elseif ($ntime < $start_time) {
             $status = 1;
         } elseif ($ntime > $end_time) {
             $status = 3;
         } else {
             $status = 2;
         }
         $show_day = date('Ymd', $time);
         $grab_domain_info = $this->get_data('UnionGrabDomain')->get_domain_info($show_day);
         if (!$grab_domain_info) {
             //if($week == $week_end && $ntime >= $end_time){
             $this->throw_error(6010155, 6010157);
             //}
             //$this->create_season_domain();
             //$grab_domain_info = $this->get_data('UnionGrabDomain')->get_domain_info($show_day);
         }
     }
     if (!isset($grab_domain_info['group_union'])) {
         $grab_domain_info['group_union'] = array();
     }
     if (!in_array($player_info['union_id'], $grab_domain_info['group_union'])) {
         $this->throw_error(6010158);
     }
     $out['max_times'] = $this->get_max_daily_time($player_id, $grab_domain_conf);
     //2
     $grab_week_union_info = $this->get_data('UnionGrabDomain')->get_week_union_info($player_info['union_id'], $wk);
     $out['score'] = $grab_week_union_info['score'];
     //3
     $out['status'] = $status;
     //4
     if (2 == $status) {
         $left_time = $end_time - $ntime;
     } else {
         $left_time = 0;
     }
     $out['left_time'] = $left_time;
     //5
     $grab_union_info = $this->get_data('UnionGrabDomain')->get_union_info($show_day, $player_info['union_id']);
     $out['result'] = $grab_union_info['result'];
     //6
     if ($week > $week_end) {
         //一周战斗结束
         $day = $show_day;
         $result = $grab_union_info['result'];
         if ($week == 7 && $ntime < $flush_time) {
             $cd = strtotime(date('Y-m-d 05:00:00', $ntime)) - $ntime;
         } else {
             $cd = strtotime(date('Y-m-d 05:00:00', $ntime + (8 - $week) * 86400)) - $ntime;
         }
     } elseif ($ntime < $start_time) {
         //开赛前可以领前一天的奖励
         if ($ntime < $flush_time) {
             $day = $show_day;
             $result = $grab_union_info['result'];
             $cd = $flush_time - $ntime;
         } else {
             $day = date('Ymd', $ntime - 86400);
             $union_info = $this->get_data('UnionGrabDomain')->get_union_info($day, $player_info['union_id']);
             $result = $union_info['result'];
             $cd = $start_time - $ntime;
         }
     } elseif ($ntime >= $reward_time) {
         //当天可领奖
         $day = $show_day;
         $result = $grab_union_info['result'];
         $cd = strtotime(date('Y-m-d 05:00:00', $ntime + 86400)) - $ntime;
     } else {
         //战斗中
         $day = $show_day;
         $result = 0;
         $cd = $reward_time - $ntime;
     }
     if ($result) {
         $grab_player_info = $this->get_data('UnionGrabDomain')->get_player_info($day, $player_id);
         if (isset($grab_player_info['status']) && $grab_player_info['status']) {
             //领过
             $day_reward_status = 0;
             $day_reward = '';
         } else {
             $day_reward_status = $result;
             if (isset($grab_player_info['star'])) {
                 $star = $grab_player_info['star'];
             } else {
                 $star = 0;
             }
             $player_reward_conf = Cache_UnionGrabDomain::getInstance()->get_player_reward_conf($result);
             $reward_str = $player_reward_conf['rank_reward'];
             $player_star_add_conf = Cache_UnionGrabDomain::getInstance()->get_player_star_add_conf($star);
             $reward_star_add_str = $player_star_add_conf['starnum_add'];
             $reward_level_add_str = Cache_UnionGrabDomain::getInstance()->get_config_level_add_reward($player_info['level']);
             $reward_detail = $this->get_game('Reward')->get_reward_detail_other_way($reward_str, $reward_star_add_str, 1);
             $reward_detail = $this->get_game('Reward')->get_reward_detail_add_way($reward_detail, $reward_level_add_str, 1);
             $day_reward = $this->get_game('Reward')->get_reward_string_by_reward_detail($reward_detail);
         }
     } else {
         $day_reward_status = 0;
         $day_reward = '';
     }
     $out['day_reward_status'] = $day_reward_status;
     //7
     $out['day_reward'] = $day_reward;
     //8
     //每日奖励列表
     if ($day != $show_day) {
         $grab_player_info = $this->get_data('UnionGrabDomain')->get_player_info($show_day, $player_id);
     }
     if (isset($grab_player_info['star'])) {
         $star = $grab_player_info['star'];
     } else {
         $star = 0;
     }
     $day_reward_list = array();
     $player_reward_conf = Cache_UnionGrabDomain::getInstance()->get_player_reward_conf();
     foreach ($player_reward_conf as $conf) {
         $temp['res'] = $conf['result'];
         $reward_str = $conf['rank_reward'];
         $player_star_add_conf = Cache_UnionGrabDomain::getInstance()->get_player_star_add_conf($star);
         $reward_star_add_str = $player_star_add_conf['starnum_add'];
         $reward_level_add_str = Cache_UnionGrabDomain::getInstance()->get_config_level_add_reward($player_info['level']);
         $reward_detail = $this->get_game('Reward')->get_reward_detail_other_way($reward_str, $reward_star_add_str, 1);
         $reward_detail = $this->get_game('Reward')->get_reward_detail_add_way($reward_detail, $reward_level_add_str, 1);
         $reward = $this->get_game('Reward')->get_reward_string_by_reward_detail($reward_detail);
         $temp['reward'] = $reward;
         $temp['box_name'] = $conf['box_name'];
         $temp['box_quality'] = $conf['box_quality'];
         $day_reward_list[] = $temp;
     }
     $out['day_reward_list'] = $day_reward_list;
     //9
     $grab_opp_union_info = $this->get_data('UnionGrabDomain')->get_union_info($show_day, $grab_union_info['opp_union_id']);
     $opp_union_name = $this->get_data('UnionInfo')->get_union_info($grab_union_info['opp_union_id'], 'union_name');
     $one_star_buff_conf = Cache_SkillBuff::getInstance()->get_buff_data(10601);
     $three_star_buff_conf = Cache_SkillBuff::getInstance()->get_buff_data(10602);
     $buffs = array(1 => $one_star_buff_conf['param2'], 2 => 0, 3 => $three_star_buff_conf['param2']);
     $manor_num = $manor_num = 0;
     $domain_list = array();
     switch ($type) {
         case 0:
             //本方
             if (isset($grab_union_info['manor_info']) && count($grab_union_info['manor_info'])) {
                 $manor_num = count($grab_union_info['manor_info']);
                 foreach ($grab_union_info['manor_info'] as $pid) {
                     $grab_manor_info = $this->get_data('UnionGrabDomain')->get_manor_info($show_day, $pid);
                     if ($pid == $player_id) {
                         $player_name = $player_info['name'];
                         $sum_fpower = $player_info['sum_fpower'];
                         $avatar = $this->get_game('KFArena')->get_player_avatar($pid, 0, $player_info['career_type']);
                     } else {
                         $pinfo = $this->get_data('Player')->get_player_info($pid, array('name', 'sum_fpower', 'career_type'));
                         $player_name = $pinfo['name'];
                         $sum_fpower = $pinfo['sum_fpower'];
                         $avatar = $this->get_game('KFArena')->get_player_avatar($pid, 0, $pinfo['career_type']);
                     }
                     $miss_star = $grab_manor_info['miss_star'] ? $grab_manor_info['miss_star'] : 0;
                     $win = $grab_manor_info['win'] ? $grab_manor_info['win'] : 0;
                     $hard_list = array();
                     for ($i = 1; $i < 4; $i++) {
                         $hard['star'] = $i;
                         $hard['buff'] = $buffs[$i];
                         $hard['is_enter'] = 0;
                         $hard_list[] = $hard;
                     }
                     if (isset($grab_manor_info['history']) && $grab_manor_info['history']) {
                         $history = $this->get_fight_history($grab_manor_info['history']);
                     } else {
                         $history = array();
                     }
                     $tmp['player_id'] = $pid;
                     $tmp['player_name'] = $player_name;
                     $tmp['sum_fpower'] = $sum_fpower;
                     $tmp['avatar'] = $avatar;
                     $tmp['miss_star'] = $miss_star;
                     $tmp['history'] = $history;
                     $tmp['hard_list'] = $hard_list;
                     $tmp['win'] = $win;
                     $domain_list[] = $tmp;
                 }
             } else {
                 $manor_info = $this->get_data('UnionGrabDomain')->get_manor_players($player_info['union_id']);
                 $manor_num = count($manor_info);
                 foreach ($manor_info as $pid) {
                     if ($pid == $player_id) {
                         $player_name = $player_info['name'];
                         $sum_fpower = $player_info['sum_fpower'];
                         $avatar = $this->get_game('KFArena')->get_player_avatar($pid, 0, $player_info['career_type']);
                     } else {
                         $pinfo = $this->get_data('Player')->get_player_info($pid, array('name', 'sum_fpower', 'career_type'));
                         $player_name = $pinfo['name'];
                         $sum_fpower = $pinfo['sum_fpower'];
                         $avatar = $this->get_game('KFArena')->get_player_avatar($pid, 0, $pinfo['career_type']);
                     }
                     $miss_star = 0;
                     $hard_list = array();
                     for ($i = 1; $i < 4; $i++) {
                         $hard['star'] = $i;
                         $hard['buff'] = $buffs[$i];
                         $hard['is_enter'] = 0;
                         $hard_list[] = $hard;
                     }
                     $history = array();
                     $tmp['player_id'] = $pid;
                     $tmp['player_name'] = $player_name;
                     $tmp['sum_fpower'] = $sum_fpower;
                     $tmp['avatar'] = $avatar;
                     $tmp['miss_star'] = $miss_star;
                     $tmp['history'] = $history;
                     $tmp['hard_list'] = $hard_list;
                     $tmp['win'] = 0;
                     $domain_list[] = $tmp;
                 }
             }
             break;
         case 1:
             //敌方
             if (isset($grab_opp_union_info['manor_info']) && count($grab_opp_union_info['manor_info'])) {
                 $opp_manor_num = count($grab_opp_union_info['manor_info']);
                 foreach ($grab_opp_union_info['manor_info'] as $pid) {
                     $grab_manor_info = $this->get_data('UnionGrabDomain')->get_manor_info($show_day, $pid);
                     $pinfo = $this->get_data('Player')->get_player_info($pid, array('name', 'sum_fpower', 'career_type'));
                     $player_name = $pinfo['name'];
                     $sum_fpower = $pinfo['sum_fpower'];
                     $avatar = $this->get_game('KFArena')->get_player_avatar($pid, 0, $pinfo['career_type']);
                     $miss_star = $grab_manor_info['miss_star'] ? $grab_manor_info['miss_star'] : 0;
                     $win = $grab_manor_info['win'] ? $grab_manor_info['win'] : 0;
                     $hard_list = array();
                     for ($i = 1; $i < 4; $i++) {
                         if ($status == 2 && $i > $miss_star) {
                             $is_enter = 1;
                         } else {
                             $is_enter = 0;
                         }
                         $hard['star'] = $i;
                         $hard['buff'] = $buffs[$i];
                         $hard['is_enter'] = $is_enter;
                         $hard_list[] = $hard;
                     }
                     if (isset($grab_manor_info['history']) && $grab_manor_info['history']) {
                         $history = $this->get_fight_history($grab_manor_info['history']);
                     } else {
                         $history = array();
                     }
                     $tmp['player_id'] = $pid;
                     $tmp['player_name'] = $player_name;
                     $tmp['sum_fpower'] = $sum_fpower;
                     $tmp['avatar'] = $avatar;
                     $tmp['miss_star'] = $miss_star;
                     $tmp['history'] = $history;
                     $tmp['hard_list'] = $hard_list;
                     $tmp['win'] = $win;
                     $domain_list[] = $tmp;
                 }
             } else {
                 $manor_info = $this->get_data('UnionGrabDomain')->get_manor_players($grab_union_info['opp_union_id']);
                 $opp_manor_num = count($manor_info);
                 foreach ($manor_info as $pid) {
                     $pinfo = $this->get_data('Player')->get_player_info($pid, array('name', 'sum_fpower', 'career_type'));
                     $player_name = $pinfo['name'];
                     $sum_fpower = $pinfo['sum_fpower'];
                     $avatar = $this->get_game('KFArena')->get_player_avatar($pid, 0, $pinfo['career_type']);
                     $miss_star = 0;
                     $hard_list = array();
                     for ($i = 1; $i < 4; $i++) {
                         $hard['star'] = $i;
                         $hard['buff'] = $buffs[$i];
                         $hard['is_enter'] = 0;
                         $hard_list[] = $hard;
                     }
                     $history = array();
                     $tmp['player_id'] = $pid;
                     $tmp['player_name'] = $player_name;
                     $tmp['sum_fpower'] = $sum_fpower;
                     $tmp['avatar'] = $avatar;
                     $tmp['miss_star'] = $miss_star;
                     $tmp['history'] = $history;
                     $tmp['hard_list'] = $hard_list;
                     $tmp['win'] = 0;
                     $domain_list[] = $tmp;
                 }
             }
             break;
     }
     if (0 == $type) {
         if (isset($grab_opp_union_info['manor_info']) && count($grab_opp_union_info['manor_info'])) {
             $opp_manor_num = count($grab_opp_union_info['manor_info']);
         } else {
             $opp_manor_info = $this->get_data('UnionGrabDomain')->get_manor_players($grab_union_info['opp_union_id']);
             $opp_manor_num = count($opp_manor_info);
         }
     } else {
         if (isset($grab_union_info['manor_info']) && count($grab_union_info['manor_info'])) {
             $manor_num = count($grab_union_info['manor_info']);
         } else {
             $manor_info = $this->get_data('UnionGrabDomain')->get_manor_players($player_info['union_id']);
             $manor_num = count($manor_info);
         }
     }
     $out['self_union_left_star'] = $manor_num * 3 - $grab_opp_union_info['star'];
     //10
     $out['self_union_name'] = $grab_week_union_info['union_name'];
     //11
     $out['opp_union_left_star'] = $opp_manor_num * 3 - $grab_union_info['star'];
     //12
     $out['opp_union_name'] = $opp_union_name;
     //13
     $out['domain_list'] = $domain_list;
     //14
     //挑战次数下次购买价格
     $buy_times_info = Cache_UnionGrabDomain::getInstance()->get_buy_times_info($player_info['level']);
     list($cost_currency_type, $cost_currency_value) = $this->get_next_battle_num_buy_price($player_id, $buy_times_info);
     if (!$cost_currency_value) {
         $next_buy_price = '';
     } else {
         $next_buy_price = "{$cost_currency_type}:{$cost_currency_value}";
     }
     $out['next_buy_price'] = $next_buy_price;
     //15
     $out['union_rank'] = $this->get_data('UnionGrabDomain')->get_my_rank($player_info['union_id']);
     //16
     /* 获取全部排名奖励信息,以玩家当前等级为准 */
     // 获取排位基础奖励与排位基础奖励加成
     $rank_reward = Cache_UnionGrabDomain::getInstance()->get_union_reward_conf();
     $range_rank_reward = array();
     // 列表区间各排名对应的奖励[奖励使用通用奖励字符串sid:num|sid:num]
     foreach ($rank_reward as $show) {
         // 获取排名对应的加成率
         $award_rank_add = array();
         $rang = array($show['rank_min'], $show['rank_max']);
         foreach ($rang as $rank) {
             if (!$rank) {
                 continue;
             }
             $rank_reward_str = Cache_UnionGrabDomain::getInstance()->get_union_rank_reward($rank);
             $award_rank_add = Cache_UnionGrabDomain::getInstance()->get_union_rank_add_conf($rank);
             $reward_detail = $this->get_game('Reward')->get_reward_detail_other_way($rank_reward_str, $award_rank_add['rank_add'], 1);
             $range_rank_reward[$rank] = $this->get_game('Reward')->get_reward_string_by_reward_detail($reward_detail);
             // 以通用奖励字符串sid:num|sid:num形式记录
         }
     }
     $week_award_list = array();
     foreach ($rank_reward as $show) {
         $head_rank = $show['rank_min'];
         $tail_rank = $show['rank_max'];
         if ($tail_rank) {
             $tail_reward = $range_rank_reward[$tail_rank];
         } else {
             $tail_reward = '';
         }
         $week_award_list[] = array('head_rank' => $head_rank, 'tail_rank' => $tail_rank, 'head_reward' => $range_rank_reward[$head_rank], 'tail_reward' => $tail_reward, 'name' => $show['box_name'], 'box_quality' => $show['box_quality']);
     }
     $out['week_award_list'] = $week_award_list;
     //17
     if (!$player_info['union_grab_domain_init']) {
         $first_enter = 1;
         $this->get_data('Player')->update_player_info($player_id, array('union_grab_domain_init' => 1));
     } else {
         $first_enter = 0;
     }
     $out['first_entry'] = $first_enter;
     //18
     $out['cd'] = $cd;
     //19
     $out['total_star'] = $manor_num * 3;
     //20
     $out['opp_total_star'] = $opp_manor_num * 3;
     //21
     $out['my_star'] = $star;
     //21
     return $out;
 }