Exemplo n.º 1
0
 /**
  * 获取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);
 }
Exemplo n.º 2
0
 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;
 }