Posted 13 October 2012 - 07:53 PM
                This API lets you track exactly where your turtles are without using the rednet-based GPS connection. Basically, it tracks every movement your turtle makes and updates the location and direction.
Usage
For example, to create a navigation object called "myNav", you would use:
After creating that object, all other functions are called by using "myNav" (or whatever you called your object earlier), then a period, then the function name. For example, to call the "forward()" function, you would use:
To use this API, you replace all of your turtle movement functions (like turtle.forward and turtle.back) with functions called just like the one above.
Here is a list of all of the available functions. They are written for the navigation object called "myNav".
Download
http://pastebin.com/3KHq3K2R
Code
                
            Usage
Spoiler
Internal Navigation works a little differently than most other APIs. Rather than using lots of different functions, you just call one function, inav.createInternalNav() to create a navigation object, then call functions from that object.For example, to create a navigation object called "myNav", you would use:
myNav = inav.createInternalNav()
After creating that object, all other functions are called by using "myNav" (or whatever you called your object earlier), then a period, then the function name. For example, to call the "forward()" function, you would use:
myNav.forward()
To use this API, you replace all of your turtle movement functions (like turtle.forward and turtle.back) with functions called just like the one above.
Here is a list of all of the available functions. They are written for the navigation object called "myNav".
myNav.forward()
- Replaces turtle.forward()
- Returns true if the movement succeeds, false if the movement fails
myNav.back()
- Replaces turtle.back()
- Returns true if the movement succeeds, false if the movement fails
myNav.up()
- Replaces turtle.up()
- Returns true if the movement succeeds, false if the movement fails
myNav.down()
- Replaces turtle.down()
- Returns true if the movement succeeds, false if the movement fails
myNav.turnLeft()
- Replaces turtle.turnLeft()
- Returns true if the movement succeeds, false if the movement fails
myNav.turnRight()
- Replaces turtle.turnRight()
- Returns true if the movement succeeds, false if the movement fails
myNav.calibrate(x,y,z,direction)
- Sets the current position of the turtle
- Defaults to 0
myNav.getPos()
- Returns a table containing the current position
- "x", "y", and "z" are the coordinates, "dir" is the current direction
Download
http://pastebin.com/3KHq3K2R
Code
Spoiler
function createInternalNav()
	intab = {}
	intab.xpos = 0
	intab.ypos = 0
	intab.zpos = 0
	intab.dir  = 0
	function intab.forward()
		local moveworked = turtle.forward()
		if moveworked == true then		  
			if intab.dir%4 == 0 then intab.xpos = intab.xpos+1
			elseif intab.dir%4 == 1 then intab.zpos = intab.zpos+1
			elseif intab.dir%4 == 2 then intab.xpos = intab.xpos-1
			elseif intab.dir%4 == 3 then intab.zpos = intab.zpos-1
			else print("Massive Error in intab.forward()") end
		end
		return moveworked
	end
	function intab.back()
		local moveworked = turtle.back()
		if moveworked == true then
			if intab.dir%4 == 0 then intab.xpos = intab.xpos - 1
			elseif intab.dir%4 == 1 then intab.zpos = intab.zpos - 1
			elseif intab.dir%4 == 2 then intab.xpos = intab.xpos + 1
			elseif intab.dir%4 == 3 then intab.zpos = intab.zpos + 1
			else print("Massive Error in intab.back()") end
		end
		return moveworked
	end
	function intab.up()
		local moveworked = turtle.up()
		if moveworked == true then intab.ypos = intab.ypos + 1 end
		return moveworked
	end
	function intab.down()
		local moveworked = turtle.down()
		if moveworked == true then intab.ypos = intab.ypos - 1 end
		return moveworked
	end
	function intab.turnLeft()
		local turnworked = turtle.turnLeft()
		if turnworked == true then intab.dir = intab.dir - 1 end
		return turnworked
	end
	function intab.turnRight()
		local turnworked = turtle.turnRight()
		if turnworked == true then intab.dir = intab.dir + 1 end
		return turnworked
	end
	function intab.printPos()
		print("Current Location: ("..intab.xpos..","..intab.ypos..","..intab.zpos..","..intab.dir%4..")")
	end
	function intab.getPos()
		currentPos = {"x"=intab.xpos,"y"=intab.ypos,"z"=intab.zpos,"dir"=intab.dir%4}
		return currentPos
	end
	function intab.calibrate(x,y,z,d)
		if type(x) == "table" then
			inputTable = x
			x = inputTable.x
			y = inputTable.y
			z = inputTable.z
			d = inputTable.d
		end
		if type(x) ~= "number" then x = 0 end
		if type(y) ~= "number" then y = 0 end
		if type(z) ~= "number" then z = 0 end
		if type(d) ~= "number" then d = 0 end
		intab.xpos = x
		intab.ypos = y
		intab.zpos = z
		intab.dpos = d
	end
	return intab
end
 
         
                 
                