Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- This is the turtle client code.
- -- Just some prerequisite stuff.
- rednet.open("left")
- -- Reading, or if needed, creating the position file.
- function getPosition()
- if fs.exists("pos") == true then
- print("It exists, friend.")
- pos = fs.open("pos","r")
- -- taking advantage of the game's coordinate system
- x = pos.readLine()
- y = pos.readLine()
- z = pos.readLine()
- -- values are as following: 1, west. 2, north. 3, east. 4, south
- f = pos.readLine()
- pos.close()
- else
- -- Getting the input Coords.
- pos = fs.open("pos", "w")
- print("Insert the current X, Y, Z, and F (Direction facing value.) respectively.")
- print("Values for F are as following: 1.0 - west. 2.0 - north. 3.0 - east. 0.0 - south.")
- write("X: ")
- local inpX = read()
- write("Y: ")
- local inpY = read()
- write("Z: ")
- local inpZ = read()
- write("F: ")
- local inpF = read()
- -- Writing the input coords.
- pos.writeLine(inpX)
- pos.writeLine(inpY)
- pos.writeLine(inpZ)
- pos.writeLine(inpF)
- pos.close()
- end
- end
- function changeTurtle(func, var, var2)
- -- Both changing the position and writing the new one to the 'pos' file.
- -- exclusively for turning the turtle
- function turtleTurn(turnD)
- print("Beginning turtleturn function.")
- -- turnD is either 'l' or 'r', simply for left or right.
- getPosition()
- if f == "1.0" and turnD == "r" then
- turtle.turnRight()
- f = "2.0"
- fs.delete("pos")
- pos = fs.open("pos","a")
- pos.writeLine(x)
- pos.writeLine(y)
- pos.writeLine(z)
- pos.writeLine(f)
- pos.close()
- print("Written.")
- elseif f == "1.0" and turnD == "l" then
- turtle.turnLeft()
- f = "0.0"
- fs.delete("pos")
- pos = fs.open("pos","a")
- pos.writeLine(x)
- pos.writeLine(y)
- pos.writeLine(z)
- pos.writeLine(f)
- pos.close()
- print("Written.")
- elseif f == "0.0" and turnD == "r" then
- turtle.turnRight()
- f = "1.0"
- fs.delete("pos")
- pos = fs.open("pos","a")
- pos.writeLine(x)
- pos.writeLine(y)
- pos.writeLine(z)
- pos.writeLine(f)
- pos.close()
- print("Written.")
- elseif f == "0.0" and turnD == "l" then
- turtle.turnLeft()
- f = "3.0"
- fs.delete("pos")
- pos = fs.open("pos","a")
- pos.writeLine(x)
- pos.writeLine(y)
- pos.writeLine(z)
- pos.writeLine(f)
- pos.close()
- print("Written.")
- elseif f == "3.0" and turnD == "r" then
- turtle.turnRight()
- f = "0.0"
- fs.delete("pos")
- pos = fs.open("pos","a")
- pos.writeLine(x)
- pos.writeLine(y)
- pos.writeLine(z)
- pos.writeLine(f)
- pos.close()
- print("Written.")
- elseif f == "3.0" and turnD == "l" then
- turtle.turnLeft()
- f = "2.0"
- fs.delete("pos")
- pos = fs.open("pos","a")
- pos.writeLine(x)
- pos.writeLine(y)
- pos.writeLine(z)
- pos.writeLine(f)
- pos.close()
- print("Written.")
- elseif f == "2.0" and turnD == "r" then
- print("Haven't turned yet.")
- turtle.turnRight()
- print("Turning, deleting file.")
- f = "3.0"
- fs.delete("pos")
- pos = fs.open("pos","a")
- print("New File opened.")
- pos.writeLine(x)
- pos.writeLine(y)
- pos.writeLine(z)
- pos.writeLine(f)
- print("Written new coords.")
- pos.close()
- print("Closed.")
- elseif f == "2.0" and turnD == "l" then
- turtle.turnLeft()
- f = "1.0"
- fs.delete("pos")
- pos = fs.open("pos","a")
- pos.writeLine(x)
- pos.writeLine(y)
- pos.writeLine(z)
- pos.writeLine(f)
- pos.close()
- print("Written.")
- end
- end
- function turtleMove(dir, dist)
- if dir == "-x" then
- if f == "3.0" then
- for i = 1, dist do
- turtle.goForward()
- end
- elseif f == "1.0" then
- turtleTurn("r")
- turtleTurn("r")
- for i = 1, dist do
- turtle.forward()
- end
- elseif f == "2.0" then
- turtleTurn("r")
- for i = 1, dist do
- turtle.forward()
- end
- elseif f == "0.0" then
- turtleTurn("l")
- for i = 1, dist do
- turtle.forward()
- end
- end
- elseif dir == "+x" then
- if f == "1.0" then
- for i = 1, dist do
- turtle.forward()
- end
- elseif f == "2.0" then
- turtleTurn("l")
- for i = 1, dist do
- turtle.forward()
- end
- elseif f == "3.0" then
- turtleTurn("l")
- turtleTurn("l")
- for i = 1, dist do
- turtle.forward()
- end
- elseif f == "0.0" then
- turteTurn("r")
- for i = 1, dist do
- turtle.forward()
- end
- end
- elseif dir == "-z" then
- if f == "2.0" then
- for i = 1, dist do
- turtle.forward()
- end
- elseif f == "3.0" then
- turtleTurn("l")
- for i = 1, dist do
- turtle.forward()
- end
- elseif f == "0.0" then
- turtleTurn("r")
- turtleTurn("r")
- for i = 1, dist do
- turtle.forward()
- end
- elseif f == "1.0" then
- turtleTurn("r")
- for i = 1, dist do
- turtle.forward()
- end
- end
- elseif dir == "+z" then
- if f == "0.0" then
- for i = 1, dist do
- turtle.forward()
- end
- elseif f == "1.0" then
- turtleTurn("l")
- for i = 1, dist do
- turtle.forward()
- end
- elseif f == "3.0" then
- turtleTurn("r")
- for i = 1, dist do
- turtle.forward()
- end
- elseif f == "2.0" then
- turtleTurn("l")
- turtleTurn("l")
- for i = 1, dist do
- turtle.forward()
- end
- end
- end
- end
- if func == "tturn" then
- print("Did we even make it this far? Inside func if")
- turtleTurn(tostring(var))
- elseif func == "move" then
- print("Moving.")
- turtleMove(var, var2)
- end
- end
- function figureOutTurn(newf)
- while f ~= newf do
- turtle.turnLeft()
- end
- end
- function recieveCall()
- print("Waiting for item dir")
- item = rednet.receive()
- print("Item dir received, it is "..item)
- sleep(0.2)
- print("Waiting for amount.")
- amount = rednet.receive()
- print("Amount is "..amount)
- itemnum = tonumber(item)
- amountnum = tonumber(amount)
- if itemnum ~= f then
- print("Turning for item.")
- figureOutTurn(itemnum)
- turtle.suck(amountnum)
- else
- turtle.suck(amountnum)
- end
- end
- -- just some test calls
- getPosition()
- recieveCall()
- sleep(1)
Advertisement
Add Comment
Please, Sign In to add comment