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

serafim

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

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

  • Посещение

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

    46

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


  1. Можете потестить установщик схемы в реактор IC2 https://pastebin.com/xWhYcrgM

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

    JULMGso.png

     

    схемы для реактора которые здесь использовались

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

    Qu8VAYM.png

     

    SOJWbw5.png

     

    7a9rsTf.png

     

    pwSgDyH.png

     

    Есть ещё планы по оптимизации и добавления функционала

    например: показывать недостающие компоненты на русском, принимать атрибуты

     

    Прога  как то не адекватно реагирует на событие inventory_changed

    хотя должна реагировать только если в инвентарь что-то добавили а не забрали

    Скрытый текст
    
    local function wait()
      while true do
        local e, slot = event.pull("inventory_changed")     
        if slot then 
          print("ожидаю компоненты")
          os.sleep(5)
          freeslot()
          scan()
          break
        end
      end
    end

     

     


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

     

    Чуда не случилось ¯\_(ツ)_/¯

    робот не может выставлять схему в реакторе из 54 компонентов быстрее 33 секунды (также и здесь)

    зато теперь можно выставлять разные схема для реактора одной прогой

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

     

    х.з. выкладывать или нет ?

    в любом случае она быстрее работать не стала


  3. 19 часов назад, demongts1998 сказал:

    324 реактора нужно заполнить схемами

    жуть какая, а потом жалуются что сервак лагает (

     

    по поводу улучшения проги

    можно избавится от сотни операторов or используя цикл и таблицу с шаблонами, (возможно это немного поможет)

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

     

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

     

    • Ха-ха 1

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

    теперь все верно?

    да

    18 минут назад, demongts1998 сказал:

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

    опиши подробней

     

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

    шина импорта меч забирать не будет, только лут

    это условие выполнено ? иначе без меча в руке робота прога буде вылетать в ошибку

    можно настроить фильтр для карточки МЕ чтоб шина импорта забирала всё кроме меча

    Ya276mh.png


  5. на этом пасте https://pastebin.com/WxxiDqcH поменяй код на этот 

    Скрытый текст
    
    local robot = require "robot"
    local component = require "component"
    local inv = component.inventory_controller
     
    os.execute("cls")
    print("РОБОТ РАБОТАЕТ!! Создатель - demongts1998")
     
    while true do
      if robot.durability() < 0.2 then
        robot.turnAround()
        inv.equip()
        robot.drop()
        os.sleep(7) --время на зарядку меча
        robot.suck()
        inv.equip()
        robot.turnAround()
      end
      while robot.detect() do
        robot.swing()
      end
    end

     

    там ошибка, двойной robot.detect()

    Скрытый текст
    
      while robot.detect() do
        while robot.detect() do
          robot.swing()
        end
      end

     

     


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

    т.е. он и мобов и руду будет гасить?)))

    угу, принципиально нет разницы

    будет работать при условии что у робота в руке есть меч(кирка, бур и т.д.), и шина импорта меч забирать не будет, только лут

    но в редких случаях может вылететь в ошибку, так как может не найти в инвентаре робота меч


  7. вот так выглядит готовый вариант

    Скрытый текст
    
    local robot = require "robot"
    local component = require "component"
    local inv = component.inventory_controller
     
    os.execute("cls")
    print("РОБОТ РАБОТАЕТ!! Создатель - demongts1998")
     
    while true do
      if robot.durability() < 0.2 then
        robot.turnAround()
        inv.equip()
        robot.drop()
        os.sleep(7) --время на зарядку меча
        robot.suck()
        inv.equip()
        robot.turnAround()
      end
      while robot.detect() do
        robot.swing()
      end
    end

     

     


  8. вот этот кусок кода также можно доработать

    Скрытый текст
    
        robot.turnLeft()
        os.sleep(7)
        robot.turnLeft()
        os.sleep(7)
        inv.equip()
        robot.drop()
        os.sleep(7)
        robot.suck()
        os.sleep(7)
        robot.turnRight()
        os.sleep(7)
        robot.turnRight()
        os.sleep(7)
        inv.equip()

     

    убрав задержки os.sleep(7), оставив только время на зарядку меча

    также убрать двойные повороты заменив на robot.turnAround()

    Скрытый текст
    
        robot.turnAround()
        inv.equip()
        robot.drop()
        os.sleep(7) --время на зарядку меча
        robot.suck()
        inv.equip()
        robot.turnAround()

     

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

     


  9. оставлю пару коментов по поводу этой проги https://pastebin.com/G7DWmXXe

     

     

    1 local sides = require "sides"
    
    5 local Minimum = 0.2
    6 local active_slot = 1

    либа sides нигде не используется, не зачем её вызывать

    зачем то значение Minimum был вынесен в начало кода, как будто его кто-то меняет

    значение active_slot также ни где не используется

    local function Text()
        os.execute("cls")
        print("РОБОТ РАБОТАЕТ!! Создатель - GooodGame")
        print("Доработал-atomzerg")
    end
     
    Text()

    функция Text() вызывается только один раз, тут вопрос нужна она ли вообще, можно заменить

    os.execute("cls")
    print("РОБОТ РАБОТАЕТ!! Создатель - GooodGame")
    print("Доработал-atomzerg")

    в функции Charging() хромает форматирование

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

     

    
    function Charging()
       robot.turnLeft()
    	os.sleep(7)
        robot.turnLeft()
    	os.sleep(7)
         inv.equip()
         robot.drop()
          os.sleep(7)
           robot.suck()
    		os.sleep(7)
            robot.turnRight()
    		os.sleep(7)
             robot.turnRight()
    			os.sleep(7)
              inv.equip()
    end

    общепринято использовать два пробела

    Скрытый текст
    
    function Charging()
      robot.turnLeft()
      os.sleep(7)
      robot.turnLeft()
      os.sleep(7)
      inv.equip()
      robot.drop()
      os.sleep(7)
      robot.suck()
      os.sleep(7)
      robot.turnRight()
      os.sleep(7)
      robot.turnRight()
      os.sleep(7)
      inv.equip()
    end

     

    вызывается она только с одного места в коде на строке 35, нет смысла её выносить отдельно

    функция Energy() два раза повторяет одно и тоже действие

    Скрытый текст
    
    function Energy()
      if robot.durability() < Minimum then
        Charging()
      end
    end
    
    while true do
      if robot.durability() < Minimum then
    Energy()
    end

     

     

    итого всё отладив получим следующий код

    Скрытый текст
    
    local robot = require "robot"
    local component = require "component"
    local inv = component.inventory_controller
     
    os.execute("cls")
    print("РОБОТ РАБОТАЕТ!! Создатель - GooodGame")
    print("Доработал-atomzerg")
     
    while true do
      if robot.durability() < 0.2 then
        robot.turnLeft()
        os.sleep(7)
        robot.turnLeft()
        os.sleep(7)
        inv.equip()
        robot.drop()
        os.sleep(7)
        robot.suck()
        os.sleep(7)
        robot.turnRight()
        os.sleep(7)
        robot.turnRight()
        os.sleep(7)
        inv.equip()
      end
      robot.swing()
    end

     

     


  10. 20 минут назад, demongts1998 сказал:

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

    там почти итак всё есть, разве что при куче мобов можно их лупить пока не закончатся

    на 43 й строке замени robot.swing() на

    1.     while robot.detect() do
    2.       robot.swing()
    3.     end

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

     

     

    можешь посмотреть заказ https://computercraft.ru/topic/3632-nuzhna-programma-mob-grinder/?do=findComment&comment=43289

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

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

     


  11. 46 минут назад, demongts1998 сказал:

    вывод будет шинами импорта ае2

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

    как вариант поставить под робота  ME Interface чтоб он сам лут в сеть кидал


  12. Банк сейчас вживую не пощупать, хотя его и можно построить по этому гайду

    Одной из уникальной фитч был прогресс бар для покупки энергии созданный @Totoro

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

    Hoaa9bp.png

    Тут и тонкие линии за счёт юникода + фон и тень на прогрессе, также мышкой можно менять значение позиции

     

    Хочу поделится прогресс баром @Totoro отдельно от банка

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

    qnrhCW2.png

    https://pastebin.com/DzJvr7xF

    Добавил скролл мышкой и стрелками клавиатуры + мелкие правки при отрисовке мин и макс значениях

    Также можно указать шаг заполнения линии за одно нажатие стрелки или поворот колёсика мыши

    • Нравится 5
    • Спасибо 2

  13. Та вроде работает

    Скрытый текст
    
    local term = require('term')
    local computer = require("computer")
    local com = require('component')
    local sensor = com.isAvailable("os_entdetector") and com.os_entdetector or error("нет сенсора entity detector")
    local gpu = com.gpu
    
    -- Белый список ---
    white = {
      none = false
    }
    
    gpu.setResolution(35,15)
     
    while true do
      pl = sensor.scanPlayers(64)
      term.clear()
      gpu.setForeground(0xffb600)
      gpu.set(2,1, 'В зоне обнаружения радара: '..#pl..' чел.')
      for i = 1, #pl do
        if white[pl[i].name] then 
          gpu.setForeground(0x00ff00)
        else 
          gpu.setForeground(0xff0000)
          computer.beep(440, 1) 
        end 
        gpu.set(2, i+1, i..'. '..pl[i].name)
        gpu.set(25, i+1, ' - '..math.floor(pl[i].range)..' м')
      end
      os.sleep(1)
    end 

     

     

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