if ($user_dark_matter < $config->planet_capital_cost) { throw new exception($lang['ov_capital_err_no_dark_matter'], ERR_ERROR); } rpg_points_change($user['id'], RPG_CAPITAL, -$config->planet_capital_cost, array('Planet %s ID %d at coordinates %s now become Empire Capital', $planetrow['name'], $planetrow['id'], uni_render_coordinates($planetrow))); db_user_set_by_id($user['id'], "id_planet = {$planetrow['id']}, galaxy = {$planetrow['galaxy']}, system = {$planetrow['system']}, planet = {$planetrow['planet']}"); $user['id_planet'] = $planetrow['id']; $result = array('STATUS' => ERR_NONE, 'MESSAGE' => $lang['ov_capital_err_none']); sn_db_transaction_commit(); sys_redirect('overview.php?mode=manage'); } catch (exception $e) { sn_db_transaction_rollback(); $result = array('STATUS' => $e->getCode(), 'MESSAGE' => $e->getMessage()); } } elseif (sys_get_param_str('teleport')) { try { if (!uni_coordinates_valid($new_coordinates = array('galaxy' => sys_get_param_int('new_galaxy'), 'system' => sys_get_param_int('new_system'), 'planet' => sys_get_param_int('new_planet')))) { throw new exception($lang['ov_teleport_err_wrong_coordinates'], ERR_ERROR); } sn_db_transaction_start(); // При телепорте обновлять данные не надо - просто получить текущие данные и залочить их $user = db_user_by_id($user['id'], true, '*'); $planetrow = db_planet_by_id($planetrow['id'], true, '*'); // $global_data = sys_o_get_updated($user, $planetrow['id'], SN_TIME_NOW); // $user = $global_data['user']; // $planetrow = $global_data['planet']; $can_teleport = uni_planet_teleport_check($user, $planetrow, $new_coordinates); if ($can_teleport['result'] != ERR_NONE) { throw new exception($can_teleport['message'], $can_teleport['result']); } rpg_points_change($user['id'], RPG_TELEPORT, -$config->planet_teleport_cost, array(&$lang['ov_teleport_log_record'], $planetrow['name'], $planetrow['id'], uni_render_coordinates($planetrow), uni_render_coordinates($new_coordinates))); $planet_teleport_next = SN_TIME_NOW + $config->planet_teleport_timeout;
* @version 2.0 Security checks by Gorlum for http://supernova.ws * [!] Full rewrite * [+] Added missile attack launch sequience * [-] Moved almost all check code to flt_can_attack * @version 1.1 Security checks by Gorlum for http://supernova.ws * @version 1 * @copyright 2008 By Chlorel for XNova **/ include 'common.' . substr(strrchr(__FILE__, '.'), 1); define('IN_AJAX', true); header("Content-type: text/html; charset=utf-8"); lng_include('universe'); lng_include('fleet'); require_once 'includes/includes/flt_functions.php'; $target_coord = array('galaxy' => $target_galaxy = sys_get_param_int('galaxy'), 'system' => $target_system = sys_get_param_int('system'), 'planet' => $target_planet = sys_get_param_int('planet')); if (!uni_coordinates_valid($target_coord)) { die($lang['gs_c02']); } $target_mission = sys_get_param_int('mission'); $sn_group_missions = sn_get_groups('missions'); if (!isset($sn_group_missions[$target_mission]['AJAX']) || !$sn_group_missions[$target_mission]['AJAX']) { die($lang['gs_c00']); } sn_db_transaction_start(); $user = db_user_by_id($user['id'], true); $planetrow = db_planet_by_id($user['current_planet'], true); $target_planet_type = sys_get_param_int('planet_type'); $target_planet_check = $target_planet_type == PT_DEBRIS ? PT_PLANET : $target_planet_type; $target_coord['planet_type'] = $target_planet_check; $target_row = db_planet_by_vector($target_coord); if (empty($target_row)) {