Jump to content

Почти идеальный автокрафт предметов из материи


Recommended Posts

Привет всем! Я такой человек, который готов потратить 6 часов времени на автоматизацию дела, которое заняло бы не больше часа времени и сегодня я расскажу про один из таких случаев.

Очень давно хотел реализовать автокрафт предметов из материи, но дальше прекрафта дело не заходило, но на этот раз я таки смог добиться своей цели!

0. Как я пришел к "финальному" варианту:

Спойлер

Изначально была цель - сделать механизм, который считает кол-во требуемых предметов, путем перебора булыжника (если нужно 100 золота, в систему автокрафта поступало 100 булыжника). Когда нужное количество предметов было сделано, квантовый репликатор должен выключиться и генерируемый предмет нужно было забрать. Тут выплыло сразу две проблемы: первая - я так и не нашел способ выключить репликатор, вторая - забрать генерируемый предмет, тоже оказалось, так еще проблема.

Screenshot_46.png.ff8558c1fd0cfbce5b549d39fac83557.png

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

Очень не хотелось идти на крайние меры, но пришлось расширять схему с 15х15 блоков (увы, скриншота не осталось) на потенциальные бесконечность блоков. Так как единственное решение, которое оставалось, пришлось использовать обычные репликаторы: 1 автокрафт - 1 репликатор. Но зато после данного решения, схема для одного автокрафта занимает всего 3х3х3 блока.

Программу для этой машины я написал относительно быстро и безболезненно, но оставить один главный компьютер для всех автокрафтов опять таки не вышло. В планах было определять, какой предмет лежит в первом слоте сундука (первый слот должен был быть генерируемый объект, а остальные слоты - булыжник для пересчета), но сервер очередной раз меня обломал и метод для определения предметов в сундуке тоже, почему-то, недоступен. Пришлось для каждого автокрафта делать отдельный комп со своей программой (меняется буквально две строчки кода). Схема так же увеличилась до размеров 3х4х3. Грустно, но зато на этом мои мучения закончились и автокрафт работал безупречно!

1. Что нужно для схемы:

Спойлер
  1. Репликатор
  2. Хранилище шаблонов
  3. Сундук - 3 штуки
  4. Барабан - 3 штуки
  5. Жидкостная труба (советую из термала в связке с поисковиком, будет работать быстрее)
  6. Транспозер - 2 штуки
  7. Компьютер как минимум, второго уровня (с первым будет виснуть)
  8. Преобразователь энергии из OC
  9. Кабель из OC (для одного автокрафта идет 6 штук, но лучше запаситесь заранее для нескольких)
  10. Провода IC2 для запитки репликатора
  11. МЭ интерфейс
  12. Шина импорта 
  13. Жидкостная шина экспорта
  14. МЭ кабель в количестве от 7 штук
  15. Предметные трубы
  16. Жидкостные трубы

Screenshot_52.png.df6f73d668fcd23079a5efc97b2d72b5.png

Собираем все в кучу, как показано на картинке.

Спойлер

Screenshot_53.thumb.png.4a20b1dc7b93efdb35081b351a3b4b6b.png

Screenshot_54.thumb.png.248ae66c16dbcc99763fe384494edbe4.png

Screenshot_55.thumb.png.73d679aeceec5635b37e320292b8c2fe.png

В жидкостной шине экспорта нужно указать материю кто бы мог подумать. Преобразователь энергии нужно запитать любым образом, подходит как RF так и EU энергия. Соединяем схему с МЭ сетью любыми способами. 
Что касается самого компьютера - тут все просто: в интерфейсе системного блока показаны предметы, которые необходимо вставить. Нам нужна видеокарта, процессор, оперативная память (можно одну планку, но с двумя будет лучше, крафтятся не дорого), жесткий диск с установленной операционной системой и LUA Bios. Крафтите все второго уровня. 

Screenshot_50.png.cd5de1b610baa37d1d3b1236afeab5e5.png
Подробнее про диск и биос. Чтобы установить на диск операционку, нужно иметь системный блок третьего уровня или дисковод, если у вас системник 2-го или ниже. Советую сделать отдельный комп, примерно такой же конфигурации, как для автокрафта, только с дисководом. Он будет служить нам для установки операционки на диски. В дисковод нужно положить дискету с образом операционки. Крафтится она из обычной дискеты и руководства OpenComputers.

