/** * 获取玩家基础属性 * * @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; }
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' => '')); } }
/** * 面板 * @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; }