Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --"Digger rooms" to Kaerius, 01-03-2013
- local tArgs = {...}
- if #tArgs < 6 then
- print( "<Visota> <Dlina> <Shirina> <Up/Down( u/d )> <Left or Right?( l/r )> <Gravel/Sand control mod( y/n )>" )
- return
- end
- local digd = 0
- local digu = 0
- local dig = 0
- local step = 0
- local every = 0
- local gou = 0
- local god = 0
- local gof = 0
- local height = tonumber( tArgs[1] ) - 1 -- Высота
- local width = tonumber( tArgs[2] ) - 1 -- Ширина
- local length = tonumber( tArgs[3] ) -- Длина
- local modud = tArgs[4]
- local modlr = tArgs[5]
- local modg = tArgs[6]
- if modud == "u" then
- vert = 0
- else
- vert = height
- end
- if modlr == "l" then
- party = 1
- else
- party = 2
- end
- local function report()
- local all = ( height + 1 ) * ( width + 1 ) * ( length ) - 2
- local progress1 = ( digd + digu + dig )
- local progress2 = ( gou + god + gof )
- shell.run( 'clear' )
- print( "Visota: ", height + 1 )
- print( "Dlina: ", width + 1 )
- print( "Shirina: ", length )
- print( "Fuel spend: ", all )
- print( "Up/Down( u/d): ", modud )
- print( "Left or Right?( l/r ): ", modlr )
- print( "Gravel/Sand control mod( y/n ): ", modg )
- print( " - / - / - / - / - / - / - / - / - / - " )
- print( "Fuel level: ", turtle.getFuelLevel() )
- print( "Pass block: ", progress2 )
- print( "Excavated blocks: ", progress1 )
- end
- local function digi( direction )
- report()
- if direction == 1 then
- if turtle.digUp() then
- digu = digu + 1
- end
- end
- if direction == 2 then
- if turtle.dig() then
- dig = dig + 1
- end
- end
- if direction == 3 then
- if turtle.digDown() then
- digd = digd + 1
- end
- end
- end
- local function fuel()
- if fuelLevel == "unlimited" then
- return true
- end
- local needed = ( ( height + 1 ) * ( width + 1 ) * ( length ) - 2 ) - ( gou + god + gof )
- if turtle.getFuelLevel() < needed then
- for n = 1, 16 do
- if turtle.getItemCount( n ) > 0 then
- turtle.select( n )
- if turtle.refuel( 1 ) then
- while turtle.getFuelLevel() < needed and turtle.getItemCount( n ) > 0 do
- turtle.refuel( 1 )
- end
- if turtle.getFuelLevel() >= needed then
- turtle.select( 1 )
- return true
- end
- end
- end
- end
- turtle.select( 1 )
- return false
- end
- end
- local function vertical()
- if vert == 0 then
- while true do
- fuel()
- if turtle.up() then
- vert = vert + 1
- gou = gou + 1
- else
- digi( 1 )
- end
- if vert == height then
- break
- end
- end
- else
- while true do
- fuel()
- if turtle.down()then
- vert = vert - 1
- god = god + 1
- else
- digi( 3 )
- end
- if vert == 0 then
- break
- end
- end
- end
- end
- local function go()
- fuel()
- while true do
- if turtle.forward()then
- gof = gof + 1
- return true
- else
- digi( 2 )
- if modg == "y" then
- sleep( 0.5 )
- end
- end
- end
- end
- local function turn()
- if party == 1 then
- turtle.turnLeft()
- go()
- turtle.turnLeft()
- party = party + 1
- else
- turtle.turnRight()
- go()
- turtle.turnRight()
- party = party - 1
- end
- end
- while true do
- vertical()
- if step == width then
- every = every + 1
- step = 0
- if every == length then
- return true
- end
- turn()
- else
- go()
- step = step + 1
- end
- if every == length then
- return true
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment