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

BarBoss

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

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

  • Посещение

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

    5

Все публикации пользователя BarBoss

  1. Моды прекрасны, спору нет. Но через три дня лично у меня будет с этими модами абсолютно всё, включая самые тяжёлые инфузы из таума. И что потом? Админ, давай новый сервер, этот надоел!
  2. Это проще транспозером делать. Попутно будет стержни менять. Был одно время сервер, где простым смертным к реактору доступа не было.
  3. Если переработку выносить вне улья, то зачем тогда сам улей? Что там делать? Любоваться на свой домик и пополнять запас картошки и алмазов в сундучке? Что значит "жить"? Ходить из угла в угол?
  4. С рэдповером не путаешь? Там действительно был такой агрегат. Я даже на одном сервере свой стеклянный дом в аквариум превратил, когда играть наскучило.
  5. Износ инструмента из тинкерса он, похоже, не распознаёт.
  6. Очень интересно. Работа в EEPROM также неочевидна и интересна. Например мне категорически не удалось в EEPROM получить заряд батарей робота. И аналог os.sleep() не придумался. P.S. Я правильно понял, что геокоп копает вокруг себя в радиусе 8 блоков?
  7. Предлагаю реализовать игрушку - сокобан. Робот расставляет блоки, потом ползает и двигает их, управляемый игроком.
  8. Робику нужно убрать креатив, вайпнуть и ничего более. Нормальный сервер. Такого ещё не было. P.S. Иногда пытаюсь представить себе, как будет выглядеть террафирма с OpenComputers. Придётся процессор из синей стали ковать...
  9. Адаптер, приставленный к реактору предоставит необходимый интерфейс, а транспозер позволит помещать/извлекать компоненты в реакторе. Но работает адаптер только с обычным реактором. С жидкостной версией этот номер не пройдёт. Например - print(component.reactor_chamber.getHeat()) - выведет на печать температуру реактора Само собой, что робот с адаптером работать не может. Только компьютер. О том, как узнать доступные методы: http://computercraft.ru/topic/752-raskrytie-vozmozhnostei-adaptera-s-modami-ic2exp-i-gc/?do=findComment&comment=9854
  10. Реактор работает. В реакторную версию можно и слипов насыпать, хуже не будет. А для обслуги сундука - и без того довольно медленно всё, увы. Вот если бы какой-то сигнал получать при открытии сундука, чтоб программа не молотила впустую...
  11. Адаптер не работает с жидкостным реактором. Проверял не на этом сервере, но не думаю, что что-то изменилось.
  12. Выловил ошибку в функции finditem() - исправил. (t.getStackInSlot() может отдавать nil, на котором спотыкается if )
  13. Итак, надумал опубликовать программульку, работающую с транспозером и двумя сундуками. Один рабочий, а второй - буфер, куда будет складываться лишнее и извлекаться недостающее. Задача - поддерживать содержимое рабочего сундука в заранее заданном состоянии. Для начала разложим в рабочем сундуке наше барахло в нужном порядке. Количество не важно. Запускаем -- controlchest save - будет создан файл, с записью о образцовом содержимом сундука. Программа в цикле проверяет содержимое рабочего сундука, сравнивает с образцовым и перемещает предметы в/из буферного сундука, чтоб восстановить порядок, который мы нарушаем извлекая что-то или добавляя в сундук. Второе применение для этой программы - управление реактором для неинженеров. Инвентарь максимального реактора соответствует железному сундуку. Делаем файл (руками или сканом железного сундука с расположенными нужным образом деталями), запускаем и вуаля. Компоненты в реакторе будут установлены соответственно и бонусом получаем автоматическую замену стержней. Единственный нюанс - нужно изменить программу так, чтоб она помещала компоненты поштучно. Я не проверял, что будет, если транспозер попытается вкинуть в реактор сразу стак стержней. Обязательно нужно правильно инициировать переменые first и second - они описывают положение сундуков относительно транспозера!
  14. BarBoss

    Infinitubes. ТРУБЫ

    Установить АЕ, накупить чанклоадеров и да здравствуют грандиозные автоматизированные суперкомплексы по переработке всего, что выкопают чудесные автономные роботы. На сервер можно не заходить - пусть оно лагает без нас. Трубы - зло!
  15. Возможно некоторые эффекты проявляется при включении комбинации из нескольких setInput? Тогда количество возможных эффектов возрастает на порядки. В инете ничего вразумительного не нашел по этому поводу. Можно модифицировать программу, чтоб перебрала, например, все возможные пары входов.
  16. BarBoss

    Робот-фермер

    Для фермы кактусов желателен апгрейд "луч захвата" или как его там. Кактусы даже рубить не надо, они сами "отваливаются" при приближении робота. Отваливаются и те, что сбоку от робота. Более половины урожая теряется при этом.
  17. Имею дурацкую привычку накрывать свой приват стеклянным колпаком. Стены легко строятся руками, а вот горизонтальные поверхности - крыша и межэтажные перекрытия строить утомительно. Поручить это роботу - чего проще? Задавать роботу форму полигона координатами углов очень неудобно, потому руками строится внешний контур, а робот заполняет его в горизонтальной плоскости, следуя по кругу против часовой стрелки. Т.е. робота нужно ставить так, чтоб стенка была справа от него или перед ним. Требования к роботу - наличие апгрейдов инвентаря и "парение". Поскольку алгоритм примитивен, робот может сам себя поймать в ловушку из блоков. Этого можно избежать, контролируя наличие блоков не только справа но и слева. Но для этого робота нужно дополнительно поворачивать, что сильно замедлит работу. Он и так волчком крутится. Жаль, нет функции .detectLeft()
  18. OpenComputers. Собираем робота. Первоначально этот гайд был опубликован на другом сервере мною же, так, что никаких копирайтов данный текст не нарушает, зато позволяет ссылаться на него не упоминая "злобных конкурентов". По той же причине на картинках присутствуют генераторы из Экстраутилит - пусть Вас это не смущает. Сделан гайд для полных новичков в этом моде и описывает создание робота "с нуля". Как ни странно, но опытным игрокам просто не приходит в голову описывать вещи, которые считаются общеизвестными и очевидными. Прежде, чем описать процесс изготовления робота, замечу, что есть различные способы загрузить в него программу. Я опишу наиболее простой и очевидный способ. Он же наиболее затратный по ресурсам. Один из компонентов робота — жесткий диск. Но скрафтить диск недостаточно, нужно записать на него операционную систему. Потому мы сначала соберём компьютер, запишем диск, а потом используем компоненты компьютера для сборки робота. Итак, крафтим системный блок-3, ставим его, подаём энергию — можно вплотную поставить генератор из экстраутилит или подать энергию IC2 через преобразователь энергии. Вплотную к корпусу ставим видеомонитор-1, перед монитором кладём клавиатуру. Если системный блок будет 1-го или 2-го уровня, придётся сделать ещё и дисковод и поставить рядом. Внутрь системного блока помещаем: видеокарту (уровень 1), процессор (лучше уровень 2 или 3) память (512Кб будет достаточно) Lua-BIOS (Не путайте с EEPROM ! Внешне они идентичны!) жесткий диск (уровень 1, больше нет смысла) дискету с OpenOS (зелёненькая) (Если системник 1-го или 2-го уровня, то во внешний дисковод!) Всё. Тыкаем на кнопку включения. Потом ПКМ по клавиатуре или экрану монитора. Немного ждём, пока компьютер загрузится и выведет приглашение. Теперь нужно переписать OpenOS на жесткий диск. Вводим команду «install» и видим примерно такую картину: Команда вывела список доступных дисков и просит ввести номер, на который нужно скопировать ось. Список состоит из единственного пункта «1)» за которым следует куча цифр и букв — это уникальное имя нашего диска. Жмём цифру один и ввод — начинается копирование файлов, после чего будет предложено перезагрузить компьютер. Выключаем его, вынимаем дискету и снова включаем, чтоб убедится, что жесткий диск правильно записан. Теперь можно разобрать компьютер и приступить к сборке робота. Сборку выполняет сборщик роботов. Ему также требуется энергия -.подаем её через преобразователь энергии. Кстати, сборщик весьма прожорлив и если энергии будет мало, то процесс сборки растянется надолго. Кладём в сборщик системный блок, после чего кладём следующие компоненты: процессор, память, Lua-BIOS жесткий диск, на который мы только что записали OpenOS видеокарту-1 (Карта и монитор более высокого уровня непригодны) видеомонитор-1 клавиатуру Остальные компоненты устанавливаются в зависимости от назначения робота. Строка «сложность» показывает, сколько ещё компонент можно в робота добавить. Увы, робот не резиновый. Особенно это заметно, при использовании системного блока 2-го уровня. (Первый вообще мало полезен, а по цене мало отличается от второго). Наводим курсор мыши на зелёный треугольничек слева от строки «Сложность». Во всплывающей подсказке появится слово «Собрать» или предупреждение, если не хватает чего-то очень важного. Нажимаем. Сборка происходит около пяти минут, если энергии достаточно. Если Вы накосячили и вложили просто EEPROM вместо LuaBIOS, то можно его заменить положив BIOS и робота в сетку крафта. Если вы не вложили монитор, клавиатуру и т.д. то Вам придётся воспользоваться разборщиком и повторить сборку. Разборщик машина дурная - что нибудь непременно сломает. Будте к этому готовы. Итак, робот собран. В нём уже есть некоторый запас энергии, но лучше сразу поместить его на зарядник для роботов к которому подведена энергия. Заряднику для работы нужен сигнал красного камня! Теперь можно упражняться с программированием. Интерфейс робота состоит из экрана вверху, кнопки включения, шкалы заряда. Справа инвентарь (если вы установили улучшение инвентарь), под ним слева ячейка для инструмента. Включаем робота. Теперь можно приступать к программированию робота. Команда «edit proga» создаст файл «proga» и откроет его для редактирования. Теперь можно набить текст программы на клавиатуре или вставить его из буфера обмена. Закончив с вводом программы жмём «Ctrl+S» чтоб сохранить файл на диск и «Ctrl+W» чтоб завершить редактирование. Теперь набираем имя созданного файла «proga», ентер, и робот начинает его выполнять. Или не начинает, если вы накосячили в программе. Обращаю внимание, что реализованный в роботе язык Lua и OpenOS регистрозависимы. Большинство работает в виндовс и привыкло, что регистр значения не имеет. Здесь же "proga" и "Proga" - это разные файлы.
  19. Сделал было робота-карьериста вырубающего сплошной массив, но оказалось, что на ИТ он малоэффективен. Основная добыча - кобла. Горизонтов руд, как на МТ, здесь нет. Если нет чанклоадера, то карьер вообще бесполезен. Всё равно приходится стоять рядом и пасти его. Испробовал вариант проще. Это модификация широко известной "бесконечной комнаты", которая роет горизонт высотой 3 блока по спирали от центра. С небольшим изменением - добавлен ограничитель радиуса и, самое главное, робот роет не сплошной горизонт, а движется по спирали, оставляя между витками стенку толщиной в два блока. Дополнительным ограничением является износ кирки (я использую самые простые - бронзовые). Сломав кирку он останавливается и ждёт, когда её заменят. Дополнительным бонусом "спиральной" траектории является то, что робот нырнув в лаву или воду с большой вероятностью вернётся в мои цепкие лапы. Робот использован простой. Второй уровень, память Т2.5, 1 инвентарь и генератор. Желателен контейнер 3-го уровня - туда можно поместить апгрейд "опыт". Ангельский апгрейд тоже не помешает - робот сможет поставить сундук в лаву или навесу и нормально разгрузиться. Иначе он лут просто выбросит. Вот сама програмуля: Итак, ставим робота даём ему кирку, сундуки и уголь. Запускаем. А потом топаем сзади и выколупываем из стен то, что нам приглянулось.
  20. Поэкспериментирую с кропсами завтра. Засада в том, что понятие "успех операции" весьма неоднозначно. false будет в двух случаях - если кропс не вырос и если действие пропущено. Как реагировать? Повторить? Игнорировать? Вангую такую ситуацию во многих случаях. Проверить состояние кропса нечем. Слипы в этой ситуации ничего принципиально не меняют. Я добавлял слипы в несколько секунд - эффекта вообще никакого. Если сервер сбросил запрос на обработку действия - ждать можно до морковкиного заговения. Проверять исполнена ли каждая команда - это нонсенс. Это нужно практически API робота переписать - не пихать же это счастье в каждую программу сызнова. Ведь робот не только двигается. А всякие апргрейды? Работа с жидкостями, инвентарём и прочее? Это же тихий ужас. И самое главное - раньше такой проблемы не было. ИМХО, тут в консерватории что-то не так.
  21. В одиночке нормально всё. Пробовал я.
  22. > Практически все команды робота возвращают true/false как индикатор успеха выполнения. Не всё так просто. Попытайтесь применить true/false для функции use() выполняемой над кропсом, растущим на жердочке, а я посмеюсь. Даже объехать на кривом козле с геолизером это нельзя - нет способа получить состояние кропса. Перемещение - это лишь самые примитивные и очевидные команды. Этокакэто? У нас сервер в несколько потоков работает? И один поток пихает в очередь другого задачи асинхронно, не интересуясь выполнением предыдущей команды? Иначе описанное Вами "нитро" нереализуемо. А вот то, что я вполне допускаю - сервер при перегрузке сбрасывает с очереди обработки низкоприоритетные задачи - падение гравия, распространение воды, мобов и т.д. в это я готов поверить. И движение роботов попало туда-же. При том, что виртуальная машина lua осталась высокоприоритетной и добросовестно исполняется. Результат на лице. P.S. Это лишь мои домыслы. То, как я реализовал бы обработку будучи разработчиком серва. Реально работы сервера я не знаю.
  23. Решение проблемы методом контроля исполнения команды передвижения, безусловно, рабочее. Но ведь робот не только движется. use() он тоже пропускает (хотя и много реже). Как её контролировать? А другие функции? Эдак мы придём к тому, что нужно весь API робота переписать. Что-то тут не то. Разработчик мода просто не мог такой проблемы не предусмотреть. Я играл на разных серверах с OC и на всех были лаги и фризы. Куда ж без них. Визуально робот застывал, а потом мгновенно перемещался на несколько позиций выполнив работу. Здесь же он застывает на месте, команды не исполняются. Такое впечатление, что сервер не успевает всё обработать, но вместо снижения TPS просто сбрасывает часть очереди, не обработав её. В их числе оказываются и "заявки" на действия роботов от виртуальных машин Lua. Для роботов такая рассинхронизация фатальна. Перемещение - это лишь часть проблем, то, что явно видно.
  24. Итак пишем прогу, которая бесконечно гоняет робота взад-вперёд : local r = require("robot") local component = require("component") local long = 10 -- длинна участка. local pause = 5 -- гоняем робота взад - вперёд repeat for bb=1 , long do r.forward() end r.turnAround() os.sleep(pause) for bb=1 , long do r.forward() end r.turnAround() os.sleep(pause) until false И убеждаемся, что робот рандомно пропускает движения. И не только движения. use() - тоже иногда пропускает. Что делать, как быть?
×
×
  • Создать...