artem211 Автор темы 428 Опубликовано: 11 марта, 2016 К словам о куче вызовов require, граждане, я просто перестраховываюсь и делаю все крупные переменные локальными, чтоб не забивать память роботу. Это сильно замедляет работу? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Hello 125 Опубликовано: 12 марта, 2016 Есть ведь некоторые переменные, которые нужны для каждой функции или для дольшинства, их стоит вынести за пределы функций. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
DIO_CAMELOT 34 Опубликовано: 12 марта, 2016 К словам о куче вызовов require, граждане, я просто перестраховываюсь и делаю все крупные переменные локальными, чтоб не забивать память роботу. Это сильно замедляет работу? После мучений, я стал пользоваться именно вашей программой, потому что только в ней я не встречал ошибок препятствия, робот всегда доходит до бедрока, прям всегда, и самое главное, он не жалуется на недостаток энергии, и в отличии от тех копалок, он выкапывает всё что находится в заданном чанке. (проверял при помощи x-ray) Так что огромная благодарность вам за замечательную программу. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
artem211 Автор темы 428 Опубликовано: 12 марта, 2016 После мучений, я стал пользоваться именно вашей программой, потому что только в ней я не встречал ошибок препятствия, робот всегда доходит до бедрока, прям всегда, и самое главное, он не жалуется на недостаток энергии, и в отличии от тех копалок, он выкапывает всё что находится в заданном чанке. (проверял при помощи x-ray) Так что огромная благодарность вам за замечательную программу. Ну чтож рад, дыр правда в ней уж очень дофига ) Есть ведь некоторые переменные, которые нужны для каждой функции или для дольшинства, их стоит вынести за пределы функций. Чтоб они все время сидели в памяти? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 398 Опубликовано: 12 марта, 2016 Чтоб они все время сидели в памяти? Ну после подключения библиотеки сидят в памяти до рестарта. Даже если подключены были в другой программе. 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
artem211 Автор темы 428 Опубликовано: 12 марта, 2016 Ну после подключения библиотеки сидят в памяти до рестарта. Даже если подключены были в другой программе. О привет ) значит можно от реквайра и уйти действительно, я вообще профан в ОС Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 148 Опубликовано: 21 марта, 2016 Особо переписывать ничего не надо, чуть-чуть поправить алгоритм сканирования. Зато теперь будет очень удобно работать с самим сканеромКонечно, приятно, что сканер теперь позволяет не сканировать лишние блоки. Но и сканирование сразу нескольких чанков теперь тоже потеряло актуальность. С текущими настройками на IT максимальная площадь адекватного сканирования – 11x11 с геосканером в центре. С расстояния 5x5 еще возможно отличить свинец от камня, но уже на расстоянии 6x6 будут случаться сбои. тройное сканирование дальних областей даст нормальное приближение к реальной плотности блока. Конечно, энергии уходит больше, но под землей куча угля, его ведь можно прям в роботе жечь.Усреднение результатов нескольких сканирований, не смотря на кратное увеличение энергозатрат, не обеспечит 100% гарантии точного определения плотности блока, переводя проблему в плоскость вероятностей. Это значит, что чисто выбрать руду всё равно не удастся. А тройное сканирование принципиально вообще ничего не изменит. Полезнее будет разбить весь участок на столбы 11x11 и менее. Заодно и требования к объему памяти снизятся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 748 Опубликовано: 23 марта, 2016 @eu_tomat, чем писать тонны текста, лучше бы что-нибудь полезное продемонстрировал. Я лично все изучаю, поэтому уверен, что говорю об этом не с потолка. Я перепробовал кучу подходов к геокопалкам и с уверенностью могу заявить, что это просто трата времени и ресурсов, т. к. есть способы копать без геосканера намного эффективней, чем с ним. На расстоянии 32 блока от сканера, через 3 сканирования, даже с грубым округлением можно найти и свинец и сундуки и все остальное (это стандартный конфиг) Благодаря новым возможностям геосканера, сейчас можно пользоваться интересным алгоритмом - сканировать перед роботом квадрат 7x7, т. е. добывать слой за слоем (можно прямой линией, змейкой, спиралью, не важно), мне кажется, что это самый лучший подход, надо будет тщательно проработать, тут много плюсов - шумов мало, роботу меньше приходится бегать туда-сюда, лишней энергии не тратится и т. д. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 148 Опубликовано: 23 марта, 2016 (изменено) @eu_tomat, чем писать тонны текста, лучше бы что-нибудь полезное продемонстрировал. Я лично все изучаю, поэтому уверен, что говорю об этом не с потолка. Я перепробовал кучу подходов к геокопалкам и с уверенностью могу заявить, что это просто трата времени и ресурсов, т. к. есть способы копать без геосканера намного эффективней, чем с ним. На расстоянии 32 блока от сканера, через 3 сканирования, даже с грубым округлением можно найти и свинец и сундуки и все остальное (это стандартный конфиг) Благодаря новым возможностям геосканера, сейчас можно пользоваться интересным алгоритмом - сканировать перед роботом квадрат 7x7, т. е. добывать слой за слоем (можно прямой линией, змейкой, спиралью, не важно), мне кажется, что это самый лучший подход, надо будет тщательно проработать, тут много плюсов - шумов мало, роботу меньше приходится бегать туда-сюда, лишней энергии не тратится и т. д. Я не понял твою позицию из последнего поста: то ли открылись новые возможности геосканера, то ли он бесполезен, то ли полезен но с 3-х кратным сканированием. Но мне наиболее интересен последний пункт. И раз даже тонны текста тебя уже не убеждают, то вот тебе полезная демонстрация: Этот код выполняет серию простых сканирований камня на высоте 32 от геосканера, а затем вычисляет минимум и максимум в серии усредненных значений для X-кратного сканирования. Видно, как сужается диапазон при увеличении кратности сканирования. Но также видно, что это всего лишь вопрос вероятностей, т.к. при увеличении количества кратных измерений ничто не помешает расширению диапазона. Выводы: 1) Троекратное сканирование взято с потолка и его недостаточно для различения камня от свинца. 2) Более-менее удовлетворительный результат даёт 30-кратное сканирование, но он также ненадежен. Upd: Ах, да! Забыл, что кроме усреднения можно пользоваться фильтрацией. Тогда количество сканирований можно уменьшить. Иногда достаточно одного сканирования, а иногда недостаточно и тридцати - это тоже вопрос вероятностей. Тоже нужна демонстрация? Изменено 24 марта, 2016 пользователем eu_tomat Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 748 Опубликовано: 24 марта, 2016 (изменено) Мда, с чем боролись, на то и напоролись... Камень мне нафиг не нужен, у него плотность = 1, у свинца = 2, через три сканирования я отсекаю все, что меньше 2 и добываю. Попадается камень? Никто не мешает выкинуть. Пропускаю свинец? Пфф.. Не велика потеря, что-то все-равно добывается. Но! На каждый блок улетает 10 единиц энергии, намного рациональней прокатиться лишний раз на этих 10 единицах и выкопать лишние блоки. В конце я предложил такой подход, чтобы сканировать максимум на 4 блока, зачем мне тогда смотреть на 32 блока от сканера, когда у меня максимальная дальность 12 блоков? Я как-то хотел приспособить робота для автоматического поиска и опустошения сундуков, изначально поставил 120 сканов каждого столба... сундуки он определял отлично, но для автогрифера 9 часов это как-то круто (и это без учета энергии). Поставил 5 сканов - сундуки находит более-менее, какие-то пропускает, но результат есть, хоть и времени уходит больше 70 минут. Поэтому я хорошо понимаю, что сканер это всего-лишь игрушка, хотя можно снизить расход энергии и время получения результата, но это не практично. Если кому-то ради спорта хочется сканировать доски и свинец в горе булыжника - это его дело, пусть даже энергия халявная, но это будет только видимость полезной работы, т. к. тупая змейка или карьер намного эффективней. Изменено 24 марта, 2016 пользователем Doob Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 148 Опубликовано: 24 марта, 2016 Камень мне нафиг не нужен, у него плотность = 1, у свинца = 2, через три сканирования я отсекаю все, что меньше 2 и добываю. Попадается камень? Никто не мешает выкинуть. Пропускаю свинец? Пфф.. Не велика потеря, что-то все-равно добывается. ... Если кому-то ради спорта хочется сканировать доски и свинец в горе булыжника - это его дело, пусть даже энергия халявная, но это будет только видимость полезной работы, т. к. тупая змейка или карьер намного эффективней. Спорт не в многократном сканировании, а в поиске алгоритма. Я все это время полагал, что мы в качестве эталона подразумеваем изначальный алгоритм artem211 с ограничением высоты сканирования в +/-7 блоков (или сколько там было), и абсолютным определением плотности блоков. Поэтому и удивился использованию троекратного сканирования, в то время как недостаточно и 33-кратного. Твой же подход оказался совсем иным, допуская потерю 50% свинца. Вопросов больше нет, спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
PunkNotDead 8 Опубликовано: 29 марта, 2016 Прошу помощи, загрузил pastebin get -f vApEBQdf mine.lua, а при запуске ошибка Если использовать модификацию от Doob, то робот копает и возвращается с ошибкой обнаружено препятствие. Запускал в разных местах и с разными параметрами. Подскажите что не так делаю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
DIO_CAMELOT 34 Опубликовано: 29 марта, 2016 Если использовать модификацию от Doob, то робот копает и возвращается с ошибкой обнаружено препятствие. Запускал в разных местах и с разными параметрами. Подскажите что не так делаю? Собственно те же проблемы, что и у меня, подразумеваю версию от Doob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
komandor57 0 Опубликовано: 24 мая, 2016 Помогите пожалуйста!!! Я не умею программировать, но такая проблема. Я включаю программу мне пишет, что для использования надо набрать mine длина и ширина. Когда я набираю мне пишет. (см. на скриншоте) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 24 мая, 2016 Помогите пожалуйста!!! Я не умею программировать, но такая проблема. Я включаю программу мне пишет, что для использования надо набрать mine длина и ширина. Когда я набираю мне пишет. (см. на скриншоте) На скриншоте ты вызываешь программу, которая называется launcher. Она отвечает тебе как ее надо использовать, предполагая, что она называется mine. Попробуй написать launcher 10 10. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 25 мая, 2016 Она отвечает тебе как ее надо использовать, предполагая, что она называется mine. называется, захардкодили хелп жестко в прогу, чем обеспечили даже невозможность запуска копалки некоторыми пользователями, "помогли", называется. Разраб четко и упорно требует ввести магическое слово mine П.С. кстати, в КК была функция гетРанингПрогКакой-тоИлиКакЕёТам(), которая возвращала имя запущенной проги. В ОС такого нет? Или на худой конец написать Использование: имя_программы Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 25 мая, 2016 П.С. кстати, в КК была функция гетРанингПрогКакой-тоИлиКакЕёТам(), которая возвращала имя запущенной проги. В ОС такого нет? Или на худой конец написать Использование: имя_программы <ширина> <длина> process.running([level: number]): string, table, string Возвращает путь к текущей запущенной программе (т.е. последней, которая была запущена функцией process.load). Параметр level по желанию может использоваться для доступа к родительскому процессу. По умолчанию этот параметр равен 1 (текущая программа). Значение 2 будет означать родителя текущей программы (т.е. ту программу, которая вызвалаprocess.load, чтобы запустить текущую) и т.д. Второе возвращаемое значение — окружение процесса. Третье возвращаемое значение — это название процесса (т.е. параметр name функцииprocess.load). Для программ запущенных шеллом, это будет команда которая ее запустила. Например: для программы запущенной командой ls -l, первое полученное значение будет ls, а третье — ls -l. 4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
komandor57 0 Опубликовано: 25 мая, 2016 Ребят, не получается. Видимо я идиот. Попробовал launcher 10 10 та же ошибка. Сделал все заново по инструкции. См. скриншот. Как вариант в самом сервере проблема.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 748 Опубликовано: 25 мая, 2016 (изменено) Ту версию никто не обновлял, даже смотреть никто не будет, в чем там проблема.В первом же посте ссылка http://computercraft.ru/topic/1031-geokopatel-ili-stan-millionerom/page-3?do=findComment&comment=20949Хотя, там тоже какие-то танцы с бубном у некоторых игроков, я особо не вникал. Изменено 25 мая, 2016 пользователем Doob 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
vx13 2 271 Опубликовано: 26 мая, 2016 Версия 0.7.6 http://pastebin.com/bT21Huzi Инструкция Установите робота в левом верхнем углу карьера. За спиной робота — сундук. Слева — зарядник IC2(для зарядки инструмента). Сверху — зарядник OC(для зарядки робота). Можно слева можно поставить зарядник OC. Он будет заряжать и робота и инструмент. Зарядник OC должен быть включён. Для запуска копалки укажите размеры карьера:kopalka [опции] размер_вперёд размер_вправо [размер_вниз]Если размер_вниз не указан робот будет копать до бедрока. Если толщина слоя бедрока в мире не равна 5 блокам, укажите её опцией --bedrock-width=толщина_слоя_бедрока. Если бедрок плоский добавьте опцию -f (толщину в этом случае указывать не нужно).При сканировании робот будет искать блоки, плотность которых находится в интервале (a, b); a — определяется опцией --min-hardness, b — определяется опцией --max-hardness. Значение по умолчанию (2.05, 40).Для выкапывания всех блоков в указанной области(выкапывание ямы) добавьте опцию -q.С помощью опции --scan-radius можно изменить радиус сканирования. Добавляйте её только если вы изменили значение geolyzerNoice в конфиге OC (geolyzerNoice=2 — --scan-radius=5; geolyzerNoice=1 — --scan-radius=10).С помощью опции --estart задаётся уровень заряда аккумулятора необходимый для запуска робота. Если уровень заряда акк. опустится ниже --egen — будет включён генератор робота. Если уровень заряда акк. опустится ниже --ereturn — робот вернётся для подзарядки в точку старта. Уровни задаются в процентах от емкости акк. робота. Значения по умолчанию: --estart=99 --egen=50 --ereturn=20. Если емкость акк. больше или равна 1000000, то значения по умолчанию: --estart=20 --egen=10 --ereturn=2.Если добавить опцию --dont-drop-scrap робот не будет выбрасывать мусор. С помощью опции --test-bedrock можно протестировать высоту бедрока в точке старта.Блоки которые робот будет считать мусором задаются в переменной scrap (строка 16). Инструмент — в переменной mining_tools_list (строка 39). Топливо для генератора — в переменной fuel_list (строка 31). Периодичность запуска проверки состояния робота (заряд акк., заполненность инвентаря, целостность инструмента) в действиях (действием ситается удар, перемещение, сканирование колонны блоков) — в переменной chkPeriod (строка 14). В строках 6-12 задаются дефолтные значения для опций --egen, --ereturn, --estart, --min-hardness, --max-hardness, --scan-radius. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах