Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- os.loadAPI( "connection.lua" )
- shell.run( "TurtleFleet/Turtle/advanced_turtle.lua" )
- json = dofile( "TurtleFleet/Utils/json.lua" )
- local ws, err = http.websocket( connection.get_string() )
- function string.tohex( str )
- return ( str:gsub( '.', function ( c )
- return string.format( '%02X', string.byte( c ) )
- end ) )
- end
- function string.fromhex( str )
- return ( str:gsub( '..', function ( cc )
- return string.char( tonumber( cc , 16 ) )
- end ) )
- end
- function decode( msg )
- local type = string.byte( string.sub( msg, 1, 1) )
- -- Bool
- if type == 0x01 then return msg:sub( 5, 5 ):byte() == 0x01
- -- Int
- elseif type == 0x02 then return tonumber( "0x" .. msg:sub( 5, 8 ):reverse():tohex() )
- -- String
- elseif type == 0x04 then return msg:sub( 9, 8 + tonumber( "0x" .. msg:sub( 5, 8 ):reverse():tohex() ) )
- -- 0x00 or unknown
- else return nil
- end
- end
- function connected()
- ws.send( "turtle" )
- ws.send( "001" .. json.encode( turtle.getInventory() ) )
- end
- local command = {}
- command[ "moveForward" ] = function() turtle.forward() end
- command[ "turnLeft" ] = function() turtle.turnLeft() end
- command[ "turnRight" ] = function() turtle.turnRight() end
- command[ "moveBack" ] = function() turtle.back() end
- command[ "moveDown" ] = function() turtle.down() end
- command[ "moveUp" ] = function() turtle.up() end
- command[ "digUp" ] = function() turtle.digUp() end
- command[ "digForward" ] = function() turtle.dig() end
- command[ "digDown" ] = function() turtle.digDown() end
- command[ "Connected" ] = connected
- while true do
- local event, url, message = os.pullEvent( "websocket_message" )
- print( message )
- print( string.tohex( message ) )
- local data = decode( message )
- print( "Received = " .. tostring( data ) )
- if command[ tostring( data ) ] then
- command[ tostring( data ) ]()
- end
- end
Add Comment
Please, Sign In to add comment