serafim
-
Публикации
367 -
Зарегистрирован
-
Посещение
-
Победитель дней
46
Сообщения, опубликованные пользователем serafim
-
-
13 минуты назад, Kingdom сказал:Вот только весит он побольше 0,2 мб.
можно скинуть куда нибудь в облачное хранилище, а сюда скопировать ссылку,
-
1 час назад, Kingdom сказал:две стороны вышли нормальными, как должно быть, а остальные две — будто зеркальное отображение, цифры.
возможно что они расположены не на своих гранях, попробуй в коде поменять порядок расположения
-
на ярлыке с игрой правой кнопкой, расположение файла, там папка моды
-
в примере был верстак, может на нём поиграться, раз мод изменён
{ label = "Фейк", tooltip = "Поддельный верстак", shapes={ {0,15,0,16,16,16, texture="crafting_table_top"}, {0,0,0,16,15,1, texture="crafting_table_side"}, {0,0,15,16,15,16, texture="crafting_table_side"}, {0,0,1,1,15,15, texture="crafting_table_side"}, {15,0,1,16,15,15, texture="crafting_table_side"} } }
если есть возможность скинь .jar файл мода, на стандартном моде помощь проблематична
-
В файлах мода у квантового генератора всего 2 текстуры, когда он активен и выключен
Можно напечатать не описывая все стороны по отдельности
Также адрес расположения текстуры отличается от представленного в вашем коде
{ label = "Квантовый генератор", shapes = { { 0,0,0,16,16,16,texture = "advanced_solar_panels:blocks/quantum generator active" }, } }
-
-
Там доступны только ванильные текстуры, обычно подобные ошибки за за лишнего или недостающего символа, без кода сложно сказать.
Чтоб вставить тут есть кнопочка код
-
-
код модели пожалуйста, а так там всё что угодно может быть
-
4 часа назад, NEO сказал:Разве это проще чем gpu.setResolution()?
Таким способом можно увеличить размер экрана, но шрифт останется по прежнему мелким
-
9 часов назад, ipv2008 сказал:P.S. Такой еще вопрос, как можно увеличить размер шрифта?
Со шрифтами не всё так просто, в OS по умолчанию нет возможности их поменять.
Один символ на экране = одной ячейке, размер ячейки можно увеличить добавив ещё мониторов увеличив площадь.
Можно воспользоватся сторонними библиотеками и шрифтами https://computercraft.ru/topic/2336-ocbf-—-rastrovye-shrifty-dlya-opencomputers/
Предлагаю более простой вариант отрисовки времени при помощи закрашивания ячеек.
Код был взят отсюда https://computercraft.ru/blogs/entry/360-lua-programming-oc-finger-clock-—-stilno-udobno-i-bez-lishney-vyrviglaznosti/
Отсчёт времени большими символами
Скрытый текстlocal seconds = 12000 -- секунд local com = require("component") local gpu = com.gpu local w,h = gpu.getResolution() local nums = {} nums[0] = {"███", "█ █", "█ █", "█ █", "███"} nums[1] = {"██ ", " █ ", " █ ", " █ ", "███"} nums[2] = {"███", " █", "███", "█ ", "███"} nums[3] = {"███", " █", "███", " █", "███"} nums[4] = {"█ █", "█ █", "███", " █", " █"} nums[5] = {"███", "█ ", "███", " █", "███"} nums[6] = {"███", "█ ", "███", "█ █", "███"} nums[7] = {"███", " █", " █", " █", " █"} nums[8] = {"███", "█ █", "███", "█ █", "███"} nums[9] = {"███", "█ █", "███", " █", "███"} local function SplitNumber(num) local n1, n2 if num >= 10 then n1, n2 = tostring(num):match("(%d)(%d)") n1, n2 = tonumber(n1), tonumber(n2) else n1, n2 = 0, num end return n1, n2 end local function DrawNumbers(hh, mm, ss) local n1, n2, n3, n4, n5, n6 n1, n2 = SplitNumber(hh) n3, n4 = SplitNumber(mm) n5, n6 = SplitNumber(ss) for i = 1, 5, 1 do local lineToDraw = nums[n1][i].." "..nums[n2][i].." : ".. nums[n3][i].." "..nums[n4][i].." : "..nums[n5][i].." "..nums[n6][i] gpu.set((w / 3), (h / 3) + i, lineToDraw) end end gpu.fill(1,1,w,h," ") while true do local hh, mm, ss for i = seconds, 1, -1 do mm = math.floor(i / 60) ss = i % 60 hh = math.floor(mm / 60) mm = mm % 60 DrawNumbers(hh, mm, ss) os.sleep(1) end -- выполнить код end
отсчёт 1200 секунд
Скрытый текст
-
попахивает высокотехнологичной ловушкой
-
Норм
В print добавь закрывающую скобку.
Эмулятор OCEmu показывает три часа, хотя только открыл, видимо кастыли, щас на роботе гляну
Всё норм, спасибо за простую реализацию
-
1
-
-
Бывает необходимость показать время работы или ожидания программы, которое составляет по несколько часов
и смотреть что прошло 100500 секунд крайне не удобно, куда привычнее наблюдать в формате часов.
Перекопав интернет на LUA ни чего не нашел, только на C# так что адаптировав оставлю примеры здесь,
может кому и пригодится. Добавил варианты предложенные @BrightYC
Перевод секунд в формат часов
Скрытый текстtimestamp = 100500 -- любое число в секундах print(os.date("%H:%M:%S", timestamp))
Скрытый текстlocal function sectotime(seconds) local m = math.floor(seconds / 60) local s = seconds % 60 local h = math.floor(m / 60) local m = m % 60 print("Ч: "..h.." М: "..m.." С: "..s) end sectotime(100500) -- секунд
Показать сколько прошло времени от включения в формате часов
Скрытый текстlocal computer = require("computer") print(os.date("%H:%M:%S", computer.uptime()))
Скрытый текстlocal computer = require("computer") local term = require("term") local uptime = computer.uptime() local function pasttime() local seconds = math.ceil(computer.uptime()-uptime) local m = math.floor(seconds / 60) local s = seconds % 60 local h = math.floor(m / 60) local m = m % 60 term.write("Ч: "..h.." М: "..m.." С: "..s) end term.clear() while true do pasttime() os.sleep(1) term.clearLine() end
Отсчет времени в формате часов
Скрытый текстlocal term = require("term") local seconds = 120 --секунды term.clear() for i = seconds, 1, -1 do term.write(os.date("%H:%M:%S", i)) os.sleep(1) term.clearLine() end term.clear() print("время вышло")
Скрытый текстlocal term = require("term") local function countdown(seconds) term.clear() for i = seconds, 1, -1 do local m = math.floor(i / 60) local s = i % 60 local h = math.floor(m / 60) local m = m % 60 term.write("осталось ".."Ч: "..h.." М: "..m.." С: "..s) os.sleep(1) term.clearLine() end term.clear() end countdown(120) -- секунды print("время вышло")
-
1
-
-
@BrightYC посмотри как работает код:
на старте, робот ломая твёрдый блок получает скорость износа инструмента
Скрытый текстстрока 270 energy = robot.durability() -- получить уровень износа/разряда инструмента строка 271 while energy == robot.durability() do -- пока не обнаружена разница строка 272 robot.place(3) -- установить блок строка 273 robot.swing(3) -- разрушить блок строка 274 end строка 275 W_R = energy-robot.durability() -- записать результат
периодически происходит проверка износа инструмента и производится расчёт сможет ли он прокопать область
Скрытый текстстрока 78 check = function(forcibly) -- проверка инструмента, батареи, удаление меток строка 79 if steps%32 == 0 or forcibly then -- если пройдено 32 шага или включен принудительный режим строка 80 local delta = math.abs(X)+math.abs(Y)+math.abs(Z)+64 -- определить расстояние строка 81 local cx, cy, cz = X, Y, Z -- сохранить текущие координаты строка 82 if robot.durability()/W_R < delta then -- если инструмент изношен строка 83 report('tool is worn') строка 84 home(true) -- отправиться домой строка 85 end
если заряда не достаточно то отправляется на стартовую точку для обслуживания
Скрытый текстстрока 405 home = function(forcibly) -- переход к начальной точке и сброс лута
на старте происходит сортировка, поиск сундука, выгрузка, крафт лута в блокои , заправка углём,
поиск в сундуке такого же инструмента с износом(или зарядом) более 30 процентов,
если в сундуке нет подходящего, то ищем рядом зарядник и пытаемся зарядить инструмент,
если зарядился продолжаем копать, если нет то ждём новый инструмент
Скрытый текстстрока 539 while robot.durability() < 0.3 do строка 540 report('need a new tool') строка 541 sleep(30) строка 542 end
-
2
-
-
Добавил в программу контроля реактора немного функционала:
Проверку на то что конденсатор был заменён.
в прошлом варианте если в сундуке не было свободного места, сгоревший конденсатор оставался в реакторе, а программа считала что замена была произведена, в результате взрыв
Проверки при старте программы:
на поиск реактора, сундука, сгоревших конденсаторов в реакторе, перегрева, чтоб в случае проблем не включать реактор
В очередной раз переделал логику на оптимальную(по крайне мере пока)
Провёл оптимизацию кода насколько хватило терпения
Если в работе программы заметите ошибки или недоработки, пишите, по возможности исправлю
-
1 час назад, eu_tomat сказал:не хватает односимвольного режима экрана для максимально открытого обзора летающего дрона.
@BrightYC простенький код в довесок к твоему
local full = false local x_max, y_max = gpu.maxResolution() [44] = function() full = not full if full then gpu.setResolution(1, 1) else gpu.setResolution(x_max,y_max) info() end end, -- 44 = кнопка Z
-
Написал автокрафт конденсаторов IC2 на роботе к предыдущему посту <<= ссылка на пост
pastebin get WgcCKBFn c
Скрытый текст
-
-
Тут лишние символы при копировании, и да неплохо бы твой скрин с ошибкой, там указана проблемная строка
Скрытый текст
Если не секрет, что должно получится ?
Скрытый текст
-
по умолчанию в конфиге радиус действия 3 блока
mfuRange=3-
1
-
-
Изменил логику работы, теперь открывает все коробки без ожидания поступления новых
В приоритете выгрузка лута
Скрытый текст--[[открытие коробок утильсырья в судук над роботом ложим коробки лут будет скидывать в низ ]]-- local com = require("component") local term = require("term") local box,drop = 0,0 if not com.isAvailable("robot") then print("только роботы могут использовать эту программу") os.exit() end local r = require('robot') if not com.isAvailable("inventory_controller") then print("для работы нужен контроллер инвентаря") os.exit() end local i_c = require('component').inventory_controller local function unload() print("складываю лут...") for i = 2, r.inventorySize() do if r.count(i) > 0 then drop = drop + r.count(i) r.select(i) if not r.dropDown() then print("в сундуке нет места :(") os.exit() end end end r.select(1) end while true do term.clear() print("всего открыто коробок "..box) print("всего скинуто лута "..math.ceil(drop).."\n") if r.count(1) > 0 or r.suckUp(64) then r.select(1) i_c.equip() r.select(2) print("открываю коробки...") while r.use() do box = box + 1 if r.count(r.inventorySize()-2) > 0 then unload() end end unload() else print("нет коробок, жду...") os.sleep(10) end end
-
было бы в самый раз
-
контроль реактора IC2(1.7.10) с модом OpenPeripheral: pastebin get kxgfyM9 r
Скрытый текстсборка под OpenPeripheral только в таком виде
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
программа контроля реактора IC2(1.7.10) с конденсаторами: pastebin get kfRBNS0w r
программа контроля реактора IC2(1.12.2) с конденсаторами: pastebin get nneD0Mv5 r
Можно использовать любую схему расположения компонентов в реакторе,
также любое расположение управляющих блоков, всё автоматически настраивается !
Использовать только с реактором IC2 типа "звёздочка" (реактор в центре + 6 реакторных камер вокруг)
Видео с примером сборкинаиболее эффективная схема предложена @eu_tomat на странице 9
Скрытый текст
пример сборки предложен @Asior на странице 1
Скрытый текст
мой пример сборки с дополнительной защитой от перегрева
Скрытый текст
автокравт конденсаторов IC2 на роботе: pastebin get WgcCKBFn c
Скрытый текст
-
1
-

3D принтер
в Общие
Опубликовано: · Изменено пользователем serafim
Анимированные текстуры из этого изменённого мода выглядят симпатично.
Я переделал модель чтоб убрать косяки с наложением друг на друга, но текстуры по двум боковым граням налаживаются отзеркалено