/** * 获取vip奖励面板 * @param int player_id 玩家id * @return array */ public function get_vip_panel($player_id) { $player_id = intval($player_id); //获取奖励配置 if (!($set_vip = Cache_NewServerActivity::getInstance()->get_vip())) { $this->throw_error(10222, 6010096); } $career_type = $this->get_data('Player')->get_player_info($player_id, 'career_type'); $ret = array(); foreach ($set_vip as $reward) { $temp['type'] = $reward['type']; $temp['reward'] = $this->format_reward($reward['show_item_id'], $career_type); $ret[] = $temp; } return array(0 => $ret); }
public function player_upgrade($data) { if (empty($data)) { return false; } // Com_Log::write('xgame.upgrade', "player_upgrade:\t".$data); $data = json_decode($data, true); $player_id = $data['player_id']; $exp = intval($data['exp']); // Com_Log::write("player_upgrade.".$player_id,"param".var_export($data,true)); if ($exp == 0) { return false; } #经验是0不处理 $old_level = intval($data['level']); if ($old_level <= 0) { return false; } $level_exp = $data['level_exp']; $vip_level = $data['vip']; $name = $data['name']; $privilege_level = $data['privilege_level']; $career_type = $data['career_type']; $after_hero_hole = $data['after_hero_hole']; $gateway = $data['gateway']; //测试环境 推送到不同的gateway $union_id = $data['union_id']; $update = array(); $logs = array(); $level_config_array = array(); $level = $this->get_update_level($old_level, $exp, $logs, $level_config_array); // Com_Log::write('xgame.upgrade', "player_upgrade:$player_id\t".json_encode($level)); $update['exp'] = $level['exp'] < 0 ? 0 : $level['exp']; $update['level'] = $level['level']; $update['level_exp'] = $level['level_exp']; $update['upgrade_time'] = time(); //获取英雄后补孔开启数量 if ($update['level'] > 16) { $hole_num = $this->get_hero_after_hole_num($update['level']); if ($hole_num > 0 && $hole_num > $after_hero_hole) { $update['after_hero_hole'] = $hole_num; } } $result = $this->get_data('Player')->update_player_info($player_id, $update); if ($result) { // $logs[] = array('type'=>2,'item_id'=>1,'item_num'=>0,'amount'=>$arr_player['exp'],'front_attr'=>$arr_player['level'],'after_attr'=>$arr_player['level']); #为了升级不同步到上一次经验加个空日志 if ($logs) { Log_Common::getInstance()->add_multi_resource_log($player_id, $old_level, $vip_level, $privilege_level, 103, $logs); } $arr_player['exp'] = $update['exp']; $arr_player['level'] = $update['level']; $arr_player['level_exp'] = $update['level_exp']; #因为分了两个进程 所以这个地方属性和固定值要分开 Protocol_Player::p2c_part_update($player_id, $arr_player); // $arr_player['attr'] = array(); // $arr_player['skill_infos'] = array(); Protocol_Player::p2c_part_update($player_id, array('attr' => '', 'skill_infos' => '')); # 条件问卷查询推送 if ($arr_player['level'] > 8) { $this->get_game('ActivityQuestions')->get_cond_ids($player_id, 0, array('level' => $arr_player['level'], 'vip' => $vip_level)); } #功能开启 // Com_Log::write("player_upgrade.".$player_id,"old_level:{$old_level} level:{$arr_player['level']}"); $set_reward = Cache_NewServerActivity::getInstance()->get_level_reward(1); //新服活动,蛋疼的数字埋点 $ns = 0; for ($i = $old_level + 1; $i <= $arr_player['level']; $i++) { $this->get_game('FuncOpen')->do_func_open($player_id, 2, $i, array('level' => $arr_player['level'], 'vip' => $vip_level)); #玩家等级推送 if ($i == 8) { #获取玩家信息 $player_info = $this->get_data('Player')->get_player_info($player_id, array('user_account', 'ad_info')); if (!empty($player_info['ad_info'])) { $activelog = Com_System::send_request(array('user_account' => $player_info['user_account'], 'level' => $i), 'level'); } } if ($i > 20) { // Com_Log::write("player_upgrade.".$player_id,"old_level:{$old_level} i: {$i} level:{$arr_player['level']}"); $this->get_game('TaskMain')->check_level_task($player_id, $i); #检查任务状态 } if ($set_reward) { // 新服活动,蛋疼的数字埋点 foreach ($set_reward as $reward) { if (!$ns && $i == $reward['value']) { $this->get_game('PlayerFunc')->sync_func_tips($player_id, 1250); $ns = 1; break; } } } } if (!empty($level_config_array)) { foreach ($level_config_array as $key => $val) { if (!empty($val['unlock_skill_info'])) { $player_task = $this->get_data('PlayerTask')->get_task_info($player_id); $this->get_game('PlayerSkill')->flush_locked_skill($player_id, $career_type, $val['unlock_skill_info'], $key + 1, $player_task['main_val']); } if ($key == 42) { $this->get_game('PlayerWing')->update_wing_activation_condition($player_id, 7, $key); #激活翅膀 } if ($key == 30) { $my_arena_info = $this->get_data('KFArena')->get_kf_arena_info($player_id); if (empty($my_arena_info)) { $this->get_game('KFArena')->init_player_kf_arean($player_id, $name, $career_type); } } } } // $this->get_game('TaskTrigger')->trigger_task($player_id,8,8,$update['level']); if ($update['level'] > 4) { $this->get_game('PlayerFriend')->push_recommend_friend($player_id, $old_level, $update['level']); $this->get_game('PlayerAchieve')->async_trigger_achieve_target($player_id, 2, $update['level'], 2, $update['level']); #更新排行榜数据 $this->get_data('RankList')->set_level_list($player_id, $update['level']); if ($update['level'] > 19 && $union_id == 0) { $this->get_data('Player')->add_no_union_player($player_id, $update['level']); } } $this->get_game('PlayerGradeFunc')->async_update_grade_func($player_id, $update['level']); if ($update['level'] > 23) { $this->get_game('UnionAchieve')->async_trigger_union_achieve($player_id, 7, $update['level'], 2); } if ($update['level'] > 37) { $this->get_game('TaskChain')->upgrade_change_chain_task($player_id, $update['level']); } // 人物等级: // 1:恭喜{玩家名}人物等级达到{n}级,又一个新星冉冉升起! // $val = "玩家等级" $replace_info = array(array("rep_type" => 0, "rep_val" => $player_id), array("rep_type" => 7, "txt" => $arr_player['level'])); $this->get_game('SystemNotice')->push_sys_notice($player_id, 10, $arr_player['level'], $replace_info); // $arr_player['player_id'] = $this->_player[$player_id]['player_id']; Protocol::out($gateway); return true; } return false; }