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

Рекомендуемые сообщения

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

Несколько вопросов:
Чем обусловлен длительный переход между чанками?
Как продумана система взаимодействия с труднодобываемыми блоками? (обсидианом/досками в шахтах) Копает или обходит?
Исключена ли возможность застрять роботу в пористой структуре бедрока? Так как при калибровки в новом чанке он опускается вниз до бедрока и, как мне кажется, из за неоднородности по высоте может опуститься ниже.
Оправдала ни схема, при которой робот отвязывается от привязки к чанкам?

Изменено пользователем Appo

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Appo сказал:

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

А разве алгоритм Дейкстры предусматривает обход всех узлов?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

краш в строке на 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 час назад, vx13 сказал:

getAllStacks и getAllStacks().getAll() по-разному работают на разных версиях MC

На 1.7.10:

  • индексация  массива из getAllStacks().getAll()  начинается с 0, а не с 1.
  • getAllStacks().getAll()[slot] для пустого слота возвращает пустую таблицу, а не таблицу с «воздухом»
  • getAllStacks()[slot] для пустого слота возвращает nil, а не таблицу с «воздухом»

Понял, исправлю.

 

Отвечаю по порядку.

3 часа назад, Appo сказал:

Чем обусловлен длительный переход между чанками?
Как продумана система взаимодействия с труднодобываемыми блоками? (обсидианом/досками в шахтах) Копает или обходит?
Исключена ли возможность застрять роботу в пористой структуре бедрока? Так как при калибровки в новом чанке он опускается вниз до бедрока и, как мне кажется, из за неоднородности по высоте может опуститься ниже.
Оправдала ни схема, при которой робот отвязывается от привязки к чанкам? И тогда уже потом добавлять ограничения по чанкам в N диапазоне, если есть необходимость.

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

После обработки чанка, робот скидывает мусор и упаковывает ресурсы, при переполнении разгружается.

По дефолту обсидиан вне области видимости, доски не проблема.

Площадь сканирования 16x16 блоков, бедрок хорошо обнаруживается, а если не обнаруживается, то робот не застрянет.

В программе можно настроить, сколько чанков добывать.

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В коде есть переменные, которые можно настроить.
chunks - сколько чанков нужно обработать
min и max - минимальная и максимальная твердость добываемых блоков
port - порт для взаимодействия с роботом (если установлена беспроводная карта)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я чайник в opencoputers (хоть и знаю как собрать пк, редактировать готовую программу, и знаю несколько базовых команд :)) запустил робота, в сингле он работал нормально, но на сервере (не эвилворлд) он отказался класть ресы в сундук, периодически крутится вокруг своей оси и пищит пока не вытащить ресы и перезапустить его, что с этим делать? я только поменял количество чанков для обработки на один (т.к. чанклодер запрещён, а во всех соседних чанках вокруг игрока все процессы замедляются раза в 3)так-же я написал команду на пк как в видео, но координаты робота на нём не показываются, объясните пожалуйста чайнику как надо делать....

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Alex админов ещё не спрашивал, сейчас проверяю может случайно что-то написал в коде пока менял кол-во чанков и плотность блоков...., а местоположение робота не отображалось на пк и в сингле....

@monkey да, в привате, из-за этого проблема?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, yura0138 сказал:

 

@monkey да, в привате, из-за этого проблема?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@monkey понял, сейчас проверю, добавлять робота в приват можно стандартной командой добавления в приват где вместо ника нужно написать имя робота?

 

Изменено пользователем yura0138
исправление

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, yura0138 сказал:

..где вместо ника нужно написать имя робота?


/rg addmember имя_региона -n [OpenComputers] - транспозеры


/rg addmember имя_региона -n ваш_ник.robot - роботы

 

пример:

/rg addmember myhome -n yura0138.robot

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На некоторых серверах глобальный приват для роботов не доступен.

Некоторые блокируют функции контроллера инвентаря.

Сообщение от робота не ловится? А беспроводная карта в нем стоит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Alex я пока проверить не могу, интернет плохо работает, только в 20:00 по Москве, попытался конечно и вроде получилось добавить его в приват, но он так-же крутился, но это ладно, дождусь часа ночи когда интернет нормально работает.... и можно ли сказать сервер? вдруг кто-то знает что там не так работает, правила ведь запрещают (если я ничего не путаю)....

@Doob стоит беспроводная карта и в пк и в роботе, я в сингле сделал точно также как в видео, в итоге в пк начало бесконечно писать nil , и кстати как взаимодействовать с консолью при выполнении программы? (там нельзя ничего писать....) хотя это и не нужно....

Изменено пользователем yura0138
Дополнил

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

так, задал вопрос на форуме сервера, в итоге ничего не помогло что мне там написали, я поступил проще, отошёл от привата и запустил робота там, в итоге он стал складывать ресы в сундук и крафтить блоки, но начал выбрасывать часть ресурсов вверх себя и когда полетел копать дальше эти ресурсы(алмазные блоки и несколько изумрудов:( ) упали вниз в лаву ;( , короче скорее всего перейду к вам....

Изменено пользователем yura0138

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
9 часов назад, yura0138 сказал:

он стал складывать ресы в сундук и крафтить блоки, но начал выбрасывать часть ресурсов вверх себя и когда полетел копать дальше эти ресурсы(алмазные блоки и несколько изумрудов:( ) упали вниз в лаву

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всем спасибо за помощь! Проблема в самом сервере, там компьютеры, скорее всего, только для 3д моделек и нужны, что-то с ними намудрили, в сингле и на другом сервере всё работает нормально, Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
10 часов назад, eu_tomat сказал:

По идее все брошенные наверх ресурсы должны всосаться обратно, но что-то мешает всасыванию.

не что-то, а кто-то, скорее всего это тамошний админ:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 24.04.2019 в 14:28, yura0138 сказал:

но начал выбрасывать часть ресурсов вверх себя и когда полетел копать дальше эти ресурсы(алмазные блоки и несколько изумрудов:( ) упали вниз в лаву

Наоптимизировали там что-то на сервере. Первая команда drop не видит сундука и выбрасывает в мир. Возможно, поможет добавление "холостой" команды drop(side, 0) перед каждой командой drop(side,count). И suck глючит также.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


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