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