} } else { if (isset($_POST['galaxyRight'])) { $coord_g++; if ($coord_g > $unitab['galaxies']) { $coord_g = $unitab['galaxies']; } } } } } $not_enough_deut = ($aktplanet['g'] != $coord_g || $aktplanet['s'] != $coord_s) && $aktplanet['d'] < 10; // Списать 10 дейтерия за просмотр не домашней системы (только для обычных пользователей) if (!$not_enough_deut && $GlobalUser['admin'] == 0) { if ($aktplanet['g'] != $coord_g || $aktplanet['s'] != $coord_s) { AdjustResources(0, 0, 10, $aktplanet['planet_id'], '-'); $aktplanet = GetPlanet($aktplanet['planet_id']); } } $result = EnumOwnFleetQueue($GlobalUser['player_id']); $nowfleet = dbrows($result); $maxfleet = $GlobalUser['r108'] + 1; $prem = PremiumStatus($GlobalUser); if ($prem['admiral']) { $maxfleet += 2; } PageHeader("galaxy", true); echo "<!-- CONTENT AREA -->\n"; echo "<div id='content'>\n"; echo "<center>\n\n"; /***** Скрипты. *****/
function ColonizationReturn($queue, $fleet_obj, $fleet, $origin, $target) { AdjustResources($fleet_obj['m'], $fleet_obj['k'], $fleet_obj['d'], $fleet_obj['start_planet'], '+'); AdjustShips($fleet, $fleet_obj['start_planet'], '+'); UpdatePlanetActivity($fleet_obj['start_planet'], $queue['end']); $origin_user = LoadUser($origin['owner_id']); loca_add("technames", $origin_user['lang']); $text = "Один из Ваших флотов ( " . FleetList($fleet) . " ), отправленных с <a href=# onclick=showGalaxy(" . $target['g'] . "," . $target['s'] . "," . $target['p'] . "); >[" . $target['g'] . ":" . $target['s'] . ":" . $target['p'] . "]</a>, " . "достигает " . $origin['name'] . " <a href=# onclick=showGalaxy(" . $origin['g'] . "," . $origin['s'] . "," . $origin['p'] . "); >[" . $origin['g'] . ":" . $origin['s'] . ":" . $origin['p'] . "]</a> . "; if ($fleet_obj['m'] + $fleet_obj['k'] + $fleet_obj['d'] != 0) { $text .= "Флот доставляет " . nicenum($fleet_obj['m']) . " металла, " . nicenum($fleet_obj['k']) . " кристалла и " . nicenum($fleet_obj['d']) . " дейтерия<br>"; } SendMessage($fleet_obj['owner_id'], "Командование флотом", "Возвращение флота", $text, 5, $queue['end']); // Удалить фантом колонизации. if ($target['type'] == 10002) { DestroyPlanet($target['planet_id']); } }
// Fleet lock $fleetlock = "temp/fleetlock_" . $aktplanet['planet_id']; if (file_exists($fleetlock)) { MyGoto("flotten1"); } $f = fopen($fleetlock, 'w'); fclose($f); $fleet_id = DispatchFleet($fleet, $origin, $target, $order, $flighttime, $cargo_m, $cargo_k, $cargo_d, $cons['fleet'] + $cons['probes'], time(), $union_id, $hold_time); $queue = GetFleetQueue($fleet_id); UserLog($aktplanet['owner_id'], "FLEET", "Отправка флота {$fleet_id}: " . GetMissionNameDebug($order) . " " . $origin['name'] . " [" . $origin['g'] . ":" . $origin['s'] . ":" . $origin['p'] . "] -> " . $target['name'] . " [" . $target['g'] . ":" . $target['s'] . ":" . $target['p'] . "]<br>" . DumpFleet($fleet) . "<br>" . "Время полёта: " . BuildDurationFormat($flighttime) . ", удержание: " . BuildDurationFormat($hold_time) . ", затраты дейтерия: " . nicenum($cons['fleet'] + $cons['probes']) . ", союз: " . $union_id); if ($union_id) { $union_time = UpdateUnionTime($union_id, $queue['end'], $fleet_id); UpdateFleetTime($fleet_id, $union_time); } // Поднять флот с планеты. AdjustResources($cargo_m, $cargo_k, $cargo_d + $cons['fleet'] + $cons['probes'], $origin['planet_id'], '-'); AdjustShips($fleet, $origin['planet_id'], '-'); unlink($fleetlock); // echo "<br>"; // print_r ( $queue); PageHeader("flottenversand", false, true, "flotten1", 1); ?> <!-- CONTENT AREA --> <div id='content'> <center> <script language="JavaScript" src="js/flotten.js"></script> <table width="519" border="0" cellpadding="0" cellspacing="1"> <tr height="20"> <td class="c" colspan="2">
function ExpeditionHold($queue, $fleet_obj, $fleet, $origin, $target) { global $loca_lang; global $GlobalUni; $exptab = LoadExpeditionSettings(); $hold_time = $fleet_obj['flight_time'] / 3600; loca_add("common", $GlobalUni['lang']); loca_add("technames", $GlobalUni['lang']); loca_add("expedition", $GlobalUni['lang']); // Событие экспедиции. $chance = mt_rand(0, 99); if ($chance < $exptab['chance_success'] + $hold_time) { $expcount = $target['m']; // счётчик посещений if ($expcount <= $exptab['depleted_min']) { $chance_depleted = 0; } else { if ($expcount <= $exptab['depleted_med']) { $chance_depleted = $exptab['chance_depleted_min']; } else { if ($expcount <= $exptab['depleted_max']) { $chance_depleted = $exptab['chance_depleted_med']; } else { $chance_depleted = $exptab['chance_depleted_max']; } } } $chance = mt_rand(0, 99); if ($chance >= $chance_depleted) { if ($chance >= $exptab['chance_alien']) { $text = Exp_BattleAliens($queue, $fleet_obj, $fleet, $origin, $target); } else { if ($chance >= $exptab['chance_pirates']) { $text = Exp_BattlePirates($queue, $fleet_obj, $fleet, $origin, $target); } else { if ($chance >= $exptab['chance_dm']) { $text = Exp_DarkMatterFound($queue, $fleet_obj, $fleet, $origin, $target); } else { if ($chance >= $exptab['chance_lost']) { $text = Exp_NothingHappens($queue, $fleet_obj, $fleet, $origin, $target); } else { if ($chance >= $exptab['chance_delay']) { $text = Exp_DelayFleet($queue, $fleet_obj, $fleet, $origin, $target); } else { if ($chance >= $exptab['chance_accel']) { $text = Exp_AccelFleet($queue, $fleet_obj, $fleet, $origin, $target); } else { if ($chance >= $exptab['chance_res']) { $text = Exp_ResourcesFound($queue, $fleet_obj, $fleet, $origin, $target); } else { if ($chance >= $exptab['chance_fleet']) { $text = Exp_FleetFound($queue, $fleet_obj, $fleet, $origin, $target); } else { $text = Exp_TraderFound($queue, $fleet_obj, $fleet, $origin, $target); } } } } } } } } } else { $text = Exp_NothingHappens($queue, $fleet_obj, $fleet, $origin, $target); } } else { $text = Exp_NothingHappens($queue, $fleet_obj, $fleet, $origin, $target); } // DEBUG //$text = Exp_FleetFound ($queue, $fleet_obj, $fleet, $origin, $target); // Обновляем счётчик посещений экспедиции на планете. AdjustResources(1, 0, 0, $target['planet_id'], '+'); // Бортовой журнал, дополнение связиста if ($fleet[210] > 0) { $text .= "\n<br/>\n<br/>\n" . Logbook($expcount, $exptab); } SendMessage($fleet_obj['owner_id'], "Командование флотом", "Результат экспедиции [" . $target['g'] . ":" . $target['s'] . ":" . $target['p'] . "]", $text, 3, $queue['end']); }
function StopResearch($player_id) { global $db_prefix, $GlobalUni; $uni = $GlobalUni; if ($uni['freeze']) { return; } // Получить очередь исследований. $result = GetResearchQueue($player_id); if ($result == null) { return; } // Исследование не ведется. $resq = dbarray($result); $id = $resq['obj_id']; $planet_id = $resq['sub_id']; $level = $resq['level']; // Получить стоимость исследования $user = LoadUser($player_id); $planet = GetPlanet($planet_id); if ($planet['owner_id'] != $player_id) { Error("Невозможно отменить исследование -" . loca("NAME_{$id}") . "-, игрока " . $user['oname'] . ", запущенное на чужой планете [" . $planet['g'] . ":" . $planet['s'] . ":" . $planet['p'] . "] " . $planet['name']); return; } $res = ResearchPrice($id, $level); $m = $res['m']; $k = $res['k']; $d = $res['d']; $e = $res['e']; // Вернуть ресурсы AdjustResources($m, $k, $d, $planet_id, '+'); RemoveQueue($resq['task_id']); UserLog($player_id, "RESEARCH", "Отменить исследование " . loca("NAME_{$id}")); }
function WritebackBattleResults($a, $d, $res, $repaired, $cm, $ck, $cd, $sum_cargo) { $fleetmap = array(202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215); $defmap = array(401, 402, 403, 404, 405, 406, 407, 408); global $db_prefix; // Бой с раундами. $rounds = count($res['rounds']); if ($rounds > 0) { $last = $res['rounds'][$rounds - 1]; foreach ($last['attackers'] as $i => $attacker) { $fleet_obj = LoadFleet($attacker['id']); $queue = GetFleetQueue($fleet_obj['fleet_id']); $origin = GetPlanet($fleet_obj['start_planet']); $target = GetPlanet($fleet_obj['target_planet']); $ships = 0; foreach ($fleetmap as $ii => $gid) { $ships += $attacker[$gid]; } if ($sum_cargo == 0) { $cargo = 0; } else { $cargo = (FleetCargoSummary($attacker) - ($fleet_obj['m'] + $fleet_obj['k'] + $fleet_obj['d']) - $fleet_obj['fuel']) / $sum_cargo; } if ($ships > 0) { if ($fleet_obj['mission'] == 9 && $res['result'] === "awon") { $result = GravitonAttack($fleet_obj, $attacker, $queue['end']); } else { $result = 0; } if ($result < 2) { DispatchFleet($attacker, $origin, $target, $fleet_obj['mission'] + 100, $fleet_obj['flight_time'], $fleet_obj['m'] + $cm * $cargo, $fleet_obj['k'] + $ck * $cargo, $fleet_obj['d'] + $cd * $cargo, $fleet_obj['fuel'] / 2, $queue['end']); } } } foreach ($last['defenders'] as $i => $defender) { if ($i == 0) { AdjustResources($cm, $ck, $cd, $defender['id'], '-'); $objects = array(); foreach ($fleetmap as $ii => $gid) { $objects["f{$gid}"] = $defender[$gid] ? $defender[$gid] : 0; } foreach ($defmap as $ii => $gid) { $objects["d{$gid}"] = $repaired[$gid] ? $repaired[$gid] : 0; $objects["d{$gid}"] += $defender[$gid]; } SetPlanetFleetDefense($defender['id'], $objects); } else { $ships = 0; foreach ($fleetmap as $ii => $gid) { $ships += $defender[$gid]; } if ($ships > 0) { SetFleet($defender['id'], $defender); } else { $queue = GetFleetQueue($defender['id']); DeleteFleet($defender['id']); // удалить флот RemoveQueue($queue['task_id']); // удалить задание } } } } else { foreach ($a as $i => $attacker) { $fleet_obj = LoadFleet($attacker['id']); $queue = GetFleetQueue($fleet_obj['fleet_id']); $origin = GetPlanet($fleet_obj['start_planet']); $target = GetPlanet($fleet_obj['target_planet']); $ships = 0; foreach ($fleetmap as $ii => $gid) { $ships += $attacker['fleet'][$gid]; } if ($sum_cargo == 0) { $cargo = 0; } else { $cargo = (FleetCargoSummary($attacker['fleet']) - ($fleet_obj['m'] + $fleet_obj['k'] + $fleet_obj['d']) - $fleet_obj['fuel']) / $sum_cargo; } if ($ships > 0) { if ($fleet_obj['mission'] == 9 && $res['result'] === "awon") { $result = GravitonAttack($fleet_obj, $attacker['fleet'], $queue['end']); } else { $result = 0; } if ($result < 2) { DispatchFleet($attacker['fleet'], $origin, $target, $fleet_obj['mission'] + 100, $fleet_obj['flight_time'], $fleet_obj['m'] + $cm * $cargo, $fleet_obj['k'] + $ck * $cargo, $fleet_obj['d'] + $cd * $cargo, $fleet_obj['fuel'] / 2, $queue['end']); } } } foreach ($d as $i => $defender) { if ($i == 0) { AdjustResources($cm, $ck, $cd, $defender['id'], '-'); $objects = array(); foreach ($fleetmap as $ii => $gid) { $objects["f{$gid}"] = $defender[$gid] ? $defender[$gid] : 0; } foreach ($defmap as $ii => $gid) { $objects["d{$gid}"] = $repaired[$gid] ? $repaired[$gid] : 0; $objects["d{$gid}"] += $defender[$gid]; } SetPlanetFleetDefense($defender['id'], $objects); } else { $ships = 0; foreach ($fleetmap as $ii => $gid) { $ships += $defender[$gid]; } if ($ships > 0) { SetFleet($defender['id'], $defender); } else { $queue = GetFleetQueue($defender['id']); DeleteFleet($defender['id']); // удалить флот RemoveQueue($queue['task_id']); // удалить задание } } } } }