Example #1
0
function AddShipyard($player_id, $planet_id, $gid, $value, $now = 0)
{
    global $db_prefix, $GlobalUni;
    $defmap = array(401, 402, 403, 404, 405, 406, 407, 408, 502, 503);
    if (in_array($gid, $defmap)) {
        UserLog($player_id, "DEFENSE", "Запустить постройку " . loca("NAME_{$gid}") . " ({$value}) на планете {$planet_id}");
    } else {
        UserLog($player_id, "SHIPYARD", "Запустить постройку " . loca("NAME_{$gid}") . " ({$value}) на планете {$planet_id}");
    }
    $techmap = array(202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 401, 402, 403, 404, 405, 406, 407, 408, 502, 503);
    if (!in_array($gid, $techmap)) {
        return;
    }
    $uni = $GlobalUni;
    if ($uni['freeze']) {
        return;
    }
    // Щитовые купола можно строить не более 1 единицы.
    if (($gid == 407 || $gid == 408) && $value > 1) {
        $value = 1;
    }
    $planet = GetPlanet($planet_id);
    // Если на планете уже есть щитовой купол, то не строим.
    if (($gid == 407 || $gid == 408) && $planet["d" . $gid] > 0) {
        return;
    }
    // Если в очереди уже строится купол такого же типа, то не добавлять ещё один купол в очередь.
    // Ограничить количество заказанных ракет уже строящимися
    $result = GetShipyardQueue($planet_id);
    $tasknum = dbrows($result);
    $rak_space = $planet['b44'] * 10 - ($planet['d502'] + 2 * $planet['d503']);
    while ($tasknum--) {
        $queue = dbarray($result);
        if ($queue['obj_id'] == 407 || $queue['obj_id'] == 408) {
            if ($queue['obj_id'] == $gid) {
                return;
            }
            // в очереди строится купол такого же типа.
        }
        if ($queue['obj_id'] == 502 || $queue['obj_id'] == 503) {
            if ($queue['obj_id'] == 502) {
                $rak_space -= $queue['level'];
            } else {
                $rak_space -= 2 * $queue['level'];
            }
        }
    }
    if ($gid == 502) {
        $value = min($rak_space, $value);
    }
    if ($gid == 503) {
        $value = min(floor($rak_space / 2), $value);
    }
    if ($value <= 0) {
        return;
    }
    $user = LoadUser($player_id);
    $res = ShipyardPrice($gid);
    $m = $res['m'];
    $k = $res['k'];
    $d = $res['d'];
    $e = $res['e'];
    $m *= $value;
    $k *= $value;
    $d *= $value;
    if (IsEnoughResources($planet, $m, $k, $d, $e) && ShipyardMeetRequirement($user, $planet, $gid)) {
        $speed = $uni['speed'];
        $now = ShipyardLatestTime($planet_id, $now);
        $shipyard = $planet["b21"];
        $nanits = $planet["b15"];
        $seconds = ShipyardDuration($gid, $shipyard, $nanits, $speed);
        // Списать ресурсы.
        AdjustResources($m, $k, $d, $planet_id, '-');
        AddQueue($player_id, "Shipyard", $planet_id, $gid, $value, $now, $seconds);
    }
}
 $d = $res['d'];
 $e = $res['e'];
 echo "<br>" . loca("SHORT_{$id}") . "<br>Стоимость:";
 if ($m) {
     echo " Металл: <b>" . nicenum($m) . "</b>";
 }
 if ($k) {
     echo " Кристалл: <b>" . nicenum($k) . "</b>";
 }
 if ($d) {
     echo " Дейтерий: <b>" . nicenum($d) . "</b>";
 }
 if ($e) {
     echo " Энергия: <b>" . nicenum($e) . "</b>";
 }
 $t = ShipyardDuration($id, $aktplanet['b21'], $aktplanet['b15'], $speed);
 echo "<br>Длительность: " . BuildDurationFormat($t) . "<br></th>";
 echo "<td class=k >";
 if (!$busy) {
     if (($id == 407 || $id == 408) && $aktplanet['d' . $id] > 0) {
         echo "<font color=#FF0000>Щитовой купол можно строить только 1 раз.</font>";
     } else {
         if (!ShipyardMeetRequirement($GlobalUser, $aktplanet, $id)) {
             echo "<font color=#FF0000>невозможно</font>";
         } else {
             if (IsEnoughResources($aktplanet, $m, $k, $d, $e)) {
                 echo "<input type=text name='fmenge[{$id}]' alt='" . loca("NAME_{$id}") . "' size=6 maxlength=6 value=0 tabindex=1> ";
                 if ($prem['commander'] && !($id == 407 || $id == 408)) {
                     if ($id == 502) {
                         $max = $aktplanet['b44'] * 10 - (2 * $aktplanet['d503'] + $aktplanet['d502']);
                     } else {
Example #3
0
function BotBuildFleet($obj_id, $n)
{
    global $db_prefix, $BotID, $BotNow, $GlobalUni;
    $user = LoadUser($BotID);
    $aktplanet = GetPlanet($user['aktplanet']);
    $text = AddShipyard($user['player_id'], $user['aktplanet'], $obj_id, $n, 0);
    if ($text === '') {
        $speed = $GlobalUni['speed'];
        $now = ShipyardLatestTime($aktplanet, $BotNow);
        $shipyard = $aktplanet["b21"];
        $nanits = $aktplanet["b15"];
        $seconds = ShipyardDuration($obj_id, $shipyard, $nanits, $speed);
        AddQueue($user['player_id'], "Shipyard", $aktplanet['planet_id'], $obj_id, $n, $now, $seconds);
        UpdatePlanetActivity($user['aktplanet'], $BotNow);
        return $seconds;
    } else {
        return 0;
    }
}