Doob 2 749 Опубликовано: 3 марта, 2019 Представляю вам опять программу для робота, которая позволяет добывать руду, не лазая по пещерам. Робот, используя геолизер, может самостоятельно находить и добывать руду. Реализованы еще не все возможности, поэтому прошу тестировать и сообщать мне о багах. Требования: Корпус компьютера (уровень II или III) Апгрейд инвентарь (больше - лучше) Апгрейд контроллер инвентаря Жесткий диск EEPROM с прошитым Lua BIOS Геосканер Память (уровень I или выше) Процессор (любой) Апгрейд полета (I уровень) Алмазная кирка или аналогичный инструмент. Опционально: Апгрейд верстак Беспроводная сетевая карта Апгрейд батарея Апгрейд опыта Апгрейд чанклоадер Апгрейд генератор Апгрейд солнечная панель Эндерсундук из мода EnderStorage Установка: Скачать и сохранить файл как init.lua wget https://raw.githubusercontent.com/DOOBW/geominer/master/miner.lua init.lua Закинуть этот файл в корень диска. Добавить диск при сборке робота. Установить робота на платформу из твердых блоков. Дать роботу кирку. Поставить возле робота контейнер и зарядник. Нажать кнопку питания и наслаждаться процессом. 10 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Appo 86 Опубликовано: 3 марта, 2019 (изменено) Здорово) Круто получилось На мой взгляд, нужны тесты на практике во всех условиях Несколько вопросов: Чем обусловлен длительный переход между чанками? Как продумана система взаимодействия с труднодобываемыми блоками? (обсидианом/досками в шахтах) Копает или обходит? Исключена ли возможность застрять роботу в пористой структуре бедрока? Так как при калибровки в новом чанке он опускается вниз до бедрока и, как мне кажется, из за неоднородности по высоте может опуститься ниже. Оправдала ни схема, при которой робот отвязывается от привязки к чанкам? Изменено 3 марта, 2019 пользователем Appo Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 155 Опубликовано: 3 марта, 2019 1 час назад, Appo сказал: я бы использовал алгоритм Дейкстры в такой задаче А разве алгоритм Дейкстры предусматривает обход всех узлов? 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
vx13 2 271 Опубликовано: 3 марта, 2019 краш в строке на 1.7.10 471 if item[slot].name == tool.name and item[slot].damage < tool.damage then Видно часть ошибки: (field '?') getAllStacks и getAllStacks().getAll() по-разному работают на разных версиях MC На 1.7.10: индексация массива из getAllStacks().getAll() начинается с 0, а не с 1. getAllStacks().getAll()[slot] для пустого слота возвращает пустую таблицу, а не таблицу с «воздухом» getAllStacks()[slot] для пустого слота возвращает nil, а не таблицу с «воздухом» 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 3 марта, 2019 1 час назад, vx13 сказал: getAllStacks и getAllStacks().getAll() по-разному работают на разных версиях MC На 1.7.10: индексация массива из getAllStacks().getAll() начинается с 0, а не с 1. getAllStacks().getAll()[slot] для пустого слота возвращает пустую таблицу, а не таблицу с «воздухом» getAllStacks()[slot] для пустого слота возвращает nil, а не таблицу с «воздухом» Понял, исправлю. Отвечаю по порядку. 3 часа назад, Appo сказал: Чем обусловлен длительный переход между чанками? Как продумана система взаимодействия с труднодобываемыми блоками? (обсидианом/досками в шахтах) Копает или обходит? Исключена ли возможность застрять роботу в пористой структуре бедрока? Так как при калибровки в новом чанке он опускается вниз до бедрока и, как мне кажется, из за неоднородности по высоте может опуститься ниже. Оправдала ни схема, при которой робот отвязывается от привязки к чанкам? И тогда уже потом добавлять ограничения по чанкам в N диапазоне, если есть необходимость. Как мне кажется задача состоит в минимизации времени добычи, и если произвести изначальное сканировании территории, и определить места жил как ноды, то задача превратится в задачу Коммивояжера с возвращением в исходную точку, или же до станции зарядки или склада, с обходом препятствий и учетом условий заряда батареи/прочности инструментов/размера хранилища и т.д. После обработки чанка, робот скидывает мусор и упаковывает ресурсы, при переполнении разгружается. По дефолту обсидиан вне области видимости, доски не проблема. Площадь сканирования 16x16 блоков, бедрок хорошо обнаруживается, а если не обнаруживается, то робот не застрянет. В программе можно настроить, сколько чанков добывать. Такую задачу не решить имеющимися ресурсами, можно запустить тысячи роботов, полученные данные загрузить в одну кучу и вычислять задачку до конца Вселенной. Но я сделал проще и быстрей, подход не идеальный, но очень хорошо оптимизирован при помощи практических тестов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 10 марта, 2019 В коде есть переменные, которые можно настроить. chunks - сколько чанков нужно обработать min и max - минимальная и максимальная твердость добываемых блоков port - порт для взаимодействия с роботом (если установлена беспроводная карта) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
yura0138 3 Опубликовано: 23 апреля, 2019 Я чайник в opencoputers (хоть и знаю как собрать пк, редактировать готовую программу, и знаю несколько базовых команд ) запустил робота, в сингле он работал нормально, но на сервере (не эвилворлд) он отказался класть ресы в сундук, периодически крутится вокруг своей оси и пищит пока не вытащить ресы и перезапустить его, что с этим делать? я только поменял количество чанков для обработки на один (т.к. чанклодер запрещён, а во всех соседних чанках вокруг игрока все процессы замедляются раза в 3)так-же я написал команду на пк как в видео, но координаты робота на нём не показываются, объясните пожалуйста чайнику как надо делать.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 23 апреля, 2019 @yura0138 если в сингле все работает так, как заявлено разработчиком в этой теме, и никаких проблем нет, значит проблемы именно на сервере на том проекте, где ты играешь. Что там сказали админы по этому поводу, что робот не может рес выгружать в сундук? Что-то ответили они? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
monkey 7 Опубликовано: 23 апреля, 2019 @yura0138 сундук в привате? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
yura0138 3 Опубликовано: 23 апреля, 2019 @Alex админов ещё не спрашивал, сейчас проверяю может случайно что-то написал в коде пока менял кол-во чанков и плотность блоков...., а местоположение робота не отображалось на пк и в сингле.... @monkey да, в привате, из-за этого проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
monkey 7 Опубликовано: 23 апреля, 2019 2 минуты назад, yura0138 сказал: @monkey да, в привате, из-за этого проблема? роботов надо добавлять в приват, чтобы они могли ресы в сундук скидывать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
yura0138 3 Опубликовано: 23 апреля, 2019 (изменено) @monkey понял, сейчас проверю, добавлять робота в приват можно стандартной командой добавления в приват где вместо ника нужно написать имя робота? Изменено 23 апреля, 2019 пользователем yura0138 исправление Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 23 апреля, 2019 6 минут назад, yura0138 сказал: ..где вместо ника нужно написать имя робота? /rg addmember имя_региона -n [OpenComputers] - транспозеры /rg addmember имя_региона -n ваш_ник.robot - роботы пример: /rg addmember myhome -n yura0138.robot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 23 апреля, 2019 На некоторых серверах глобальный приват для роботов не доступен. Некоторые блокируют функции контроллера инвентаря. Сообщение от робота не ловится? А беспроводная карта в нем стоит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
yura0138 3 Опубликовано: 23 апреля, 2019 (изменено) @Alex я пока проверить не могу, интернет плохо работает, только в 20:00 по Москве, попытался конечно и вроде получилось добавить его в приват, но он так-же крутился, но это ладно, дождусь часа ночи когда интернет нормально работает.... и можно ли сказать сервер? вдруг кто-то знает что там не так работает, правила ведь запрещают (если я ничего не путаю).... @Doob стоит беспроводная карта и в пк и в роботе, я в сингле сделал точно также как в видео, в итоге в пк начало бесконечно писать nil , и кстати как взаимодействовать с консолью при выполнении программы? (там нельзя ничего писать....) хотя это и не нужно.... Изменено 23 апреля, 2019 пользователем yura0138 Дополнил Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
yura0138 3 Опубликовано: 24 апреля, 2019 (изменено) так, задал вопрос на форуме сервера, в итоге ничего не помогло что мне там написали, я поступил проще, отошёл от привата и запустил робота там, в итоге он стал складывать ресы в сундук и крафтить блоки, но начал выбрасывать часть ресурсов вверх себя и когда полетел копать дальше эти ресурсы(алмазные блоки и несколько изумрудов:( ) упали вниз в лаву ;( , короче скорее всего перейду к вам.... Изменено 24 апреля, 2019 пользователем yura0138 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 155 Опубликовано: 24 апреля, 2019 9 часов назад, yura0138 сказал: он стал складывать ресы в сундук и крафтить блоки, но начал выбрасывать часть ресурсов вверх себя и когда полетел копать дальше эти ресурсы(алмазные блоки и несколько изумрудов:( ) упали вниз в лаву Проблема на этапе упаковки. По идее все брошенные наверх ресурсы должны всосаться обратно, но что-то мешает всасыванию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
yura0138 3 Опубликовано: 25 апреля, 2019 Всем спасибо за помощь! Проблема в самом сервере, там компьютеры, скорее всего, только для 3д моделек и нужны, что-то с ними намудрили, в сингле и на другом сервере всё работает нормально, Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 25 апреля, 2019 10 часов назад, eu_tomat сказал: По идее все брошенные наверх ресурсы должны всосаться обратно, но что-то мешает всасыванию. не что-то, а кто-то, скорее всего это тамошний админ:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
vx13 2 271 Опубликовано: 25 апреля, 2019 В 24.04.2019 в 14:28, yura0138 сказал: но начал выбрасывать часть ресурсов вверх себя и когда полетел копать дальше эти ресурсы(алмазные блоки и несколько изумрудов:( ) упали вниз в лаву Наоптимизировали там что-то на сервере. Первая команда drop не видит сундука и выбрасывает в мир. Возможно, поможет добавление "холостой" команды drop(side, 0) перед каждой командой drop(side,count). И suck глючит также. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах