Overview:
In the upcoming Post Blast server, missiles both nuclear and conventional are legal.
Thus i took a long time experimenting with ComputerCraft to safeguard everyone!
In the process i invented code to intercept incoming missiles about to destroy you.
Now that i have made it 99% Working, i am here today to release it to the world!
It features a peripheral/wireless/rednet based algorithim using a radar block.
It works just like any server-client program, through a peripheral connection.
1. Missile Detected by Powered Radar Source Block.
2. Radar Block outputs coordinates/redstone signal to a server computer.
3. Server Computer generates coordinates for interception of the missile.
4. Server Computer messages all active Anti-Ballistic Missile silo clients.
5. Anti-Ballistic Missile clients then launch chronologically at each missile.
6. Until all incoming threats are destroyed, it will keep firing the client/silos.
Radar => Anti-Ballistic Missile (ABM) Server => Client PC => ABM silo => Intercept
*Basically just shoots down incoming missiles with a Anti-Ballistic Missile*
ABM Server:
--[[Skynet Nuclear ABM Defense Program by Andrew2060]]--
--[ABM Server, use with http://pastebin.com/aNsduCem]]--
--[System requires atleast 5 CC's with Modems and ABMs]]--
--[System has 5% chance of failure in killing missiles]]--
--[[Settings]]--
local waitDelay = 2
local countersPerMissile = 1
local missileDelay = 3
--[[Initialization]]--
local silos, curSilo = {}, 1
peripheral.find("modem", rednet.open)
term.setBackgroundColor(colors.blue)
local function red()
term.setBackgroundColor(colors.red)
print(" ")
term.setBackgroundColor(colors.blue)
end
rednet.broadcast("ABM1")
repeat
local id, msg = rednet.receive(waitDelay)
if msg == "ABM" then table.insert(silos, id) end
until not id
--[[Main Programs]]--
while true do
if not redstone.getInput("back") then
term.clear()
term.setCursorPos(1, 1)
red()
print(" SKYNET DEFENSE SYSTEMS ACTIVATED ")
red()
print(" ANTI-BALLISTIC MISSILE SHIELD ONLINE ")
red()
red()
print(" [STANDBY ABM Silos] ")
for k, v in ipairs(silos) do print(" silo #" .. k .. " id = "..v) end
red()
repeat os.pullEvent("redstone") until redstone.getInput("back")
end
term.clear()
term.setCursorPos(1, 1)
term.setTextColor(colors.red)
print("Incoming Missiles:")
print("Firing CounterMeasures\n")
maptab = peripheral.call("back","getEntities")
maptxt = textutils.serialize(maptab)
if maptxt ~= "{}" then
allDat = 0
for num in pairs(maptab) do
allDat = allDat+1
end
targets = allDat/3
for i=0,targets-1 do
local msg = {["x"] = math.floor(maptab["x_"..i]), ["y"] = math.floor(maptab["y_"..i]), ["z"] = math.floor(maptab["z_"..i])}
print("Incoming Missile Threat #" .. i .. " at X:" .. msg.x .. " Y:" .. msg.y .. " Z:" .. msg.z)
print("Launching " .. countersPerMissile .. " ABM Missile CounterMeasures...\n")
for i = 1, countersPerMissile do
rednet.send(silos[curSilo], msg)
curSilo = (curSilo == #silos) and 1 or (curSilo + 1)
sleep(missileDelay)
end
sleep(0)
end
sleep(0)
end
sleep(2)
end
sleep(1)
ABM Client:
--Silo Launch PC, [working] [By Andrew2060]
--[[Settings]]--
local icbmSide = "back"
local armed = true
--set armed to false to disarm silo.
--[[Init]]--
local icbm = peripheral.wrap(icbmSide)
local masterID
peripheral.find("modem", rednet.open)
--[[Functions]]--
local function clear()
term.clear()
term.setCursorPos(1, 1)
end
--[[Main program]]--
clear()
while true do
print("Waiting for Threat Message")
id, msg, distance = rednet.receive(masterID)
if (msg == "ABM1") then
print(" master=", id)
masterID = id;
rednet.send(masterID, "ABM")
elseif type(msg) == "table" and id == masterID then
if type(msg.x) == "number" and type(msg.y) == "number" and type(msg.z) == "number" then
print(" launching CounterMeasures At x=" .. msg.x .. ", y=" .. msg.y .. ", z=" .. msg.z)
icbm.setTarget(msg.x, msg.y, msg.z)
if (armed) then
peripheral.call("back","launch")
end
else
print(" invalid table command")
end
else
print(" invalid msg '", msg, "' from '", id, "', distance=", distance)
end
end
This code is meant to be used with mekanism/DefenseTech Mods.
Such as found in my ModPack: http://www.technicpack.net/modpack/nuclear-revolution.689897
It is meant for peaceful purposes only, and only for base defense.
~Hope this helps!