image.png.10088e1f0c1e19f3051718374e4e44f8.png
Биос делается точно так же, только вместо пустой дискеты, нужен пустой биос. Кстати, чтоб не делать кучу руководств, можете положить в сетку крафта готовый биос с пустым, на выходе будет 2 готовых. Теперь осталось положить диск в наш компьютер для "обжига" олды вспомнят дисков, включить его и если вы все сделали правильно, после загрузки вам предложат установить операционку командой install. Устанавливаем, жмем Enter для подтверждения и потом для перезагрузки компа. Потом можем вынимать этот диск и ставить его в компьютер для автокрафта.

2. Дальше идет самое интересное: программа - главный мозг этой системы. 

Спойлер

Сам код программы:

--povered by ShinyBird368
local com = require("component") 
local trans = com.transposer 
local t_list = {}

local materiya = 120
local str_item = "иридия"
local t1 = 1
local t2 = 2
local side_in = 3
local side_out = 2

--down = 0
--up = 1 
--north = 2 
--south = 3
--west = 4
--east = 5

for adr, _ in com.list("transposer", true) do 
  table.insert(t_list, com. proxy(adr)) 
end

while true do
  chest = 1 
  item = 1
  sum = 0

  while chest ~= 0 do
    chest = t_list[t1].transferItem(side_in, side_out, _, item, item)
    item = item + 1 
    sum = sum + chest
  end

  if sum ~= 0 then
    print("Получен заказ: ", sum, " ", str_item) 
  end

  os.sleep(1)
  tank = t_list[t2].transferFluid(side_in, side_out, materiya * sum)
  os.sleep(5)
end

Включаем комп, затем пишем edit main (вместо main можете писать любое название программы). После чего вставляем код, показанный выше.

Для того, чтоб программа работала правильно, нужно будет изменить значения в следующих переменных: 
local materiya = 120 — тут вместо 120 пишите кол-во mb для вашего предмета

local str_item = "иридия" — строчка для удобства, тут можете написать предмет, который будет крафтить комп, чтоб контролировать процесс) 

local t1 = 1; local t2 = 2 — эти две переменные отвечают за то, какой транспозер отвечает за сундуки, а какой за баки. Если при запуске программы вылетает ошибка "no inventory", нужно поменять местами 1 и 2 в этих двух переменных (происходит полностью рандомно, автоматизировать этот момент невозможно).

local side_in = 3; local side_out = 2 — расположение входного и выходного хранилища. Советую ставить транспозеры и сундуки с баками так же, как на скриншоте, иначе придется редактировать программу и писать значения за пределами переменных. Если же у вас все так же, просто в этих переменных впишите числа, в зависимости от стороны, куда выходит сундук или бак. Значения сторон указаны в комментарии внутри кода. Чтоб узнать сторону, нужно нажать F3. Ниже показан пример для входного сундука.

image.thumb.png.319baa88a7a80b7004918e9c0660c6df.png

После всех настроек запускаем программу, просто вписав в консоль название программы (в моем случае main). Если все получилось, монитор компа "зависнет" и программа будет ожидать поступления булыжника в сундук.

3. Пару слов о шаблоне для крафта

Спойлер

Шаблон делается следующим образом: 1 булыжник = 1 требуемый предмет. Булыжник нужен в качестве счетчика, чтоб указать нужное кол-во предметов и в дальнейшем, для подсчета материи.

4. Хранилище шаблонов и как туда поместить нужный предмет

Спойлер

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

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

Эту схему еще можно дорабатывать, например добавить на экран монитора вывод количества потраченной материи или каким-то образом не запускать автокрафт, если не хватает материи, но об этом как нибудь позже :).

Напоследок, покажу, как выглядит рабочая схема из нескольких автокрафтов у меня на сервере. Материя поступает долго, но меня лично устраивает)

Screenshot_56.thumb.png.71d16c7011ec176d598c893c1515fb7a.png

 

На этом у меня все, надеюсь, мой гайд вам поможет!

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

Edited by ShinyBird368
нашел багу в программе, предупредил
  • Love 3
  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...