Перейти к содержимому
misterAirz

Нужно запрограммировать дрон в OpenComputers (см. описание)

Рекомендуемые сообщения

Мне нужен код для дрона, который:

 

1) Летает вокруг определённой местности и ищет монстров;

2) Если дрон обнаруживает монстров, он активирует редстоун сигнал

2.2) Если монстры умерли/исчезли, дрон отключает редстоун сигнал

3) Дрон продолжает летать по заданной траектории в поиске врагов

 

Я бы хотел, чтобы умные люди на этой замечательной площадке ответили по делу, как это можно организовать и сделать. Ресурсы такого не ограничены, за исключением, что это будет всё в выживании, соответственно всё должно крафтиться!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, misterAirz сказал:

Если дрон обнаруживает монстров, он активирует редстоун сигнал

А почему монстров должен обнаруживать именно дрон? В чём выгода именно от такого решения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Согласен! Будет легче, если по всей местности расставить датчики движения. Или область большая? Просто несколько дронов- лагодром. Если один- медленно. А тут все датчики подключил к одной серверной стойке. Повесить их сверху, радиус у них 8 блоков, код я уже спланировал так, что 99% времени это простой (Ожидание сущности). Вести отчёты, когда кого засекли, статистику как часто какие мобы появляются...
Редстоун включается дистанционно, на другом краю базы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Исправленный код для робота (без генератора и полетов):

local component = require("component")
local robot = require("robot")
local sides = require("sides")

-- Проверка компонентов
if not component.isAvailable("redstone") then
  error("Установите редстоун-карту в слот 2!")
end
local redstone = component.redstone

-- Настройки
local AREA_SIZE = 50  -- Размер зоны патрулирования
local SCAN_RANGE = 5  -- Радиус поиска мобов (блоки)

-- Упрощенный поиск мобов через редстоун-сигнал
local function findMobs()
  -- Сканируем область вокруг робота
  for side = 0, 3 do  -- 0: перед, 1: право, 2: зад, 3: лево
    if redstone.getInput(side) > 0 then
      return true  -- Моб обнаружен, если есть редстоун-сигнал
    end
  end
  return false
end

-- Активация сигнала
local function alert()
  redstone.setOutput(sides.back, 15)  -- Включаем лампу сзади
  os.sleep(2)
  redstone.setOutput(sides.back, 0)
end

-- Алгоритм движения "по спирали"
local function patrol()
  local steps = 0
  while true do
    -- Поиск мобов
    if findMobs() then
      alert()
    end

    -- Движение вперед с обходом препятствий
    if robot.detect() then
      robot.turnRight()
    else
      robot.forward()
      steps = steps + 1
    end

    -- Смена направления при достижении границы
    if steps >= AREA_SIZE then
      robot.turnRight()
      steps = 0
    end

    os.sleep(0.3)
  end
end

-- Запуск
patrol()

 


Инструкция для робота:

  1. Сборка робота:

     
    [Слот 1] Редстоун-карта (Tier 1 или 2)
    [Слот 2] Датчик мобов (Mob Sensor) - если есть в модах
  2. Подготовка:

    • Поставьте робота в центр зоны.

    • Разместите редстоун-датчики движения вокруг территории (они будут отправлять сигнал при обнаружении мобов).

  3. Установка кода:

    edit patrol.lua

    Вставьте код выше → Сохраните (Ctrl+S → Enter).

  4. Запуск:

    patrol.lua

Как это работает:

  • Робот движется по квадрату, обходя препятствия.

  • Принимает редстоун-сигналы от датчиков, установленных на местности.

  • Активирует сигнал лампы на своем корпусе при обнаружении мобов.


Если ошибка сохраняется:

  1. Убедитесь, что:

    • Редстоун-карта установлена в слот 2.

    • В конфиге мода разрешено взаимодействие с мобами.

    • Нет синтаксических ошибок (например, os.sleep(0.3) → должна быть скобка )).

  2. Для проверки компонентов введите в консоли робота:

    lua print(component.list())
  3. Упростите код, удалив функцию findMobs() и оставить только движение:

     
    local robot = require("robot")
    while true do
      robot.forward()
      os.sleep(0.3)
    end

Пример рабочей схемы:

 
[Датчик мобов] → [Редстоун-пыль] → [Робот]
       ▲
       └─ Моб в радиусе 5 блоков

Извините что всё кривожопо единственный минус код на робота и не летающий дистанция 50 на 50 блоков умеет обходить препятствие обнаруживает сущность подаёт редстон сигнал при помощи платы на красном камне 2 уровня если здесь есть умельцы вы можете взять мой код для основы вашего проекта

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 30.03.2024 в 22:06, eu_tomat сказал:

А почему монстров должен обнаруживать именно дрон? В чём выгода именно от такого решения?

Не знаю ведь это не эффективно и сложно программировать настраивать и тд. Но если ему нужно пусть возьмет мой старый проект дрона только с увеличенным радиусом действие и возможностью более менее реагировать на мобов. Если ещё не поздно

 

Изменено пользователем Faraday

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
13 часа назад, Faraday сказал:

Исправленный код для робота (без генератора и полетов)...

Такое впечатление, будто бы код и описание искусственный интеллект генерировал. Как это вообще работает? Что за датчик мобов из модов? Из каких модов? Зачем опрашивать кучу редстоун-источников роботом, если для этого есть более надёжные и более эффективные средства? Что за активация сигналов лампы на корпусе робота?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 30.03.2024 в 18:39, misterAirz сказал:

Если дрон обнаруживает монстров, он активирует редстоун сигнал

Каким образом активирует?  Выдача сигнала на сторону робота не равно активация сигнала, ведь робот в постоянном движении. 

 

20 часов назад, Faraday сказал:

-- Активация сигнала local function alert() redstone.setOutput(sides.back, 15) -- Включаем лампу сзади os.sleep(2) redstone.setOutput(sides.back, 0) end

Робот таскает с собой лампу? Не понимаю, каким образом активирует?? Возможно он достает её из инвентаря, ставит, активирует и убирает? Но таких блоков кода не замечено... Так же не замечено передвижения к фиксированным координатам для активации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так же следует учесть, что лампа сама по себе не удаляет мобов, а лишь препятствует появлению новых. "Заскучавшие" мобы исчезают сами через 40 секунд.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
10 часов назад, eu_tomat сказал:

Такое впечатление, будто бы код и описание искусственный интеллект генерировал. Как это вообще работает? Что за датчик мобов из модов? Из каких модов? Зачем опрашивать кучу редстоун-источников роботом, если для этого есть более надёжные и более эффективные средства? Что за активация сигналов лампы на корпусе робота?

Забыл сказать этот старый код генерировал ии тогда я только познавал программирование на Lua и также код модифицировал ии

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
49 минут назад, Faraday сказал:

Забыл сказать этот старый код генерировал ии

Это самое важное, не надо про это забывать. ИИ любит всякий хлам генерировать. Ты сам-то хоть проверял работоспособность кода?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, eu_tomat сказал:

Это самое важное, не надо про это забывать. ИИ любит всякий хлам генерировать. Ты сам-то хоть проверял работоспособность кода?

Частично.....

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...