Example #1
0
 /**
  * 如果玩家没有出序章 在遇到C++服务器重启的时候 重置这写玩家的任务
  */
 public function reset_task()
 {
     Com_Log::write('x_reset', "=============================[start]=========================");
     $keys = Com_AdCache::factory('player')->keys("data|player:*");
     if (!empty($keys)) {
         $syndata['city_id'] = 2100;
         $syndata['city_x'] = 3382;
         $syndata['city_y'] = 3538;
         $role_init_data = array();
         foreach ($keys as $key) {
             $player_info = Com_AdCache::factory('player')->hash_get($key, array('player_id', 'level', 'vip', 'map_id', 'career_type'));
             //                if($player_info['player_id'] != 980564) continue;
             if ($player_info['level'] >= 10) {
                 continue;
             }
             Com_Log::write('x_reset', "player_id:{$player_info['player_id']}");
             if (!isset($role_init_data[$player_info['career_type']]) && empty($role_init_data[$player_info['career_type']])) {
                 $role_init_data[$player_info['career_type']] = Cache_RoleAttrInit::getInstance()->get_role_attr_init($player_info['career_type']);
             }
             if ($player_info['map_id'] == 2100 && $player_info['level'] < 10) {
                 $this->init_set_task($player_info['player_id'], explode(":", $role_init_data[$player_info['career_type']]['default_task_id']));
                 //                    $this->get_data('PlayerTaskLog')->del_player_task_log($player_info['player_id']);
                 $syndata['level'] = 1;
                 $level_exp = Cache_RoleExp::getInstance()->get_role_exp(1);
                 $syndata['level_exp'] = intval($level_exp['need_exp']);
                 $syndata['exp'] = 0;
                 $this->get_data('Player')->update_player_info($player_info['player_id'], $syndata);
                 $update_fields = $this->get_game('PlayerSkill')->extend_set($player_info['player_id'], $player_info['career_type'], 1, false);
                 $update_fields['guide'] = '';
                 try {
                     $update_fields['wing_info'] = $this->get_game('PlayerWing')->create_player_wing($player_info['player_id'], false);
                     $update_fields['equip_wing'] = 0;
                 } catch (Exception $e) {
                     Com_Log::write('reset_del', "del wing error ##" . var_export($e, true));
                 }
                 $this->get_data('PlayerDetail')->update_player_detail($player_info['player_id'], $update_fields);
                 try {
                     $this->get_game('Fairy')->set_fairy_state_interface($player_info['player_id']);
                 } catch (Exception $e) {
                     Com_Log::write('reset_del', "del fairy error ##" . var_export($e, true));
                 }
                 $props = $this->get_data('PlayerProp')->get_player_all_prop($player_info['player_id']);
                 if ($props) {
                     foreach ($props as $ppid => $val) {
                         Com_Log::write('reset_del', "del prop player_id:{$player_info['player_id']} ##" . var_export($val, true));
                         $result = $this->get_data('PlayerProp')->delete_player_prop($player_info['player_id'], $val, true, array('cmd_id' => 107, 'level' => $player_info['level'], 'vip' => $player_info['vip']));
                         if (!$result) {
                             Com_Log::write('reset_del', "del prop error ##" . var_export($val, true));
                         }
                     }
                 }
             }
         }
     }
     Com_Log::write('x_reset', "=============================[end]=========================");
 }
Example #2
0
 public function update_player_level($player_id, $level)
 {
     if ($level < 0 || $level > 100) {
         echo "等级错误";
         return;
     }
     $objPlayer = TenYear::getInstance('Data_Player');
     $level_exp = Cache_RoleExp::getInstance()->get_role_exp(1);
     $objPlayer->update_player_info($player_id, array('level' => $level, 'level_exp' => intval($level_exp['need_exp'])));
     SynPlayer::set_syn_data(array('level' => $level, 'level_exp' => intval($level_exp['need_exp'])));
     $data = SynPlayer::get_data();
     Protocol::input($player_id, 7, 4, 417, array(0 => $data['m'], 1 => $data['u']));
     Protocol::out();
     echo "添加成功";
 }
Example #3
0
 protected function init_player_data($data)
 {
     $nowTime = time();
     $role_init_data = Cache_RoleAttrInit::getInstance()->get_role_attr_init($data['career_type']);
     $level_exp = Cache_RoleExp::getInstance()->get_role_exp(1);
     $logs = array();
     $fame_info = $this->get_game('PlayerUpgrade')->get_update_fame_level(1, 0, $logs);
     $signature = $this->get_player_init_signature();
     return array('player_id' => $data['player_id'], 'name' => $data['name'], 'user_account' => $data['user_account'], 'sex' => $data['sex'], 'career_type' => $data['career_type'], 'avatar' => $data['avatar'], 'level' => $role_init_data['level'], 'map_id' => $this->default_city_id, 'reg_time' => $nowTime, 'login_time' => $nowTime, 'logout_time' => $nowTime, 'session_id' => $data['session_id'], 'level_exp' => intval($level_exp['need_exp']), 'skill_point' => 20000, 'silver' => $role_init_data['default_silver'], 'gold' => $role_init_data['default_gold'], 'adult_flag' => $data['adult_flag'], 'bag_num' => $this->get_game('PlayerBag')->get_default_bag_num(), 'storage_num' => 20, 'is_dummy' => !empty($data['is_dummy']) ? $data['is_dummy'] : 0, 'ad_info' => !empty($data['ad_info']) ? $data['ad_info'] : 0, 'fame_level' => intval($fame_info['fame_level']), 'fame_level_exp' => intval($fame_info['fame_level_exp']), 'union_id' => 0, 'signature' => $signature, 'op_id' => OPERATOR_ID, 'client_ip' => $data['client_ip']);
 }
Example #4
0
 protected function get_update_level($level, $exp, &$logs, &$level_config_array)
 {
     while ($exp > 0) {
         if (!isset($this->_level_config_array[$level])) {
             $this->_level_config_array[$level] = Cache_RoleExp::getInstance()->get_role_exp($level);
             # 获取当前等级升级到下一级所需的经验配置信息
         }
         $level_config_array[$level] = $this->_level_config_array[$level];
         $nextLevelExp = $this->_level_config_array[$level]['need_exp'];
         if (empty($nextLevelExp)) {
             return array('level' => $level, 'exp' => $exp, 'level_exp' => $nextLevelExp);
         }
         if ($exp >= $nextLevelExp) {
             $old_level = $level;
             $level += 1;
             $old_exp = $exp;
             $exp -= $nextLevelExp;
             $logs[] = array('type' => 2, 'item_id' => 1, 'item_num' => $nextLevelExp, 'amount' => $old_exp, 'front_attr' => $old_level, 'after_attr' => $level, 'is_async' => 0);
             if ($exp <= 0) {
                 #经验正好等于的时候就不进入下次循环了 这里再取一次吧
                 if (!isset($this->_level_config_array[$level])) {
                     $this->_level_config_array[$level] = Cache_RoleExp::getInstance()->get_role_exp($level);
                     # 获取当前等级升级到下一级所需的经验配置信息
                 }
                 $level_config_array[$level] = $this->_level_config_array[$level];
                 $nextLevelExp = $this->_level_config_array[$level]['need_exp'];
                 return array('level' => $level, 'exp' => $exp, 'level_exp' => $nextLevelExp);
             }
         } else {
             return array('level' => $level, 'exp' => $exp, 'level_exp' => $nextLevelExp);
         }
     }
     return array('level' => $level, 'exp' => $exp, 'level_exp' => $nextLevelExp);
 }