Asior 586 Опубликовано: 11 января, 2016 (изменено) Салют, народ! Итак представьте, раннее утро, вы сидите на берегу речки, тихо материтесь отмахиваясь от комаров плещется где-то в далеке рыба, медленно встает из-за горизонта солнышко. В руках у вас удочка, под боком ведро и банка с червями. Красотааа... Помечтали и ладно. Вернемся к нашей суровой квадратной реальности. Многим игрокам часто не хватает времени чтобы вырастить пшеничку, а есть то хочется, на hot-dog от корпорации тратиться неохота. И тут на помощь приходит маленькая програмка для робота, которая с легкостью наловит для вас много рыбы (иногда может поймать даже алмаз). Вам останется только отобрать её у робота и пережарить. Для начала надо построить особую конструкцию - ферму рыбы. Инструкция по постройке. Можете построить бассеин в виде коробки, или на речке протяните небольшие мостки, чтоб закрепить крючки. Для начала определимся с глубиной водоема, я рекомендую в высоту строить не менее 2х блоков, чтоб крючек за дно не цеплял. обязательно постройте стенку под роботом, дело в том, что рыбка имеет особенность срываться с крючка пока робот тянет её к себе. К счастью физика работает и рыба падает прямо под стенку робота, поэтому туда ставим 3 воронки, центральную выводим под стенку. Снаружи снизу ставим сундук, и под роботом протягиваем воронки к нему. Попробуйте покидать что-нибудь в воронки, все должно переместиться в сундук. Теперь переходим к самой схеме. За так называемые мостки и справа и слева цепляем крючки, по 3 штуки с каждой стороны. Незабудьте, что у робота крючки ставить ненадо. Натяните нитку. Выберете любую сторону мостков и проложите там красную пыль, на воронку обязательно кладите. Используйте именно красную пыль, провода у меня очень часто глючили. Теперь переходим к окружению робота, там все легко, сверху сундук, сразу засыпаем туда удочки, сзади или сбоку ставьте зарядное устройство, не забудьте активировать его. Про провода я говорить ничего не буду, сами протяните как вам надо. Данная ферма довольно стабильна, но по предложению игрока eu_tomat выкладываю второй вариант постройки фермы, эконом-класса. Строим основание фермы с сундуками. Не забываем что воронки должны смотреть в дальний сундук. Чем выше емкость данного сундука, тем дольше проработает ваша ферма. Возводим второй уровень обшивки фермы и заливаем все внутри водой. Следующим слоем устанавливаем крючки, цепляем нить, там-же зарядку ставим, рычаг можно не устанавливать, робот будет заряжаться во время ловли рыбы. https://imgur.com/DcamtDuhttps://imgur.com/DcamtDu Сверху, над роботом ставим сундук с удочками, а по краю прокладываем красную пыль. Провод для передачи энергии протяните сами. Все! Ферма для ловли рыбы эконом-класса готова! Ферма построена, а робота нету, исправляем это недоразумение. Рекомендуемые сборки роботов: Робот 1-го уровня Список компонентов: Системный блок (1-ый уровень) : без него робота не собрать)) Улучшение "Инвентарь" : нужен чтобы робот мог временно хранить вещи Клавиатура : чтобы печатать Монитор (1-ый уровень) : чтобы видеть чего напечатали Видеокарта (1-ый уровень) : без нее не выводится изображение на экран Центральный процессор (1-ый уровень) : для основных вычислений Память (уровень 1.5) : для временного хранения данных EEPROM (Lua BIOS) : без него не запустится компьютер Жесткий диск (1-ый уровень) : для хранения программ, не забудьте записать ОС и скачать программу раболова. В слоты улучшений ставим: Улучшение контейнер (2-ый уровень) : после сборки робота можно будет вставить контроллер инвентаря Улучшение "контейнер плат" (1-ый уровень) : после сборки робота можно будет вставить плату на красном камне. Для запуска этого робота установите в него обязательно красную плату и контроллер инвентаря. Робот 2-го уровня - мультизадачный Список компонентов: Системный блок (2-ый уровень) : без него робота не собрать)) Улучшение "Инвентарь" : нужен чтобы робот мог временно хранить вещи Клавиатура : чтобы печатать Монитор (1-ый уровень) : чтобы видеть чего напечатали Геоанализатор : для сканирования каменных пород и поиска полезных ископаемых Улучшение "Парение" (1-ый уровень) : чтобы робот мог летать Улучшение "Контроллер инвентаря" : чтобы робот мог менять инструмент Видеокарта (1-ый уровень) : без нее не выводится изображение на экран Интернет плата : для доступа к сети интернет Центральный процессор (2-ый уровень) : для основных вычислений Память (уровень 2.5) 2 штуки : для временного хранения данных EEPROM (Lua BIOS) : без него не запустится компьютер Жесткий диск (1-ый уровень) : для хранения программ, не забудьте записать ОС и скачать программу раболова. В слоты улучшений ставим: Улучшение контейнер (2-ый уровень) Улучшение "контейнер плат" (2-ый уровень) : после сборки робота можно будет вставить плату на красном камне. Данная сборка робота отлично работает с программой из этой статьи Тык, достаточно только вставить Улучшение "Генератор". Подробности там, в статье, а нам же для запуска рыболова достаточно вставить в собранного робота, в слот для контейнера плат, плату на красном камне. Для запуска этого робота установите в него обязательно красную плату. Еще одна сборка, Робот 2-го уровня - специализированный рыболов. Список компонентов: Системный блок (2-ый уровень) : без него робота не собрать)) Улучшение "Инвентарь" 2 штуки : нужен чтобы робот мог временно хранить вещи Клавиатура : чтобы печатать Монитор (1-ый уровень) : чтобы видеть чего напечатали Улучшение "Создание" : при наличии этого улучшения робот может крафтить вещи Улучшение "Контроллер инвентаря" : чтобы робот мог менять инструмент Видеокарта (1-ый уровень) : без нее не выводится изображение на экран Плата на красном камне (1-ый уровень) : для доступа к сети интернет Центральный процессор (2-ый уровень) : для основных вычислений Память (уровень 2.5) : для временного хранения данных EEPROM (Lua BIOS) : без него не запустится компьютер Жесткий диск (1-ый уровень) : для хранения программ, не забудьте записать ОС и скачать программу раболова. В слоты улучшений ставим: Дисковод : после сборки робота в него можно вставлять дискеты Данная сборка не требует никаких дополнительных улучшений, она предназначена только для рыболова, а благодаря улучшению "Создание" робот сможет сам собрать удочку, починить почти поломанную без участия игрока, а благодаря увеличенному инвентарю, робот сможет ловить еще больше рыбы. На текущий момент данные опции находятся в разработке. Но данную сборку уже можно использовать. Для данной программы собирать специализированного робота 3-го уровня нет никакого смысла, вообще под управлением рыболова может работать любой робот, главное чтоб у него была установлена красная плата, контроллер инвентаря рекомендуем, но робот ловит отлично и без него, правда удочки поломанные не сможет менять. По конструкции робота впринципе все, мастерите понравившегося робота, и идете ставите его на конструкцию нашей фермы, мордой чтоб на воду смотрел. Программу вы конечно же записали на диск заранее, ну или скопировали с пастебина, поэтому прописываем Ribolow.lua или как вы там её назвали и запускаем. Все, робот будет работать в бесконечном цикле, вылавливая только лучший хлам)). Если инвентарь заполнится, робот сбросит все под себя, в воронку. Если удочка переломится, робот выбросит все что наловил и вытащит из сундука сверху новую удочку, а если не найдет её, робот громким, душераздирающим писком оповестит вас. Все это возможно если вы конечно же установите контроллер инвентаря. Будьте осторожны, робот стачивает удочки до полной их поломки. При прогрузке чанка иногда клинит удочку и красную пыль, не переживайте, если случится такая ошибка робот через 60 секунд вернется в свой нормальный цикл работы. Ну собственно и все, жуйте рыбу, в ней много фосфора. С вами был Asior. P.S. А программу то забыл)) Ссылка для скачивания pastebin get -f AFgBdeci Ribolov.lua или http://pastebin.com/AFgBdeci P.S.S. Спасибо всем кто помогал по разным вопросом во время создания данной программы Изменено 5 июня, 2021 пользователем Asior Перевел картинки на imgur 15 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 542 Опубликовано: 11 января, 2016 Ребята, чего раньше не сказали, я могу очень много хлеба дать, десятки стаков и жареной картошки тоже, у меня целая плантация на роботах. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex 4 683 Опубликовано: 11 января, 2016 Ребята, чего раньше не сказали, я могу очень много хлеба дать, десятки стаков и жареной картошки тоже, у меня целая плантация на роботах. ры-ы-ы-ы-ба, карто-о-о-о-шка жаренная стаками, хлебец .... Нео, тут уже и пузырь не помешал бы Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asior Автор темы 586 Опубликовано: 11 января, 2016 (изменено) ры-ы-ы-ы-ба, карто-о-о-о-шка жаренная стаками, хлебец .... Нео, тут уже и пузырь не помешал бы Уже гоним самогон)) ИО то теперь есть. Изменено 11 января, 2016 пользователем Asior Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
davial 1 972 Опубликовано: 11 января, 2016 ры-ы-ы-ы-ба, карто-о-о-о-шка жаренная стаками, хлебец .... Нео, тут уже и пузырь не помешал бы И тоже - стак. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 155 Опубликовано: 18 января, 2016 (изменено) Asior, классная идея! Я и не знал до твоего поста, что положение поплавка можно детектировать. Теперь весь сервер рыбой завалим. Но сейчас вопросики, как червячки полезут. Для начала про роботов: * Не раскрыто, зачем нужны улучшения первому роботу. Я, конечно, догадался, но не сразу. Зачем этот квест? * Конфигурация второго робота – вообще дичь дичайшая. Какое отношение к теме имеют геолайзер, апгрейд полета, вай-фай и отсылки к программе Артема/Дуба?. Зачем этот мусор? Ты еще сенсорный замок Totoro припомни. И этот, как его там, OpenCloud, будь он прекрасен. Вопросы по постройке и схеме работы: * Зачем нити натянуты аж в три ряда? * Зачем вообще такой огромный водоем? Нельзя ли ловить рыбу из одного блока воды, с одной натянутой нитью и с гораздо более скромным размером всей конструкции? * Работают ли воронки, как заявлено, и нужны ли они вообще? У меня рыба не сорвалась ни разу. Я заставил робота складывать дроп в верхний сундук. Нижний остался пустым после нескольких сотен забросов. * Что не так с проводами из RedLogic? Я их использовал, глюков нет. Бывает, при погружении поплавка не срабатывает сам датчик, но это не проблема проводов, т. к. датчик даже не щелкает. Изредка бывает наоборот, датчик щелкает без погружения поплавка. Но дело опять же, не в проводах. С красной пылью все аналогично. Возможно, это проблема проявляется именно в твоей конструкции. * Ты рассматривал другие направления заброса удочки? Вот, у меня оказалось, что если бросать сверху вниз, то датчик не срабатывает. А если бросать снизу вверх (рыбак-подводник), то датчик срабатывает гораздо быстрее, чем при броске вперед. Профит? Только требуется редстоун вниз от датчика дотянуть. При броске вперед редстоун тянуть вообще не надо, в этом свой плюс. * Зачем нужны два сундука? Если на старте игры робот не имеет контроллера инвентаря, то он не может и сломанную удочку заменить. А если уже имеет и может, то сможет и достать удочку из сундука, содержащего любые другие предметы. * А если имеется контроллер инвентаря, то почему робот не пытается идентифицировать недоломанные удочки, попавшиеся среди выловленного мусора? Почему эти удочки занимают место в сундуке, при этом даже не складываясь в стаки, в то время как их можно было бы почти сразу пускать в дело? * Почему бы не пускать в дело и выловленные палки и нити, учитывая, что в роботе второго уровня достаточно свободных слотов для апгрейда крафта? И тогда почему бы крафтом не ремонтировать поломанные удочки с халявным добавлением 5% прочности?. * Ремонт зачарованных удочек уже не столь однозначен, но почему бы их просто не доиспользовать до некоторого предела, убрав затем в сундук? * И зачем тогда вообще крафтить удочки и класть их в сундук, когда проще кинуть туда палки и нити, сэкономив и время на крафт и место в сундуке? Вопросы по программе: * Почему проверку правильности состояния датчика ты делаешь в конце, а не в начале функции ловли? Ты забрасываешь (или все-таки вытаскиваешь) удочку, ждешь три секунды в надежде, что датчик сработал правильно, потом ждешь еще 80 секунд до таймаута, вытаскиваешь (или забрасываешь) удочку, ждешь две секунды и в случае, если выясняется, что поплавок заброшен, вытягиваешь его. При этом в первом случае ты ждешь срабатывания датчика три секунды, а во втором – две. В чем разница? * И не лучше ли проверить состояние датчика до заброса удочки, а потом сразу после заброса и нужной паузы? И зачем ждать всю фиксированную паузу, когда можно закончить ждать досрочно через тот же event_pool. В большинстве же случаев будет быстрее твоих трех секунд, а в случае неудачи на этом этапе впустую уходят еще 80 секунд и даже больше. * И почему ты не проверяешь результат, возвращенный event.pull? Разве не имеет значения, с какой стороны пришел сигнал, и каков этот сигнал? Тем более, между получением события и твоей последующей проверкой проходит время и состояние сигнала может измениться. Тем более, ты еще и задержку делаешь. * Не приводят ли эти небрежности кода к тому, что время от времени происходит вытягивание удочки вместо забрасывания и наоборот? * Почему не отслеживаешь ошибку «проблемы с датчиком», когда ты забрасываешь удочку много раз подряд, а датчик никак не реагирует. Удочка изнашивается, а рыбы нет и не будет. * Почему ты инициализацию переменной называешь инициализацией устройства? С каких пор проверка наличия устройства стала называться его инициализацией? И, кстати, учитывая то, что ты пихаешь апгрейды и карты в слоты расширения, то может оказаться, что в момент проверки они были на месте, а в следующий момент использования их уже не будет. Твоя программа будет удивлена. * Зачем задаешь фиксированное количество слотов, в то время как его можно узнать программно, гибко подстраиваясь под возможности имеющегося робота? И почему наличие контроллера инвентаря ты проверяешь, но наличие апргейда самого инвентаря сомнению не подвергаешь? * Почему при поломке инструмента в случае отсутствия контроллера инвентаря происходит выход из программы, зато при отсутствии удочек в сундуке робот пищит, но настойчиво пытается вытащить удочку еще раз? * Почему после каждой неудачной попытки взять в руки удочку, робот пытается чистить инвентарь? А после чистки он опять достает удочку сверху, пытается взять ее в руку, и скидывает ее вниз. Кому нужен этот бессмысленный ритуал? * И что будет делать робот, когда переполнится сундук? Он остановит свою работу, впадет в пищащий цикл или все-таки продолжит закидывать и изнашивать удочку? * Почему робот не сбрасывает злостный хлам типа нестакающихся пузырьков с водой? Он сначала сундук забьет хламом и поломанными удочками, а потом на холостом ходу сломает все найденные (скорее всего, новые) удочки. Хламом могут оказаться и другие вещи, желательно иметь настраиваемый список. Многие вопросы были риторическими, а на оставшиеся хотелось бы узнать ответы. Так-то идея отличная, но реализация слабая и требует серьезного допиливания. Позитивно то, что ты нацелен на использование разных конфигираций роботов, но негативно то, что программа с этой задачей не справляется. Напоследок вопрос ко всем: Как заставить робота собирать сферы опыта? Сферы разбросаны по округе, tractor_beam всасывает только предметы. Upd: Если датчик не реагирует на заброс удочки, может оказаться, что проблема вовсе не в датчике, в том, что в руке робота лежит не удочка. Без апргейда инвентаря он может об этом и не знать, но почему-то не пытается определить, что возникла проблема. С апргейдом он проверяет, что именно смог взять из верхнего сундука, но почему-то не проверяет, что у него было в руке изначально. Я сейчас роботу-рыболову кирку в руки дал, и через 80 секунд он мне выдал: 'УРА! чего-то клюнуло ... или показалось...'. Клюнуло! На кирку, Карл! Даже если и показалось. Как такое вообще могло показаться? Изменено 18 января, 2016 пользователем eu_tomat 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asior Автор темы 586 Опубликовано: 19 января, 2016 (изменено) Ухх сколько текста. Но пожалуй @eu_tomat вы правы во многом.Начну с начала.Цитата - Не раскрыто, зачем нужны улучшения первому роботу. Я, конечно, догадался, но не сразу. Зачем этот квест?Подправлю.Цитата - Конфигурация второго робота – вообще дичь дичайшая.......Данную конфигурацию я сделал для тех игроков кому лень собирать еще что-то кроме копалки, ведь подумай, удобно же, схватил робота ушел копать рес, пришел, на место воткнул его и ушел обрабатывать руду.Цитата - Зачем нити натянуты аж в три ряда? * Зачем вообще такой огромный водоем?...Посоветуйте тогда свою конструкцию. Лично у меня по другому не получилось построить надежную ферму. С одной ниткой ферма не особо стабильна, но раз просите, ферма эконом-класса добавлена.Цитата - Работают ли воронки, как заявлено, и нужны ли они вообще?Воронки работают, и они нужны. Построил такую ферму у себя в тестовом мире, и получилось так, что до робота вообще никак не долетала рыба, все шло в воронки.Цитата - Что не так с проводами из RedLogic? ...Проблема скорее всего в конструкции фермы. Тут ничего поделать не могу.Цитата - Ты рассматривал другие направления заброса удочки? ...Проверял, для данной конструкции фермы данное направление самое оптимальное.Цитата - Почему бы не пускать в дело и выловленные палки и нити, учитывая, что в роботе второго уровня достаточно свободных слотов для апгрейда крафта? И тогда почему бы крафтом не ремонтировать поломанные удочки с халявным добавлением 5% прочности?Хорошая идея, попробую реализовать.Цитата - И почему ты не проверяешь результат, возвращенный event.pull? Разве не имеет значения, с какой стороны пришел сигнал, и каков этот сигнал? Тем более, между получением события и твоей последующей проверкой проходит время и состояние сигнала может измениться. Тем более, ты еще и задержку делаешь.Считаю, что незачем проверять откуда сигнал пришел.Цитата - Не приводят ли эти небрежности кода к тому, что время от времени происходит вытягивание удочки вместо забрасывания и наоборот?Проверил код. Если не купаться в этой луже где робот ловит рыбу и не кидать на нитку ничего, то вытягивание происходит только при прогрузке чанка или при входе в игру.Цитата - Почему не отслеживаешь ошибку «проблемы с датчиком», когда ты забрасываешь удочку много раз подряд, а датчик никак не реагирует. Удочка изнашивается, а рыбы нет и не будет.Как? Робот должен обползти всю ферму и проверить правильно ли ты её построил? Или считать сколько раз event не ответил? Считаю, что в этом нет смысла, если у человека залагал инет и его через каждую минуту выкидывает из игры, эта ошибка только так вылезет.Цитата - Почему ты инициализацию переменной называешь инициализацией устройства? С каких пор проверка наличия устройства стала называться его инициализацией? И, кстати, учитывая то, что ты пихаешь апгрейды и карты в слоты расширения, то может оказаться, что в момент проверки они были на месте, а в следующий момент использования их уже не будет. Твоя программа будет удивлена.Ошибка. Исправлено. Что-то я ни разу не видел ни в одной программе чтобы она постоянно мониторила что подключено к роботу. У меня рассчитано, что игрок поставил робота, все что надо ему выдал и ушел. Постоянно мониторить чего там отключилось не выйдет, да и смысла не вижу.Цитата - Зачем задаешь фиксированное количество слотов, в то время как его можно узнать программно, гибко подстраиваясь под возможности имеющегося робота?Как? Я о таком не слышал, подскажи исправлю.Цитата - Почему при поломке инструмента в случае отсутствия контроллера инвентаря происходит выход из программыБез контроллера инвентаря робот не сможет положить себе в руку удочку, то есть подразумевается, что запуск программы одноразовый, пока удочка есть, работает. Подправил, теперь пищит, а потом выходит.Цитата - зато при отсутствии удочек в сундуке робот пищит, но настойчиво пытается вытащить удочку еще раз?Это сделано в надежде на то, что хозяин услышит, хозяин придет, хозяин поможет.Цитата - Почему после каждой неудачной попытки взять в руки удочку, робот пытается чистить инвентарь? А после чистки он опять достает удочку сверху, пытается взять ее в руку, и скидывает ее вниз. Кому нужен этот бессмысленный ритуал?Сделано для того ,чтобы если какой-то хлам попадет как-то в верхний сундук робот не пихал его в руку, да и нечего инвентарь забивать. Скидывает вниз? Впервые слышу. Проверил, все работает как надо. Очистить инвентарь, забрать сверху удочку в первый слот, проверить ,что это удочка, вложить в руку. Если не удочка, очистить инвентарь.Цитата - И что будет делать робот, когда переполнится сундук? Он остановит свою работу, впадет в пищащий цикл или все-таки продолжит закидывать и изнашивать удочку?Сундук который снизу? Будет продолжать работу, рес так и будет кидать вниз, ну а то, что он не уходит уже проблемы игрока, сундук больше ставить надо было. Или вы про инвентарь робота? Тогда при заполнении инвентаря ресурсы будут автоматически сброшены вниз, в воронку.Цитата - Почему робот не сбрасывает злостный хлам типа нестакающихся пузырьков с водой? Он сначала сундук забьет хламом и поломанными удочками, а потом на холостом ходу сломает все найденные (скорее всего, новые) удочки. Хламом могут оказаться и другие вещи, желательно иметь настраиваемый список.Хлам и рыба идет вниз. Над возвратом удочек в верхний сундук подумаю.Цитата - Так-то идея отличная, но реализация слабая и требует серьезного допиливания.Согласен. Я старался предусмотреть все варианты, и мне почти это удалось)). Ну, а что вы хотели-то первая программа как-никак.Цитата - Как заставить робота собирать сферы опыта?Никак. Можно прибегнуть к модам иным разве что. Как вариант это притягиватель опыта из Ender IO, или особый всасыватель из мода OpenBlock. Апгрейд на опыт ставить нет смысла, этот опыт роботу не засчитывается. Или самому бегать время от времени опыт собирать.Цитата - Я сейчас роботу-рыболову кирку в руки дал, и через 80 секунд он мне выдал: 'УРА! чего-то клюнуло ... или показалось...'. Клюнуло! На кирку, Карл! Даже если и показалось. Как такое вообще могло показаться?А сообщения разве не было 'Продолжаем работать, положите в руку удочку.'? А уж чего там дали, на то и будет ловить)) P.S. Приходится писать Цитата - из-за того, что я нацитировал слишком много и сообщение не захотело отправляться. Изменено 19 января, 2016 пользователем Asior 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 20 января, 2016 Как? Я о таком не слышал, подскажи исправлю. (robot.inventorySize())[http://ocdoc.cil.li/api:robot] Так-то идея отличная, но реализация слабая А я наоборот считаю, что реализация отличная, а большинство текста — просто придирки мелкие. Некоторые даже не особо нужные или невозможные для выполнения. Ну и корректировку делаем на первую публичную программу =)) Я вот сам не пишу в проги обрабатывание ошибок, например, как и какую-то пеленастость для юзера, если не графический интерфейс. Всё-таки ничего не поломается на экране от этого, а лишние 5 строчек стэктрейса никому не вредили. А мне особенно — не люблю, когда в программах, которые мне иногда надо дебажить, ошибка короткая, непонятная или отсутствует совсем (в открытом логе). Благо ещё, есть дебаггеры. Ну и ещё от автокрафта, который постоянно баговал, тоже такое мнение сложилось. И другие памперсы не делаю тоже обычно, только если лень не делать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 155 Опубликовано: 20 января, 2016 (изменено) А ты, быстро ответил, Asior. У меня все эти вопросы несколько дней нарабатывались, еще до того, как я включился в проект. На некоторые из них ты ответил излишне поспешно, о них-то я хочу поговорить подробнее. И текста будет еще больше. Говоря о сырости программы, я не вкладывал в свои слова осуждающий смысл. Программа хороша, т. к. она выполняет свою цель – накормить изголодавшегося игрока, и даже бонусом подкидывает ему сферы опыта. Но меня обычно коробит неуместная избыточность постройки, алгоритма, кода, описания, затрат энергии, времени, ресурсов. Также меня напрягает недостаточность постройки, алгоритма, описания и всего другого, когда это затрудняет работу с готовым механизмом или мешает его пониманию. Программа твоя хороша, но разобрав всю эту кучу вопросов, ты сможешь сделать программу почти идеальной. Нужно ли это тебе, я не знаю, но я ожидаю улучшения этого проекта. Повторю свою претензию к описанию: упоминание геомайнеров не имеет отношения к теме. Читателя интересует лишь минимальная рабочая и минимально рекомендуемая конфирурация, с которой робот будет выполнять свою задачу. Что там игрок еще напихает, чанклоадер или программу Артема/Дума, это его, конкретного игрока дело. Пришедших в эту тему в данный момент не интересуют копалки, грифилки, мободробилки, флудилки, спамилки и левойинформациейзабивалки. Им нужен простой способ добычи рыбы. Из этого же стоит исходить и при проектировании всей системы: и постройки и алгоритма работы. Устройство с идеальным дизайном достаточно лишь включить, и оно работает. А если возникают проблемы, то оно не выполняет бессмысленной работы, а сигнализирует о проблеме пользователю. Вот, например, зачем нам проверять, удочку ли дал игрок роботу или другой инструмент? Игрок может по запарке не тот инструмент в слот кинуть. И что делает робот? Ловит рыбу киркой. Ну, не дурак ли он? Можно сказать, что дураком является игрок. Но игрок просто ошибся, а робот сообщает радостное «УРА» без реальных причин, исключительно по истечению таймаута в своем примитивном мозгу. Я не зря так много говорил о работе датчика: в первую очередь от него зависит «интеллект» твоего робота. Правильное использование датчика позволит тебе не ловить рыбу на кусок урана часами напролет, а довольно быстро сообщить об этом игроку всё тем же писком. То же самое касается и случайного пролета над датчиком игрока, или потерявшей страх курицей. Ясное дело, что такая ситуация вызовет сбой в работе системы. Но зачем ждать 80 секунд, когда можно всё решить за 10? Все возможные ситуации ты, разумеется, не отработаешь, но наиболее вероятные – запросто. Под проверкой работы датчика я не подразумевал проверку правильности расставленных блоков. Тут главное, помнить, что сигнал с датчика должен появляться при заброшенной удочке, полностью исчезать при вытащенной и пропасть на короткое время при клевке. Проверка всех этих ситуаций позволит роботу не имитировать часами бурную деятельность при неправильно установленном датчике или упавшей в бассейн курице, а так же не рыбачить киркой. Поэтому проверяй результат event.pull. И сторону, с которой пришел сигнал, тоже следует проверять, а то однажды игрок поставит вплотную к роботу какой-нибудь механизм, мигающий редстоуном, и опять начнется бессмысленное закидывание-вытаскивание удочки. То, что проверка правильности работы датчика бессмысленна при лагающем интернете, является бессмысленнм аргументом, т. к. во-первых, работа механизмов больше зависит от лагов сервера, а не интернета. Ну, не обновилась у тебя инфа в клиенте, механизм продолжает работать в своем, правильном ритме. Лаги же сервера могут нарушить работу даже очень продуманного и отлаженного механизма. И это во-вторых. Рыбалка твоей программой будет точно так же сбиваться лагами сервера. Разница лишь в том, что в нормальных условиях твоя программа будет кричать «УРА» при ловле киркой или изнашивать удочку при сломанном датчике, хотя могла бы выдать предупреждение на экран и пищалку и хотя бы пореже дергать удочку. В твоем коде она дергается два-три раза при том, что большинство проблем можно отследить лишь одним использованием. Про определение размера инвентаря тебе уже Fingercomp ответил, а про съемные компоненты ответил он же в другой теме Так что, мониторить вытаскивание расширений из робота возможно, это лишь вопрос желания защитить программу от дурака. Но что касается смысла, тут я и сам не уверен: надо сильно упороться, чтобы вытаскивать компоненты при работающей программе. Вот, кирку в спешке роботу запросто можно оставить. А то, что ты не встречал подобных проверок в других программах, так это проблема тех программ. Я-то говорю об идеальной программе, а насколько следует приблизиться к идеалу, ты сам решишь. Здесь я процитирую сам себя: Почему при поломке инструмента в случае отсутствия контроллера инвентаря происходит выход из программы, зато при отсутствии удочек в сундуке робот пищит, но настойчиво пытается вытащить удочку еще раз? Я специально задал оба вопроса вместе, т.к. оба эти случая равноценны для игрока. Нет удочки в сундуке или нет удочки в руке робота – в любом случае должен вмешаться игрок и дать роботу удочку, после чего тот сможет продолжить работу без необходимости повторно запускать программу. А можно и остановить программу: пусть игрок заправляет робота удочками или дает ему в руку, а потом включает. Но в однообразии управления кроется удобство использования механизма. Сейчас заглянул в свежую редакцию программы. В ней робот без контроллера инвентаря тупо ждет 10 секунд, хотя можно было бы показывать обратный отсчет, и завершать ожидание досрочно. Более того, к моменту включения программы в руке робота уже могла быть вложена удочка (или кирка), тогда зачем ждать? Впервые слышишь, что робот скидывает удочку вниз? Правильно делаешь. Каюсь. Это я уже упоролся в кактус. Тупо не обратил внимания на переменную err, и весь бессмысленный ритуал протекал в моем разыгравшемся воображении. Слаб я пока в чтении чужих программ, буду перепроверять в игре прежде, чем делать такие заявления. Кстати, название переменной err совершенно не отражает ее назначения. И вообще, было бы лучше избавиться от нее, и просто присваивать nil переменной incontrol. Заодно и немного памяти робота сэкономится. Частично соглашусь с чисткой инвентаря после получения из верхнего сундука чего-то иного кроме удочки, но все равно это бессмысленно. Во-первых, нет смысла пробегать по всем 16 слотам, когда мы задействовали только один. Во-вторых, удочку мы достаем при условии наличия контроллера инвентаря, а с его-то помощью мы всегда сможем достать именно удочку, а не старые ботинки. И зря ты сказал, что переполнение сундука – это проблемы игрока. Ты уже сказал игроку, что поможешь ему решить проблему голода, а робот, управляемый твоей программой может решать эту проблему хуже или лучше. И опять мы упираемся в отличия программ плохих от хороших. Тут, конечно, проблема не только программы, но и общей схемы. Как по мне, так воронки вовсе не нужны, лучше поставить сундук впритык к роботу. Если есть время и желание, сравни схемы с воронками и без них. Или я потом сам проверю. У меня все-таки есть впечатление, что воронки работают не тогда, когда «рыба с крючка срывается», а когда инвентарь робота переполнен. Но в твоей схеме такая ситуация не должна возникать. Говоря про сброс хлама, я имел в виду немного другое – выбрасывать бесполезные предметы так, чтобы они не попадали в сундук для полезного дропа. Вреднее всего нестакающеся пузырьки с водой, их очень много вылавливается. Несколько меньше вылавливается удочек, они тоже не стакаются, но их правильнее было бы пускать в ремонт. И еще раз повторюсь: я вообще не вижу смысла в двух сундуках. Достаточно одного и для удочек и для дропа. Робот без контроллера все равно не умеет менять удочку, а робот с контроллером может достать любой нужный ему предмет из сундука. Посмотрел я твою новую схему «эконом-класса». Не буду критиковать, просто покажу свою. А-а-а-а! Не покажу. Я не умею картинки вставлять. Сейчас погуглю. Upd: Настало время узнать, что значит экономия. В моих схемах от некоторых блоков тоже можно избавиться без потери работоспособности, но конструкция потеряет свою красоту. Появилась эта схема как результат поэтапной минимизации твоей изначальной схемы. Сделал два варианта. Обе конструкции получились мало того, что компактными, так еще и просторными, наглядными и удобными в обслуживании, если, например, захочется собрать разлетевшиеся сферы опыта. В первом варианте даже редстоун тянуть не требуется, а робот может использовать для зарядки солнечную панель. Преимуществом второго варианта является закидывание роботом удочки вверх, что, как я уже говорил, ускоряет срабатывание датчика, но минус в том, что требуется дотянуть его сигнал до робота. Можно дотянуть и обычной красной пылью, но получится не столь красиво. Красный провод на правом столбе можно заменить табличкой или еще какой пакостью, но так глазу приятнее. Второй недостаток этого варианта в том, что робот не может получать питание от солнечной панели. Для зарядника робота тоже найдется место без серьезного нарушения эстетики как в первом, так и втором варианте. Изменено 20 января, 2016 пользователем eu_tomat Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 155 Опубликовано: 20 января, 2016 А я наоборот считаю, что реализация отличная, а большинство текста — просто придирки мелкие. Некоторые даже не особо нужные или невозможные для выполнения. Ну и корректировку делаем на первую публичную программу =))Для первого раза реализацию можно назвать отличной. Но придирался я не для того, чтобы отобрать у автора Байт. Чисто объективно программа далека от идеала. И пишу я так много текста обычно в двух случаях, либо с желанием разгромить автора, либо с желанием помочь ему, и мне казалось, я ясно выразил свою доброжелательность. Если нет, извините граждане, постараюсь быть осторожнее. И зря ты говоришь, что придирки составляют большинство текста. Но придирки есть, не буду скрывать. Раз уж я начал писать, то написал обо всем, чего ожидал бы от отличной программы. Да и не хочу я размазывать все свои пожелания по куче постов. Было дело, Quant писал свой передатчик, а мне была интересна его тема, я был увлечен ею, но выдавал информацию постепенно. Теперь он что-то там улучшил, но что я тогда хотел сказать, уже смутно помню, и интереса к схеме уже нет. Ну, не печально ли? Я вот сам не пишу в проги обрабатывание ошибок, например, как и какую-то пеленастость для юзера, если не графический интерфейс. Всё-таки ничего не поломается на экране от этого, а лишние 5 строчек стэктрейса никому не вредили. А мне особенно — не люблю, когда в программах, которые мне иногда надо дебажить, ошибка короткая, непонятная или отсутствует совсем (в открытом логе). Благо ещё, есть дебаггеры. Ну и ещё от автокрафта, который постоянно баговал, тоже такое мнение сложилось. И другие памперсы не делаю тоже обычно, только если лень не делать. Нашел, чем гордиться. Разработчики MS тоже, видимо, так считали – несколько BSOD'ов не повредят пользователю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
newbie 1 971 Опубликовано: 20 января, 2016 В первом варианте даже редстоун тянуть не требуется, а робот может использовать для зарядки солнечную панель. Скрытый текст Преимуществом второго варианта является закидывание роботом удочки вверх, что, как я уже говорил, ускоряет срабатывание датчика, но минус в том, что требуется дотянуть его сигнал до робота. Можно дотянуть и обычной красной пылью, но получится не столь красиво. Красный провод на правом столбе можно заменить табличкой или еще какой пакостью, но так глазу приятнее. Второй недостаток этого варианта в том, что робот не может получать питание от солнечной панели. Скрытый текст Скриншоты заблудились не в своих сполерах, помоги Даше расставить скриншоты поместам) Если честно то критика всегда хорошо, но полотенце критики - это перебор, серьезно я с трудом прочитал первое сообщение, второе я читал через 3-4 строки не до конца) Минимизировать код, затратить меньше ресурсов это хорошо, но ты не в реале где за все приходится платить, ты зашел в игру отдохнуть, покодить, пообщаться, а не думать как же уложиться в 4 забора 4 каменных кирпича пару ниток и создать убер эффективную ферму, человек старался и справился с заявленным в названии темы! Как по мне все темы из этого раздела форума это больше подсказка новичкам, чтоб они понимали по коду как и что реализуется в этом страшнонепонятном ОpenComputers на каких то легких примерах, которые сделал кто то с чуть большими знаниями. А эту бы тему вообще перенес в готовые программы, так как она оригинально оформлена, имеет адекватное содержимое и пояснения и автор поддерживает в ней изменения)Ведь начнем с того что тут даже никто подумать не мог что с помощью растяжки можно ловить рыбу? А теперь с этой информацией и примером самым первым можно вообще свести ее конструкцию в минимум, но тема называется не "Как построить ферму в пару блоков которая будет суперэфективной", а просто "Робот рыбак" и автор эту тему раскрыл причем очень очень неплохо) P.S. Много букав, но думаю автор длинных сообщений читает много букав) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 155 Опубликовано: 21 января, 2016 Буду кртк. newbie: а что не так со спойлерами и скриншотами? Проверил, всё на месте. Fingercomp: поясни, пожалуйста, какие из моих придирок невозможны для выполнения? Я готов защитить любую из них. Всем, кому многабукафф: текст предназначался в основном автору идеи и программы, а также тем, кому интересны возможности улучшения системы, они прочитают всё. Текст конкретен и полностью соответствует заявленной теме. Остальным он не нужен, в этом соль. Вообще всем: Мне кажется, многих напрягло ощущение, сформулированное newbie: но тема называется не "Как построить ферму в пару блоков которая будет суперэфективной", а просто "Робот рыбак"А что тут можно сделать? Ничего не предлагать автору, вопросов ему не задавать, а просто создать свой топик с лучшим механизмом? Но бывало уже такое на форуме, некоторые персонажи потом плакали, что у них украли идею. Украду. Asior, спасибо за идею! Остальным спасибо за критику критика. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asior Автор темы 586 Опубликовано: 21 января, 2016 Ну идея работы и первая реализация все равно принадлежит мне)) 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
serafim 272 Опубликовано: 17 августа, 2016 Хочу вам представить доработанный вариант рыбалова он берёт удочки из сундука и складывает рыбу в сундук. http://pastebin.com/RPLWqKTZ pastebin get -f RPLWqKTZ ribolov.lua Мне лично понравился вариант сборки от eu_tomat 4 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
serafim 272 Опубликовано: 18 августа, 2016 Добавил проверку на ошибки: если нет удочки ищем в сундуке, если и там нет ждем пока дадут удочку. если заполнен сундук, то прекращаем ловить. если нет сигнала от датчика, то выясняем причину: или у робота вместо удочки что то другое, или ошибка конструкции сборки рыболова. p.s. Хочу байтик Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 723 Опубликовано: 18 августа, 2016 p.s. Хочу байтик Он не даёт никакой прибавки к скорости программирования или уровню оптимизации кода. Абсолютно бесполезная вещь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
serafim 272 Опубликовано: 18 августа, 2016 Байтик старание за труд, спосибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 723 Опубликовано: 18 августа, 2016 Байтик старание за труд, спосибо А я всегда думал, что лучшая награда - опыт и полученные знания, а не картинка у профиля на форуме, которая не цениться никак. (скажу по секрету, что пользователи у которых нет этих медалек, тем не менее имеют вес на этом форуме) Посмотри на томата например, у него не одного байта нет, но он мне помог с оптимизацией кода и часто советы давал на эту тему. Не в байтиках и медальках человек ценится. 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 18 августа, 2016 Он не даёт никакой прибавки к скорости программирования или уровню оптимизации кода. Абсолютно бесполезная вещь. Он дает +1 к ЧСВ. У меня, к примеру, благодаря байтикам, ЧСВ близко к переполнению. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 723 Опубликовано: 18 августа, 2016 Он дает +1 к ЧСВ. У меня, к примеру, благодаря байтикам, ЧСВ близко к переполнению. Ага, разрешено иметь не более 3-х байтиков. (особо себя не разбалуешь ) И то, смысла от них не вижу. Чтобы повысить ЧСВ, нужно написать полезные проги, которые все будут использовать. А так как кроме робокопалки ничего полезного не написать, грош цена всем остальным прогам. Там хоть медальки выдавай, как были проги никому ненужные, так и останутся. Факт того, что проги никому не нужны, должен снижать ЧСВ. А мне вообще, даже копалку жалко использовать. В майн захожу, чтобы насладиться геймплеем, а не ожиданием пока ресурсы наплывут сами собой. Для этого кликеры всякие есть - симуляторы ожидания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах