Перейти к публикации
Форум - ComputerCraft

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

Автокрафт на роботе. Программа не имет GUI. Всё управление осуществляется через командную строку. Для работы вам потребуется робот и сундук. Сундук должен стоять перед роботом. Робот должен иметь следующие улучшения:

  • Улучшение «Контроллер инвентаря»
  • Улучшение «Инвентарь»
  • Улучшение «Создание»
  • Улучшение «База данных (1-ый уровень)»

Процессор уровня 2 и выше. Необходимый объём памяти и жёсткого диска зависит от количества предметов в сундуке и сложности рецепта. При тестировании использовался робот со следующими характеристиками: см. скриншот.
Базу данных программа сохраняет в текущем каталоге. Поэтому для работы программы нужно создать отдельный каталог.
 
Недостатки.
Предварительный подсчёт достаточности ресурсов для выполнения сложного крафта не выполняется. Планируется исправить в будущих версиях.
 
Инструкция с картинками.


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

Требования:

  • Системный блок 2-го уровня
  • Процессор 2-го уровня
  • Память — 2 планки 2-го уровня
  • Жёсткий диск от 1-го уровня
  • EEPROM (Lua bios)
  • Видеокарта 1-го уровня
  • Интернет-карта (для скачивания программы с pastebin)
  • Улучшение «Контроллер инвентаря»
  • Улучшение «Инвентарь»
  • Улучшение «Создание»
  • Улучшение «База данных (1-ый уровень)»
  • Клавиатура
  • Монитор (1-й уровень)
  • Дисковод
    juVw-oWjoqU.jpg

Установка робота.
Устанавливаем робота. Перед роботом ставим сундук.


-BI9BL8toDw.jpg


Установка программы.
Вставляем дискету с OpenOS в робота. Выделяем программе отдельный каталог. Я использую жёсткий диcк робота целиком (система на дискете). Переходим в него. Скачиваем программу с pastebin.




cd <каталог для программы>
pastebin get GLFBg1cQ craft.lua

910uZsb1XfA.jpg
Для ускорения набора команду craft.lua можно переименовать в однобуквенную.
 
Подготовка к работе.
Загружаем в сундук ресы, которые нам потребуются для крафта.
Вводим команду «craft -u».
WipkVffRy3Q.jpg
 
В текущем каталоге будут созданы файлы с названиями предметов (пробелы и символы «/» в названии заменяются на символ «_»).
FYNHSLgqisg.jpg
 
Запрос предметов.
Набираем команду «craft имя кол-во».  Если количество не указано, будет выдан один предмет. При наборе можно использовать автодополнение по нажатию клавиши TAB.




craft Железный_слиток

ri32GWExTfc.jpg
 
Предметы выдаются в инвентарь робота. Если инвентарь полный, робот предметы не выдаст.
Если робот не найдёт предмета и у предмета нет рецепта, робот сообщит об этом.


ylrcwXEvbyw.jpg


Если рецепт есть, то робот попытается скрафтить предмет. Крафт многоступенчатый, то есть будут крафтиться недостающие предметы.


iv1b5EA-VA0.jpg
 
9-RR8oLw8fA.jpg
 
 Ds4iPkNPfJc.jpg


Если робот сообщил, что ему не хватает какого-либо предмета, то добавьте этот предмет (или рецепт для его создания) и повторите запрос.
 
Добавление предметов в сундук.
Можно просто положить предметы в сундук и выполнить команду «craft -u». Но полное обновление может занимать около 30 секунд, поэтому лучше добавлять предметы через робота.
Положите предметы, которые вы хотите добавить в рабочие слоты робота. Выполните команду «craft -c»
KMRmWO0syqE.jpg
Рабочие слоты робота 1, 2, 3, 4, 5, 6, 7, 9, 10, 11.
 
Если вы что-нибудь положили в сундук (или взяли из него) в обход робота, и не выполнили команду craft -u, робот прервёт выполнение запроса.
 
mzL-FZeULbE.jpg
 
Добавление рецептов.
 
Выкладываем рецепт в левом верхнем углу робота. Набираем команду «craft -w».
MdeuAovZu4Y.jpg
 
Программа анализирует рецепт и пробует выполнить крафт. Если успешно, то рецепт записывается в базу. Результат крафта лежит в 4-м слоте.
2MhZpY03BiY.jpg
 
Если рецепт неверный, будет выведено сообщение об ошибке.
1NRlmPnRV-U.jpg
 
Если предмет вам не нужен, отправьте его в сундук, набрав команду «craft -c».


 
Man


Использование:
  craft -w

  • Запись рецепта, выложенного в левом верхнем углу инвентаря робота.

craft <файл с хешем предмета> [<Кол-во>]

  • Выдаёт  предметы. Крафтит недостающие. Например «craft Дубовые_доски 2»

Опции:
  -s
     отправить результат крафта в хранилище.
  -o
     не искать в хранилище. Только крафт.
  -u
     просканировать хранилище.
  -c
     очистить рабочие слоты робота.
  -r
     вывести отчёт.
  -l
     создать файлы с хешами.
 
Файл с хешем — это файл содержащий хеш предмета. Файлы с хешами создаются автоматически. Могут быть востановлены командой «craft -l». Имя файла с хешем — это имя предмета в котором пробел и слеш(/) заменены на знак подчёркивания(_).


Скачать Версия 0.10.8
Старая версия

post-13635-0-04101900-1448897916_thumb.png

Изменено пользователем vx13
  • Like 9

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


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

Была у меня прога, может, кто помнит, тоже автокрафт. http://computercraft.ru/blog/3/entry-412-avtokraft-opencomputers/

Всё было хорошо: и поиск, и рецепты, и дерево крафта, и проверки, кроме одного: оно на АЕ.

Пробовал переписать — лень стало. Так что жду озарения пока.

 

По поводу прожки — молодец! Правда, подсчёт нужен очень для АК. Ибо основная фишка — это объёмные крафты. То есть крафтить верстак, если имеется только бревно, например.

  • Like 2

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


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

Была у меня прога, может, кто помнит, тоже автокрафт. http://computercraft.ru/blog/3/entry-412-avtokraft-opencomputers/

Всё было хорошо: и поиск, и рецепты, и дерево крафта, и проверки, кроме одного: оно на АЕ.

Пробовал переписать — лень стало. Так что жду озарения пока.

 

По поводу прожки — молодец! Правда, подсчёт нужен очень для АК. Ибо основная фишка — это объёмные крафты. То есть крафтить верстак, если имеется только бревно, например.

Если робот сможет скрафтить верстак ... сам, то игрок ему, уже будет - не нужен. :)

  • Like 3

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


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

@@vx13, молодец, но немного описание уточни (добавь), мол один сундук, или несколько (например, сверху снизу, справа и слева), где они стоят, есть ли многоуровневый крафт, или только крафт в один шаг и прочее, куда оно вылетает готовое скрафченное, что робот говорит, если чего-то не хватает( ИД или имя, пищит, не пищит, пишет ли, чего именно и сколько не хватает), пример рецепта в базе, как он именно записан, что планируется добавить в программу в будущем и т.п.,

 

И скинчики кинь более информативные (мордофейс, создать рецепт, скрафтить, скрин комплектующих для робота в ассемблере на ванильных текстурах  и прочее по мелочи)

 

А то пока только с ходу понятно, что робот работает с одним сундучком и может или записать выложенный рецепт, или покопаться в сундучке и скрафтить что-то, или вывалить все из себя в сундук. Нам то понятно в целом, кто видел ОС, но у новичка будет миллион вопросов.

 

И будет бомба, а не программка.

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


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

Добавил инструкцию с картинками. Программу написать легче, чем мануал к ней. :wacko2:

  • Like 5

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


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

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

Чтобы ускорить работу без разделения рецептов на диапазоны, для кучи роботов, необходимо сделать автоматизированное хранилище, к которому робот будет иметь доступ.

 

Сделал небольшой набросок:

zZOf13e.png

 

Бирюзовые сундуки это хранилища, красные - буферы, синий - ввод.

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

Робот, когда ему поступает задание на крафт, запрашивает предметы из хранилища и почти моментально крафтит предметы.

 

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

Можно было-бы сделать быстрое создание хранилищ при помощи адаптеров, они могут получать названия контейнеров, следовательно можно легко сделать автоматическую конфигурацию по типам хранилищ, но мне лень с этим возиться, да и вряд-ли это кому-то нужно. Для одного человека совершенный автокрафт не особо нужен, а большой толпой в майне никто не уживается, потому-что чем больше народу, тем больше шума и меньше порядка.

  • Like 1

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


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

Раз Санги ввел транспозеры, нужно ему толкануть идею перемещения реса в другой транспозер по нашим цифровым проводочкам, аля АЕ-шка=)

