Пример #1
0
 /**
  * method transport_mission
  * param $fleet_row
  * return the transport result
  */
 public function transportMission($fleet_row)
 {
     $transport_check = parent::$db->queryFetch("SELECT pc1.`planet_user_id` AS start_id,\n                pc1.`planet_name` AS start_name,\n                pc2.`planet_user_id` AS target_id,\n                pc2.`planet_name` AS target_name\n                FROM " . PLANETS . " AS pc1, " . PLANETS . " AS pc2\n                WHERE pc1.planet_galaxy = '" . $fleet_row['fleet_start_galaxy'] . "' AND\n                pc1.`planet_system` = '" . $fleet_row['fleet_start_system'] . "' AND\n                pc1.`planet_planet` = '" . $fleet_row['fleet_start_planet'] . "' AND\n                pc1.`planet_type` = '" . $fleet_row['fleet_start_type'] . "' AND\n                pc2.`planet_galaxy` = '" . $fleet_row['fleet_end_galaxy'] . "' AND\n                pc2.`planet_system` = '" . $fleet_row['fleet_end_system'] . "' AND\n                pc2.`planet_planet` = '" . $fleet_row['fleet_end_planet'] . "' AND\n                pc2.`planet_type` = '" . $fleet_row['fleet_end_type'] . "'");
     // SOME REQUIRED VALUES
     $start_name = $transport_check['start_name'];
     $start_owner_id = $transport_check['start_id'];
     $target_name = $transport_check['target_name'];
     $target_owner_id = $transport_check['target_id'];
     // DIFFERENT TYPES OF MESSAGES
     $message[1] = sprintf($this->_lang['sys_tran_mess_owner'], $target_name, FleetsLib::target_link($fleet_row, ''), $fleet_row['fleet_resource_metal'], $this->_lang['Metal'], $fleet_row['fleet_resource_crystal'], $this->_lang['Crystal'], $fleet_row['fleet_resource_deuterium'], $this->_lang['Deuterium']);
     $message[2] = sprintf($this->_lang['sys_tran_mess_user'], $start_name, FleetsLib::start_link($fleet_row, ''), $target_name, FleetsLib::target_link($fleet_row, ''), $fleet_row['fleet_resource_metal'], $this->_lang['Metal'], $fleet_row['fleet_resource_crystal'], $this->_lang['Crystal'], $fleet_row['fleet_resource_deuterium'], $this->_lang['Deuterium']);
     $message[3] = sprintf($this->_lang['sys_tran_mess_back'], $start_name, FleetsLib::start_link($fleet_row, ''));
     if ($fleet_row['fleet_mess'] == 0) {
         if ($fleet_row['fleet_start_time'] < time()) {
             parent::store_resources($fleet_row, FALSE);
             $this->transport_message($start_owner_id, $message[1], $fleet_row['fleet_start_time'], $this->_lang['sys_mess_transport']);
             if ($target_owner_id != $start_owner_id) {
                 $this->transport_message($target_owner_id, $message[2], $fleet_row['fleet_start_time'], $this->_lang['sys_mess_transport']);
             }
             parent::$db->query("UPDATE " . FLEETS . " SET\n\t\t\t\t\t\t\t\t\t\t`fleet_resource_metal` = '0' ,\n\t\t\t\t\t\t\t\t\t\t`fleet_resource_crystal` = '0' ,\n\t\t\t\t\t\t\t\t\t\t`fleet_resource_deuterium` = '0' ,\n\t\t\t\t\t\t\t\t\t\t`fleet_mess` = '1'\n\t\t\t\t\t\t\t\t\t\tWHERE `fleet_id` = '" . (int) $fleet_row['fleet_id'] . "'\n\t\t\t\t\t\t\t\t\t\tLIMIT 1 ;");
         }
     } elseif ($fleet_row['fleet_end_time'] < time()) {
         $this->transport_message($start_owner_id, $message[3], $fleet_row['fleet_end_time'], $this->_lang['sys_mess_fleetback']);
         parent::restore_fleet($fleet_row, TRUE);
         parent::remove_fleet($fleet_row['fleet_id']);
     }
 }
