}
        } 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";
/***** Скрипты. *****/
Exemple #2
0
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'] . "] -&gt; " . $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']);
}
Exemple #5
0
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']);
                    // удалить задание
                }
            }
        }
    }
}