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

Doob

Гуру
  • Публикации

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

  • Посещение

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

    141

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


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

    Чтобы ускорить работу без разделения рецептов на диапазоны, для кучи роботов, необходимо сделать автоматизированное хранилище, к которому робот будет иметь доступ.

     

    Сделал небольшой набросок:

    zZOf13e.png

     

    Бирюзовые сундуки это хранилища, красные - буферы, синий - ввод.

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

    Робот, когда ему поступает задание на крафт, запрашивает предметы из хранилища и почти моментально крафтит предметы.

     

    Чтобы сделать такую систему хранилищ с транспозерами надо автоматизировать подключение новых ячеек. Я не смог сделать автоматическую биндилку, поэтому задавать направления переноса предметов, расположение буферов и хранилищ придется вручную, а это очень и очень нудное занятие.

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

    • Нравится 1

  2. Многие плачут по трубам, но у нас есть транспозер!
    Долго думал, зачем нужен этот скрипт. Хотел применить для того, чтобы закидывать себе в инвентарь предметы через Inventory Binder, когда я далеко от дома (например на рынке), но т. к. чанклоадеры нам не светят, смысла от этого нет.
    В общем, суть такова - имеется 4 функции, одна проверяет все контейнеры пристыкованные к транспозеру и заполняет таблицу предметов (в каком контейнере сколько и каких предметов лежит)

    Остальные работают с этой таблицей.

    tItems = {
      [item_label] = {  -- таблица для предмета создается по его лейблу
        [side] = {      -- информация о контейнере по определенную сторону
          [slot] = size,-- количество предметов в слоте
          [slot] = size,
          ....
        },
        [6] = count    -- дополнительный счетчик, указывающий сколько всего предметов данного типа
      }
    }
    

    Один контейнер считается буфером - из него забираются запрошенные предметы и раскладываются по хранилищам. (строка #3, сторону задавать через sides API)
     
    Функции:
    "обновить" - заполняет таблицу.
    "из буфера" - перемещает все предметы из буфера в хранилища
    "в буфер" - принимает лейбл предмета и количество, ищет указанные предметы и перемещает в буфер
     

    pastebin get gjRz1uB4 /bin/s_tube.lua


    Функцию main сделал на коленке, так что ногами не пинать. Хотел сделать нормальную GUIшку, но не дошли руки. В планах сделать скрипт последовательной биндилки активных транспозеров, чтобы создавать цепи из хранилищ и буферов (автоматическое расширение хранилищ)

     

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

    • Нравится 6

  3. Кто-то поставил это на входную дверь, постоянно вырубается, глючит, я посмотрел, не стал разбираться где ошибки - написал свою.

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

    Конфиг простой: первая строка - белый список, вторая - направление на контейнер, третья - направление на обычную нажимную плиту, которая находится с внутренней стороны для redstone I/O

     

    У меня скрипт запускается в autorun.lua - os.execute('smart_pplate >> log')

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

     

     

     

    9mfiejD.png

    local wList = {'Player1', 'Player2'} -- белый список игроков
    local chest = 'DOWN' -- направление на контейнер для лута
    local pplate = 5 -- направление на нажимную плиту
    local log = 1 -- вести запись лога
    local event = require('event')
    local component = require('component')
    local redstone = component.redstone
    local pim = component.pim
    local item = nil
    
    local function check(name)
      for i = 1, #wList do
        if wList[i] == name then
          return true
        end
      end
      return false
    end
    
    local function open()
      for side = 0, 5 do
        redstone.setOutput(side, 15)
      end
      os.sleep(2)
      for side = 0, 5 do
        redstone.setOutput(side, 0)
      end
      os.sleep(2)
    end
    
    print('Умная нажимная плита включена.')
    
    while 1 do
      local e = {event.pull()}
      if e[1] == 'player_on' then
        if check(e[2]) then
          print(e[2] .. ' прошел через дверь.')
          open()
        else
          io.write('\n\n' .. os.date() .. '  ' .. e[2])
          for j = 1, pim.getInventorySize() do
            item = pim.getStackInSlot(j)
            if log == 1 and item ~= nil then
              io.write('\n  ' .. item.qty .. '  ' .. item.display_name)
            end
            pim.pushItem(chest, j)
          end
          io.write('\n----------------------')
          print('\n' .. e[2] .. ' был обезврежен.')
        end
      elseif e[1] == 'redstone_changed' and e[3] == pplate then
        open()
      end
      e = nil
    end
    

     

     

    • Нравится 6

  4. Годнота, только еще надо бы сделать возможность лепить несколько веревок на один вход/выход, а то чтобы прикрутить какой-нибудь код после if надо либо делать дублирование кода до if, либо составлять бороду из if if if, чтобы сделать необязательный if

     

    P.S. формат для сохранения простой и понятный, такое можно сделать в OpenComputers

    • Нравится 1

  5. Знаем мы вас, сначала все чинно, культурно, а потом... ОЛОЛОПЕВЕПЕ!11ГДЕМОЯНАНКА!! Лаго-проги! И прочая ересь. Чем больше рыл в одном привате, тем больше безобразия на сервере. А вот если-бы у каждого свой приват, но с общим залом, тогда еще более-менее. А то как в DF, кошка упала в лаву - погибла крепость.

    • Нравится 3

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

    А вообще, это похоже на глубокое читерстов и багоюз, только у двух человек был такой эпик, а у скольких есть наниты и они не жалуются?

    • Нравится 1

  7. Кто-то влетел на рес. Наверно это будет базарчик Сашки, видимо. :)

     

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

     

    NEO получил награду:

    cRuJNuy.png


  8. Запущен комп для тестов на рынке Фингера, координаты 650 66 472 (прямо перед входом)

    Тот, кто юзерадднит себя на этом комп получит:

    • 10 иридя
    • 10 алмазных блоков
    • 10 изумрудных блоков
    • 10 золотых блоков
    • 10 железных блоков
    • 10 медных блоков
    • 10 оловянных блоков
    TPBzzmA.png

     

    А так, можно творить с ним все, что вздумается (кроме написания лаго-прог)

    • Нравится 4

  9. Добавлю от себя. Не обязательно убивать нанитов, если попался эффект урона, это не рационально, т. к. крафт у них дороговат. Просто возле зарядника должен быть комп (или несколько) с WiFi, который будет в цикле выключать все активные эффекты. Достаточно два раза подбежать к заряднику и наниты будут обезврежены ценой всего одной смерти.

     

    Копка, как и все остальные эффекты присутствует не только в комбо, но и в одиночных активных эффектах.

    Самый большой минус это шанс выпадения нескольких эффектов в один слот, к примеру копка и урон может выпасть в один слот и тогда нанитов придется вывести. Точно не помню, какие шансы выпадения нескольких эффектов в один слот, но если правильно помню, 4 эффекта выпадают с шансом 1/32 (вероятность, что в одной банке из 32 будет такой слот)

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

    • Нравится 1
×
×
  • Создать...