[Пример] Автокрафт всего с помощью робота OpenComputers

Artmoneyse

Администратор
Команда форума
Администратор
Вот уже готов более-менее рабочий код программы которая позволяет облегчить трудоёмкие крафты.
Работает намного быстрее и удобней чем автокрафт через автоверстак buildcraft.
2-3 робота вообще могут заменить огромный лагодром Buildcraft.
Роботы берут ресурсы для крафта с 1 сундука и туда же складывают готовые вещи\блоки\механизмы.
запись крафта.jpg

примерч.jpg
Как записать крафт:
1) Кладем алмазную мотыгу в 1 слот сундука, теперь робот будет понимать что вы хотите записать крафт.
2) В остальные слоты выкладываем крафт который хотим, если в крафте слот пустой то и в сундуке оставляйте пустым.
3) Запускаем программу, должно написать что "Крафт успешно записан"
4) Убираем мотыгу, запускаем программу снова, робот должен начать крафтить.
5) Профит!!!

<КОД>
PHP:
local component = require("component")
local c = component.crafting
local ic = component.inventory_controller
local r = require("robot")

numslot = ic.getInventorySize(1)
hotslotchest = 0
if numslot == nil then
print("Сундук над роботом не найден!")
else
print("Всего слотов в сундуке:"..numslot)
end
if(ic.getStackInSlot(1,1) ~= nil) then
if(ic.getStackInSlot(1,1)["label"] == "Diamond Hoe") then
print("Путь:"..os.getenv("PWD"))
file = io.open(os.getenv("PWD") .."/curentcraft.txt","w")
for j = 2, 10 do
if ic.getStackInSlot(1,j) == nil then
item = "<empty>"
else
item = ic.getStackInSlot(1,j)["label"]
end
file:write(item.."\n")
end
file:close()
print("Крафт успешно записан!")
os.exit()
end
end
file = io.open(os.getenv("PWD") .."/curentcraft.txt","r")
if file == nil then
print("Файл крафта не найден!")
os.exit()
end
local arr = {}
for line in file:lines() do
    table.insert (arr, line);
end
file:close()
setkacrafta = {1,2,3,5,6,7,9,10,11}
itemforcraft = {arr[1], arr[2], arr[3],arr[4],arr[5],arr[6],arr[7],arr[8],arr[9]}
r.select(4)

function craftthis(counts)
i = 0
while i < counts do
c.craft(64)
r.dropUp(64)
i = i + 1
end
end

function loadItem(robotslot, chestslot)
if chestslot == 0 then
print("В сундуке не найден нужный предмет!")
unloadallitem()
else
ic.suckFromSlot(1,chestslot,64)
r.transferTo(robotslot,64)
end
end

function unloadallitem()
for j = 1, 16 do
r.select(j)
r.dropUp(64)
end
r.select(4)
end

function finditem(nameitem)
onlyfirst = 0
Cnumslot = numslot
i = hotslotchest
::startfind::
while i < Cnumslot do
i = i + 1
ItemStack = ic.getStackInSlot(1,i)
if ItemStack ~= nil then
if ic.getStackInSlot(1,i)["label"] == nameitem then
hotslotchest = i
return i
end
end
end
i = 0
Cnumslot = hotslotchest
onlyfirst = onlyfirst + 1
if onlyfirst == 1 then goto startfind end
return 0
end

doWork = true
while doWork do
craftthis(1)
for j = 1, 9 do
if itemforcraft[j] ~= "<empty>" then
  if r.count(setkacrafta[j]) < 1 then
  print("Кончилось "..itemforcraft[j].." в слоте "..setkacrafta[j].."...")
  loadItem(setkacrafta[j],finditem(itemforcraft[j]))
     if r.count(setkacrafta[j]) < 1 then
     doWork = false
     break
     end
  end
end
end
end
</КОД>
 
Последнее редактирование:
S

Stanislavich

Guest
Для тех, кто не смог с этой прогой, предоставлю вариант автокрафта, который использую я. Минусы: рецепты в базу данных записываются на английском, нету авто сканирования сундука, поэтому во время крафта нельзя в сундук подкидывать предметы.Скачать
Please, Вход or Регистрация to view URLs content!

Please, Вход or Регистрация to view URLs content!
 

Morlock

Активный участник
Старожил
3) Запускаем программу, должно написать что "Крафт успешно записан"
4) Убираем мотыгу, запускаем программу снова, робот должен начать крафтить.
5) Профит!!!
Как её проклятую хоть запустить. Убей, не пойму.
Пишу, пастебин ран -ф арти, оно рапортует что загрузило и ранит.
Пишу edit craft, открывается окошко (в сундуке уже мотыга и крафт, всё правильно разложил), сохраняю крафт, выхожу, пишу cd mnt => enter, потом arty и file not found. What the fuck is it?!
Не получается. Первого робота мне Станислвыч заделал софтово, а второго я шота не одолею никак.
 

