Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Movement Program by Galygious
- --Variables
- local tArgs = { ... }
- local dirlist = {'f','b','d','u','l','r'}
- --Functions
- local tturn = function(tdir,tcount)
- shell.run('/progs/tturn',tdir)
- end
- local printUsage = function(ecode)
- if ecode == 0 then
- print('Error Code 0\nThis Program Requires these variables:\narg1 - direction (f,b,d,u,l,r)\narg2 - distance (positive number)')
- do return end
- elseif ecode == 1 then
- print('Error Code 1\nThis Program Requires these variables:\narg1 - direction (f,b,d,u,l,r)\narg2 - distance (positive number)')
- do return end
- elseif ecode == 2 then
- print('Error Code 2\nFirst argument must represent a direction (f,b,d,u,l,r)')
- do return end
- elseif ecode == 3 then
- print('Error Code 3\nSecond argument must represent a distance (positive number)')
- do return end
- elseif ecode == 4 then
- print('Error Code 4\nSecond argument must represent a distance (positive number)')
- do return end
- elseif ecode == 5 then
- print('Error Code 4\nSecond argument must represent a distance (positive number)')
- do return end
- end
- end
- local function moveForward()
- unbreakable = false
- while not turtle.forward() do
- --# check if a block was the cause
- if turtle.detect() then
- if not turtle.dig() then
- --unbreakable
- print("An unbreakable block has been encountered, bedrock is that you?")
- error()
- elseif turtle.detect() then
- --Gravel
- sleep(0.8)
- end
- --# check if fuel was the cause
- elseif turtle.getFuelLevel() ~= "unlimited" and turtle.getFuelLevel() == 0 then
- print("I am out of fuel... HELP!")
- while turtle.getFuelLevel() ~= "unlimited" and turtle.getFuelLevel() == 0 do
- turtle.refuel()
- sleep(1)
- end
- elseif turtle.attack() then
- --hit mob
- end
- end
- end
- local function moveUp()
- while not turtle.up() do
- --# check if a block was the cause
- if turtle.detectUp() then
- if not turtle.digUp() then
- elseif turtle.detectUp() then
- print("Sand/Gravel is falling!")
- sleep(0.8)
- else
- print("A block was in my way")
- end
- --# check if fuel was the cause
- elseif turtle.getFuelLevel() ~= "unlimited" and turtle.getFuelLevel() == 0 then
- print("I am out of fuel... HELP!")
- elseif turtle.attackUp() then
- print("Get out of my way mob/player!")
- end
- end
- end
- local function moveDown()
- while not turtle.down() do
- --# check if a block was the cause
- if turtle.detectDown() then
- if not turtle.digDown() then
- elseif turtle.detectDown() then
- print("Sand/Gravel is falling!")
- sleep(0.8)
- else
- print("A block was in my way")
- end
- --# check if fuel was the cause
- elseif turtle.getFuelLevel() ~= "unlimited" and turtle.getFuelLevel() == 0 then
- print("I am out of fuel... HELP!")
- elseif turtle.attackDown() then
- print("Get out of my way mob/player!")
- end
- end
- end
- local turtlemove = function(Dir,Dis)
- if Dir == 'f' then
- for i=1,Dis do
- moveForward()
- end
- elseif Dir == 'l' then
- tturn('l')
- for i=1,Dis do
- moveForward()
- end
- elseif Dir == 'r' then
- tturn('r')
- for i=1,Dis do
- moveForward()
- end
- elseif Dir == 'b' then
- tturn('u')
- for i=1,Dis do
- moveForward()
- end
- elseif Dir == 'u' then
- for i=1,Dis do
- moveUp()
- end
- elseif Dir == 'd' then
- for i=1,Dis do
- moveDown()
- end
- end
- end
- local hasval = function(tab,val)
- for i, value in ipairs(tab) do
- if value == val then
- return true
- end
- end
- return false
- end
- local fuelcheck = function()
- fuellevel = turtle.getFuelLevel()
- dis = tArgs[2]
- if tArgs[2] > fuellevel then
- print("The turtle does not have enough fuel to move")
- do return end
- end
- end
- --Argument Handling
- if tArgs[1] ~= nil then
- if #tArgs ~= 2 then
- printUsage(1)
- elseif not hasval(dirlist, tArgs[1]) then
- printUsage(2)
- elseif tArgs[2] == nil then
- printUsage(3)
- elseif not tonumber(tArgs[2]) then
- printUsage(4)
- elseif tonumber(tArgs[2]) < 0 then
- printUsage(5)
- else
- local Dir = tArgs[1]
- local Dis = tArgs[2]
- turtlemove(Dir,Dis)
- return
- end
- else
- printUsage(0)
- end
- --
Add Comment
Please, Sign In to add comment