Leroki 31 Опубликовано: 23 августа, 2016 (изменено) UPD #1 - Добавлена смена инструментов (инструкция ниже!) UPD #2 - Прикручена система координат (пока ни как не используется) Робот который копает карьер, как бы не было банально, но он копает его максимально экономно! Характеристики робота: корпус 1 ур. 1шт, процессор 1 ур. 1шт, оперативная память 1ур. 1шт, улучшение инвентаря минимум 1шт (чем больше тем лучше) Для авто-смены инструментов нужно добавить контроллер инвентаря 1шт Для работы дать роботу кирку как минимум железную, а лучше всего электро-бур В программе есть настройки: Настройки задаются в исходном коде программы! trashSlots - количество слотов инвентаря под фильтры, и мусор который робот будет выкидывать по мере продвижения (в эти слоты желательно класть: камень, землю, гравий, песок, ... , булыжник (он ложится в последний слот, что-бы не тормозить функцию проверки блоков) предметы в слотах располагаются по мере их количества в предполагаемом месте работы (самые часто встречаемые, должны лежать в начале, что-бы не тормозить работу) !!! Все слоты-фильтры должны быть заполнены !!! lengh - Длинна карьераwidth - Ширина карьера (вводите четные числа, если введенное число не будет четным, от него отнимется 1)deepM - Высота карьера (вводите числа кратные 3, если число не будет кратное 3, от него отнимутся значения пока оно не будет кратное 3) Для авто-смены инструментов: -------------------------------------------------------------------------------------- toolSwich - смена инструментов роботом true - да / false - нет (если нет контроллера инвентаря оставить выключенным)tool1 - 1 слот для инструментаtool2 - последний слот для инструмента !!! Все отмеченные слоты должны быть заняты !!! -------------------------------------------------------------------------------------- Примечание!!! ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- Устанавливайте высоту карьера на 10 блоков меньше чем высота установки робота, во избежание застревания оного ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- Принцип работы: Робот опускается под землю, и идет змейкой в заданных параметрах проверяя блок под собой и над собой на совпадение в слотах-фильтрах. Если робот не нашел совпадение, то добывает блок, если совпадение найдено, движется дальше. После выкапывания всего, робот возвращается на поверхность и на место дыры под собой ставит блок из последнего слота-фильтра. Пример работы робота: https://www.dropbox.com/s/be9l5rnday5s7ej/2016-08-25_01.40.42.png?dl=0 https://www.dropbox.com/s/vxm0kmklyhpngud/2016-08-25_01.40.51.png?dl=0 Комплектация робота: https://www.dropbox.com/s/vqpn5uei5sjjmes/2016-08-25_02.19.47.png?dl=0 Настройки программы: https://www.dropbox.com/s/nww84qssk4vqa8z/2016-08-25_02.21.21.png?dl=0 Загрузка робота: https://www.dropbox.com/s/jbeuoudovdg63rf/2016-08-25_02.24.45.png?dl=0 Накопанные ресурсы за 1ч:10м: https://www.dropbox.com/s/vfg78en1hw1alx8/2016-08-25_03.41.41.png?dl=0 Робот прошел вниз 36 блоков. У него сломалась кирка и почти сел аккумулятор, так что ставьте глубину не больше 30 - 33 Исходный код: http://pastebin.com/fEa4Qxef https://gist.github.com/L3rok1/17e9265bc33032a9230d5feefe29165a Изменено 24 августа, 2016 пользователем Leroki 11 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 23 августа, 2016 Хорошая идея. Действительно, нафиг роботу ОСь? Прошил - и отправил копать. =) 4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Leroki Автор темы 31 Опубликовано: 23 августа, 2016 Хорошая идея. Действительно, нафиг роботу ОСь? Прошил - и отправил копать. =) Так ему еще и не нужен ни монитор, ни клавиатура, ни жесткий диск и все слоты можно забить инвентарями, да батарейками 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TraerTaer 39 Опубликовано: 23 августа, 2016 Почему мне так оперативно медальки не выдают? Не работал с ЕЕРОМОМ. Можно редактировать "прошивку"? Ведь полезно изменять данные. Можно даже без моника. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Leroki Автор темы 31 Опубликовано: 24 августа, 2016 (изменено) Почему мне так оперативно медальки не выдают? Не работал с ЕЕРОМОМ. Можно редактировать "прошивку"? Ведь полезно изменять данные. Можно даже без моника. Для прошивки eeprom нужен полноценный компьютер, с монитором и клавиатурой, но который можно разобрать и превратить в робота при надобности, а робот в свою очередь поможет вам накопать ресов для нового компьютера. По другому увы ни как. Прошивку при наличии компьютера можно менять хоть кода (если робот не на работе) достаточно положить робота и прошитый eeprom на верстак и новая прошивка поставится в робота, а старая выпадет (сам eeprom можно перепрошивать неограниченное количество раз). PS: извиняюсь за ошибки, пишу с телефона Изменено 24 августа, 2016 пользователем Leroki Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 24 августа, 2016 Жалко шахтера. Заблудится он в сыпучих блоках и будет ждать своего владельца на дне лавового озера. И карьер проходить он будет медленно, роясь в инвентаре на каждом шаге. И вот это издевательство над роботом желательно укоротить: while (deepM % 3) ~= 0 do deepM = deepM - 1 end 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 542 Опубликовано: 24 августа, 2016 Жалко шахтера. Заблудится он в сыпучих блоках и будет ждать своего владельца на дне лавового озера. И карьер проходить он будет медленно, роясь в инвентаре на каждом шаге. Я когда - то думал над проблемой проверки инвентаря, можно вести учёт в памяти, хотя бы примерное представление что и где. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 24 августа, 2016 Я когда - то думал над проблемой проверки инвентаря, можно вести учёт в памяти, хотя бы примерное представление что и где.Тут две подзадачи, требующие оптимизации: найти слоты – изменившийся и соответствующий ему мусорный.Первую я бы решил так: -- очистить очередь сигналов while computer.pullSignal(0)do end -- добыть блок robot.swing(3) -- пропустить сигналы кроме нужного repeat ev,slot=computer.pullSignal(0) until not ev or ev=="inventory_changed" -- новый предмет в [slot]? if ev=="inventory_changed" then ...При наличии контроллера инвентаря быстрее всего будет получить номер мусорного слота из таблицы по имени предмета. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TraerTaer 39 Опубликовано: 24 августа, 2016 (изменено) лучше бы заменить robot.swing(side) .Например, while *чекаем блок по сайду(забыл)* do robot.swing(side) end Ибо 1) Роботы будут лагать в гравиях 2) Роботы на серверах иногда тупят и не ломают блок. Или не двигаются. Изменено 24 августа, 2016 пользователем TraerTaer 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 24 августа, 2016 Не знаю, как на Скае, и что там вообще копать в небе, но на робике достаточно дать роботу кирку из эндия, которую предварительно нужно залинковать шифт-ПКМ на любой сундук, и робот будет кататься и копать и прямо в этот чест рес телепортить. А если в робота кинуть чанклодырь, то такой робот хоть из овера, хоть из незера, рес будет метать прямо в вашу АЕ систему сразу (чест нужно к АЕ подключить) А тут какие-то еще вайлетру свинги до сих пор обсуждаются и проверки мусора. Это же баян прошлого века=) 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Leroki Автор темы 31 Опубликовано: 24 августа, 2016 (изменено) 1) По поводу сыпучих блоков, только что все проверил (в сингле, т.к. на сервере нет возможности проверить) ни чего не тупит, робот работает исправно, проблем не замечено. А вот с обсидианом будут проблемы если если не дать роботу инструмент который разрушит этот блок. 2) Проверка изменившегося слота, и соответственно считать его мусорным, тут может быть потенциальная проблема защитывания в мусорный слот руды выкопаной при движении вперед, т.к. нет проверки при движении вперед, он бы тогда еще дольше копал. (если робот не сломает блок или не сдвинется, то это не сломает всю программу, просто немного сдвинет робота от изначальной точки) 3) while (deepM % 3) ~= 0 do deepM = deepM - 1 end Проверка на дурака, как её сделать короче, не нагородив if'ов, я не знаю. Изменено 24 августа, 2016 пользователем Leroki Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Leroki Автор темы 31 Опубликовано: 24 августа, 2016 (изменено) Тут две подзадачи, требующие оптимизации: найти слоты – изменившийся и соответствующий ему мусорный. Первую я бы решил так: -- очистить очередь сигналовwhile computer.pullSignal(0)do end-- добыть блокrobot.swing(3)-- пропустить сигналы кроме нужногоrepeat ev,slot=computer.pullSignal(0) until not ev or ev=="inventory_changed"-- новый предмет в [slot]?if ev=="inventory_changed" then ...При наличии контроллера инвентаря быстрее всего будет получить номер мусорного слота из таблицы по имени предмета. смысл программы работать на eeprom, при минимальной комплектации робота, таблица предметов может потенциально привести к переполнению памяти и просто не влесть в память eeprom, на 1 планке ОП 1 уровня, а "аналоговая" проверка блоков работает медленнее (это надо еще проверить), но позволяет сделать фильтр довольно таки большой (если стоит достаточно улучшений на инвентарь). Изменено 24 августа, 2016 пользователем Leroki Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
unknown 23 Опубликовано: 24 августа, 2016 (изменено) Проверка на дурака, как её сделать короче, не нагородив if'ов, я не знаю. depth = depth - (depth % 3) А тут какие-то еще вайлетру свинги до сих пор обсуждаются и проверки мусора. Это же баян прошлого века=)Если у игрока есть возможность сделать эндер-кирку, значит у него есть возможность не экономить на соплях и сделать нормального робота второго (третьего) уровня с монитором, клавиатурой и геолайзером в придачу. Мы же говорим про супер-дешевого робота с максимальным инвентарём! Изменено 24 августа, 2016 пользователем unknown 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Leroki Автор темы 31 Опубликовано: 24 августа, 2016 depth = depth - (depth % 3) Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Quant 442 Опубликовано: 24 августа, 2016 Не знаю, как на Скае, и что там вообще копать в небе, но на робике достаточно дать роботу кирку из эндия, которую предварительно нужно залинковать шифт-ПКМ на любой сундук, и робот будет кататься и копать и прямо в этот чест рес телепортить. А если в робота кинуть чанклодырь, то такой робот хоть из овера, хоть из незера, рес будет метать прямо в вашу АЕ систему сразу (чест нужно к АЕ подключить) А тут какие-то еще вайлетру свинги до сих пор обсуждаются и проверки мусора. Это же баян прошлого века=) Не знаю как там на робике, но если ни эндер кирки,ни АЕ,ни прочей ерундистики в таком роде не будет,копалка будет (почти) полностью бесполезной? 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Leroki Автор темы 31 Опубликовано: 24 августа, 2016 (изменено) Не знаю как там на робике, но если ни эндер кирки,ни АЕ,ни прочей ерундистики в таком роде не будет,копалка будет (почти) полностью бесполезной? Что по твоему нужно добавить, что-бы "копалка" была полезной? PS: есть какие-нибудь сжиматели lua кода, хочу прикрутить систему навигации, но места под нее не хватает. Изменено 24 августа, 2016 пользователем Leroki Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Quant 442 Опубликовано: 24 августа, 2016 Что по твоему нужно добавить, что-бы "копалка" была полезной? Это копалка полезна,особенно что она использует только OC. Алекс же предлагает сделать копалку под сборку,которая "одноразовая". 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 24 августа, 2016 но если ни эндер кирки,ни АЕ,ни прочей ерундистики в таком роде не будет,копалка будет (почти) полностью бесполезной? если нет ни АЕ, ни ИК, ни эндер кирок, ни прочей "ерундистики", то тогда не копалка бесполезная, а ОС твой бесполезен вместе со своими копалками ванильными, так как копать для ЧЕГО тогда? Ради копания? Чего-то на твоем "квантовом мясе" я не видел ванильки + умной ОС копалки змейкой онли, а вот ерундистики там был ох как много 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Leroki Автор темы 31 Опубликовано: 24 августа, 2016 (изменено) Добавил, скрины с примером работы. Пример работы робота: https://www.dropbox.....40.42.png?dl=0 https://www.dropbox.....40.51.png?dl=0 PS: Робот плохо работает с эндер-киркой, мусор летит в ящик. Изменено 24 августа, 2016 пользователем Leroki Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 24 августа, 2016 PS: Робот плохо работает с эндер-киркой, мусор летит в ящик. Робот хорошо работает с эндер-киркой. Кирка просто по своей механике ВЕСЬ выкопанный рес отправляет в ящик, минуя робота. Робот и знать не знает и знать не должен, что он там выкопал. А ящик свой уже сортируй Но если ящика нет, или он не прогружен в чанке и недоступен по каким-то причинам или кирка не прилинкована, рес тогда уже будет влетать в пузо робота, как обычно. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах