Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Improved WarpDrive Miner Control Script (fixed wrap error)
- -- Initialization
- term.clear()
- -- Find the laser peripheral (returns wrapped table)
- local laser = peripheral.find("warpdriveLaser")
- if not laser then
- print("No warpdriveLaser detected")
- return
- end
- -- Find mining lasers by name and wrap them
- local miningLasers = {}
- for _, side in ipairs(peripheral.getNames()) do
- if peripheral.getType(side) == "warpdriveMiningLaser" then
- table.insert(miningLasers, peripheral.wrap(side))
- end
- end
- if #miningLasers == 0 then
- print("No warpdriveMiningLaser detected")
- return
- end
- -- Set the laser frequency
- laser.beamFrequency(1420)
- -- Persistence helpers
- local function saveZeroLayersCount(cnt)
- local f = fs.open("zero_layers.txt", "w")
- f.write(tostring(cnt))
- f.close()
- end
- local function getZeroLayersCount()
- if fs.exists("zero_layers.txt") then
- local f = fs.open("zero_layers.txt", "r")
- local c = tonumber(f.readAll())
- f.close()
- return c or 0
- end
- return 0
- end
- print("Press 'M' to scan & start mining")
- -- Main loop
- while true do
- local _, key = os.pullEvent("key")
- if key == keys.m then
- -- Emit scan
- local _, laserY = laser.getLocalPosition()
- local targetY
- repeat
- laser.emitBeam(0, -1, 0)
- os.sleep(1)
- local x, y, z = laser.getScanResult()
- targetY = z
- until targetY ~= 0
- local offset = laserY - targetY - 1
- print(("Offset: %d"):format(offset))
- -- Activate mining lasers
- for _, ml in ipairs(miningLasers) do
- ml.offset(offset)
- ml.enable(true)
- end
- -- Monitor and auto-stop after 3 empty layers
- local zeros = getZeroLayersCount()
- while true do
- os.sleep(1)
- local st, active, energy, layer, mined, total = miningLasers[1].state()
- if total == 0 then zeros = zeros + 1 else zeros = 0 end
- saveZeroLayersCount(zeros)
- if zeros >= 3 then
- print("3 empty layers → stopping mining")
- for _, ml in ipairs(miningLasers) do ml.enable(false) end
- fs.delete("zero_layers.txt")
- break
- end
- end
- print("Press 'M' to scan & start mining")
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment