17 changed files with 886 additions and 0 deletions
Binary file not shown.
@ -0,0 +1,39 @@ |
|||||||
|
local conf=fs.open('/etc/cnt.conf','r') |
||||||
|
local cn_table = {} |
||||||
|
line = conf.readLine() |
||||||
|
while line ~= nil do |
||||||
|
local name=string.sub(line,0,string.find(line, ' ')) |
||||||
|
address = tonumber(string.sub(line,string.find(line,' ')+1)) |
||||||
|
print(name..address) |
||||||
|
cn_table[name]=address |
||||||
|
line = conf.readLine() |
||||||
|
end |
||||||
|
|
||||||
|
|
||||||
|
print("Waiting for queries...") |
||||||
|
while 1 do |
||||||
|
local found=0 |
||||||
|
local senderId, message, distance = rednet.receive() |
||||||
|
query=textutils.unserialize(message) |
||||||
|
if query[1] == 'CNT' then |
||||||
|
print("Query of "..query[2].." from "..senderId) |
||||||
|
for key,value in pairs(cn_table) do |
||||||
|
tmp=query[2] |
||||||
|
if tonumber(tmp) ~= nil then |
||||||
|
if tonumber(value) == tonumber(tmp) then |
||||||
|
reply=textutils.serialize({"CNT",key}) |
||||||
|
found=1 |
||||||
|
end |
||||||
|
else |
||||||
|
if(string.find(key,tmp,0,true)) then |
||||||
|
reply=textutils.serialize({"CNT",value}) |
||||||
|
found=1 |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
if found ~= 1 then |
||||||
|
reply=textutils.serialize({"CNT",-1}) |
||||||
|
end |
||||||
|
rednet.send(senderId,reply) |
||||||
|
end |
||||||
|
end |
||||||
@ -0,0 +1,20 @@ |
|||||||
|
conf = fs.open('/etc/ftpd.conf','r') |
||||||
|
export_path = conf.readLine() |
||||||
|
|
||||||
|
while 1 do |
||||||
|
local senderId, message, distance = rednet.receive() |
||||||
|
query=textutils.unserialize(message) |
||||||
|
if query[1] == 'FTP' then |
||||||
|
print('Got request for '..query[2]..' from '..senderId) |
||||||
|
if fs.exists(export_path..query[2]) then |
||||||
|
local reply_file = fs.open(export_path..query[2],'r') |
||||||
|
reply_file=reply_file.readAll() |
||||||
|
reply = textutils.serialize({'FTP',1,reply_file}) |
||||||
|
rednet.send(senderId,reply) |
||||||
|
else |
||||||
|
reply=textutils.serialize({'FTP',0}) |
||||||
|
rednet.send(senderId,reply) |
||||||
|
end |
||||||
|
|
||||||
|
end |
||||||
|
end |
||||||
@ -0,0 +1,159 @@ |
|||||||
|
local tArgs = { ... } |
||||||
|
if #tArgs ~= 2 then |
||||||
|
print( "Usage: layPipe <direction> <length>" ) |
||||||
|
return |
||||||
|
end |
||||||
|
|
||||||
|
-- Mine in a quarry pattern until we hit something we can't dig |
||||||
|
local length = tonumber( tArgs[2] ) |
||||||
|
local direction = tostring( tArgs[1] ) |
||||||
|
if length < 1 then |
||||||
|
print( "Tunnel length must be positive" ) |
||||||
|
return |
||||||
|
end |
||||||
|
|
||||||
|
local collected = 0 |
||||||
|
|
||||||
|
local function tryPlaceTorch() |
||||||
|
turtle.select(2) |
||||||
|
turtle.place() |
||||||
|
end |
||||||
|
|
||||||
|
|
||||||
|
local function collect() |
||||||
|
collected = collected + 1 |
||||||
|
if math.fmod(collected, 25) == 0 then |
||||||
|
print( "Mined "..collected.." items." ) |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
local function tryDig() |
||||||
|
while turtle.detect() do |
||||||
|
if turtle.dig() then |
||||||
|
collect() |
||||||
|
sleep(0.5) |
||||||
|
else |
||||||
|
return false |
||||||
|
end |
||||||
|
end |
||||||
|
return true |
||||||
|
end |
||||||
|
|
||||||
|
local function tryDigUp() |
||||||
|
while turtle.detectUp() do |
||||||
|
if turtle.digUp() then |
||||||
|
collect() |
||||||
|
sleep(0.5) |
||||||
|
else |
||||||
|
return false |
||||||
|
end |
||||||
|
end |
||||||
|
return true |
||||||
|
end |
||||||
|
|
||||||
|
local function refuel() |
||||||
|
local fuelLevel = turtle.getFuelLevel() |
||||||
|
if fuelLevel == "unlimited" or fuelLevel > 0 then |
||||||
|
return |
||||||
|
end |
||||||
|
|
||||||
|
local function tryRefuel() |
||||||
|
for n=1,16 do |
||||||
|
if turtle.getItemCount(n) > 0 then |
||||||
|
turtle.select(n) |
||||||
|
if turtle.refuel(1) then |
||||||
|
turtle.select(1) |
||||||
|
return true |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
turtle.select(1) |
||||||
|
return false |
||||||
|
end |
||||||
|
|
||||||
|
if not tryRefuel() then |
||||||
|
print( "Add more fuel to continue." ) |
||||||
|
while not tryRefuel() do |
||||||
|
sleep(1) |
||||||
|
end |
||||||
|
print( "Resuming Tunnel." ) |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
local function tryUp() |
||||||
|
refuel() |
||||||
|
while not turtle.up() do |
||||||
|
if turtle.detectUp() then |
||||||
|
if not tryDigUp() then |
||||||
|
return false |
||||||
|
end |
||||||
|
elseif turtle.attackUp() then |
||||||
|
collect() |
||||||
|
else |
||||||
|
sleep( 0.5 ) |
||||||
|
end |
||||||
|
end |
||||||
|
return true |
||||||
|
end |
||||||
|
|
||||||
|
local function tryDown() |
||||||
|
refuel() |
||||||
|
while not turtle.down() do |
||||||
|
if turtle.detectDown() then |
||||||
|
if not tryDigDown() then |
||||||
|
return false |
||||||
|
end |
||||||
|
elseif turtle.attackDown() then |
||||||
|
collect() |
||||||
|
else |
||||||
|
sleep( 0.5 ) |
||||||
|
end |
||||||
|
end |
||||||
|
return true |
||||||
|
end |
||||||
|
|
||||||
|
local function tryForward() |
||||||
|
refuel() |
||||||
|
while not turtle.forward() do |
||||||
|
if turtle.detect() then |
||||||
|
if not tryDig() then |
||||||
|
return false |
||||||
|
end |
||||||
|
elseif turtle.attack() then |
||||||
|
collect() |
||||||
|
else |
||||||
|
sleep( 0.5 ) |
||||||
|
end |
||||||
|
end |
||||||
|
return true |
||||||
|
end |
||||||
|
|
||||||
|
|
||||||
|
for n=1,length do |
||||||
|
|
||||||
|
if direction=="up" then |
||||||
|
tryUp() |
||||||
|
turtle.select(2) |
||||||
|
turtle.placeDown() |
||||||
|
end |
||||||
|
if direction=="down" then |
||||||
|
tryDown() |
||||||
|
turtle.select(2) |
||||||
|
turtle.placeUp() |
||||||
|
end |
||||||
|
if direction=="forward" then |
||||||
|
tryForward() |
||||||
|
turtle.select(2) |
||||||
|
turtle.turnRight() |
||||||
|
turtle.turnRight() |
||||||
|
turtle.place() |
||||||
|
turtle.turnRight() |
||||||
|
turtle.turnRight() |
||||||
|
end |
||||||
|
|
||||||
|
end |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
print( "Tunnel complete." ) |
||||||
@ -0,0 +1,182 @@ |
|||||||
|
local tArgs = { ... } |
||||||
|
if #tArgs ~= 1 then |
||||||
|
print( "Usage: tunnel <length>" ) |
||||||
|
return |
||||||
|
end |
||||||
|
|
||||||
|
-- Mine in a quarry pattern until we hit something we can't dig |
||||||
|
local length = tonumber( tArgs[1] ) |
||||||
|
if length < 1 then |
||||||
|
print( "Tunnel length must be positive" ) |
||||||
|
return |
||||||
|
end |
||||||
|
|
||||||
|
local depth = 0 |
||||||
|
local collected = 0 |
||||||
|
|
||||||
|
local function tryPlaceTorch() |
||||||
|
turtle.select(2) |
||||||
|
turtle.place() |
||||||
|
end |
||||||
|
|
||||||
|
|
||||||
|
local function collect() |
||||||
|
collected = collected + 1 |
||||||
|
if math.fmod(collected, 25) == 0 then |
||||||
|
print( "Mined "..collected.." items." ) |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
local function tryDig() |
||||||
|
while turtle.detect() do |
||||||
|
if turtle.dig() then |
||||||
|
collect() |
||||||
|
sleep(0.5) |
||||||
|
else |
||||||
|
return false |
||||||
|
end |
||||||
|
end |
||||||
|
return true |
||||||
|
end |
||||||
|
|
||||||
|
local function tryDigUp() |
||||||
|
while turtle.detectUp() do |
||||||
|
if turtle.digUp() then |
||||||
|
collect() |
||||||
|
sleep(0.5) |
||||||
|
else |
||||||
|
return false |
||||||
|
end |
||||||
|
end |
||||||
|
return true |
||||||
|
end |
||||||
|
|
||||||
|
local function refuel() |
||||||
|
local fuelLevel = turtle.getFuelLevel() |
||||||
|
if fuelLevel == "unlimited" or fuelLevel > 0 then |
||||||
|
return |
||||||
|
end |
||||||
|
|
||||||
|
local function tryRefuel() |
||||||
|
for n=1,16 do |
||||||
|
if turtle.getItemCount(n) > 0 then |
||||||
|
turtle.select(n) |
||||||
|
if turtle.refuel(1) then |
||||||
|
turtle.select(1) |
||||||
|
return true |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
turtle.select(1) |
||||||
|
return false |
||||||
|
end |
||||||
|
|
||||||
|
if not tryRefuel() then |
||||||
|
print( "Add more fuel to continue." ) |
||||||
|
while not tryRefuel() do |
||||||
|
sleep(1) |
||||||
|
end |
||||||
|
print( "Resuming Tunnel." ) |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
local function tryUp() |
||||||
|
refuel() |
||||||
|
while not turtle.up() do |
||||||
|
if turtle.detectUp() then |
||||||
|
if not tryDigUp() then |
||||||
|
return false |
||||||
|
end |
||||||
|
elseif turtle.attackUp() then |
||||||
|
collect() |
||||||
|
else |
||||||
|
sleep( 0.5 ) |
||||||
|
end |
||||||
|
end |
||||||
|
return true |
||||||
|
end |
||||||
|
|
||||||
|
local function tryDown() |
||||||
|
refuel() |
||||||
|
while not turtle.down() do |
||||||
|
if turtle.detectDown() then |
||||||
|
if not tryDigDown() then |
||||||
|
return false |
||||||
|
end |
||||||
|
elseif turtle.attackDown() then |
||||||
|
collect() |
||||||
|
else |
||||||
|
sleep( 0.5 ) |
||||||
|
end |
||||||
|
end |
||||||
|
return true |
||||||
|
end |
||||||
|
|
||||||
|
local function tryForward() |
||||||
|
refuel() |
||||||
|
while not turtle.forward() do |
||||||
|
if turtle.detect() then |
||||||
|
if not tryDig() then |
||||||
|
return false |
||||||
|
end |
||||||
|
elseif turtle.attack() then |
||||||
|
collect() |
||||||
|
else |
||||||
|
sleep( 0.5 ) |
||||||
|
end |
||||||
|
end |
||||||
|
return true |
||||||
|
end |
||||||
|
|
||||||
|
print( "Tunnelling..." ) |
||||||
|
|
||||||
|
for n=1,length do |
||||||
|
tryDigUp() |
||||||
|
turtle.turnLeft() |
||||||
|
tryDig() |
||||||
|
tryUp() |
||||||
|
tryDig() |
||||||
|
turtle.turnRight() |
||||||
|
turtle.turnRight() |
||||||
|
tryDig() |
||||||
|
tryDown() |
||||||
|
tryDig() |
||||||
|
turtle.turnLeft() |
||||||
|
|
||||||
|
if n<length then |
||||||
|
if n % 5 == 0 then |
||||||
|
turtle.turnRight() |
||||||
|
tryPlaceTorch() |
||||||
|
turtle.turnLeft() |
||||||
|
end |
||||||
|
tryDig() |
||||||
|
if not tryForward() then |
||||||
|
print( "Aborting Tunnel." ) |
||||||
|
break |
||||||
|
end |
||||||
|
else |
||||||
|
print( "Tunnel complete." ) |
||||||
|
end |
||||||
|
|
||||||
|
end |
||||||
|
|
||||||
|
|
||||||
|
print( "Returning to start..." ) |
||||||
|
|
||||||
|
-- Return to where we started |
||||||
|
turtle.turnLeft() |
||||||
|
turtle.turnLeft() |
||||||
|
while length > 0 do |
||||||
|
if tryForward() then |
||||||
|
length = length - 1 |
||||||
|
else |
||||||
|
turtle.dig() |
||||||
|
end |
||||||
|
end |
||||||
|
turtle.turnRight() |
||||||
|
turtle.turnRight() |
||||||
|
|
||||||
|
|
||||||
|
print( "Tunnel complete." ) |
||||||
|
print( "Mined "..collected.." items total." ) |
||||||
|
|
||||||
@ -0,0 +1,200 @@ |
|||||||
|
local tArgs = { ... } |
||||||
|
if #tArgs ~= 1 then |
||||||
|
print( "Usage: tunnel <length>" ) |
||||||
|
return |
||||||
|
end |
||||||
|
|
||||||
|
-- Mine in a quarry pattern until we hit something we can't dig |
||||||
|
local length = tonumber( tArgs[1] ) |
||||||
|
if length < 1 then |
||||||
|
print( "Tunnel length must be positive" ) |
||||||
|
return |
||||||
|
end |
||||||
|
|
||||||
|
local depth = 0 |
||||||
|
local collected = 0 |
||||||
|
|
||||||
|
local function tryPlaceTorch() |
||||||
|
turtle.select(2) |
||||||
|
turtle.place() |
||||||
|
end |
||||||
|
|
||||||
|
|
||||||
|
local function collect() |
||||||
|
collected = collected + 1 |
||||||
|
if math.fmod(collected, 25) == 0 then |
||||||
|
print( "Mined "..collected.." items." ) |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
local function tryDig() |
||||||
|
while turtle.detect() do |
||||||
|
if turtle.dig() then |
||||||
|
collect() |
||||||
|
sleep(0.5) |
||||||
|
else |
||||||
|
return false |
||||||
|
end |
||||||
|
end |
||||||
|
return true |
||||||
|
end |
||||||
|
|
||||||
|
local function tryDigUp() |
||||||
|
while turtle.detectUp() do |
||||||
|
if turtle.digUp() then |
||||||
|
collect() |
||||||
|
sleep(0.5) |
||||||
|
else |
||||||
|
return false |
||||||
|
end |
||||||
|
end |
||||||
|
return true |
||||||
|
end |
||||||
|
|
||||||
|
local function refuel() |
||||||
|
local fuelLevel = turtle.getFuelLevel() |
||||||
|
if fuelLevel == "unlimited" or fuelLevel > 0 then |
||||||
|
return |
||||||
|
end |
||||||
|
|
||||||
|
local function tryRefuel() |
||||||
|
for n=1,16 do |
||||||
|
if turtle.getItemCount(n) > 0 then |
||||||
|
turtle.select(n) |
||||||
|
if turtle.refuel(1) then |
||||||
|
turtle.select(1) |
||||||
|
return true |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
turtle.select(1) |
||||||
|
return false |
||||||
|
end |
||||||
|
|
||||||
|
if not tryRefuel() then |
||||||
|
print( "Add more fuel to continue." ) |
||||||
|
while not tryRefuel() do |
||||||
|
sleep(1) |
||||||
|
end |
||||||
|
print( "Resuming Tunnel." ) |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
local function tryUp() |
||||||
|
refuel() |
||||||
|
while not turtle.up() do |
||||||
|
if turtle.detectUp() then |
||||||
|
if not tryDigUp() then |
||||||
|
return false |
||||||
|
end |
||||||
|
elseif turtle.attackUp() then |
||||||
|
collect() |
||||||
|
else |
||||||
|
sleep( 0.5 ) |
||||||
|
end |
||||||
|
end |
||||||
|
return true |
||||||
|
end |
||||||
|
|
||||||
|
local function tryDown() |
||||||
|
refuel() |
||||||
|
while not turtle.down() do |
||||||
|
if turtle.detectDown() then |
||||||
|
if not tryDigDown() then |
||||||
|
return false |
||||||
|
end |
||||||
|
elseif turtle.attackDown() then |
||||||
|
collect() |
||||||
|
else |
||||||
|
sleep( 0.5 ) |
||||||
|
end |
||||||
|
end |
||||||
|
return true |
||||||
|
end |
||||||
|
|
||||||
|
local function tryForward() |
||||||
|
refuel() |
||||||
|
while not turtle.forward() do |
||||||
|
if turtle.detect() then |
||||||
|
if not tryDig() then |
||||||
|
return false |
||||||
|
end |
||||||
|
elseif turtle.attack() then |
||||||
|
collect() |
||||||
|
else |
||||||
|
sleep( 0.5 ) |
||||||
|
end |
||||||
|
end |
||||||
|
return true |
||||||
|
end |
||||||
|
|
||||||
|
local function tryPlace(slot) |
||||||
|
turtle.select(3) |
||||||
|
turtle.place() |
||||||
|
end |
||||||
|
|
||||||
|
local function tryPlaceUp(slot) |
||||||
|
turtle.select(3) |
||||||
|
turtle.placeUp() |
||||||
|
end |
||||||
|
|
||||||
|
local function tryPlaceDown(slot) |
||||||
|
turtle.select(3) |
||||||
|
turtle.placeDown() |
||||||
|
end |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
print( "Tunnelling..." ) |
||||||
|
|
||||||
|
local materialSlot = 3 |
||||||
|
|
||||||
|
for n=1,length do |
||||||
|
|
||||||
|
tryForward() |
||||||
|
tryPlaceDown() |
||||||
|
turtle.turnLeft() |
||||||
|
tryForward() |
||||||
|
tryPlaceDown(3) |
||||||
|
tryPlace(3) |
||||||
|
tryUp() |
||||||
|
tryPlace(3) |
||||||
|
tryPlaceUp(3) |
||||||
|
turtle.turnRight() |
||||||
|
turtle.turnRight() |
||||||
|
tryForward() |
||||||
|
tryPlaceUp(3) |
||||||
|
tryForward() |
||||||
|
tryPlaceUp(3) |
||||||
|
tryPlace(3) |
||||||
|
tryDown() |
||||||
|
tryPlace(3) |
||||||
|
tryPlaceDown(3) |
||||||
|
turtle.turnRight() |
||||||
|
turtle.turnRight() |
||||||
|
tryForward() |
||||||
|
turtle.turnRight() |
||||||
|
|
||||||
|
end |
||||||
|
|
||||||
|
|
||||||
|
print( "Returning to start..." ) |
||||||
|
|
||||||
|
-- Return to where we started |
||||||
|
turtle.turnLeft() |
||||||
|
turtle.turnLeft() |
||||||
|
while length > 0 do |
||||||
|
if tryForward() then |
||||||
|
length = length - 1 |
||||||
|
else |
||||||
|
turtle.dig() |
||||||
|
end |
||||||
|
end |
||||||
|
turtle.turnRight() |
||||||
|
turtle.turnRight() |
||||||
|
|
||||||
|
|
||||||
|
print( "Tunnel complete." ) |
||||||
|
print( "Mined "..collected.." items total." ) |
||||||
|
|
||||||
@ -0,0 +1,166 @@ |
|||||||
|
local tArgs = { ... } |
||||||
|
if #tArgs ~= 1 then |
||||||
|
print( "Usage: tunnel <length>" ) |
||||||
|
return |
||||||
|
end |
||||||
|
|
||||||
|
-- Mine in a quarry pattern until we hit something we can't dig |
||||||
|
local length = tonumber( tArgs[1] ) |
||||||
|
if length < 1 then |
||||||
|
print( "Tunnel length must be positive" ) |
||||||
|
return |
||||||
|
end |
||||||
|
|
||||||
|
local depth = 0 |
||||||
|
local collected = 0 |
||||||
|
|
||||||
|
local function tryPlaceTorch() |
||||||
|
turtle.select(2) |
||||||
|
turtle.place() |
||||||
|
end |
||||||
|
|
||||||
|
|
||||||
|
local function collect() |
||||||
|
collected = collected + 1 |
||||||
|
if math.fmod(collected, 25) == 0 then |
||||||
|
print( "Mined "..collected.." items." ) |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
local function tryDig() |
||||||
|
while turtle.detect() do |
||||||
|
if turtle.dig() then |
||||||
|
collect() |
||||||
|
sleep(0.5) |
||||||
|
else |
||||||
|
return false |
||||||
|
end |
||||||
|
end |
||||||
|
return true |
||||||
|
end |
||||||
|
|
||||||
|
local function tryDigUp() |
||||||
|
while turtle.detectUp() do |
||||||
|
if turtle.digUp() then |
||||||
|
collect() |
||||||
|
sleep(0.5) |
||||||
|
else |
||||||
|
return false |
||||||
|
end |
||||||
|
end |
||||||
|
return true |
||||||
|
end |
||||||
|
|
||||||
|
local function refuel() |
||||||
|
local fuelLevel = turtle.getFuelLevel() |
||||||
|
if fuelLevel == "unlimited" or fuelLevel > 0 then |
||||||
|
return |
||||||
|
end |
||||||
|
|
||||||
|
local function tryRefuel() |
||||||
|
for n=1,16 do |
||||||
|
if turtle.getItemCount(n) > 0 then |
||||||
|
turtle.select(n) |
||||||
|
if turtle.refuel(1) then |
||||||
|
turtle.select(1) |
||||||
|
return true |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
turtle.select(1) |
||||||
|
return false |
||||||
|
end |
||||||
|
|
||||||
|
if not tryRefuel() then |
||||||
|
print( "Add more fuel to continue." ) |
||||||
|
while not tryRefuel() do |
||||||
|
sleep(1) |
||||||
|
end |
||||||
|
print( "Resuming Tunnel." ) |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
local function tryUp() |
||||||
|
refuel() |
||||||
|
while not turtle.up() do |
||||||
|
if turtle.detectUp() then |
||||||
|
if not tryDigUp() then |
||||||
|
return false |
||||||
|
end |
||||||
|
elseif turtle.attackUp() then |
||||||
|
collect() |
||||||
|
else |
||||||
|
sleep( 0.5 ) |
||||||
|
end |
||||||
|
end |
||||||
|
return true |
||||||
|
end |
||||||
|
|
||||||
|
local function tryDown() |
||||||
|
refuel() |
||||||
|
while not turtle.down() do |
||||||
|
if turtle.detectDown() then |
||||||
|
if not tryDigDown() then |
||||||
|
return false |
||||||
|
end |
||||||
|
elseif turtle.attackDown() then |
||||||
|
collect() |
||||||
|
else |
||||||
|
sleep( 0.5 ) |
||||||
|
end |
||||||
|
end |
||||||
|
return true |
||||||
|
end |
||||||
|
|
||||||
|
local function tryForward() |
||||||
|
refuel() |
||||||
|
while not turtle.forward() do |
||||||
|
if turtle.detect() then |
||||||
|
if not tryDig() then |
||||||
|
return false |
||||||
|
end |
||||||
|
elseif turtle.attack() then |
||||||
|
collect() |
||||||
|
else |
||||||
|
sleep( 0.5 ) |
||||||
|
end |
||||||
|
end |
||||||
|
return true |
||||||
|
end |
||||||
|
|
||||||
|
print( "Tunnelling..." ) |
||||||
|
|
||||||
|
for n=1,length do |
||||||
|
tryForward() |
||||||
|
tryDigUp() |
||||||
|
if n % 5 == 0 then |
||||||
|
turtle.turnLeft() |
||||||
|
turtle.turnLeft() |
||||||
|
tryPlaceTorch() |
||||||
|
turtle.turnLeft() |
||||||
|
turtle.turnLeft() |
||||||
|
end |
||||||
|
|
||||||
|
end |
||||||
|
|
||||||
|
|
||||||
|
print( "Returning to start..." ) |
||||||
|
|
||||||
|
-- Return to where we started |
||||||
|
tryUp() |
||||||
|
turtle.turnLeft() |
||||||
|
turtle.turnLeft() |
||||||
|
while length > 0 do |
||||||
|
if tryForward() then |
||||||
|
length = length - 1 |
||||||
|
else |
||||||
|
turtle.dig() |
||||||
|
end |
||||||
|
end |
||||||
|
turtle.turnRight() |
||||||
|
turtle.turnRight() |
||||||
|
tryDown() |
||||||
|
|
||||||
|
print( "Tunnel complete." ) |
||||||
|
print( "Mined "..collected.." items total." ) |
||||||
|
|
||||||
@ -0,0 +1,33 @@ |
|||||||
|
os.loadAPI('/lib/cnt') |
||||||
|
local tArgs = { ... } |
||||||
|
if #tArgs < 1 then |
||||||
|
print( "Usage: getFile <remote_file> [local_file]" ) |
||||||
|
return |
||||||
|
end |
||||||
|
|
||||||
|
local r_filename = tArgs[1] |
||||||
|
local l_filename = shell.resolve(fs.getName(r_filename)) |
||||||
|
|
||||||
|
print(l_filename) |
||||||
|
|
||||||
|
tmp = fs.open('/etc/ftp.conf','r') |
||||||
|
local fileserver = tostring(tmp.readLine()) |
||||||
|
fs_id = cnt.lookup(fileserver) |
||||||
|
message=textutils.serialize({'FTP',r_filename}) |
||||||
|
|
||||||
|
rednet.send(fs_id,message) |
||||||
|
local senderId, reply, distance = rednet.receive() |
||||||
|
reply = textutils.unserialize(reply) |
||||||
|
while senderId ~= fs_id and reply[1] ~= 'FTP' do |
||||||
|
local senderId, reply, distance = rednet.receive() |
||||||
|
reply = textutils.unserialize(reply) |
||||||
|
end |
||||||
|
|
||||||
|
if reply[2] > 0 then |
||||||
|
|
||||||
|
l_file=fs.open(l_filename,'w') |
||||||
|
l_file.write(reply[3]) |
||||||
|
l_file.close() |
||||||
|
else |
||||||
|
print("File not found: "..r_filename) |
||||||
|
end |
||||||
@ -0,0 +1,9 @@ |
|||||||
|
fs.makeDir('/etc') |
||||||
|
fs.makeDir('/lib') |
||||||
|
fs.makeDir('/bin') |
||||||
|
|
||||||
|
fs.copy('/disk/misc/startup','/startup') |
||||||
|
fs.copy('/disk/etc/resolv.conf','/etc/resolv.conf') |
||||||
|
fs.copy('/disk/etc/ftp.conf','/etc/ftp.conf') |
||||||
|
fs.copy('/disk/lib/cnt','/lib/cnt') |
||||||
|
fs.copy('/disk/bin/utils','/bin/utils') |
||||||
@ -0,0 +1,10 @@ |
|||||||
|
fs.makeDir('/etc') |
||||||
|
fs.makeDir('/lib') |
||||||
|
fs.makeDir('/bin') |
||||||
|
|
||||||
|
fs.copy('/disk/misc/startup','/startup') |
||||||
|
fs.copy('/disk/etc/resolv.conf','/etc/resolv.conf') |
||||||
|
fs.copy('/disk/etc/ftp.conf','/etc/ftp.conf') |
||||||
|
fs.copy('/disk/lib/cnt','/lib/cnt') |
||||||
|
fs.copy('/disk/bin/utils','/bin/utils') |
||||||
|
fs.copy('/disk/bin/turtle','/bin/turtle') |
||||||
@ -0,0 +1,8 @@ |
|||||||
|
local tArgs = { ... } |
||||||
|
if #tArgs < 1 then |
||||||
|
print("Usage: whois <name/id>") |
||||||
|
return |
||||||
|
end |
||||||
|
os.loadAPI('/lib/cnt') |
||||||
|
|
||||||
|
print(cnt.lookup(tArgs[1])) |
||||||
Binary file not shown.
@ -0,0 +1,15 @@ |
|||||||
|
function lookup (name) |
||||||
|
local resolv = fs.open('/etc/resolv.conf','r') |
||||||
|
local ns=tonumber(resolv.readLine()) |
||||||
|
local message=textutils.serialize({"CNT",name}) |
||||||
|
rednet.send(ns,message) |
||||||
|
|
||||||
|
local senderId, reply, distance = rednet.receive() |
||||||
|
local count = 0 |
||||||
|
while senderId ~= ns do |
||||||
|
local senderId, reply, distance = rednet.receive() |
||||||
|
end |
||||||
|
|
||||||
|
local address=textutils.unserialize(reply) |
||||||
|
return address[2] |
||||||
|
end |
||||||
@ -0,0 +1,37 @@ |
|||||||
|
function send(dest, message) |
||||||
|
if ~isnumber(dest) then |
||||||
|
cnt.lookup(dest) |
||||||
|
end |
||||||
|
|
||||||
|
message=textUtil.serialize(os.getComputerId(),dest,message) |
||||||
|
|
||||||
|
route(message) |
||||||
|
end |
||||||
|
|
||||||
|
|
||||||
|
rednet.send( |
||||||
|
|
||||||
|
end |
||||||
|
|
||||||
|
function syn |
||||||
|
|
||||||
|
function acksyn |
||||||
|
|
||||||
|
function ack |
||||||
|
|
||||||
|
function receive |
||||||
|
|
||||||
|
function join |
||||||
|
|
||||||
|
function broadcast |
||||||
|
|
||||||
|
function locate(host_id) |
||||||
|
|
||||||
|
|
||||||
|
function route(message) |
||||||
|
|
||||||
|
tmp=textUtil.unserialize(message) |
||||||
|
dest = tmp[2] |
||||||
|
next_hop=locate(dest) |
||||||
|
|
||||||
|
|
||||||
Loading…
Reference in new issue