serafim
-
Публикации
367 -
Зарегистрирован
-
Посещение
-
Победитель дней
46
Сообщения, опубликованные пользователем serafim
-
-
-
Работает, а я всё думал как его победить, всёж логично
Появления лишнего символа возможно из за того, что в кодировке utf-8
один русский символ представляется двумя байтами, а не одним байтом как в английской
Спосиб, такой вариант тоже решает проблему
-
3 часа назад, eu_tomat сказал:отправка сообщений закомментирована в коде
Упс, отладку в эмуляторе OCEmu делал, а там нет связанной карты, да и модем сам на себя работает.
А майн запускал только пару раз, убедится что прога работает.
Поправил (убрал коменты)
Есть ещё мелкая бага которую не могу победить:
В русской раскладке при удалении последнего символа нажав Backspace появляется лишний кривой символ,
чтоб удалить приходится 2 раза нажимать Backspace, а в английской раскладке такого не происходит.
Операясь на эту статью нашол его
0x00D0
Скрытый текстlocal unicode=require("unicode") print(unicode.char(0x00D0))
-
https://pastebin.com/GBrch6sX или pastebin get GBrch6sX chat
Скрытый текст
можно одновременно писать и принимать сообщения
Добавлено:
авто определение связанной платы и модема
история сообщений (теперь выглядит как настоящий чат)
удаление последнего символа из строки при написании
несколько цветовых тем
кнопка выхода с завершением event.listen
описание кнопок при запуске
удаление всей строки кнопкой Del
очистка буфера экрана (защита от переполнения)
запрет отправки пустого сообщения, нажимая кнопку enter
звуковое оповещение о сообщении
курсор теперь не мигает при работе с текстом-
2
-
-
В 25.10.2020 в 17:39, skorik сказал:нужно создать прогу простейшую для передачи сообщений между ними.
Если имеется в виду чат, то вот накидал пару строк, но без истории сообщений
Скрытый текстlocal com = require("component") local tunnel = com.isAvailable("tunnel") and com.tunnel or error("нет связанной платы") local event = require("event") local term = require("term") local function receive(_,_,_,_,_,message) term.setCursor(1,3) term.clearLine() term.write("< "..message) end event.listen("modem_message", receive) term.clear() while true do term.setCursor(1,1) term.clearLine() term.write("> ") tunnel.send(term.read()) end
p.s. Прога работает, но это так наброски
-
3
-
-
То есть обменник руды на слитки из мэ сети с произвольным списком обмена
Например из мэ сети за 1 железную руду выдаём 2 слитка железа, или за 1 алмазную руду выдаём 4 слитка золота
-
1
-
-
Есть пару вопросов:
Берём руду из первого сундука и ложем слитки во второй сундук, а чем из руды в слитки переделывать ?
(печка, дробилка с печкой из какого то мода, командный блок, или иной способ)
1 час назад, Arsean сказал:на монитор выводился курс обмена руд
можно поподробнее, откуда этот курс берётся и где обменивать
-
1
-
-
По этому адресу ничего нет http://pastebin run rjkm903f
Скрытый текст
Если ты про установку MineOS то тут есть установщик
-
Небольшое обновление: http://pastebin.com/RPLWqKTZ или pastebin get RPLWqKTZ r
добавил статистику, и в случае ошибки можно продолжить ловить нажав любую кнопку
Скрытый текст
также добавил список мусора, теперь робот будет его выкидывать
-
2
-
-
12 часа назад, Dimiron сказал:нужно добавить компьютер в приват
Некоторые блоки OC действительно требуют добавления в приват для взаимодействия,
но я бы не рекомендовал этого делать тут объясняют почему
Лучше использовать только редстоун плату
-
16 часов назад, Dimiron сказал:сделать рулетку которая будет принимать ставку воронкой а выкидывать выйгрыш выбрасывателем
Начинал я делать подобную штуку, но как то забросил.
В самой игре много скользких моментов.
Сначала я делал рулетку на несколько фигур, всякие ягодки, грибочки, BAR-ы, семёрки,
в итоги от этой идеи отказался, выиграть в подобное не реально.
Упростил до всем понятным крестик и нолик в одну линию.16 часов назад, Dimiron сказал:Надо чтобы процент выигрыша можно было менять
Менять процент выигрыша гиблое дело, игрок должен выигрывать хотя бы иногда, или играть он не будет.
Самое сложное оказалось сделать не саму игру, а валюта приемник и выдачу призов,
воронка работает медленно, а игроки любят кидать всякий мусор, типа булыги.
Приходится от него как-то избавляться, поставил большой сундук сзади автомата, вдруг квант кто выкинет
Подключил транспозер и накидал функции, чтоб всем этим управлять.демка:
Скрытый текст
пример сборки:
Скрытый текст
Код без выдачи призов (можно потестить в эмуляторе)
Скрытый текстlocal term = require("term") local event = require("event") local computer = require("computer") local com = require("component") local gpu = com.gpu local info = { "чтобы играть коснитесь экрана", "обменяй железную руду на алмазы", "вы выиграете если выпадет три икса", } local frame_1 = [[ ██ ██ ██ ██ ██ ██ ███ ██ ██ ██ ██ ██ ██ ]] local frame_2 = [[ █████ ███ ███ ██ ██ ██ ██ ██ ██ ███ ███ █████ ]] local frame_3 = [[ ████████████████████████████████████████████████ █ █ ███ ██ █ ███ █ ██ █ █ █ ██ ██ ██ █ █ █ █ ███ ██ █ █ ███ █ ██ █ ███ █ █ █ █ █ █ ██ █ █ ██ █ ██ ██ █ █ █ █ ███ █ █ █ █ █ █ █ █ █ █ █ ██ █ █ █ █ █ █ █ ███ ███ █ █ █ █ █ █ █ █ █ ██ █ █ █ ██ █ ███ ███ █ █ █ █ ██ █ ████████████████████████████████████████████████ ]] local frame_4 = [[ ██████████████████████████████████████████████████ █ █ ███ ██ █ █ █ ██ █ █ █ ██ ██ ██ █ █ █ █ ███ ██ █ █ █ █ █ █ ██ █ ███ █ █ █ █ █ █ ██ █ █ ██ █ ██ █ █ █ █ █ █ █ ███ █ █ █ █ █ █ █ █ █ █ █ ██ █ █ ███ █ █ █ █ ███ ███ █ █ █ █ █ █ █ █ █ ██ █ █ ███ █ ██ █ ███ ███ █ █ █ █ ██ █ ██████████████████████████████████████████████████ ]] local frame_5 = [[ ███ █ ██ █████ █ █ █ ████ █ █ █ █ █ ███ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ██ █ █ █ █ █ █ █ █ █ █ █ █ ██ █ █ ██ █ █ █ █ ██████ █ █ █ ████ █ █ █ █ ███ █ █ █ █ █ █ ██ █ ███ █ █ █ █ █ ██ █ █ █ █ █ █ █ █ █ ██ █ █ █ █ █ █ █ █ █ █ █ ███ ████ ██ █ █ █ █ █ ████ █ █ █ █ █ ███ ]] local colors = {0xFF0066,0xFF9900,0xFFFF00,0x00FF00,0x3300FF,0x00FFFF,0xFF00FF} local function draw(x,frame,y) local row = y or 0 for txt in frame:gmatch( "([^\n]+)" ) do row = row + 1 gpu.set(x, row, txt ) end end local function game() term.clear() gpu.setForeground(0xFFFFFF) local a,b,c = 0,0,0 for n,x in pairs({1,24,47}) do local r = math.random(1,2) os.sleep(0.2) if r == 1 then draw(x,frame_1) else draw(x,frame_2) end computer.beep(220) if n == 1 then a = r end if n == 2 then b = r end if n == 3 then c = r end end os.sleep(0.2) if a == 1 and b == 1 and c == 1 then gpu.setForeground(0x00DB00) draw(10,frame_3,12) computer.beep(300, 0.3) computer.beep(500, 0.1) else gpu.setForeground(0xFF0000) draw(10,frame_4,12) computer.beep(500, 0.1) computer.beep(300, 0.3) end end gpu.setResolution(67,20) gpu.setBackground(0x000000) gpu.setForeground(0xFFFFFF) gpu.fill(1,1,67,20," ") draw(4,frame_5) while true do local e = {event.pull(2,"touch")} if e[1] == "touch" then game() else term.clear() gpu.setForeground(colors[math.random(1,#colors)]) draw(4,frame_5) gpu.setForeground(0xFFFFFF) local y = 12 for i = 1,#info do local e = {event.pull(1,"touch")} if e[1] == "touch" then game() break else gpu.set(38-string.len(info[i])/3,y,info[i]) y = y + 1 end end end end
Код с выдачей призов(алмаз) и очисткой валюта приёмника от мусора
Скрытый текстlocal term = require("term") local event = require("event") local computer = require("computer") local com = require("component") local gpu = com.gpu local tr = com.transposer local red = com.redstone local whitelist = {"iron","diamond"} -- низ:0, верх:1, тыл:2, перед:3, право:4, лево:5 local dropper_side_red = 1 local chest_for_scrap = 2 local info = { "чтобы играть коснитесь экрана", "обменяй железную руду на алмазы", "вы выиграете если выпадет три икса", } local frame_1 = [[ ██ ██ ██ ██ ██ ██ ███ ██ ██ ██ ██ ██ ██ ]] local frame_2 = [[ █████ ███ ███ ██ ██ ██ ██ ██ ██ ███ ███ █████ ]] local frame_3 = [[ ████████████████████████████████████████████████ █ █ ███ ██ █ ███ █ ██ █ █ █ ██ ██ ██ █ █ █ █ ███ ██ █ █ ███ █ ██ █ ███ █ █ █ █ █ █ ██ █ █ ██ █ ██ ██ █ █ █ █ ███ █ █ █ █ █ █ █ █ █ █ █ ██ █ █ █ █ █ █ █ ███ ███ █ █ █ █ █ █ █ █ █ ██ █ █ █ ██ █ ███ ███ █ █ █ █ ██ █ ████████████████████████████████████████████████ ]] local frame_4 = [[ ██████████████████████████████████████████████████ █ █ ███ ██ █ █ █ ██ █ █ █ ██ ██ ██ █ █ █ █ ███ ██ █ █ █ █ █ █ ██ █ ███ █ █ █ █ █ █ ██ █ █ ██ █ ██ █ █ █ █ █ █ █ ███ █ █ █ █ █ █ █ █ █ █ █ ██ █ █ ███ █ █ █ █ ███ ███ █ █ █ █ █ █ █ █ █ ██ █ █ ███ █ ██ █ ███ ███ █ █ █ █ ██ █ ██████████████████████████████████████████████████ ]] local frame_5 = [[ ███ █ ██ █████ █ █ █ ████ █ █ █ █ █ ███ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ██ █ █ █ █ █ █ █ █ █ █ █ █ ██ █ █ ██ █ █ █ █ ██████ █ █ █ ████ █ █ █ █ ███ █ █ █ █ █ █ ██ █ ███ █ █ █ █ █ ██ █ █ █ █ █ █ █ █ █ ██ █ █ █ █ █ █ █ █ █ █ █ ███ ████ ██ █ █ █ █ █ ████ █ █ █ █ █ ███ ]] local colors = {0xFF0066,0xFF9900,0xFFFF00,0x00FF00,0x3300FF,0x00FFFF,0xFF00FF} local function draw(x,frame,y) local row = y or 0 for txt in frame:gmatch( "([^\n]+)" ) do row = row + 1 gpu.set(x, row, txt ) end end local function drop(source,sink,count,name) local slots = tr.getInventorySize(source) local data = tr.getAllStacks(source).getAll() for i = 0,slots do if data[i] and data[i].name ~= nil then if count == "scrap" then for j,name in pairs(whitelist) do if string.find(data[i].name,name) then break end if j == #whitelist then tr.transferItem(source, chest_for_scrap, 64, i+1) end end elseif string.find(data[i].name,name) then tr.transferItem(source, sink, count, i+1) for i = 1,count do red.setOutput(dropper_side_red, 15) os.sleep(0.1) red.setOutput(dropper_side_red, 0) os.sleep(0.1) end break end end end end local function game() term.clear() gpu.setForeground(0xFFFFFF) local a,b,c = 0,0,0 for n,x in pairs({1,24,47}) do local r = math.random(1,2) os.sleep(0.2) if r == 1 then draw(x,frame_1) else draw(x,frame_2) end computer.beep(220) if n == 1 then a = r end if n == 2 then b = r end if n == 3 then c = r end end os.sleep(0.2) if a == 1 and b == 1 and c == 1 then gpu.setForeground(0x00DB00) draw(10,frame_3,12) computer.beep(300, 0.3) computer.beep(500, 0.1) drop(0,1,1,"diamond") else gpu.setForeground(0xFF0000) draw(10,frame_4,12) computer.beep(500, 0.1) computer.beep(300, 0.3) end end gpu.setResolution(67,20) gpu.setBackground(0x000000) gpu.setForeground(0xFFFFFF) gpu.fill(1,1,67,20," ") draw(4,frame_5) while true do local e = {event.pull(2,"touch")} if e[1] == "touch" then game() else term.clear() gpu.setForeground(colors[math.random(1,#colors)]) draw(4,frame_5) drop(0,1,"scrap") gpu.setForeground(0xFFFFFF) local y = 12 for i = 1,#info do local e = {event.pull(1,"touch")} if e[1] == "touch" then game() break else gpu.set(38-string.len(info[i])/3,y,info[i]) y = y + 1 end end end end
Повторюсь проект не завершен и врятли когда то будет, просто делюсь наработками
-
1
-
-
Без openPeripheral не видит верстака
С openPeripheral есть вот такие методы https://pastebin.com/u7tSfsHj
-
Норм
Скрытый текст
мало им что ли сетки 3х3
-
1
-
1
-
1
-
-
45 минут назад, eu_tomat сказал:Писать код пока преждевременно.
без OC оно не буде работать от слова совсем, теплоотводы израсходываются примерно за 3 секунды
45 минут назад, eu_tomat сказал:Правило №1
Согласен, реакторов то 2 и с каждого можно снять энергия обычным способом, поэтому учитывать в расчётах нужно оба
45 минут назад, eu_tomat сказал:в предложенной схеме неоптимальны обе фазы
Идея было заставить работать реактор беспрерывно, но это невозможно, теплоотводы расходуются слишком быстро а восстанавливаются медленно
45 минут назад, eu_tomat сказал:И как это исправить?
Никак, городить ещё отстойников не вариант, их также придётся учитывать в расчёте конечной энергии
-
30 минут назад, eu_tomat сказал:то получаем жалкие 233 eu/t на реактор
Жаль, но из за постоянных простоев в следствии быстрого израсходования теплоотводов дальнейшая разработка не актуальна
-
1
-
-
4 минуты назад, eu_tomat сказал:А что происходит во время простоев?
Да реактор отключается, изначально пытался менять на горячую, но в конечном итоге теплоотвод выгорал полностью
6 минут назад, eu_tomat сказал:А чем оправдан обмен теплоотводов между реакторами в этой схеме?
На одном ректоре из за огромного количества тепла будут продолжительные простои пока восстановятся теплоотводы
-
50 минут назад, eu_tomat сказал:Тепловой баланс не позволит.
Беспрерывно на 1540 eu/t она и не работает, присутствуют простои, теплоотводы слишком быстро изнашиваются
50 минут назад, eu_tomat сказал:Я боюсь, что после доработки схемы прогу придётся переписывать.
Программа не привязана к схеме, она занимается отслеживанием и заменой теплоотводов
Сейчас пытаюсь максимально ускорить и снизить простои
-
17 часов назад, eu_tomat сказал:Хочешь выжать из этой схемы больше?
На данный момент я отлаживаю
прогуинструмент, если всё получится тогда будем думать о схеме17 часов назад, eu_tomat сказал:как долго сможет проработать предложенная тобой схема (якобы на 1540 eu/t)?
После некоторых доработок бесконечно (увы, для замены теплоотводов присутствует временное отключение реактора, изначально пытался менять на горячую, но через время теплоотводы начинали полностью сгорать), но некоторые моменты в работе проги меня не устраивают
-
17 часов назад, eu_tomat сказал:схема неоптимальна или даже бессмысленна
Всё верно, просто пытался выжать как можно больше eu/t совмещая стержни.
Схем на разогнаны теплоотводах практически нет, нужно экспериментировать
Принцип действия:
Нижний реактор основной, в нём собрана любая схема, на уране и разогнанных теплоотводах.
Верхний реактор соединён через транспозер с нижним, он не активен, это отстойник для восстановления изношенных теплоотводов (механика такова, что если теплоотвод не поглощает тепло то он восстанавливается), также он заполнен разогнанными теплоотводами на все слоты, кроме одного слота чтоб было куда производить обмен.
OC опрашивает основной реактор раз в 0,7 секунд и если теплоотвод в любом из слотов истощён на определённый порог (50% например) то происходит его замена из отстойника на восстановленный
Меняя теплоотводы выжал с урана 1540 eu/t без затрат на расходники, редстоун, лазурит в случае конденсаторов или охлаждающих капсул.
Впрочем затраты на постройку двух реакторов и целую гору разогнанных теплоотводов оставляют желать лучшего.
Вторая проблема это большая нагрузка на транспозер, теплоотводы при большом количестве тепла быстро изнашиваются и их приходится часто менять, это потенциальный лагодром
-
1
-
-
Изваял тепловой насос на разогнанных теплоотводах, как доведу до более- менее рабочего решения выложу(или нет)
Два реактора, нижний основной, верхний отстойник, с урана снял 1540 eu/t
К сожалению транспозер перемещает теплоотводы почти без прерывно, так как они очень быстро изнашиваются
Скрытый текст
-
В 03.08.2020 в 21:32, eu_tomat сказал:Интересно, а GT снимает с реакторов ограничение по выработке энергии?
Поставил GregTech, увы ограничение не снялось
-
1
-
1
-
-
С помощью OpenComputers мы можем из реактора IC2 выжимать лярды энергии, но на 1.12.2 стоит ограничение на выходе реактора в 8192 eU/t
По умолчанию если превысить 8192 eU/t провода и машины взрываются, к счастью взрыв можно отключить.
Но конфигом не снять ограничение в 8192 eU/t, почему то разрабы IC2 против того, чтоб мы пользовались неограниченной энергией.
-
18 часов назад, yura0138 сказал:можно ли сделать так, чтоб она не вставала
Для безопасной замены конденсаторов нужно отключить реактор, он останавливается примерно за 0,2 секунды,
я использую 0,5 секунд чтоб с гарантией он отключился.
Обновил код, добавил заплатку чтоб при замене он не ждал на каждом кондёре 0,5 сек,
это ускорило скорость замены конденсаторов в несколько раз
-
12 часа назад, eu_tomat сказал:если реактором управляет компьютер с помощью встроенный красной платы, то реактор погаснет вместе с компьютером.
Действительно отключается вместе с компьютером, спосиб за инфу

Сообщения между двумя компьютерами
в Выполненные заказы
Опубликовано: · Изменено пользователем serafim
Да уж, не ожидал что сделают что ли, хотя для меня тема сделать чат интересная, посути заново изобретаешь
велосипедтерминал.Тут куча методик которые раньше я не где не использовал (буфер, unicode.char, sub, event.listen и т.д.)
Пока есть ещё идеи по мелочи, попробую реализовать.