Artmoneyse

Администратор
Команда форума
Администратор
Как её проклятую хоть запустить. Убей, не пойму.
Пишу, пастебин ран -ф арти, оно рапортует что загрузило и ранит.
Пишу edit craft, открывается окошко (в сундуке уже мотыга и крафт, всё правильно разложил), сохраняю крафт, выхожу, пишу cd mnt => enter, потом arty и file not found. What the fuck is it?!
Не получается. Первого робота мне Станислвыч заделал софтово, а второго я шота не одолею никак.
1.) С пастебина она работать не будет))))
2) Я давно записал гайд но что-то совсем отпало желание его выкладывать
Ладно, учитывая что прогой заинтересовались доделаю свой говно-гайд.
 

Morlock

Активный участник
Старожил
Ею многие интересуются, но как программировать знают единицы. И это передаётся как тайное знание:D
Тут главное понять как именно сделать файл крафта.
Вот ЧЯДНТ: робот на зарядке, создан по образу и подобию рабочего экземпляра, который работает и крафтит, потом сундук над роботом и в него положена мотыга и согласно примеру выложен крафт, с учётом ячеек.
Как именно программировать файл крафта и как его запоминать?
 

Artmoneyse

Администратор
Команда форума
Администратор
Ею многие интересуются, но как программировать знают единицы. И это передаётся как тайное знание:D
Тут главное понять как именно сделать файл крафта.
Вот ЧЯДНТ: робот на зарядке, создан по образу и подобию рабочего экземпляра, который работает и крафтит, потом сундук над роботом и в него положена мотыга и согласно примеру выложен крафт, с учётом ячеек.
Как именно программировать файл крафта и как его запоминать?
С начало нужно записать программу на диск или дискету вашего робота.
Только тогда она сможет нормально работать и записывать крафт.
Сам рецепт считывается с первых слотов сундука.
Весь крафт нужно выложить в 1 строку сундука, после мотыги.
При запуске программы она проверяет наличие мотыги, если находит то пытается записать крафт.
 
Последнее редактирование:

Morlock

Активный участник
Старожил
Короче, вся проблема была в том, что я не мог код вставить в файл. Мне Станиславыч объяснил как, после чего всё получилось.
Я ж думал ctrl C ctrl V, а оно нихрена и надо было или инсёртом или колесом мыши.

А так гайдик годный и разжёван полностью. Благодарю.
 
Последнее редактирование:

MrZenik

Активный участник
Старожил
у меня почему-то не работает. не хочет записивать крафт
(Боня помог - заработало)
 
Последнее редактирование:

BoneLord

Администратор
Команда форума
Администратор
у меня почему-то не работает. не хочет записивать крафт
По моему предположению, проблема скорее всего в привате.
Что бы дать роботам возможность видеть сундук, стоить добавить nick.robot в приват.
Что бы дать роботам/дронам возможность полноценно взаимодействовать с сундуками, стоить добавить [opencomputers]
Другими словами, твоя команда:
/rg addmember <Название_привата> MrZenik.robot [opencomputers]

Примечание: добавлять [opencomputers] советую НЕ в основном привате, где хранятся ценные ресурсы, во избежанию возможных грифов.
 

MrZenik

Активный участник
Старожил
По моему предположению, проблема скорее всего в привате.
Что бы дать роботам возможность видеть сундук, стоить добавить nick.robot в приват.
Что бы дать роботам/дронам возможность полноценно взаимодействовать с сундуками, стоить добавить [opencomputers]
Другими словами, твоя команда:
/rg addmember <Название_привата> MrZenik.robot [opencomputers]

Примечание: добавлять [opencomputers] советую НЕ в основном привате, где хранятся ценные ресурсы, во избежанию возможных грифов.
Я в одиночке тестил,не на сервере.
 

BoneLord

Администратор
Команда форума
Администратор
Я в одиночке тестил,не на сервере.
Тогда просто переглянь гайд... Ты точно сделал что-то не так.
Например, крафт не правильно выкладаешь, либо собрал робота не так.
Для полной картины хотелось бы увидеть скрин ошибки, например.
 
I

IJICrazyJII

Guest
Возможно-ли создать программу, которая будет крафтить все комплектующие для основного крафта? К примеру надо скоафтить гравик, для его крафта надо квант кирасу и многие вещи, которве в лом крафтить.
 

BoneLord

Администратор
Команда форума
Администратор
Возможно-ли создать программу, которая будет крафтить все комплектующие для основного крафта? К примеру надо скоафтить гравик, для его крафта надо квант кирасу и многие вещи, которве в лом крафтить.
Да, безусловно возможно
 
I

IJICrazyJII

Guest
Мне только под гравики надо(клучшенные)
 
I

IJICrazyJII

Guest
Естесна хочу что бы написали. Самому то лень
 
I

IJICrazyJII

Guest
Ну я никого не заставляю этого делать.
 
Сверху