CCCPaste

robotkiller

-- cart_killer.lua
-- Робот стоит лицом к рельсам и ломает ВСЁ перед собой (вагонетки).
-- Нужны: Upgrade Tool и инструмент (Ваджра) в указанном слоте.

local robot    = require("robot")
local computer = require("computer")
local event    = require("event")

-- В каком слоте лежит Ваджра
local TOOL_SLOT = 1

local function log(msg)
  print(os.date("[%H:%M:%S] ") .. msg)
end

local function selectTool()
  if robot.select(TOOL_SLOT) then
    return true
  else
    log("Не могу выбрать слот с инструментом: " .. tostring(TOOL_SLOT))
    return false
  end
end

log("=== Робот-уборщик вагонеток запущен ===")
log("Убедись, что он смотрит на рельсы, а в слоте " .. TOOL_SLOT .. " лежит Ваджра.")

if not selectTool() then
  log("Останавливаюсь из-за ошибки выбора слота.")
  return
end

local tick = 0

while true do
  tick = tick + 1

  -- На всякий случай каждые 100 тиков снова выбираем слот с Ваджрой
  if tick % 100 == 0 then
    selectTool()
  end

  -- Бьём перед собой
  local ok, reason = robot.swing()
  if ok then
    log("Удар по entity перед собой (скорее всего вагонетка). reason=" .. tostring(reason))
  end

  -- Немного ждём и ловим Ctrl+Alt+C
  local deadline = computer.uptime() + 0.2
  while true do
    local left = deadline - computer.uptime()
    if left <= 0 then break end
    local sig = {event.pull(left)}
    if sig[1] == "interrupted" then
      log("Получен сигнал interrupted, останавливаюсь.")
      log("=== Робот-уборщик вагонеток завершил работу ===")
      return
    end
  end
end