Мол, типа, из слота 5 стороны 1 транспозера A переместить рес в инвентарь, сторона 3, слот 2 транспозера Б.

Тогда ОС-ка заменит все на свете и можно будет полностью автоматизировать реактор, печечку и дробилку какую-то на одном компе, без дополнительных роботов, воронок и прочего.

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


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

Не, из транспозера в транспозер это тоже самое что и с сундуками-буферами, проблема в том, что нельзя настроить автоматическое направление предметов, т. е. не указать в какую сторону двигать ресурсы в хранилище и обратно, в этом трубы удобней. Но можно сделать длинную кишку из транспозеров и сундуков, а буферы определять по размеру контейнера (к примеру, использовать в качеств буферов какие-нибудь дропперы) Если эту кишку протянули с юга на север, то ставим на юге вывод, а на севере ввод, алгоритм распределения будет очень простой - с ввода по направлению на вывод перекидываются предметы и распихиваются по хранилищам. Ну, а с в выводом наоборот - загребаются из хранилищ и двигаются на юг.

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


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

В том то и дело, что эти длинные кИшки никто не будет строить и синхронизировать и заморачиваться с ними. 

 

Да и я о другом, именно о передаче реса ОС-кой дальше, чем на 2 блока, а именно вроде как по проводам ОС в другой транспозер единой локальной сети, а можно и вай-фай сети. Будет вообще цифровой тессеракт типа с настройками программными))).

 

А крафт на транспозерах пока гемОрно делать, максимум -  это робот-сундук или робот-база сундуков. Транспозерам только можно пополнять базу как-то или сообщить роботу, что там реса нет, чтобы он туда не ехал. Хотя это и адаптерами можно сканить или киллить рес в слотах ненужный.

 

Сейчас от транспозера толку мало. Это по сути гибрид адаптера+управляемая воронка.

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


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

Транспозеры можно объединить в одну сеть через якорный сундук края, выделив там один слот для системы транспортировки. Управлять передачей будет компьютер. Задать маршруты в конфиге, что-то вроде «из инвентаря на стороне «Верх» в транспозере A пересылать в инвентарь на стороне «Низ» в транспозере B»

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


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

Версия 0.9.3 — Исправлена потеря доступа к рецепту предмета при наличии в сундуке предмета с таким-же именем, но без рецепта.

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


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

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

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


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

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

В моей программе это не предусмотрено, так как  слишком усложняет алгоритм крафта (нужно оптимально распределить предметы в сетке для максимальной скорости крафта, так как крафтить по одному предмету слишком долго). Нет способа определить разные типы досок, так как предметы в бд хранятся по их хешу. И я не знаю как удобно указать при записи рецепта, что для определённого предмета метаданные нужно игнорировать. В общем, овчинка выделки не стоит.

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


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

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

Я думаю можно сделать таблицу с ключом plank, и забить туда все названия планок.

  • Like 1

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


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

Версия  0.10.8. Изменён формат БД. Конвертер из старого формата присутствует.

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


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

Класная прожка ток жаль что на 1 сундук

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

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


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

Простите возможно за глупый вопрос. У нас на сервере обновили опен, перестала работать старая версия. ПОставил новую, но она теперь не может видить сундук. НЕ подскажите в чем может быть проблема?

 

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


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

Простите возможно за глупый вопрос. У нас на сервере обновили опен, перестала работать старая версия. ПОставил новую, но она теперь не может видить сундук. НЕ подскажите в чем может быть проблема?

В связи с переходом на новый движок форума куда-то пропали все экстрасенсы. Остальным форумчанам нужен проблемный код и, желательно, версия OpenComputers, в которой этот код не работает. Возможно, тогда кто-то сможет ответить на этот вопрос.

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


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

Версия опена -  OpenComputers 1.7.2.1166 . Проблем с кодом никаких не выбивало, просто при использовании craft -u выбивает, что сундук не найден.

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


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

Если запускашь на сервере, то нужно добавить робота и мод в приват.

Для WG:

rg addmember приват ник_владельца
rg addmember приват -n [OpenComputers]

 

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


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

Если запускашь на сервере, то нужно добавить робота и мод в приват.

Для WG:


rg addmember приват ник_владельца
rg addmember приват -n [OpenComputers]

 

Помогло, спасибо большое))

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


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

И еще одно, у вас краты на русском, а у меня все на инглише. Почему это так?

 

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


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

При игре на сервере названия всегда на английском. Так как программа выполняется на сервере, а локаль сервера дефолтная английская.

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×