Пример #2
0
 /**
  * method stay_mission
  * param $fleet_row
  * return the stay result
  */
 public function stayMission($fleet_row)
 {
     if ($fleet_row['fleet_mess'] == 0) {
         if ($fleet_row['fleet_start_time'] <= time()) {
             $transport_check = parent::$db->queryFetch("SELECT pc1.`planet_user_id` AS start_id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpc1.`planet_name` AS start_name,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpc2.`planet_user_id` AS target_id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpc2.`planet_name` AS target_name\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tFROM " . PLANETS . " AS pc1, " . PLANETS . " AS pc2\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE pc1.planet_ = '" . $fleet_row['fleet_start_galaxy'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpc1.`planet_system` = '" . $fleet_row['fleet_start_system'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpc1.`planet_planet` = '" . $fleet_row['fleet_start_planet'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpc1.`planet_type` = '" . $fleet_row['fleet_start_type'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpc2.`planet_galaxy` = '" . $fleet_row['fleet_end_galaxy'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpc2.`planet_system` = '" . $fleet_row['fleet_end_system'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpc2.`planet_planet` = '" . $fleet_row['fleet_end_planet'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpc2.`planet_type` = '" . $fleet_row['fleet_end_type'] . "'");
             // SOME REQUIRED VALUES
             $start_name = $transport_check['start_id'];
             $start_owner_id = $transport_check['start_name'];
             $target_name = $transport_check['target_id'];
             $target_owner_id = $transport_check['target_name'];
             // DIFFERENT TYPES OF MESSAGES
             $message[1] = sprintf($this->_lang['sys_tran_mess_owner'], $target_name, FleetsLib::target_link($fleet_row, ''), $fleet_row['fleet_resource_metal'], $this->_lang['Metal'], $fleet_row['fleet_resource_crystal'], $this->_lang['Crystal'], $fleet_row['fleet_resource_deuterium'], $this->_lang['Deuterium']);
             $message[2] = sprintf($this->_lang['sys_tran_mess_user'], $start_name, FleetsLib::start_link($fleet_row, ''), $target_name, FleetsLib::target_link($fleet_row, ''), $fleet_row['fleet_resource_metal'], $this->_lang['Metal'], $fleet_row['fleet_resource_crystal'], $this->_lang['Crystal'], $fleet_row['fleet_resource_deuterium'], $this->_lang['Deuterium']);
             $message[3] = sprintf($this->_lang['sys_tran_mess_back'], $start_name, FleetsLib::start_link($fleet_row, ''));
             $this->stay_message($start_owner_id, $message[1], $fleet_row['fleet_start_time'], $this->_lang['sys_mess_transport']);
             $this->stay_message($target_owner_id, $message[2], $fleet_row['fleet_start_time'], $this->_lang['sys_mess_transport']);
             $this->start_stay($fleet_row['fleet_id']);
         }
         if ($fleet_row['fleet_end_stay'] <= time()) {
             parent::return_fleet($fleet_row['fleet_id']);
         }
     }
     if ($fleet_row['fleet_end_time'] < time()) {
         $this->stay_message($start_owner_id, $message, $fleet_row['fleet_end_time'], $this->_lang['sys_mess_fleetback']);
         parent::restore_fleet($fleet_row, TRUE);
         parent::remove_fleet($fleet_row['fleet_id']);
     }
 }
Пример #3
0
 /**
  * method recycle_mission
  * param $fleet_row
  * return the recycle result
  */
 public function recycleMission($fleet_row)
 {
     if ($fleet_row['fleet_mess'] == '0') {
         if ($fleet_row['fleet_start_time'] <= time()) {
             $recycled_resources = $this->calculate_capacity($fleet_row);
             parent::$db->query("UPDATE " . PLANETS . ", " . FLEETS . " SET\n\t\t\t\t\t\t\t\t\t\t`planet_debris_metal` = `planet_debris_metal` - '" . $recycled_resources['metal'] . "',\n\t\t\t\t\t\t\t\t\t\t`planet_debris_crystal` = `planet_debris_crystal` - '" . $recycled_resources['crystal'] . "',\n\t\t\t\t\t\t\t\t\t\t`fleet_resource_metal` = `fleet_resource_metal` + '" . $recycled_resources['metal'] . "',\n\t\t\t\t\t\t\t\t\t\t`fleet_resource_crystal` = `fleet_resource_crystal` + '" . $recycled_resources['crystal'] . "',\n\t\t\t\t\t\t\t\t\t\t`fleet_mess` = '1'\n\t\t\t\t\t\t\t\t\t\tWHERE `planet_galaxy` = '" . $fleet_row['fleet_end_galaxy'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t`planet_system` = '" . $fleet_row['fleet_end_system'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t`planet_planet` = '" . $fleet_row['fleet_end_planet'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t`planet_type` = 1 AND\n\t\t\t\t\t\t\t\t\t\t\t\t`fleet_id` = '" . (int) $fleet_row['fleet_id'] . "'");
             $message = sprintf($this->_lang['sys_recy_gotten'], FormatLib::pretty_number($recycled_resources['metal']), $this->_lang['Metal'], FormatLib::pretty_number($recycled_resources['crystal']), $this->_lang['Crystal']);
             $this->recycle_message($fleet_row['fleet_owner'], $message, $fleet_row['fleet_start_time'], $this->_lang['sys_recy_report']);
         }
     } elseif ($fleet_row['fleet_end_time'] <= time()) {
         $message = sprintf($this->_lang['sys_tran_mess_owner'], $TargetName, FleetsLib::target_link($fleet_row, ''), FormatLib::pretty_number($fleet_row['fleet_resource_metal']), $this->_lang['Metal'], FormatLib::pretty_number($fleet_row['fleet_resource_crystal']), $this->_lang['Crystal'], FormatLib::pretty_number($fleet_row['fleet_resource_deuterium']), $this->_lang['Deuterium']);
         $this->recycle_message($fleet_row['fleet_owner'], $message, $fleet_row['fleet_end_time'], $this->_lang['sys_mess_fleetback']);
         parent::restore_fleet($fleet_row, TRUE);
         parent::remove_fleet($fleet_row['fleet_id']);
     }
 }
Пример #4
0
 /**
  * deployMission
  *
  * @param array $fleet_row Fleet row
  *
  * @return void
  */
 public function deployMission($fleet_row)
 {
     if ($fleet_row['fleet_mess'] == 0) {
         if ($fleet_row['fleet_start_time'] <= time()) {
             $target_coords = sprintf($this->_lang['sys_adress_planet'], $fleet_row['fleet_end_galaxy'], $fleet_row['fleet_end_system'], $fleet_row['fleet_end_planet']);
             $target_resources = sprintf($this->_lang['sys_stay_mess_goods'], $this->_lang['Metal'], FormatLib::pretty_number($fleet_row['fleet_resource_metal']), $this->_lang['Crystal'], FormatLib::pretty_number($fleet_row['fleet_resource_crystal']), $this->_lang['Deuterium'], FormatLib::pretty_number($fleet_row['fleet_resource_deuterium']));
             $target_message = $this->_lang['sys_stay_mess_start'] . "<a href=\"game.php?page=galaxy&mode=3&galaxy=" . $fleet_row['fleet_end_galaxy'] . "&system=" . $fleet_row['fleet_end_system'] . "\">";
             $target_message .= $target_coords . "</a>" . $this->_lang['sys_stay_mess_end'] . "<br />" . $target_resources;
             FunctionsLib::send_message($fleet_row['fleet_target_owner'], '', $fleet_row['fleet_start_time'], 5, $this->_lang['sys_mess_qg'], $this->_lang['sys_stay_mess_stay'], $target_message);
             parent::restore_fleet($fleet_row, false);
             parent::remove_fleet($fleet_row['fleet_id']);
         }
     } else {
         if ($fleet_row['fleet_end_time'] <= time()) {
             $target_coords = sprintf($this->_lang['sys_adress_planet'], $fleet_row['fleet_start_galaxy'], $fleet_row['fleet_start_system'], $fleet_row['fleet_start_planet']);
             $target_resources = sprintf($this->_lang['sys_stay_mess_goods'], $this->_lang['Metal'], FormatLib::pretty_number($fleet_row['fleet_resource_metal']), $this->_lang['Crystal'], FormatLib::pretty_number($fleet_row['fleet_resource_crystal']), $this->_lang['Deuterium'], FormatLib::pretty_number($fleet_row['fleet_resource_deuterium']));
             $target_message = $this->_lang['sys_stay_mess_back'] . "<a href=\"game.php?page=galaxy&mode=3&galaxy=" . $fleet_row['fleet_start_galaxy'] . "&system=" . $fleet_row['fleet_start_system'] . "\">";
             $target_message .= $target_coords . "</a>" . $this->_lang['sys_stay_mess_bend'] . "<br />" . $target_resources;
             FunctionsLib::send_message($fleet_row['fleet_owner'], '', $fleet_row['fleet_end_time'], 5, $this->_lang['sys_mess_qg'], $this->_lang['sys_mess_fleetback'], $target_message);
             parent::restore_fleet($fleet_row, true);
             parent::remove_fleet($fleet_row['fleet_id']);
         }
     }
 }
Пример #5
0
 /**
  * method missile_mission
  * param $fleet_row
  * return the missile result
  */
 public function missileMission($fleet_row)
 {
     if ($fleet_row['fleet_start_time'] <= time()) {
         if ($fleet_row['fleet_mess'] == 0) {
             $attacker_data = parent::$db->queryFetch("SELECT p.`planet_name`, r.`research_weapons_technology`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tFROM " . PLANETS . " AS p\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN " . RESEARCH . " AS r ON r.research_user_id = p.planet_user_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE `planet_galaxy` = " . $fleet_row['fleet_start_galaxy'] . " AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`planet_system` = " . $fleet_row['fleet_start_system'] . " AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`planet_planet` = " . $fleet_row['fleet_start_planet'] . " AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`planet_type` = " . $fleet_row['fleet_start_type'] . ";");
             $target_data = parent::$db->queryFetch("SELECT p.`planet_id`, p.`planet_name`, p.`planet_user_id`, d.*, r.`research_shielding_technology`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tFROM " . PLANETS . " AS p\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN " . DEFENSES . " AS d ON d.defense_planet_id = p.`planet_id`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN " . RESEARCH . " AS r ON r.research_user_id = p.planet_user_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE `planet_galaxy` = " . $fleet_row['fleet_end_galaxy'] . " AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`planet_system` = " . $fleet_row['fleet_end_system'] . " AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`planet_planet` = " . $fleet_row['fleet_end_planet'] . " AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`planet_type` = " . $fleet_row['fleet_end_type'] . ";");
             if ($target_data['defense_anti-ballistic_missile'] >= $fleet_row['fleet_amount']) {
                 $message = $this->_lang['ma_all_destroyed'] . '<br>';
                 $amount = $fleet_row['fleet_amount'];
             } else {
                 $amount = 0;
                 if ($target_data['defense_anti-ballistic_missile'] > 0) {
                     $message = $target_data['defense_anti-ballistic_missile'] . $this->_lang['ma_some_destroyed'] . " <br>";
                 }
                 $attack = floor(($fleet_row['fleet_amount'] - $target_data['defense_anti-ballistic_missile']) * ($this->_combat_caps[503]['attack'] * (1 + $attacker_data['research_weapons_technology'] / 10)));
                 $attack_order = $this->set_attack_order($fleet_row['fleet_target_obj']);
                 $destroyed_query = '';
                 // PROCESS THE MISSILE ATTACK
                 for ($t = 0; $t < count($attack_order); $t++) {
                     $n = $attack_order[$t];
                     if ($target_data[$this->_resource[$n]]) {
                         $defense = ($this->_pricelist[$n]['metal'] + parent::$_pricelist[$n]['crystal']) / 10 * (1 + $target_data['research_shielding_technology'] / 10);
                         if ($attack >= $defense * $target_data[$this->_resource[$n]]) {
                             $destroyed = $target_data[$this->_resource[$n]];
                         } else {
                             $destroyed = floor($attack / $defense);
                         }
                         $attack -= $destroyed * $defense;
                         if ($destroyed != 0) {
                             $message .= $this->_lang['tech'][$n] . " (-" . $destroyed . ")<br>";
                             $destroyed_query .= "`" . $this->_resource[$n] . "` = `" . $this->_resource[$n] . "` - " . $destroyed . ",";
                         }
                     }
                 }
                 if ($destroyed_query != '') {
                     parent::$db->query("UPDATE " . DEFENSES . " SET\n\t\t\t\t\t\t\t\t\t\t\t\t{$destroyed_query}\n\t\t\t\t\t\t\t\t\t\t\t\t`defense_anti-ballistic_missile` = '" . $amount . "'\n\t\t\t\t\t\t\t\t\t\t\t\tWHERE defense_planet_id = " . $target_data['id']);
                 }
             }
             $search = array('%1%', '%2%', '%3%');
             $replace = array($fleet_row['fleet_amount'], $attacker_data['planet_name'] . ' [' . $fleet_row['fleet_start_galaxy'] . ':' . $fleet_row['fleet_start_system'] . ':' . $fleet_row['fleet_start_planet'] . '] ', $target_data['name'] . ' [' . $fleet_row['fleet_end_galaxy'] . ':' . $fleet_row['fleet_end_system'] . ':' . $fleet_row['fleet_end_planet'] . '] ');
             $message_vorlage = str_replace($search, $replace, $this->_lang['ma_missile_string']);
             if (empty($message) or $message == '') {
                 $message = $this->_lang['ma_planet_without_defens'];
             }
             FunctionsLib::send_message($target_data['planet_user_id'], '', $fleet_row['fleet_end_time'], 5, $this->_lang['sys_mess_tower'], $this->_lang['gl_missile_attack'], $message_vorlage . $message);
             parent::remove_fleet($fleet_row['fleet_id']);
         }
     }
 }
Пример #6
0
 /**
  * method colonize_mission
  * param $fleet_row
  * return the colonization result
  */
 public function colonizeMission($fleet_row)
 {
     if ($fleet_row['fleet_mess'] == 0) {
         $colonization_check = parent::$db->queryFetch("SELECT\n                                                                                                                                    (SELECT COUNT(*)\n                                                                                                                                            FROM " . PLANETS . " AS pc1\n                                                                                                                                            WHERE pc1.`planet_user_id` = '" . $fleet_row['fleet_owner'] . "' AND\n                                                                                                                                                            pc1.`planet_type` = '1' AND\n                                                                                                                                                            pc1.`planet_destroyed` = '0') AS planet_count,\n                                                                                                                                    (SELECT COUNT(*)\n                                                                                                                                            FROM " . PLANETS . " AS pc2\n                                                                                                                                            WHERE pc2.`planet_galaxy` = '" . $fleet_row['fleet_end_galaxy'] . "' AND\n                                                                                                                                                            pc2.`planet_system` = '" . $fleet_row['fleet_end_system'] . "' AND\n                                                                                                                                                            pc2.`planet_planet` = '" . $fleet_row['fleet_end_planet'] . " AND\n                                                                                                                                                            pc2.`planet_type` = 1') AS galaxy_count,\n                                                                                                                                    (SELECT `research_astrophysics`\n                                                                                                                                            FROM " . RESEARCH . "\n                                                                                                                                            WHERE `research_user_id` = '" . $fleet_row['fleet_owner'] . "') AS astro_level");
         // SOME REQUIRED VALUES
         $target_coords = sprintf($this->_lang['sys_adress_planet'], $fleet_row['fleet_end_galaxy'], $fleet_row['fleet_end_system'], $fleet_row['fleet_end_planet']);
         $max_colonies = FleetsLib::get_max_colonies($colonization_check['astro_level']);
         $planet_count = $colonization_check['planet_count'] - 1;
         // THE TOTAL AMOUNT OF PLANETS MINUS 1 (BECAUSE THE MAIN PLANET IT'S NOT CONSIDERED)
         // DIFFERENT TYPES OF MESSAGES
         $message[1] = $this->_lang['sys_colo_arrival'] . $target_coords . $this->_lang['sys_colo_maxcolo'] . ($max_colonies + 1) . $this->_lang['sys_colo_planet'];
         $message[2] = $this->_lang['sys_colo_arrival'] . $target_coords . $this->_lang['sys_colo_allisok'];
         $message[3] = $this->_lang['sys_colo_arrival'] . $target_coords . $this->_lang['sys_colo_notfree'];
         $message[4] = $this->_lang['sys_colo_arrival'] . $target_coords . $this->_lang['sys_colo_astro_level'];
         if ($colonization_check['galaxy_count'] == 0) {
             if ($planet_count >= $max_colonies) {
                 $this->colonize_message($fleet_row['fleet_owner'], $message[1], $fleet_row['fleet_start_time']);
                 parent::return_fleet($fleet_row['fleet_id']);
             } elseif (!$this->position_allowed($fleet_row['fleet_end_planet'], $colonization_check['astro_level'])) {
                 $this->colonize_message($fleet_row['fleet_owner'], $message[4], $fleet_row['fleet_start_time']);
                 parent::return_fleet($fleet_row['fleet_id']);
             } else {
                 if ($this->start_creation($fleet_row)) {
                     $this->colonize_message($fleet_row['fleet_owner'], $message[2], $fleet_row['fleet_start_time']);
                     if ($fleet_row['fleet_amount'] == 1) {
                         parent::$db->query("UPDATE " . USERS_STATISTICS . " AS us SET\n                                                                                                    us.`user_statistic_ships_points` = us.`user_statistic_ships_points` - " . StatisticsLib::calculate_points(208, 1) . "\n                                                                                                    WHERE us.`user_statistic_user_id` = (SELECT p.planet_user_id FROM " . PLANETS . " AS p\n                                                                                                                                                                                    WHERE p.planet_galaxy = '" . $fleet_row['fleet_start_galaxy'] . "' AND\n                                                                                                                                                                                                    p.planet_system = '" . $fleet_row['fleet_start_system'] . "' AND\n                                                                                                                                                                                                    p.planet_planet = '" . $fleet_row['fleet_start_planet'] . "' AND\n                                                                                                                                                                                                    p.planet_type = '" . $fleet_row['fleet_start_type'] . "');");
                         parent::store_resources($fleet_row);
                         parent::remove_fleet($fleet_row['fleet_id']);
                     } else {
                         parent::store_resources($fleet_row);
                         parent::$db->query("UPDATE " . FLEETS . ", " . USERS_STATISTICS . " SET\n                                                                                                    `fleet_array` = '" . $this->build_new_fleet($fleet_row['fleet_array']) . "',\n                                                                                                    `fleet_amount` = `fleet_amount` - 1,\n                                                                                                    `fleet_resource_metal` = '0',\n                                                                                                    `fleet_resource_crystal` = '0',\n                                                                                                    `fleet_resource_deuterium` = '0',\n                                                                                                    `fleet_mess` = '1',\n                                                                                                    `user_statistic_ships_points` = `user_statistic_ships_points` - " . StatisticsLib::calculate_points(208, 1) . "\n                                                                                                    WHERE `fleet_id` = '" . $fleet_row['fleet_id'] . "' AND\n                                                                                                                    `user_statistic_user_id` = (SELECT planet_user_id FROM " . PLANETS . "\n                                                                                                                                                                                    WHERE planet_galaxy = '" . $fleet_row['fleet_start_galaxy'] . "' AND\n                                                                                                                                                                                                    planet_system = '" . $fleet_row['fleet_start_system'] . "' AND\n                                                                                                                                                                                                    planet_planet = '" . $fleet_row['fleet_start_planet'] . "' AND\n                                                                                                                                                                                                    planet_type = '" . $fleet_row['fleet_start_type'] . "');");
                     }
                 } else {
                     $this->colonize_message($fleet_row['fleet_owner'], $message[3], $fleet_row['fleet_end_time']);
                     parent::return_fleet($fleet_row['fleet_id']);
                 }
             }
         } else {
             $this->colonize_message($fleet_row['fleet_owner'], $message[3], $fleet_row['fleet_end_time']);
             parent::return_fleet($fleet_row['fleet_id']);
         }
     }
     if ($fleet_row['fleet_end_time'] < time()) {
         parent::restore_fleet($fleet_row, TRUE);
         parent::remove_fleet($fleet_row['fleet_id']);
     }
 }
Пример #7
0
 /**
  * method hazard_nothing
  * param $fleet_row
  * return the nothing hazard result
  */
 private function hazard_nothing($fleet_row)
 {
     $this->expedition_message($fleet_row['fleet_owner'], $message, $fleet_row['fleet_end_stay'], $this->_lang['sys_expe_nothing_' . mt_rand(1, 2)]);
     parent::return_fleet($fleet_row['fleet_id']);
 }
Пример #8
0
 /**
  * attackMission
  *
  * @param array $fleet_row Fleet row
  *
  * @return void
  */
 public function attackMission($fleet_row)
 {
     // null == use default handlers
     $errorHandler = null;
     $exceptionHandler = null;
     $target_planet = parent::$db->queryFetch("SELECT *\n            FROM " . PLANETS . " AS p\n            INNER JOIN " . BUILDINGS . " AS b ON b.building_planet_id = p.`planet_id`\n            INNER JOIN " . SHIPS . " AS s ON s.ship_planet_id = p.`planet_id`\n            INNER JOIN " . DEFENSES . " AS d ON d.defense_planet_id = p.`planet_id`\n            WHERE `planet_galaxy` = " . (int) $fleet_row['fleet_end_galaxy'] . " AND\n                `planet_system` = " . (int) $fleet_row['fleet_end_system'] . " AND\n                `planet_type` = " . (int) $fleet_row['fleet_end_type'] . " AND\n                `planet_planet` = " . (int) $fleet_row['fleet_end_planet'] . ";");
     if ($fleet_row['fleet_mess'] == 0 && $fleet_row['fleet_start_time'] <= time()) {
         // require several stuff
         require XGP_ROOT . VENDOR_PATH . 'battle_engine' . DIRECTORY_SEPARATOR . 'utils' . DIRECTORY_SEPARATOR . 'includer.php';
         // require language implementation
         require XGP_ROOT . LIB_PATH . 'missions' . DIRECTORY_SEPARATOR . 'attackLang.php';
         // set language for the reports
         LangManager::getInstance()->setImplementation(new AttackLang($this->_lang));
         if ($fleet_row['fleet_group'] > 0) {
             parent::$db->query("DELETE FROM `" . ACS_FLEETS . "`\n                    WHERE `acs_fleet_id` = '" . (int) $fleet_row['fleet_group'] . "'");
             parent::$db->query("UPDATE `" . FLEETS . "` SET\n                    `fleet_mess` = '1'\n                    WHERE `fleet_group` = '" . $fleet_row['fleet_group'] . "'");
         } else {
             parent::return_fleet($fleet_row['fleet_id']);
         }
         $targetUser = parent::$db->queryFetch("SELECT u.*,\n                    r.*,\n                    pr.*\n                FROM " . USERS . " AS u\n                    INNER JOIN " . RESEARCH . " AS r ON r.research_user_id = u.user_id\n                    INNER JOIN " . PREMIUM . " AS pr ON pr.premium_user_id = u.user_id\n                WHERE u.user_id = '" . intval($target_planet['planet_user_id']) . "';");
         $target_userID = $targetUser['user_id'];
         UpdateResourcesLib::updateResources($targetUser, $target_planet, time());
         //----------------------- prepare players for battle ----------------------
         // attackers fleet sum
         $attackers = new PlayerGroup();
         // If we have a ACS attack
         if ($fleet_row['fleet_group'] != 0) {
             $fleets = parent::$db->queryFetch("SELECT * FROM `" . FLEETS . "` WHERE `fleet_group` = '" . $fleet_row['fleet_group'] . "';");
             $attackers = $this->getPlayerGroupFromQuery($fleets);
         } else {
             $attackers = $this->getPlayerGroup($fleet_row);
         }
         // defenders fleet sum
         $def = parent::$db->query("SELECT * FROM `" . FLEETS . "` \n                WHERE `fleet_end_galaxy` = '" . $fleet_row['fleet_end_galaxy'] . "' AND \n                    `fleet_end_system` = '" . $fleet_row['fleet_end_system'] . "' AND \n                    `fleet_end_type` = '" . $fleet_row['fleet_end_type'] . "' AND \n                    `fleet_end_planet` = '" . $fleet_row['fleet_end_planet'] . "' AND\n                    `fleet_start_time` < '" . time() . "' AND \n                    `fleet_end_stay` >= '" . time() . "';");
         $defenders = $this->getPlayerGroupFromQuery($def, $targetUser);
         //defenses sum
         $homeFleet = new HomeFleet(0);
         for ($i = self::DEFENSE_MIN_ID; $i < self::DEFENSE_MAX_ID; $i++) {
             if (isset($this->_resource[$i]) && isset($target_planet[$this->_resource[$i]])) {
                 if ($target_planet[$this->_resource[$i]] != 0) {
                     $homeFleet->addShipType($this->getShipType($i, $target_planet[$this->_resource[$i]]));
                 }
             }
         }
         for ($i = self::SHIP_MIN_ID; $i < self::SHIP_MAX_ID; $i++) {
             if (isset($this->_resource[$i]) && isset($target_planet[$this->_resource[$i]])) {
                 if ($target_planet[$this->_resource[$i]] != 0) {
                     $homeFleet->addShipType($this->getShipType($i, $target_planet[$this->_resource[$i]]));
                 }
             }
         }
         if (!$defenders->existPlayer($target_userID)) {
             $player = new Player($target_userID, array($homeFleet));
             $player->setTech($targetUser['research_weapons_technology'], $targetUser['research_shielding_technology'], $targetUser['research_armour_technology']);
             $player->setName($targetUser['user_name']);
             $defenders->addPlayer($player);
         } else {
             $defenders->getPlayer($target_userID)->addDefense($homeFleet);
         }
         //-------------------------------------------------------------------------
         //------------------------------ battle -----------------------------------
         $battle = new Battle($attackers, $defenders);
         $startBattle = DebugManager::runDebugged(array($battle, 'startBattle'), $errorHandler, $exceptionHandler);
         $startBattle();
         //-------------------------------------------------------------------------
         //-------------------------- after battle stuff ---------------------------
         $report = $battle->getReport();
         $steal = $this->updateAttackers($report->getPresentationAttackersFleetOnRound('START'), $report->getAfterBattleAttackers(), $target_planet);
         $report->setSteal($steal);
         $this->updateDefenders($report->getPresentationDefendersFleetOnRound('START'), $report->getAfterBattleDefenders(), $target_planet, $steal);
         $this->updateDebris($fleet_row, $report);
         $this->updateMoon($fleet_row, $report, '', $target_userID, $target_planet);
         $this->sendMessage($fleet_row, $report);
     } elseif ($fleet_row['fleet_end_time'] <= time()) {
         $message = sprintf($this->_lang['sys_fleet_won'], $target_planet['planet_name'], FleetsLib::target_link($fleet_row, ''), FormatLib::pretty_number($fleet_row['fleet_resource_metal']), $this->_lang['Metal'], FormatLib::pretty_number($fleet_row['fleet_resource_crystal']), $this->_lang['Crystal'], FormatLib::pretty_number($fleet_row['fleet_resource_deuterium']), $this->_lang['Deuterium']);
         FunctionsLib::send_message($fleet_row['fleet_owner'], '', $fleet_row['fleet_end_time'], 1, $this->_lang['sys_mess_tower'], $this->_lang['sys_mess_fleetback'], $message);
         parent::restore_fleet($fleet_row);
         parent::remove_fleet($fleet_row['fleet_id']);
     }
 }
Пример #9
0
 /**
  * method destroy_mission
  * param $fleet_row
  * return the transport result
  */
 public function destroyMission($fleet_row)
 {
     if ($fleet_row['fleet_mess'] == 0 && $fleet_row['fleet_start_time'] <= time()) {
         $current_data = parent::$db->queryFetch("SELECT p.planet_name, r.research_weapons_technology, r.research_shielding_technology, r.research_armour_technology, u.user_name, u.user_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tFROM " . PLANETS . " AS p\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN " . USERS . " AS u ON u.user_id = p.planet_user_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN " . PREMIUM . " AS pr ON pr.premium_user_id = p.planet_user_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN " . RESEARCH . " AS r ON r.research_user_id = p.planet_user_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE p.`planet_galaxy` = " . $fleet_row['fleet_start_galaxy'] . " AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.`planet_system` = " . $fleet_row['fleet_start_system'] . " AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.`planet_planet` = " . $fleet_row['fleet_start_planet'] . " AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.`planet_type` = " . $fleet_row['fleet_start_type'] . ";");
         $target_data = parent::$db->queryFetch("SELECT s.*, d.*, p.`planet_id`, p.planet_diameter, p.planet_user_id, u.user_name, u.user_current_planet, r.research_weapons_technology, r.research_shielding_technology, r.research_armour_technology\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tFROM " . PLANETS . " AS p\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN " . SHIPS . " AS s ON s.ship_planet_id = p.`planet_id`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN " . DEFENSES . " AS d ON d.defense_planet_id = p.`planet_id`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN " . USERS . " AS u ON u.user_id = p.planet_user_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN " . PREMIUM . " AS pr ON pr.premium_user_id = p.planet_user_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN " . RESEARCH . " AS r ON r.research_user_id = p.planet_user_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE p.`planet_galaxy` = '" . $fleet_row['fleet_end_galaxy'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.`planet_system` = '" . $fleet_row['fleet_end_system'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.`planet_planet` = '" . $fleet_row['fleet_end_planet'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.`planet_type` = '" . $fleet_row['fleet_end_type'] . "';");
         for ($SetItem = 200; $SetItem < 500; $SetItem++) {
             if ($target_data[$this->_resource[$SetItem]] > 0) {
                 $target_ships[$SetItem]['count'] = $target_data[$this->_resource[$SetItem]];
             }
         }
         $TheFleet = explode(";", $fleet_row['fleet_array']);
         foreach ($TheFleet as $a => $b) {
             if ($b != '') {
                 $a = explode(",", $b);
                 $current_ships[$a[0]]['count'] = $a[1];
             }
         }
         $attack = $this->attack($current_ships, $target_ships, $current_data, $target_data);
         $current_ships = $attack['attacker'];
         $target_ships = $attack['enemy'];
         $FleetResult = $attack['win'];
         $dane_do_rw = $attack['data_for_rw'];
         $zlom = $attack['debris'];
         $FleetArray = '';
         $FleetAmount = 0;
         $FleetStorage = 0;
         foreach ($current_ships as $Ship => $Count) {
             $FleetStorage += $this->_pricelist[$Ship]['capacity'] * $Count['count'];
             $FleetArray .= $Ship . "," . $Count['count'] . ";";
             $FleetAmount += $Count['count'];
         }
         $TargetPlanetUpd = "";
         if (!is_null($target_ships)) {
             foreach ($target_ships as $Ship => $Count) {
                 $TargetPlanetUpd .= "`" . $this->_resource[$Ship] . "` = '" . $Count['count'] . "', ";
             }
         }
         if ($FleetResult == "a") {
             $destructionl1 = 100 - sqrt($target_data['planet_diameter']);
             $destructionl21 = $destructionl1 * sqrt($current_ships['214']['count']);
             $destructionl2 = $destructionl21 / 1;
             if ($destructionl2 > 100) {
                 $chance = '100';
             } else {
                 $chance = round($destructionl2);
             }
             $tirage = mt_rand(0, 100);
             $probalune = sprintf($this->_lang['sys_destruc_lune'], $chance);
             if ($tirage <= $chance) {
                 $resultat = '1';
                 $finmess = $this->_lang['sys_destruc_reussi'];
                 parent::$db->query("UPDATE " . FLEETS . " AS f1 SET\n\t\t\t\t\t\t\t\t\t\t\tf1.`fleet_start_type` = '1'\n\t\t\t\t\t\t\t\t\t\t\tWHERE f1.`fleet_start_galaxy` = '" . $fleet_row['fleet_end_galaxy'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t\tf1.`fleet_start_system` = '" . $fleet_row['fleet_end_system'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t\tf1.`fleet_start_planet` = '" . $fleet_row['fleet_end_planet'] . "';");
                 parent::$db->query("UPDATE " . FLEETS . " AS f2 SET\n\t\t\t\t\t\t\t\t\t\t\tf2.`fleet_end_type` = '1'\n\t\t\t\t\t\t\t\t\t\t\tWHERE f2.`fleet_end_galaxy` = '" . $fleet_row['fleet_end_galaxy'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t\tf2.`fleet_end_system` = '" . $fleet_row['fleet_end_system'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t\tf2.`fleet_end_planet` = '" . $fleet_row['fleet_end_planet'] . "';");
                 parent::$db->query("UPDATE " . PLANETS . " AS p SET\n\t\t\t\t\t\t\t\t\t\t\t`planet_destroyed` = '" . time() . "'\n\t\t\t\t\t\t\t\t\t\t\tWHERE p.`planet_id` = '" . $target_data['id'] . "';");
                 if ($target_data['user_current_planet'] == $target_data['id']) {
                     parent::$db->query("UPDATE " . USERS . " SET\n\t\t\t\t\t\t\t\t\t\t\t\t`user_current_planet` = (SELECT `planet_id`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tFROM " . PLANETS . "\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE `planet_galaxy` = '" . $fleet_row['fleet_end_galaxy'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`planet_system` = '" . $fleet_row['fleet_end_system'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`planet_planet` = '" . $fleet_row['fleet_end_planet'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t`planet_type` = '1')\n\t\t\t\t\t\t\t\t\t\t\t\tWHERE `user_id` = '" . $target_data['planet_user_id'] . "';");
                 }
             } else {
                 $resultat = '0';
             }
             $destructionrip = sqrt($target_data['planet_diameter']) / 2;
             $chance2 = round($destructionrip);
             if ($resultat == 0) {
                 $tirage2 = mt_rand(0, 100);
                 $probarip = sprintf($this->_lang['sys_destruc_rip'], $chance2);
                 if ($tirage2 <= $chance2) {
                     $resultat2 = ' detruite 1';
                     $finmess = $this->_lang['sys_destruc_echec'];
                     parent::remove_fleet($fleet_row['fleet_id']);
                 } else {
                     $resultat2 = 'sauvees 0';
                     $finmess = $this->_lang['sys_destruc_null'];
                 }
             }
         }
         $introdestruc = sprintf($this->_lang['sys_destruc_mess'], $current_data['planet_name'], $fleet_row['fleet_start_galaxy'], $fleet_row['fleet_start_system'], $fleet_row['fleet_start_planet'], $fleet_row['fleet_end_galaxy'], $fleet_row['fleet_end_system'], $fleet_row['fleet_end_planet']);
         parent::$db->query("UPDATE " . PLANETS . " AS p\n\t\t\t\t\t\t\t\t\tINNER JOIN " . SHIPS . " AS s ON s.ship_planet_id = p.`planet_id`\n\t\t\t\t\t\t\t\t\tINNER JOIN " . DEFENSES . " AS d ON d.defense_planet_id = p.`planet_id` SET\n\t\t\t\t\t\t\t\t\t{$TargetPlanetUpd}\n\t\t\t\t\t\t\t\t\t`planet_metal` = `planet_metal` - '" . $Mining['metal'] . "',\n\t\t\t\t\t\t\t\t\t`planet_crystal` = `planet_crystal` - '" . $Mining['crystal'] . "',\n\t\t\t\t\t\t\t\t\t`planet_deuterium` = `planet_deuterium` - '" . $Mining['deuter'] . "',\n\t\t\t\t\t\t\t\t\t`planet_invisible_start_time` = '" . time() . "',\n\t\t\t\t\t\t\t\t\t`planet_debris_metal` = `planet_debris_metal` + '" . $zlom['metal'] . "',\n\t\t\t\t\t\t\t\t\t`planet_debris_crystal` = `planet_debris_crystal` + '" . $zlom['crystal'] . "'\n\t\t\t\t\t\t\t\t\tWHERE `planet_galaxy` = '" . $fleet_row['fleet_end_galaxy'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t`planet_system` = '" . $fleet_row['fleet_end_system'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t`planet_planet` = '" . $fleet_row['fleet_end_planet'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t`planet_type` = '" . $fleet_row['fleet_end_type'] . "';");
         $StrAttackerUnits = sprintf($this->_lang['sys_attacker_lostunits'], $zlom['attacker']);
         $StrDefenderUnits = sprintf($this->_lang['sys_defender_lostunits'], $zlom['enemy']);
         $StrRuins = sprintf($this->_lang['sys_gcdrunits'], $zlom['metal'], $this->_lang['Metal'], $zlom['crystal'], $this->_lang['Crystal']);
         $DebrisField = $StrAttackerUnits . "<br />" . $StrDefenderUnits . "<br />" . $StrRuins;
         $AttackDate = date("r", $fleet_row['fleet_start_time']);
         $title = sprintf($this->_lang['sys_destruc_title'], $AttackDate);
         $raport = "<center><table><tr><td>" . $title . "<br />";
         $zniszczony = FALSE;
         $a_zestrzelona = 0;
         $AttackTechon['A'] = $current_data['research_weapons_technology'] * 10;
         $AttackTechon['B'] = $current_data['research_shielding_technology'] * 10;
         $AttackTechon['C'] = $current_data['research_armour_technology'] * 10;
         $AttackerData = sprintf($this->_lang['sys_attack_attacker_pos'], $current_data['user_name'], $fleet_row['fleet_start_galaxy'], $fleet_row['fleet_start_system'], $fleet_row['fleet_start_planet']);
         $AttackerTech = sprintf($this->_lang['sys_attack_techologies'], $AttackTechon['A'], $AttackTechon['B'], $AttackTechon['C']);
         $DefendTechon['A'] = $target_data['research_weapons_technology'] * 10;
         $DefendTechon['B'] = $target_data['research_shielding_technology'] * 10;
         $DefendTechon['C'] = $target_data['research_armour_technology'] * 10;
         $DefenderData = sprintf($this->_lang['sys_attack_defender_pos'], $target_data['user_name'], $fleet_row['fleet_end_galaxy'], $fleet_row['fleet_end_system'], $fleet_row['fleet_end_planet']);
         $DefenderTech = sprintf($this->_lang['sys_attack_techologies'], $DefendTechon['A'], $DefendTechon['B'], $DefendTechon['C']);
         foreach ($dane_do_rw as $a => $b) {
             $raport .= "<table border=1 width=100%><tr><th><br /><center>" . $AttackerData . "<br />" . $AttackerTech . "<table border=1>";
             if ($b['attacker']['count'] > 0) {
                 $raport1 = "<tr><th>" . $this->_lang['sys_ship_type'] . "</th>";
                 $raport2 = "<tr><th>" . $this->_lang['sys_ship_count'] . "</th>";
                 $raport3 = "<tr><th>" . $this->_lang['sys_ship_weapon'] . "</th>";
                 $raport4 = "<tr><th>" . $this->_lang['sys_ship_shield'] . "</th>";
                 $raport5 = "<tr><th>" . $this->_lang['sys_ship_armour'] . "</th>";
                 foreach ($b['attacker'] as $Ship => $Data) {
                     if (is_numeric($Ship)) {
                         if ($Data['count'] > 0) {
                             $raport1 .= "<th>" . $this->_lang['tech_rc'][$Ship] . "</th>";
                             $raport2 .= "<th>" . $Data['count'] . "</th>";
                             $raport3 .= "<th>" . round($Data['attack'] / $Data['count']) . "</th>";
                             $raport4 .= "<th>" . round($Data['shield'] / $Data['count']) . "</th>";
                             $raport5 .= "<th>" . round($Data['defense'] / $Data['count']) . "</th>";
                         }
                     }
                 }
                 $raport1 .= "</tr>";
                 $raport2 .= "</tr>";
                 $raport3 .= "</tr>";
                 $raport4 .= "</tr>";
                 $raport5 .= "</tr>";
                 $raport .= $raport1 . $raport2 . $raport3 . $raport4 . $raport5;
             } else {
                 if ($a == 2) {
                     $a_zestrzelona = 1;
                 }
                 $zniszczony = TRUE;
                 $raport .= "<br />" . $this->_lang['sys_destroyed'];
             }
             $raport .= "</table></center></th></tr></table>";
             $raport .= "<table border=1 width=100%><tr><th><br /><center>" . $DefenderData . "<br />" . $DefenderTech . "<table border=1>";
             if ($b['enemy']['count'] > 0) {
                 $raport1 = "<tr><th>" . $this->_lang['sys_ship_type'] . "</th>";
                 $raport2 = "<tr><th>" . $this->_lang['sys_ship_count'] . "</th>";
                 $raport3 = "<tr><th>" . $this->_lang['sys_ship_weapon'] . "</th>";
                 $raport4 = "<tr><th>" . $this->_lang['sys_ship_shield'] . "</th>";
                 $raport5 = "<tr><th>" . $this->_lang['sys_ship_armour'] . "</th>";
                 foreach ($b['enemy'] as $Ship => $Data) {
                     if (is_numeric($Ship)) {
                         if ($Data['count'] > 0) {
                             $raport1 .= "<th>" . $this->_lang['tech_rc'][$Ship] . "</th>";
                             $raport2 .= "<th>" . $Data['count'] . "</th>";
                             $raport3 .= "<th>" . round($Data['attack'] / $Data['count']) . "</th>";
                             $raport4 .= "<th>" . round($Data['shield'] / $Data['count']) . "</th>";
                             $raport5 .= "<th>" . round($Data['defense'] / $Data['count']) . "</th>";
                         }
                     }
                 }
                 $raport1 .= "</tr>";
                 $raport2 .= "</tr>";
                 $raport3 .= "</tr>";
                 $raport4 .= "</tr>";
                 $raport5 .= "</tr>";
                 $raport .= $raport1 . $raport2 . $raport3 . $raport4 . $raport5;
             } else {
                 $zniszczony = TRUE;
                 $raport .= "<br />" . $this->_lang['sys_destroyed'];
             }
             $raport .= "</table></center></th></tr></table>";
             if ($zniszczony == FALSE && !($a == 8)) {
                 $AttackWaveStat = sprintf($this->_lang['sys_attack_attack_wave'], floor($b['attacker']['attack']), floor($b['enemy']['shield']));
                 $DefendWavaStat = sprintf($this->_lang['sys_attack_defend_wave'], floor($b['enemy']['attack']), floor($b['attacker']['shield']));
                 $raport .= "<br /><center>" . $AttackWaveStat . "<br />" . $DefendWavaStat . "</center>";
             }
         }
         switch ($FleetResult) {
             case "a":
                 $raport .= $this->_lang['sys_attacker_won'] . "<br />";
                 $raport .= $DebrisField . "<br />";
                 $raport .= $introdestruc . "<br />";
                 $raport .= $this->_lang['sys_destruc_mess1'];
                 $raport .= $finmess . "<br />";
                 $raport .= $probalune . "<br />";
                 $raport .= $probarip . "<br />";
                 break;
             case "r":
                 $raport .= $this->_lang['sys_both_won'] . "<br />";
                 $raport .= $DebrisField . "<br />";
                 $raport .= $introdestruc . "<br />";
                 $raport .= $this->_lang['sys_destruc_stop'] . "<br />";
                 break;
             case "w":
                 $raport .= $this->_lang['sys_defender_won'] . "<br />";
                 $raport .= $DebrisField . "<br />";
                 $raport .= $introdestruc . "<br />";
                 $raport .= $this->_lang['sys_destruc_stop'] . "<br />";
                 parent::remove_fleet($fleet_row['fleet_id']);
                 break;
         }
         $raport .= "</table>";
         $rid = md5($raport);
         $owners = $fleet_row['fleet_owner'] . "," . $target_data['planet_user_id'];
         parent::$db->query("INSERT INTO " . REPORTS . " SET\n\t\t\t\t\t\t\t\t\t`report_time` = UNIX_TIMESTAMP(),\n\t\t\t\t\t\t\t\t\t`report_owners` = '" . $owners . "',\n\t\t\t\t\t\t\t\t\t`report_rid` = '" . $rid . "',\n\t\t\t\t\t\t\t\t\t`report_destroyed` = '" . $a_zestrzelona . "',\n\t\t\t\t\t\t\t\t\t`report_content` = '" . addslashes($raport) . "';");
         $raport = "<a href=\"#\" OnClick=\\'f(\"game.php?page=CombatReport&report=" . $rid . "\", \"\");\\' >";
         $raport .= "<center>";
         $raport .= $this->set_report_color($FleetResult);
         $raport .= $this->_lang['sys_mess_destruc_report'] . " [" . $fleet_row['fleet_end_galaxy'] . ":" . $fleet_row['fleet_end_system'] . ":" . $fleet_row['fleet_end_planet'] . "] </font></a><br /><br />";
         $raport .= "<font color=\"red\">" . $this->_lang['sys_perte_attaquant'] . ": " . $zlom['attacker'] . "</font>";
         $raport .= "<font color=\"green\">   " . $this->_lang['sys_perte_defenseur'] . ":" . $zlom['enemy'] . "</font><br />";
         $raport .= $this->_lang['sys_debris'] . " " . $this->_lang['Metal'] . ":<font color=\"#adaead\">" . $zlom['metal'] . "</font>   " . $this->_lang['Crystal'] . ":<font color=\"#ef51ef\">" . $zlom['crystal'] . "</font><br /></center>";
         parent::$db->query("UPDATE " . FLEETS . " SET\n\t\t\t\t\t\t\t\t\t`fleet_amount` = '" . $FleetAmount . "',\n\t\t\t\t\t\t\t\t\t`fleet_array` = '" . $FleetArray . "',\n\t\t\t\t\t\t\t\t\t`fleet_mess` = '1'\n\t\t\t\t\t\t\t\t\tWHERE fleet_id = '" . (int) $fleet_row['fleet_id'] . "';");
         $this->destroy_message($current_data['id'], $raport, $fleet_row['fleet_start_time']);
         $raport2 = "<a href=\"#\" OnClick=\\'f(\"game.php?page=CombatReport&report=" . $rid . "\", \"\");\\' >";
         $raport2 .= "<center>";
         $raport2 .= $this->set_report_color($FleetResult, FALSE);
         $raport2 .= $this->_lang['sys_mess_destruc_report'] . " [" . $fleet_row['fleet_end_galaxy'] . ":" . $fleet_row['fleet_end_system'] . ":" . $fleet_row['fleet_end_planet'] . "] </font></a><br /><br />";
         $this->destroy_message($target_data['planet_user_id'], $raport2, $fleet_row['fleet_start_time']);
     } elseif ($fleet_row['fleet_mess'] == 1 && $fleet_row['fleet_end_time'] <= time()) {
         parent::restore_fleet($fleet_row, TRUE);
         parent::remove_fleet($fleet_row['fleet_id']);
     }
 }
Пример #10
0
 /**
  * method spy_mission
  * param $fleet_row
  * return the spy result
  */
 public function spyMission($fleet_row)
 {
     if ($fleet_row['fleet_mess'] == 0 && $fleet_row['fleet_start_time'] <= time()) {
         $current_data = parent::$db->queryFetch("SELECT p.planet_name, p.planet_galaxy, p.planet_system, p.planet_planet, u.user_name, r.research_espionage_technology, pr.premium_officier_technocrat\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tFROM " . PLANETS . " AS p\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN " . USERS . " AS u ON u.user_id = p.planet_user_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN " . PREMIUM . " AS pr ON pr.premium_user_id = p.planet_user_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN " . RESEARCH . " AS r ON r.research_user_id = p.planet_user_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE p.`planet_galaxy` = " . $fleet_row['fleet_start_galaxy'] . " AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.`planet_system` = " . $fleet_row['fleet_start_system'] . " AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.`planet_planet` = " . $fleet_row['fleet_start_planet'] . " AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.`planet_type` = " . $fleet_row['fleet_start_type'] . ";");
         $target_data = parent::$db->queryFetch("SELECT p.`planet_id`, p.planet_user_id, p.planet_name, p.planet_galaxy, p.planet_system, p.planet_planet, p.planet_metal, p.planet_crystal, p.planet_deuterium, p.planet_energy_max, s.*, d.*, b.*, r.*, pr.premium_officier_technocrat\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tFROM " . PLANETS . " AS p\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN " . SHIPS . " AS s ON s.ship_planet_id = p.`planet_id`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN " . DEFENSES . " AS d ON d.defense_planet_id = p.`planet_id`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN " . BUILDINGS . " AS b ON b.building_planet_id = p.`planet_id`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN " . USERS . " AS u ON u.user_id = p.planet_user_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN " . PREMIUM . " AS pr ON pr.premium_user_id = p.planet_user_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tINNER JOIN " . RESEARCH . " AS r ON r.research_user_id = p.planet_user_id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE p.`planet_galaxy` = '" . $fleet_row['fleet_end_galaxy'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.`planet_system` = '" . $fleet_row['fleet_end_system'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.`planet_planet` = '" . $fleet_row['fleet_end_planet'] . "' AND\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.`planet_type` = '" . $fleet_row['fleet_end_type'] . "';");
         $CurrentSpyLvl = OfficiersLib::getMaxEspionage($current_data['research_espionage_technology'], $current_data['premium_officier_technocrat']);
         $TargetSpyLvl = OfficiersLib::getMaxEspionage($target_data['research_espionage_technology'], $target_data['premium_officier_technocrat']);
         $fleet = explode(';', $fleet_row['fleet_array']);
         $fquery = '';
         parent::make_update($fleet_row, $fleet_row['fleet_end_galaxy'], $fleet_row['fleet_end_system'], $fleet_row['fleet_end_planet'], $fleet_row['fleet_end_type']);
         foreach ($fleet as $a => $b) {
             if ($b != '') {
                 $a = explode(",", $b);
                 if ($a[0] == "210") {
                     $LS = $a[1];
                     $SpyToolDebris = $LS * 300;
                     $MaterialsInfo = $this->spy_target($target_data, 0, $this->_lang['sys_spy_maretials']);
                     $Materials = $MaterialsInfo['String'];
                     $PlanetFleetInfo = $this->spy_target($target_data, 1, $this->_lang['sys_spy_fleet']);
                     $PlanetFleet = $Materials;
                     $PlanetFleet .= $PlanetFleetInfo['String'];
                     $PlanetDefenInfo = $this->spy_target($target_data, 2, $this->_lang['sys_spy_defenses']);
                     $PlanetDefense = $PlanetFleet;
                     $PlanetDefense .= $PlanetDefenInfo['String'];
                     $PlanetBuildInfo = $this->spy_target($target_data, 3, $this->_lang['tech'][0]);
                     $PlanetBuildings = $PlanetDefense;
                     $PlanetBuildings .= $PlanetBuildInfo['String'];
                     $TargetTechnInfo = $this->spy_target($target_data, 4, $this->_lang['tech'][100]);
                     $TargetTechnos = $PlanetBuildings;
                     $TargetTechnos .= $TargetTechnInfo['String'];
                     $TargetForce = $PlanetFleetInfo['Count'] * $LS / 4;
                     if ($TargetForce > 100) {
                         $TargetForce = 100;
                     }
                     $TargetChances = mt_rand(0, $TargetForce);
                     $SpyerChances = mt_rand(0, 100);
                     if ($TargetChances >= $SpyerChances) {
                         $DestProba = "<font color=\"red\">" . $this->_lang['sys_mess_spy_destroyed'] . "</font>";
                     } elseif ($TargetChances < $SpyerChances) {
                         $DestProba = sprintf($this->_lang['sys_mess_spy_lostproba'], $TargetChances);
                     }
                     $AttackLink = "<center>";
                     $AttackLink .= "<a href=\"game.php?page=fleet1&galaxy=" . $fleet_row['fleet_end_galaxy'] . "&system=" . $fleet_row['fleet_end_system'] . "";
                     $AttackLink .= "&planet=" . $fleet_row['fleet_end_planet'] . "&planettype=" . $fleet_row['fleet_end_type'] . "";
                     $AttackLink .= "&target_mission=1";
                     $AttackLink .= " \">" . $this->_lang['type_mission'][1] . "";
                     $AttackLink .= "</a></center>";
                     $MessageEnd = "<center>" . $DestProba . "</center>";
                     $spionage_difference = abs($CurrentSpyLvl - $TargetSpyLvl);
                     if ($TargetSpyLvl >= $CurrentSpyLvl) {
                         $ST = pow($spionage_difference, 2);
                         $resources = 1;
                         $fleet = $ST + 2;
                         $defense = $ST + 3;
                         $buildings = $ST + 5;
                         $tech = $ST + 7;
                     }
                     if ($CurrentSpyLvl > $TargetSpyLvl) {
                         $ST = pow($spionage_difference, 2) * -1;
                         $resources = 1;
                         $fleet = $ST + 2;
                         $defense = $ST + 3;
                         $buildings = $ST + 5;
                         $tech = $ST + 7;
                     }
                     if ($resources <= $LS) {
                         $SpyMessage = $Materials . "<br />" . $AttackLink . $MessageEnd;
                     }
                     if ($fleet <= $LS) {
                         $SpyMessage = $PlanetFleet . "<br />" . $AttackLink . $MessageEnd;
                     }
                     if ($defense <= $LS) {
                         $SpyMessage = $PlanetDefense . "<br />" . $AttackLink . $MessageEnd;
                     }
                     if ($buildings <= $LS) {
                         $SpyMessage = $PlanetBuildings . "<br />" . $AttackLink . $MessageEnd;
                     }
                     if ($tech <= $LS) {
                         $SpyMessage = $TargetTechnos . "<br />" . $AttackLink . $MessageEnd;
                     }
                     FunctionsLib::send_message($fleet_row['fleet_owner'], '', $fleet_row['fleet_start_time'], 0, $this->_lang['sys_mess_qg'], $this->_lang['sys_mess_spy_report'], $SpyMessage);
                     $TargetMessage = $this->_lang['sys_mess_spy_ennemyfleet'] . " " . $current_data['planet_name'];
                     $TargetMessage .= " <a href=\"game.php?page=galaxy&mode=3&galaxy=" . $current_data['planet_galaxy'] . "&system=" . $current_data['planet_system'] . "\">";
                     $TargetMessage .= "[" . $current_data['planet_galaxy'] . ":" . $current_data['planet_system'] . ":" . $current_data['planet_planet'] . "]</a> (" . $current_data['user_name'] . ") ";
                     $TargetMessage .= $this->_lang['sys_mess_spy_seen_at'] . " " . $target_data['planet_name'];
                     $TargetMessage .= " <a href=\"game.php?page=galaxy&mode=3&galaxy=" . $target_data['planet_galaxy'] . "&system=" . $target_data['planet_system'] . "\">";
                     $TargetMessage .= "[" . $target_data['planet_galaxy'] . ":" . $target_data['planet_system'] . ":" . $target_data['planet_planet'] . "]</a>.";
                     FunctionsLib::send_message($target_data['planet_user_id'], '', $fleet_row['fleet_start_time'], 0, $this->_lang['sys_mess_spy_control'], $this->_lang['sys_mess_spy_activity'], $TargetMessage . ' ' . sprintf($this->_lang['sys_mess_spy_lostproba'], $TargetChances));
                     if ($TargetChances >= $SpyerChances) {
                         parent::$db->query("UPDATE " . PLANETS . " SET\n\t\t\t\t\t\t\t\t\t\t\t\t\t`planet_invisible_start_time` = '" . time() . "',\n\t\t\t\t\t\t\t\t\t\t\t\t\t`planet_debris_crystal` = `planet_debris_crystal` + '" . (0 + $SpyToolDebris) . "'\n\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE `planet_id` = '" . $target_data['id'] . "';");
                         parent::remove_fleet($fleet_row['fleet_id']);
                     } else {
                         parent::return_fleet($fleet_row['fleet_id']);
                     }
                 }
             }
         }
     } elseif ($fleet_row['fleet_mess'] == 1 && $fleet_row['fleet_end_time'] <= time()) {
         parent::restore_fleet($fleet_row, TRUE);
         parent::remove_fleet($fleet_row['fleet_id']);
     }
 }