Exemple #1
0
function LaunchRockets($origin, $target, $seconds, $amount, $type)
{
    global $db_prefix;
    $uni = LoadUniverse();
    if ($uni['freeze']) {
        return;
    }
    if ($amount > $origin['d503']) {
        return;
    }
    // Нельзя запустить ракет больше чем имеется на планете
    $now = time();
    $prio = 200 + 20;
    // Списать МПР с планеты.
    $origin['d503'] -= $amount;
    SetPlanetDefense($origin['planet_id'], $origin);
    // Добавить ракетную атаку.
    $fleet_obj = array(null, $origin['owner_id'], 0, 0, 0, 0, 0, 20, $origin['planet_id'], $target['planet_id'], $seconds, 0, $amount, $type, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    $fleet_id = AddDBRow($fleet_obj, 'fleet');
    // Запись в лог
    $weeks = $now - 4 * (7 * 24 * 60 * 60);
    $query = "DELETE FROM " . $db_prefix . "fleetlogs WHERE start < {$weeks};";
    dbquery($query);
    $fleetlog = array(null, $origin['owner_id'], $target['owner_id'], 0, 0, 0, 0, 0, 0, 0, 0, 20, $seconds, 0, $now, $now + $seconds, $origin['g'], $origin['s'], $origin['p'], $origin['type'], $target['g'], $target['s'], $target['p'], $target['type'], $amount, $type, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
    AddDBRow($fleetlog, 'fleetlogs');
    // Добавить задание в глобальную очередь событий.
    AddQueue($origin['owner_id'], "Fleet", $fleet_id, 0, 0, $now, $seconds, $prio);
    return $fleet_id;
}
Exemple #2
0
                                                    $points = ($m + $k + $d) * $amount1;
                                                    AdjustStats($aktplanet['owner_id'], $points, 0, 0, '-');
                                                }
                                                $amount2 = min($aktplanet['d503'], intval($_POST['ab503']));
                                                if ($amount2 > 0) {
                                                    $aktplanet['d503'] -= $amount2;
                                                    $res = ShipyardPrice(503);
                                                    $m = $res['m'];
                                                    $k = $res['k'];
                                                    $d = $res['d'];
                                                    $e = $res['e'];
                                                    $points = ($m + $k + $d) * $amount2;
                                                    AdjustStats($aktplanet['owner_id'], $points, 0, 0, '-');
                                                }
                                                if ($amount1 + $amount2 > 0) {
                                                    SetPlanetDefense($aktplanet['planet_id'], $aktplanet);
                                                    RecalcRanks();
                                                }
                                            }
                                            ?>
    </th> 
   </tr> 
</table> 
Ваше хранилище может вмещать <?php 
                                            echo $rak_space / 2;
                                            ?>
 межпланетных ракет или <?php 
                                            echo $rak_space;
                                            ?>
 ракет-перехватчиков.<br><table border=0> 
function RocketAttack($fleet_id, $planet_id)
{
    global $UnitParam;
    $fleet = LoadFleet($fleet_id);
    $amount = $fleet['ipm_amount'];
    $primary = $fleet['ipm_target'];
    $origin = GetPlanet($fleet['start_planet']);
    $target = GetPlanet($planet_id);
    $origin_user = LoadUser($origin['owner_id']);
    $target_user = LoadUser($target['owner_id']);
    // Отбить атаку МПР перехватчиками
    $ipm = $amount;
    $abm = $target['d502'];
    $ipm = max(0, $ipm - $abm);
    $ipm_destroyed = $amount - $ipm;
    $target['d502'] -= $ipm_destroyed;
    $maxdamage = $ipm * 12000 * (1 + $origin_user['r109'] / 10);
    // Произвести атаку первичной цели
    if ($primary > 0 && $ipm > 0) {
        $armor = $UnitParam[$primary][0] * (1 + 0.1 * $target_user['r111']) / 10;
        $count = $target["d{$primary}"];
        $destroyed = min(floor($maxdamage / $armor), $count);
        $target["d{$primary}"] -= $destroyed;
        $maxdamage -= $destroyed * $armor;
        $maxdamage -= $destroyed;
    }
    // Расчитать потери обороны, если еще остались МПР
    if ($maxdamage > 0) {
        $defmap = array(401, 402, 403, 404, 405, 406, 407, 408, 502, 503);
        foreach ($defmap as $i => $id) {
            if ($id == $primary) {
                continue;
            }
            $armor = $UnitParam[$id][0] * (1 + 0.1 * $target_user['r111']) / 10;
            $count = $target["d{$id}"];
            if ($count == 0) {
                continue;
            }
            $destroyed = min(floor($maxdamage / $armor), $count);
            $target["d{$id}"] -= $destroyed;
            $maxdamage -= $destroyed * $armor;
            $maxdamage -= $destroyed;
            if ($maxdamage <= 0) {
                break;
            }
        }
    }
    // Записать назад потери обороны.
    SetPlanetDefense($planet_id, $target);
    // Изменить статистику игроков
    RecalcRanks();
    $text = "{$amount} ракетам из общего числа выпущенных ракет с планеты " . $origin['name'] . " <a href=# onclick=showGalaxy(" . $origin['g'] . "," . $origin['s'] . "," . $origin['p'] . "); >[" . $origin['g'] . ":" . $origin['s'] . ":" . $origin['p'] . "]</a>  ";
    $text .= "удалось попасть на Вашу планету " . $target['name'] . " <a href=# onclick=showGalaxy(" . $target['g'] . "," . $target['s'] . "," . $target['p'] . "); >[" . $target['g'] . ":" . $target['s'] . ":" . $target['p'] . "]</a> !<br>";
    if ($ipm_destroyed) {
        $text .= "{$ipm_destroyed} ракет(-ы) было уничтожено Вашими ракетами-перехватчиками<br>:<br>";
    }
    $defmap = array(503, 502, 408, 407, 406, 405, 404, 403, 402, 401);
    $text .= "<table width=400><tr><td class=c colspan=4>Поражённая оборона</td></tr>";
    $n = 0;
    foreach ($defmap as $i => $gid) {
        if ($n % 2 == 0) {
            $text .= "</tr>";
        }
        if ($target["d{$gid}"]) {
            $text .= "<td>" . loca("NAME_{$gid}") . "</td><td>" . nicenum($target["d{$gid}"]) . "</td>";
            $n++;
        }
    }
    $text .= "</table><br>\n";
    // Обновить активность на планете.
    $queue = GetFleetQueue($fleet_id);
    UpdatePlanetActivity($planet_id, $queue['end']);
    SendMessage($target_user['player_id'], "Командование флотом", "Ракетная атака", $text, 2);
}