imrskull

drill_pult

Oct 11th, 2025
5
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.76 KB | None | 0 0
  1. -- drill_pult.lua — мини-пульт для теста бура/копания
  2. -- Команды:
  3. -- 1 / dig — копнуть ВПЕРЁД (robot.swing)
  4. -- 2 / suck — подобрать лут (вперёд/вниз/вверх)
  5. -- 3 / digd — копнуть ВНИЗ
  6. -- 4 / digu — копнуть ВВЕРХ
  7. -- e / equip — взять/убрать инструмент из выбранного слота в tool-слот
  8. -- f/b/u/d N — движение (по умолчанию 1)
  9. -- tl/tr/ta — повороты
  10. -- ad/af/au — анализ блока (вниз/вперёд/вверх; выведет name/label)
  11. -- help — список команд
  12. -- exit — выйти
  13.  
  14. local robot = require("robot")
  15. local sides = require("sides")
  16. local term = require("term")
  17. local comp = require("component")
  18.  
  19. local ic = comp.isAvailable("inventory_controller") and comp.inventory_controller or nil
  20. local geo = comp.isAvailable("geolyzer") and comp.geolyzer or nil
  21.  
  22. local function many(fn, n, label)
  23. n = tonumber(n) or 1
  24. for i=1,n do
  25. if not fn() then
  26. print((label or "шаг").." #"..i.." не выполнен")
  27. break
  28. end
  29. end
  30. end
  31.  
  32. local function analyze(side)
  33. if not geo then print("Нет geolyzer"); return end
  34. local d = geo.analyze(side) or {}
  35. print("ID:", d.name or "?", " Label:", d.label or "")
  36. end
  37.  
  38. local function suckAll()
  39. robot.suck(); robot.suckDown(); robot.suckUp()
  40. end
  41.  
  42. local function equipToggle()
  43. if not ic then print("Нет inventory_controller"); return end
  44. ic.equip() -- меняет местами выбранный слот и tool-слот
  45. end
  46.  
  47. local function help()
  48. print("Команды:")
  49. print(" 1|dig - копнуть вперед")
  50. print(" 2|suck - подобрать лут (вперед/вниз/вверх)")
  51. print(" 3|digd - копнуть вниз")
  52. print(" 4|digu - копнуть вверх")
  53. print(" e|equip - equip: выбранный слот <-> tool-слот")
  54. print(" f/b/u/d n - движение (n по умолчанию 1)")
  55. print(" tl/tr/ta - повороты (лево/право/разворот)")
  56. print(" ad/af/au - анализ блока вниз/вперед/вверх")
  57. print(" help - помощь")
  58. print(" exit - выход")
  59. end
  60.  
  61. term.clear()
  62. print("Пульт бур-теста. Введите 'help' для списка команд.")
  63. while true do
  64. io.write("> ")
  65. local line = io.read()
  66. if not line then break end
  67. local cmd, arg = line:match("^(%S+)%s*(.*)$")
  68. cmd = (cmd or ""):lower()
  69.  
  70. if cmd=="" then
  71. elseif cmd=="exit" or cmd=="q" then break
  72. elseif cmd=="help" or cmd=="h" then help()
  73.  
  74. -- копание
  75. elseif cmd=="1" or cmd=="dig" then robot.swing(); suckAll()
  76. elseif cmd=="2" or cmd=="suck" then suckAll()
  77. elseif cmd=="3" or cmd=="digd" then robot.swingDown(); suckAll()
  78. elseif cmd=="4" or cmd=="digu" then robot.swingUp(); suckAll()
  79.  
  80. -- equip
  81. elseif cmd=="e" or cmd=="equip" then equipToggle()
  82.  
  83. -- движение
  84. elseif cmd=="f" then many(robot.forward, arg, "вперед")
  85. elseif cmd=="b" then many(robot.back, arg, "назад")
  86. elseif cmd=="u" then many(robot.up, arg, "вверх")
  87. elseif cmd=="d" then many(robot.down, arg, "вниз")
  88. elseif cmd=="tl" then robot.turnLeft()
  89. elseif cmd=="tr" then robot.turnRight()
  90. elseif cmd=="ta" then robot.turnAround()
  91.  
  92. -- анализ
  93. elseif cmd=="ad" then analyze(sides.down)
  94. elseif cmd=="af" then analyze(sides.front)
  95. elseif cmd=="au" then analyze(sides.up)
  96.  
  97. else
  98. print("Неизвестная команда. help — список команд.")
  99. end
  100. end
  101.  
  102. print("Выход.")
  103.  
Advertisement
Add Comment
Please, Sign In to add comment