コード例 #1
0
function flt_parse_fleets_to_events($fleet_list, $planet_scanned = false)
{
    global $config, $user, $fleet_number, $lang;
    $fleet_events = array();
    $fleet_number = 0;
    if (empty($fleet_list)) {
        return;
    }
    foreach ($fleet_list as $fleet) {
        $planet_start_type = $fleet['fleet_start_type'] == PT_MOON ? PT_MOON : PT_PLANET;
        $planet_start = db_planet_by_gspt($fleet['fleet_start_galaxy'], $fleet['fleet_start_system'], $fleet['fleet_start_planet'], $planet_start_type, false, 'name');
        $fleet['fleet_start_name'] = $planet_start['name'];
        $planet_end_type = $fleet['fleet_end_type'] == PT_MOON ? PT_MOON : PT_PLANET;
        if ($fleet['fleet_end_planet'] > $config->game_maxPlanet) {
            $fleet['fleet_end_name'] = $lang['ov_fleet_exploration'];
        } elseif ($fleet['fleet_mission'] == MT_COLONIZE) {
            $fleet['fleet_end_name'] = $lang['ov_fleet_colonization'];
        } else {
            $planet_end = db_planet_by_gspt($fleet['fleet_end_galaxy'], $fleet['fleet_end_system'], $fleet['fleet_end_planet'], $planet_end_type, false, 'name');
            $fleet['fleet_end_name'] = $planet_end['name'];
        }
        if ($fleet['fleet_start_time'] > SN_TIME_NOW && $fleet['fleet_mess'] == 0 && $fleet['fleet_mission'] != MT_MISSILE && ($planet_scanned === false || $planet_scanned !== false && $planet_scanned['galaxy'] == $fleet['fleet_end_galaxy'] && $planet_scanned['system'] == $fleet['fleet_end_system'] && $planet_scanned['planet'] == $fleet['fleet_end_planet'] && $planet_scanned['planet_type'] == $planet_end_type && $planet_start_type != PT_MOON && $fleet['fleet_mission'] != MT_HOLD)) {
            $fleet_events[] = flt_register_fleet_event($fleet, 0, $planet_end_type);
        }
        if ($fleet['fleet_end_stay'] > SN_TIME_NOW && $fleet['fleet_mess'] == 0 && $planet_scanned === false && $fleet['fleet_mission'] != MT_MISSILE) {
            $fleet_events[] = flt_register_fleet_event($fleet, 1, $planet_end_type);
        }
        if ($fleet['fleet_end_time'] > SN_TIME_NOW && $fleet['fleet_mission'] != MT_MISSILE && ($fleet['fleet_mess'] == 1 || $fleet['fleet_mission'] != MT_RELOCATE && $fleet['fleet_mission'] != MT_COLONIZE) && ($planet_scanned === false && $fleet['fleet_owner'] == $user['id'] || $planet_scanned !== false && $fleet['fleet_mission'] != MT_RELOCATE && $planet_start_type != PT_MOON && $planet_scanned['galaxy'] == $fleet['fleet_start_galaxy'] && $planet_scanned['system'] == $fleet['fleet_start_system'] && $planet_scanned['planet'] == $fleet['fleet_start_planet'] && $planet_scanned['planet_type'] == $planet_start_type)) {
            $fleet_events[] = flt_register_fleet_event($fleet, 2, $planet_end_type);
        }
        if ($fleet['fleet_mission'] == MT_MISSILE) {
            $fleet_events[] = flt_register_fleet_event($fleet, 3, $planet_end_type);
        }
    }
    return $fleet_events;
}
コード例 #2
0
ファイル: phalanx.php プロジェクト: divyinfo/SuperNova
$scan_system = sys_get_param_int('system');
$scan_planet = sys_get_param_int('planet');
$scan_planet_type = 1;
// sys_get_param_int('planettype');
$id = sys_get_param_id('id');
$source_galaxy = $planetrow['galaxy'];
$source_system = $planetrow['system'];
$source_planet = $planetrow['planet'];
$sensorRange = GetPhalanxRange($sensorLevel);
$system_distance = abs($source_system - $scan_system);
if ($system_distance > $sensorRange || $scan_galaxy != $source_galaxy) {
    message($lang['phalanx_rangeerror'], $lang['tech'][STRUC_MOON_PHALANX], '', 3);
}
$cost = $sensorLevel * 1000;
if ($planetrow['deuterium'] < $cost) {
    message($lang['phalanx_nodeuterium'], "phalanx", '', 3);
}
$planet_scanned = db_planet_by_gspt($scan_galaxy, $scan_system, $scan_planet, $scan_planet_type);
if (!$planet_scanned['id']) {
    message($lang['phalanx_planet_not_exists'], $lang['tech'][STRUC_MOON_PHALANX], '', 3);
}
if ($planet_scanned['destruyed']) {
    message($lang['phalanx_planet_destroyed'], $lang['tech'][STRUC_MOON_PHALANX], '', 3);
}
db_planet_set_by_id($user['current_planet'], "deuterium = deuterium - {$cost}");
$template = gettemplate('planet_fleet_list', true);
$fleet_list = flt_get_fleets($planet_scanned, true);
$fleets = flt_parse_fleets_to_events($fleet_list, $planet_scanned);
//int_get_missile_to_planet("SELECT * FROM `{{iraks}}` WHERE fleet_end_galaxy = {$scan_galaxy} AND fleet_end_system = {$scan_system} AND fleet_end_planet = {$scan_planet};");
tpl_assign_fleet($template, $fleets);
display($template, $lang['tech'][STRUC_MOON_PHALANX], false, '', false, false);
コード例 #3
0
     $errors[] = $lang['adm_pl_comp_err_2'];
 }
 if ($planet['id'] == $destination['id']) {
     $errors[] = $lang['adm_pl_comp_err_5'];
 }
 if ($planet['id_owner'] != $destination['id_owner']) {
     $errors[] = $lang['adm_pl_comp_err_3'];
 }
 if (!empty($errors)) {
     foreach ($errors as $error) {
         $template->assign_block_vars('error', array('TEXT' => $error));
     }
 } else {
     $template->assign_var('CHECK', 1);
     killer_add_planet($planet);
     $moon = db_planet_by_gspt($galaxy_src, $system_src, $planet_src, PT_MOON, true);
     if ($moon) {
         $moon = sys_o_get_updated($owner, $moon, SN_TIME_NOW);
         $moon = $moon['planet'];
         killer_add_planet($moon);
     }
     foreach (sn_get_groups('resources_loot') as $resource_id) {
         $resource_name = pname_resource_name($resource_id);
         $template->assign_var("{$resource_name}_cost", $final_cost[$resource_id]);
         $final_cost[$resource_id] = floor($final_cost[$resource_id] * $bonus);
         $template->assign_var("{$resource_name}_bonus", $final_cost[$resource_id]);
     }
     if ($_GET['btn_confirm']) {
         $time = SN_TIME_NOW + PERIOD_DAY;
         db_unit_list_delete($planet['id_owner'], LOC_PLANET, $planet['id']);
         db_planet_set_by_id($planet['id'], "id_owner = 0, destruyed = {$time}");
コード例 #4
0
ファイル: sys_user.php プロジェクト: hayalolsam/SuperNova
function player_create($username_unsafe, $password_raw, $email_unsafe, $options)
{
    global $config, $lang;
    static $player_options_string = 'opt_mnl_spy^1|opt_email_mnl_spy^0|opt_email_mnl_joueur^0|opt_email_mnl_alliance^0|opt_mnl_attaque^1|opt_email_mnl_attaque^0|opt_mnl_exploit^1|opt_email_mnl_exploit^0|opt_mnl_transport^1|opt_email_mnl_transport^0|opt_email_msg_admin^1|opt_mnl_expedition^1|opt_email_mnl_expedition^0|opt_mnl_buildlist^1|opt_email_mnl_buildlist^0|opt_int_navbar_resource_force^1|';
    empty($options['planet_options']) ? $options['planet_options'] = array() : false;
    $field_set = array('server_name' => SN_ROOT_VIRTUAL, 'register_time' => SN_TIME_NOW, 'user_bot' => $options['user_bot'] = empty($options['user_bot']) ? USER_BOT_PLAYER : $options['total_points'], 'username' => $username_unsafe, 'email' => $email_unsafe, 'email_2' => $email_unsafe, 'lang' => $options['language_iso'] ? $options['language_iso'] : DEFAULT_LANG, 'dpath' => DEFAULT_SKINPATH, 'total_points' => $options['total_points'] = empty($options['total_points']) ? 0 : $options['total_points'], 'options' => (empty($options['options']) ? $player_options_string : $options['options']) . (empty($options['options_extra']) ? '' : $options['options_extra']), 'galaxy' => $options['galaxy'] = intval($options['galaxy'] ? $options['galaxy'] : 0), 'system' => $options['system'] = intval($options['system'] ? $options['system'] : 0), 'planet' => $options['planet'] = intval($options['planet'] ? $options['planet'] : 0));
    $user_new = classSupernova::db_ins_field_set(LOC_USER, $field_set);
    sec_password_change($user_new, $password_raw, false, $options['remember_me'] = intval(!empty($options['remember_me'])));
    $username_safe = db_escape($username_unsafe);
    //  $options['language_iso'] = db_escape($options['language_iso'] ? $options['language_iso'] : DEFAULT_LANG);
    //  $options['remember_me'] = intval(!empty($options['remember_me']));
    //
    //  $skin_safe = db_escape(DEFAULT_SKINPATH);
    //  $email_safe = db_escape($email_unsafe);
    //
    //  // sn_db_field_set_make_safe($field_set, $serialize = false)
    //
    //  $user_new = classSupernova::db_ins_record(LOC_USER, "`username` = '{$username_safe}', `email` = '{$email_safe}', `email_2` = '{$email_safe}', `dpath` = '{$skin_safe}',
    //      `lang` = '{$options['language_iso']}', `register_time` = " . SN_TIME_NOW . ", `server_name` = '" . db_escape(SN_ROOT_VIRTUAL) . "',
    //      `options` = 'opt_mnl_spy^1|opt_email_mnl_spy^0|opt_email_mnl_joueur^0|opt_email_mnl_alliance^0|opt_mnl_attaque^1|opt_email_mnl_attaque^0|opt_mnl_exploit^1|opt_email_mnl_exploit^0|opt_mnl_transport^1|opt_email_mnl_transport^0|opt_email_msg_admin^1|opt_mnl_expedition^1|opt_email_mnl_expedition^0|opt_mnl_buildlist^1|opt_email_mnl_buildlist^0|opt_int_navbar_resource_force^1|';");
    doquery("REPLACE INTO {{player_name_history}} SET `player_id` = {$user_new['id']}, `player_name` = '{$username_safe}'");
    if (!empty($options['partner_id']) && ($referral_row = db_user_by_id($options['partner_id'], true))) {
        doquery("INSERT INTO {{referrals}} SET `id` = {$user_new['id']}, `id_partner` = {$options['partner_id']}");
    }
    if (!($options['galaxy'] && $options['system'] && $options['planet'])) {
        $options['galaxy'] = $config->LastSettedGalaxyPos;
        $options['system'] = $config->LastSettedSystemPos;
        $segment_size = floor($config->game_maxPlanet / 3);
        $segment = floor($config->LastSettedPlanetPos / $segment_size);
        $segment++;
        $options['planet'] = mt_rand(1 + $segment * $segment_size, ($segment + 1) * $segment_size);
        // $new_planet_id = 0;
        while (true) {
            if ($options['planet'] > $config->game_maxPlanet) {
                $options['planet'] = mt_rand(0, $segment_size - 1) + 1;
                $options['system']++;
            }
            if ($options['system'] > $config->game_maxSystem) {
                $options['system'] = 1;
                $options['galaxy']++;
            }
            $options['galaxy'] > $config->game_maxGalaxy ? $options['galaxy'] = 1 : false;
            $galaxy_row = db_planet_by_gspt($options['galaxy'], $options['system'], $options['planet'], PT_PLANET, true, 'id');
            if (!$galaxy_row['id']) {
                $config->db_saveItem(array('LastSettedGalaxyPos' => $options['galaxy'], 'LastSettedSystemPos' => $options['system'], 'LastSettedPlanetPos' => $options['planet']));
                // $new_planet_id = uni_create_planet($options['galaxy'], $options['system'], $options['planet'], $user_new['id'], $username_unsafe . ' ' . $lang['sys_capital'], true, $options['planet_options']);
                break;
            }
            $options['planet'] += 3;
        }
    }
    $new_planet_id = uni_create_planet($options['galaxy'], $options['system'], $options['planet'], $user_new['id'], $username_unsafe . ' ' . $lang['sys_capital'], true, $options['planet_options']);
    sys_player_new_adjust($user_new['id'], $new_planet_id);
    db_user_set_by_id($user_new['id'], "`id_planet` = '{$new_planet_id}', `current_planet` = '{$new_planet_id}', `galaxy` = '{$options['galaxy']}', `system` = '{$options['$system']}', `planet` = '{$options['$planet']}'");
    $config->db_saveItem('users_amount', $config->users_amount + 1);
    return db_user_by_id($user_new['id']);
}
コード例 #5
0
ファイル: uni_functions.php プロジェクト: divyinfo/SuperNova
/**
 * @param        $pos_galaxy
 * @param        $pos_system
 * @param        $pos_planet
 * @param        $user_id
 * @param int    $moon_chance
 * <p><b>0</b> случайный размер луны</p>
 * <p>1..100 Шанс выпадения луны</p>
 * <p>> 100 Размер луны</p>
 * @param string $moon_name
 * @param bool   $update_debris
 * @param array  $options
 *
 * @return array|false|resource
 */
function uni_create_moon($pos_galaxy, $pos_system, $pos_planet, $user_id, $moon_chance = 0, $moon_name = '', $update_debris = true, $options = array())
{
    global $lang;
    $moon_name = '';
    $moon_row = array();
    $moon = db_planet_by_gspt($pos_galaxy, $pos_system, $pos_planet, PT_MOON, false, 'id');
    if (!$moon['id']) {
        $moon_planet = db_planet_by_gspt($pos_galaxy, $pos_system, $pos_planet, PT_PLANET, true, '`id`, `temp_min`, `temp_max`, `name`, `debris_metal`, `debris_crystal`');
        if ($moon_planet['id']) {
            $base_storage_size = BASE_STORAGE_SIZE;
            if (!$moon_chance) {
                $size = mt_rand(1100, 8999);
            } elseif ($moon_chance <= 100) {
                $size = mt_rand($moon_chance * 100 + 1000, $moon_chance * 200 + 2999);
            } else {
                $size = $moon_chance;
            }
            $moon_chance = min(30, ceil($size / 1000));
            $temp_min = $moon_planet['temp_min'] - rand(10, 45);
            $temp_max = $temp_min + 40;
            $moon_name = $moon_name ? $moon_name : "{$moon_planet['name']} {$lang['sys_moon']}";
            $moon_name_safe = db_escape($moon_name);
            $field_max = ceil($size / 1000);
            if (isset($options['image']) && $options['image']) {
                $moon_image = $options['image'];
            } else {
                $moon_image = 'mond';
            }
            $moon_row = classSupernova::db_ins_record(LOC_PLANET, "`id_owner` = '{$user_id}', `parent_planet` = '{$moon_planet['id']}', `name` = '{$moon_name_safe}', `last_update` = " . SN_TIME_NOW . ", `image` = '{$moon_image}',\n          `galaxy` = '{$pos_galaxy}', `system` = '{$pos_system}', `planet` = '{$pos_planet}', `planet_type` = " . PT_MOON . ",\n          `diameter` = '{$size}', `field_max` = '{$field_max}', `density` = 2500, `density_index` = 2, `temp_min` = '{$temp_min}', `temp_max` = '{$temp_max}',\n          `metal` = '0', `metal_perhour` = '0', `metal_max` = '{$base_storage_size}',\n          `crystal` = '0', `crystal_perhour` = '0', `crystal_max` = '{$base_storage_size}',\n          `deuterium` = '0', `deuterium_perhour` = '0', `deuterium_max` = '{$base_storage_size}'");
            if ($update_debris) {
                $debris_spent = $moon_chance * 1000000;
                $metal_spent = round(min($moon_planet['debris_metal'], $debris_spent * mt_rand(50, 75) / 100));
                $crystal_spent = min($moon_planet['debris_crystal'], $debris_spent - $metal_spent);
                $metal_spent = min($moon_planet['debris_metal'], $debris_spent - $crystal_spent);
                // Need if crystal less then their part
                db_planet_set_by_id($moon_planet['id'], "`debris_metal` = GREATEST(0, `debris_metal` - {$metal_spent}), `debris_crystal` = GREATEST(0, `debris_crystal` - {$crystal_spent})");
            }
        }
    }
    return $moon_row;
}
コード例 #6
0
ファイル: fleet.php プロジェクト: divyinfo/SuperNova
        //
        //
        ksort($missiontype);
        $speed_percent = sys_get_param_int('speed', 10);
        $travel_data = flt_travel_data($user, $planetrow, array('galaxy' => $galaxy, 'system' => $system, 'planet' => $planet), $fleetarray, $speed_percent);
        //    $fleet_speed   = flt_fleet_speed($user, $fleetarray);
        $fleet_speed = $travel_data['fleet_speed'];
        $distance = $travel_data['distance'];
        $duration = $travel_data['duration'];
        $consumption = $travel_data['consumption'];
        // No Break
    // No Break
    case 1:
        if ($galaxy && $system && $planet) {
            $check_type = $planet_type == PT_MOON ? PT_MOON : PT_PLANET;
            $TargetPlanet = db_planet_by_gspt($galaxy, $system, $planet, $check_type);
        }
    case 0:
        $template_result += array('thisgalaxy' => $planetrow['galaxy'], 'thissystem' => $planetrow['system'], 'thisplanet' => $planetrow['planet'], 'thisplanet_type' => $planetrow['planet_type']);
        // no break
}
$template_result += array('galaxy' => $galaxy, 'system' => $system, 'planet' => $planet, 'planet_type' => $planet_type, 'target_mission' => $target_mission ? $target_mission : 0, 'MISSION_NAME' => $target_mission ? $lang['type_mission'][$target_mission] : '');
$is_transport_missions = false;
if ($missiontype) {
    $sn_group_missions = sn_get_groups('missions');
    foreach ($missiontype as $mission_data_id => $mission_data) {
        $is_transport_missions = $is_transport_missions || isset($sn_group_missions[$mission_data_id]['transport']) && $sn_group_missions[$mission_data_id]['transport'];
    }
}
switch ($fleet_page) {
    case 1: