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; }
$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); }