Перейти к содержимому

serafim

Пользователи
  • Публикации

    367
  • Зарегистрирован

  • Посещение

  • Победитель дней

    46

Сообщения, опубликованные пользователем serafim


  1. 23 часа назад, Alex сказал:

    чел зарегался, оставил "заказ" и пропал

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

    Тут куча методик которые раньше я не где не использовал (буфер, unicode.char, sub, event.listen и т.д.)

    Пока есть ещё идеи по мелочи, попробую реализовать.


  2. Работает, а я всё думал как его победить, всёж логично

    Появления лишнего символа возможно из за того, что в кодировке utf-8

    один русский символ представляется двумя байтами, а не одним байтом как в английской

    Спосиб, такой вариант тоже решает проблему


  3. 3 часа назад, eu_tomat сказал:

    отправка сообщений закомментирована в коде

    Упс, отладку в эмуляторе OCEmu делал, а там нет связанной карты, да и модем сам на себя работает.

    А майн запускал только пару раз, убедится что прога работает.

     

    Поправил (убрал коменты)

     

    Есть ещё мелкая бага которую не могу победить:

    В русской раскладке при удалении последнего символа нажав Backspace появляется лишний кривой символ,

    чтоб удалить приходится 2 раза нажимать Backspace, а в английской раскладке такого не происходит.

     

    Операясь на эту статью нашол его 9sjwrZf.png 0x00D0

    Скрытый текст
    
    local unicode=require("unicode")
    print(unicode.char(0x00D0))

     

     


  4. https://pastebin.com/GBrch6sX или pastebin get GBrch6sX chat

    Скрытый текст

    Lb3wCV6.png

     

    можно одновременно писать и принимать сообщения

     

    Добавлено: 

    авто определение связанной платы и модема

    история сообщений (теперь выглядит как настоящий чат)

    удаление последнего символа из строки при написании

    несколько цветовых тем

    кнопка выхода с завершением event.listen

    описание кнопок при запуске

    удаление всей строки кнопкой Del

    очистка буфера экрана (защита от переполнения)

    запрет отправки пустого сообщения, нажимая кнопку enter

    звуковое оповещение о сообщении
    курсор теперь не мигает при работе с текстом

    • Нравится 2

  5. В 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

  6. То есть обменник руды на слитки из мэ сети с произвольным списком обмена

     

    Например из мэ сети за 1 железную руду выдаём 2 слитка железа, или за 1 алмазную руду выдаём 4 слитка золота

    • Спасибо 1

  7. Есть пару вопросов:

     

    Берём руду из первого сундука и ложем слитки во второй сундук, а чем из руды в слитки переделывать ?

    (печка, дробилка с печкой из какого то мода, командный блок, или иной способ)

     

    1 час назад, Arsean сказал:

    на монитор выводился курс обмена руд

    можно поподробнее, откуда этот курс берётся и где обменивать

    • Спасибо 1

  8. Небольшое обновление:  http://pastebin.com/RPLWqKTZ  или  pastebin get RPLWqKTZ r

     

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

    Скрытый текст

    wfQrZNB.png

    также добавил список мусора, теперь робот будет его выкидывать 

     

    афк рыбалка из кучи роботов

    • Нравится 2

  9. 12 часа назад, Dimiron сказал:

    нужно добавить компьютер в приват

    Некоторые блоки OC действительно требуют добавления в приват для взаимодействия,

    но я бы не рекомендовал этого делать  тут объясняют почему

    Лучше использовать только редстоун плату


  10. 16 часов назад, Dimiron сказал:

    сделать рулетку которая будет принимать ставку воронкой а выкидывать выйгрыш выбрасывателем

    Начинал я делать подобную штуку, но как то забросил.

    В самой игре много скользких моментов.

    Сначала я делал рулетку на несколько фигур, всякие ягодки, грибочки, BAR-ы, семёрки,
    в итоги от этой идеи отказался, выиграть в подобное не реально.
    Упростил до всем понятным крестик и нолик в одну линию.

     

    16 часов назад, Dimiron сказал:

    Надо чтобы процент выигрыша можно было менять

    Менять процент выигрыша гиблое дело, игрок должен выигрывать хотя бы иногда, или играть он не будет.

     

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

     

    демка:

    Скрытый текст

    NnbLQDH.gif

    пример сборки:

    Скрытый текст

    P2MDpKV.png

    aWYuL2X.png

     

    Код без выдачи призов (можно потестить в эмуляторе)

    Скрытый текст
    
    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

  11. 45 минут назад, eu_tomat сказал:

    Писать код пока преждевременно.

    без OC оно не буде работать от слова совсем, теплоотводы израсходываются примерно за 3 секунды

    45 минут назад, eu_tomat сказал:

    Правило №1

    Согласен, реакторов то 2 и с каждого можно снять энергия обычным способом, поэтому учитывать в расчётах нужно оба

    45 минут назад, eu_tomat сказал:

    в предложенной схеме неоптимальны обе фазы

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

    45 минут назад, eu_tomat сказал:

    И как это исправить?

    Никак, городить ещё отстойников не вариант, их также придётся учитывать в расчёте конечной энергии 


  12. 30 минут назад, eu_tomat сказал:

    то получаем жалкие 233 eu/t на реактор

    Жаль, но из за постоянных простоев в следствии быстрого израсходования теплоотводов дальнейшая разработка не актуальна

     

    демонстрация того что было на текущем этапе

    • Нравится 1

  13. 4 минуты назад, eu_tomat сказал:

    А что происходит во время простоев?

    Да реактор отключается, изначально пытался менять на горячую, но в конечном итоге теплоотвод выгорал полностью

     

    6 минут назад, eu_tomat сказал:

    А чем оправдан обмен теплоотводов между реакторами в этой схеме?

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


  14. 50 минут назад, eu_tomat сказал:

    Тепловой баланс не позволит.

    Беспрерывно на 1540 eu/t она и не работает, присутствуют простои, теплоотводы слишком быстро изнашиваются

    50 минут назад, eu_tomat сказал:

    Я боюсь, что после доработки схемы прогу придётся переписывать.

    Программа не привязана к схеме, она занимается отслеживанием и заменой теплоотводов

    Сейчас пытаюсь максимально ускорить и снизить простои


  15. 17 часов назад, eu_tomat сказал:

    Хочешь выжать из этой схемы больше?

    На данный момент я отлаживаю прогу инструмент, если всё получится тогда будем думать о схеме

     

    17 часов назад, eu_tomat сказал:

    как долго сможет проработать предложенная тобой схема (якобы на 1540 eu/t)?

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


  16. 17 часов назад, eu_tomat сказал:

    схема неоптимальна или даже бессмысленна

    Всё верно, просто пытался выжать как можно больше eu/t совмещая стержни.

    Схем на разогнаны теплоотводах практически нет, нужно экспериментировать

     

    Принцип действия:

    Нижний реактор основной, в нём собрана любая схема, на уране и разогнанных теплоотводах.

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

    OC опрашивает основной реактор раз в 0,7 секунд и если теплоотвод в любом из слотов истощён на определённый порог (50% например) то происходит его замена из отстойника на восстановленный

     

    Меняя теплоотводы выжал с урана 1540 eu/t без затрат на расходники, редстоун, лазурит в случае конденсаторов или охлаждающих капсул.

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

    Вторая проблема это большая нагрузка на транспозер, теплоотводы при большом количестве тепла быстро изнашиваются и их приходится часто менять, это потенциальный лагодром

    • Нравится 1

  17. Изваял тепловой насос на разогнанных теплоотводах, как доведу до более- менее рабочего решения выложу(или нет)

    Два реактора, нижний основной, верхний отстойник, с урана снял 1540 eu/t

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

    Скрытый текст

    9OFb2g7.png

    eyHsAmb.png

     


  18. С помощью OpenComputers мы можем из реактора IC2 выжимать лярды энергии, но на 1.12.2 стоит ограничение на выходе реактора в 8192 eU/t

    По умолчанию если превысить 8192 eU/t провода и машины взрываются, к счастью взрыв можно отключить.

    Но конфигом не снять ограничение в 8192 eU/t, почему то разрабы IC2 против того, чтоб мы пользовались неограниченной энергией.


  19. 18 часов назад, yura0138 сказал:

    можно ли сделать так, чтоб она не вставала

    Для безопасной замены конденсаторов нужно отключить реактор, он останавливается примерно за 0,2 секунды,

    я использую 0,5 секунд чтоб с гарантией он отключился.

     

    Обновил код, добавил заплатку чтоб при замене он не ждал на каждом кондёре 0,5 сек,

    это ускорило скорость замены конденсаторов в несколько раз


  20. 12 часа назад, eu_tomat сказал:

    если реактором управляет компьютер с помощью встроенный красной платы, то реактор погаснет вместе с компьютером.

    Действительно отключается вместе с компьютером, спосиб за инфу

×
×
  • Создать...