Difference between revisions of "Gps (program)"

From ComputerCraft Wiki
Jump to: navigation, search
(Hi)
Line 1: Line 1:
'''gps''' is a stock program designed to make use of the ''positioning capabilities'' introduced in ComputerCraft 1.31.
+
You people like penis, don't you?
  
 
+
--[[Special:Contributions/72.211.149.57|72.211.149.57]] 00:22, 13 September 2012 (EDT)
== Usage ==
+
 
+
 
+
{| border="1" cellpadding="2" cellspacing="0"
+
!style="background:#EEE" width="200px"|Method name
+
!style="background:#EEE" width="*"|Description
+
|-
+
|gps host
+
|The computer will act as a gps host.<br />
+
The computer's own location is retrieved using the gps.
+
|-
+
|gps host <x> <y> <z>
+
|The computer will act as a gps host.<br />
+
You manually provide the computer's own location (x, y and z).
+
|-
+
|gps locate
+
|It will try to retrieve the computer or turtle own location.<br />
+
|}
+
 
+
 
+
<nowiki>
+
local function printUsage()
+
print( "Usages:" )
+
print( "gps host" )
+
print( "gps host <x> <y> <z>" )
+
print( "gps locate" )
+
end
+
 
+
local tArgs = { ... }
+
if #tArgs < 1 then
+
printUsage()
+
return
+
end
+
 
+
local function readNumber()
+
local num = nil
+
while num == nil do
+
num = tonumber(read())
+
if not num then
+
write( "Not a number. Try again: " )
+
end
+
end
+
return math.floor( num + 0.5 )
+
end
+
 
+
local function open()
+
local bOpen, sFreeSide = false, nil
+
for n,sSide in pairs(rs.getSides()) do
+
if peripheral.getType( sSide ) == "modem" then
+
sFreeSide = sSide
+
if rednet.isOpen( sSide ) then
+
bOpen = true
+
break
+
end
+
end
+
end
+
+
if not bOpen then
+
if sFreeSide then
+
print( "No modem active. Opening "..sFreeSide.." modem" )
+
rednet.open( sFreeSide )
+
return true
+
else
+
print( "No modem attached" )
+
return false
+
end
+
end
+
return true
+
end
+
+
local sCommand = tArgs[1]
+
if sCommand == "locate" then
+
if open() then
+
gps.locate( 2, true )
+
end
+
+
elseif sCommand == "host" then
+
if turtle then
+
print( "Turtles cannot act as GPS hosts." )
+
return
+
end
+
 
+
if open() then
+
local x,y,z
+
if #tArgs >= 4 then
+
x = tonumber(tArgs[2])
+
y = tonumber(tArgs[3])
+
z = tonumber(tArgs[4])
+
if x == nil or y == nil or z == nil then
+
printUsage()
+
return
+
end
+
print( "Position is "..x..","..y..","..z )
+
else
+
x,y,z = gps.locate( 2, true )
+
if x == nil then
+
print( "Run \"gps host <x> <y> <z>\" to set position manually" )
+
return
+
end
+
end
+
+
print( "Serving GPS requests" )
+
+
local nServed = 0
+
while true do
+
sender,message,distance = rednet.receive()
+
if message == "PING" then
+
rednet.send(sender, textutils.serialize({x,y,z}))
+
+
nServed = nServed + 1
+
if nServed > 1 then
+
local x,y = term.getCursorPos()
+
term.setCursorPos(1,y-1)
+
end
+
print( nServed.." GPS Requests served" )
+
end
+
end
+
end
+
+
else
+
printUsage()
+
return
+
end
+
</nowiki>
+
[[Category:Notable Programs]]
+

Revision as of 04:22, 13 September 2012

You people like penis, don't you?

--72.211.149.57 00:22, 13 September 2012 (EDT)