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


Фотография

Робот-рыболов

робот рыба ферма опыт еда

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 23

#1 Оффлайн   Asior

Asior
  • Пользователи
  • Сообщений: 184
  • Уровень сигнала: 60,66%
  • В игре: 520 час. 47 мин.

Награды

                          

Отправлено 11 Январь 2016 - 16:50

*
Популярное сообщение!

Салют, народ!
Итак представьте, раннее утро, вы сидите на берегу речки, тихо материтесь отмахиваясь от комаров плещется где-то в далеке рыба, медленно встает из-за горизонта солнышко. В руках у вас удочка, под боком ведро и банка с червями. Красотааа...
9c32a31afa314ca14be482a9f21156c8.jpg
Помечтали и ладно. Вернемся к нашей суровой квадратной реальности. Многим игрокам часто не хватает времени чтобы вырастить пшеничку, а есть то хочется, на hot-dog от корпорации тратиться неохота. И тут на помощь приходит маленькая програмка для робота, которая с легкостью наловит для вас много рыбы (иногда может поймать даже алмаз). Вам останется только отобрать её у робота и пережарить.
Для начала надо построить особую конструкцию - ферму рыбы.
Инструкция по постройке.

Спойлер

Данная ферма довольно стабильна, но по предложению игрока eu_tomat выкладываю второй вариант постройки фермы, эконом-класса.

Спойлер

Ферма построена, а робота нету, исправляем это недоразумение.
Рекомендуемые сборки роботов:
Робот 1-го уровня
Спойлер

Для запуска этого робота установите в него обязательно красную плату и контроллер инвентаря.
Робот 2-го уровня - мультизадачный
Спойлер

Для запуска этого робота установите в него обязательно красную плату.

Еще одна сборка, Робот 2-го уровня - специализированный рыболов.

Спойлер

Для данной программы собирать специализированного робота 3-го уровня нет никакого смысла, вообще под управлением рыболова может работать любой робот, главное чтоб у него была установлена красная плата, контроллер инвентаря рекомендуем, но робот ловит отлично и без него, правда удочки поломанные не сможет менять.
По конструкции робота впринципе все, мастерите понравившегося робота, и идете ставите его на конструкцию нашей фермы, мордой чтоб на воду смотрел. Программу вы конечно же записали на диск заранее, ну или скопировали с пастебина, поэтому прописываем Ribolow.lua или как вы там её назвали и запускаем. Все, робот будет работать в бесконечном цикле, вылавливая только лучший хлам)). Если инвентарь заполнится, робот сбросит все под себя, в воронку. Если удочка переломится, робот выбросит все что наловил и вытащит из сундука сверху новую удочку, а если не найдет её, робот громким, душераздирающим писком оповестит вас. Все это возможно если вы конечно же установите контроллер инвентаря. Будьте осторожны, робот стачивает удочки до полной их поломки. При прогрузке чанка иногда клинит удочку и красную пыль, не переживайте, если случится такая ошибка робот через 60 секунд вернется в свой нормальный цикл работы.
Ну собственно и все, жуйте рыбу, в ней много фосфора. С вами был Asior.

facf248ffbb2e4ebe1cd533c9fbf42f0.png
P.S. А программу то забыл))

Ссылка для скачивания
pastebin get -f AFgBdeci Ribolov.lua
или
http://pastebin.com/AFgBdeci

P.S.S. Спасибо всем кто помогал по разным вопросом во время создания данной программы


Сообщение отредактировал Asior: 19 Январь 2016 - 22:54


#2 Онлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 780
  • Уровень сигнала: 4,24%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 11 Январь 2016 - 19:05

Ребята, чего раньше не сказали, я могу очень много хлеба дать, десятки стаков и жареной картошки тоже, у меня целая плантация на роботах.


  • newbie это нравится

#3 Оффлайн   Alex

Alex
  • Администраторы
  • Сообщений: 3 785
  • Уровень сигнала: 46,38%
  • В игре: 398 час. 9 мин.

Награды

                 

Отправлено 11 Январь 2016 - 19:39

Ребята, чего раньше не сказали, я могу очень много хлеба дать, десятки стаков и жареной картошки тоже, у меня целая плантация на роботах.

ры-ы-ы-ы-ба, карто-о-о-о-шка жаренная стаками, хлебец .... Нео, тут уже и пузырь не помешал бы :giggle:



#4 Оффлайн   Asior

Asior
  • Автор темы
  • Пользователи
  • Сообщений: 184
  • Уровень сигнала: 60,66%
  • В игре: 520 час. 47 мин.

Награды

                          

Отправлено 11 Январь 2016 - 20:51

ры-ы-ы-ы-ба, карто-о-о-о-шка жаренная стаками, хлебец .... Нео, тут уже и пузырь не помешал бы :giggle:

Уже гоним самогон)) ИО то теперь есть.


Сообщение отредактировал Asior: 11 Январь 2016 - 20:56


#5 Оффлайн   davial

davial
  • Пользователи
  • Сообщений: 454
  • Уровень сигнала: 14,24%
  • В игре: 122 час. 17 мин.
  • ГородТроон в системе Канопуса.

Награды

                       

Отправлено 11 Январь 2016 - 22:57

ры-ы-ы-ы-ба, карто-о-о-о-шка жаренная стаками, хлебец .... Нео, тут уже и пузырь не помешал бы :giggle:

И тоже  - стак. :smile3:



#6 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 935
  • Уровень сигнала: 5,93%
  • В игре: 50 час. 55 мин.

Награды

                          

Отправлено 18 Январь 2016 - 17:56

Asior, классная идея! Я и не знал до твоего поста, что положение поплавка можно детектировать. Теперь весь сервер рыбой завалим. Но сейчас вопросики, как червячки полезут.

Для начала про роботов:
* Не раскрыто, зачем нужны улучшения первому роботу. Я, конечно, догадался, но не сразу. Зачем этот квест?
* Конфигурация второго робота – вообще дичь дичайшая. Какое отношение к теме имеют геолайзер, апгрейд полета, вай-фай и отсылки к программе Артема/Дуба?. Зачем этот мусор? Ты еще сенсорный замок Totoro припомни. И этот, как его там, OpenCloud, будь он прекрасен.

Вопросы по постройке и схеме работы:
* Зачем нити натянуты аж в три ряда?
* Зачем вообще такой огромный водоем? Нельзя ли ловить рыбу из одного блока воды, с одной натянутой нитью и с гораздо более скромным размером всей конструкции?
* Работают ли воронки, как заявлено, и нужны ли они вообще? У меня рыба не сорвалась ни разу. Я заставил робота складывать дроп в верхний сундук. Нижний остался пустым после нескольких сотен забросов.
* Что не так с проводами из RedLogic? Я их использовал, глюков нет. Бывает, при погружении поплавка не срабатывает сам датчик, но это не проблема проводов, т. к. датчик даже не щелкает. Изредка бывает наоборот, датчик щелкает без погружения поплавка. Но дело опять же, не в проводах. С красной пылью все аналогично. Возможно, это проблема проявляется именно в твоей конструкции.
* Ты рассматривал другие направления заброса удочки? Вот, у меня оказалось, что если бросать сверху вниз, то датчик не срабатывает. А если бросать снизу вверх (рыбак-подводник), то датчик срабатывает гораздо быстрее, чем при броске вперед. Профит? Только требуется редстоун вниз от датчика дотянуть. При броске вперед редстоун тянуть вообще не надо, в этом свой плюс.
* Зачем нужны два сундука? Если на старте игры робот не имеет контроллера инвентаря, то он не может и сломанную удочку заменить. А если уже имеет и может, то сможет и достать удочку из сундука, содержащего любые другие предметы.
* А если имеется контроллер инвентаря, то почему робот не пытается идентифицировать недоломанные удочки, попавшиеся среди выловленного мусора? Почему эти удочки занимают место в сундуке, при этом даже не складываясь в стаки, в то время как их можно было бы почти сразу пускать в дело?
* Почему бы не пускать в дело и выловленные палки и нити, учитывая, что в роботе второго уровня достаточно свободных слотов для апгрейда крафта? И тогда почему бы крафтом не ремонтировать поломанные удочки с халявным добавлением 5% прочности?.
* Ремонт зачарованных удочек уже не столь однозначен, но почему бы их просто не доиспользовать до некоторого предела, убрав затем в сундук?
* И зачем тогда вообще крафтить удочки и класть их в сундук, когда проще кинуть туда палки и нити, сэкономив и время на крафт и место в сундуке?

Вопросы по программе:
* Почему проверку правильности состояния датчика ты делаешь в конце, а не в начале функции ловли? Ты забрасываешь (или все-таки вытаскиваешь) удочку, ждешь три секунды в надежде, что датчик сработал правильно, потом ждешь еще 80 секунд до таймаута, вытаскиваешь (или забрасываешь) удочку, ждешь две секунды и в случае, если выясняется, что поплавок заброшен, вытягиваешь его. При этом в первом случае ты ждешь срабатывания датчика три секунды, а во втором – две. В чем разница?
* И не лучше ли проверить состояние датчика до заброса удочки, а потом сразу после заброса и нужной паузы? И зачем ждать всю фиксированную паузу, когда можно закончить ждать досрочно через тот же event_pool. В большинстве же случаев будет быстрее твоих трех секунд, а в случае неудачи на этом этапе впустую уходят еще 80 секунд и даже больше.
* И почему ты не проверяешь результат, возвращенный event.pull? Разве не имеет значения, с какой стороны пришел сигнал, и каков этот сигнал? Тем более, между получением события и твоей последующей проверкой проходит время и состояние сигнала может измениться. Тем более, ты еще и задержку делаешь.
* Не приводят ли эти небрежности кода к тому, что время от времени происходит вытягивание удочки вместо забрасывания и наоборот?
* Почему не отслеживаешь ошибку «проблемы с датчиком», когда ты забрасываешь удочку много раз подряд, а датчик никак не реагирует. Удочка изнашивается, а рыбы нет и не будет.
* Почему ты инициализацию переменной называешь инициализацией устройства? С каких пор проверка наличия устройства стала называться его инициализацией? И, кстати, учитывая то, что ты пихаешь апгрейды и карты в слоты расширения, то может оказаться, что в момент проверки они были на месте, а в следующий момент использования их уже не будет. Твоя программа будет удивлена.
* Зачем задаешь фиксированное количество слотов, в то время как его можно узнать программно, гибко подстраиваясь под возможности имеющегося робота? И почему наличие контроллера инвентаря ты проверяешь, но наличие апргейда самого инвентаря сомнению не подвергаешь?
* Почему при поломке инструмента в случае отсутствия контроллера инвентаря происходит выход из программы, зато при отсутствии удочек в сундуке робот пищит, но настойчиво пытается вытащить удочку еще раз?
* Почему после каждой неудачной попытки взять в руки удочку, робот пытается чистить инвентарь? А после чистки он опять достает удочку сверху, пытается взять ее в руку, и скидывает ее вниз. Кому нужен этот бессмысленный ритуал?
* И что будет делать робот, когда переполнится сундук? Он остановит свою работу, впадет в пищащий цикл или все-таки продолжит закидывать и изнашивать удочку?
* Почему робот не сбрасывает злостный хлам типа нестакающихся пузырьков с водой? Он сначала сундук забьет хламом и поломанными удочками, а потом на холостом ходу сломает все найденные (скорее всего, новые) удочки. Хламом могут оказаться и другие вещи, желательно иметь настраиваемый список.

Многие вопросы были риторическими, а на оставшиеся хотелось бы узнать ответы.
Так-то идея отличная, но реализация слабая и требует серьезного допиливания. Позитивно то, что ты нацелен на использование разных конфигираций роботов, но негативно то, что программа с этой задачей не справляется.

Напоследок вопрос ко всем: Как заставить робота собирать сферы опыта? Сферы разбросаны по округе, tractor_beam всасывает только предметы.

Upd: Если датчик не реагирует на заброс удочки, может оказаться, что проблема вовсе не в датчике, в том, что в руке робота лежит не удочка. Без апргейда инвентаря он может об этом и не знать, но почему-то не пытается определить, что возникла проблема. С апргейдом он проверяет, что именно смог взять из верхнего сундука, но почему-то не проверяет, что у него было в руке изначально. Я сейчас роботу-рыболову кирку в руки дал, и через 80 секунд он мне выдал: 'УРА! чего-то клюнуло ... или показалось...'.
Клюнуло! На кирку, Карл! Даже если и показалось. Как такое вообще могло показаться?

Сообщение отредактировал eu_tomat: 18 Январь 2016 - 19:35

  • Quant и qwertyMAN это нравится

#7 Оффлайн   Asior

Asior
  • Автор темы
  • Пользователи
  • Сообщений: 184
  • Уровень сигнала: 60,66%
  • В игре: 520 час. 47 мин.

Награды

                          

Отправлено 19 Январь 2016 - 20:37

Ухх сколько текста. Но пожалуй @eu_tomat вы правы во многом.
Начну с начала.
Цитата - Не раскрыто, зачем нужны улучшения первому роботу. Я, конечно, догадался, но не сразу. Зачем этот квест?
Подправлю.
Цитата - Конфигурация второго робота – вообще дичь дичайшая.......
Данную конфигурацию я сделал для тех игроков кому лень собирать еще что-то кроме копалки, ведь подумай, удобно же, схватил робота ушел копать рес, пришел, на место воткнул его и ушел обрабатывать руду.
Цитата - Зачем нити натянуты аж в три ряда? * Зачем вообще такой огромный водоем?...
Посоветуйте тогда свою конструкцию. Лично у меня по другому не получилось построить надежную ферму. С одной ниткой ферма не особо стабильна, но раз просите, ферма эконом-класса добавлена.
Цитата - Работают ли воронки, как заявлено, и нужны ли они вообще?
Воронки работают, и они нужны. Построил такую ферму у себя в тестовом мире, и получилось так, что до робота вообще никак не долетала рыба, все шло в воронки.
Цитата - Что не так с проводами из RedLogic? ...
Проблема скорее всего в конструкции фермы. Тут ничего поделать не могу.
Цитата - Ты рассматривал другие направления заброса удочки? ...
Проверял, для данной конструкции фермы данное направление самое оптимальное.
Цитата - Почему бы не пускать в дело и выловленные палки и нити, учитывая, что в роботе второго уровня достаточно свободных слотов для апгрейда крафта? И тогда почему бы крафтом не ремонтировать поломанные удочки с халявным добавлением 5% прочности?
Хорошая идея, попробую реализовать.
Цитата - И почему ты не проверяешь результат, возвращенный event.pull? Разве не имеет значения, с какой стороны пришел сигнал, и каков этот сигнал? Тем более, между получением события и твоей последующей проверкой проходит время и состояние сигнала может измениться. Тем более, ты еще и задержку делаешь.
Считаю, что незачем проверять откуда сигнал пришел.
Цитата - Не приводят ли эти небрежности кода к тому, что время от времени происходит вытягивание удочки вместо забрасывания и наоборот?
Проверил код. Если не купаться в этой луже где робот ловит рыбу и не кидать на нитку ничего, то вытягивание происходит только при прогрузке чанка или при входе в игру.
Цитата - Почему не отслеживаешь ошибку «проблемы с датчиком», когда ты забрасываешь удочку много раз подряд, а датчик никак не реагирует. Удочка изнашивается, а рыбы нет и не будет.
Как? Робот должен обползти всю ферму и проверить правильно ли ты её построил? Или считать сколько раз event не ответил? Считаю, что в этом нет смысла, если у человека залагал инет и его через каждую минуту выкидывает из игры, эта ошибка только так вылезет.
Цитата - Почему ты инициализацию переменной называешь инициализацией устройства? С каких пор проверка наличия устройства стала называться его инициализацией? И, кстати, учитывая то, что ты пихаешь апгрейды и карты в слоты расширения, то может оказаться, что в момент проверки они были на месте, а в следующий момент использования их уже не будет. Твоя программа будет удивлена.
Ошибка. Исправлено. Что-то я ни разу не видел ни в одной программе чтобы она постоянно мониторила что подключено к роботу. У меня рассчитано, что игрок поставил робота, все что надо ему выдал и ушел. Постоянно мониторить чего там отключилось не выйдет, да и смысла не вижу.
Цитата - Зачем задаешь фиксированное количество слотов, в то время как его можно узнать программно, гибко подстраиваясь под возможности имеющегося робота?
Как? Я о таком не слышал, подскажи исправлю.
Цитата - Почему при поломке инструмента в случае отсутствия контроллера инвентаря происходит выход из программы
Без контроллера инвентаря робот не сможет положить себе в руку удочку, то есть подразумевается, что запуск программы одноразовый, пока удочка есть, работает. Подправил, теперь пищит, а потом выходит.
Цитата - зато при отсутствии удочек в сундуке робот пищит, но настойчиво пытается вытащить удочку еще раз?
Это сделано в надежде на то, что хозяин услышит, хозяин придет, хозяин поможет.
Цитата - Почему после каждой неудачной попытки взять в руки удочку, робот пытается чистить инвентарь? А после чистки он опять достает удочку сверху, пытается взять ее в руку, и скидывает ее вниз. Кому нужен этот бессмысленный ритуал?
Сделано для того ,чтобы если какой-то хлам попадет как-то в верхний сундук робот не пихал его в руку, да и нечего инвентарь забивать. Скидывает вниз? Впервые слышу. Проверил, все работает как надо. Очистить инвентарь, забрать сверху удочку в первый слот, проверить ,что это удочка, вложить в руку. Если не удочка, очистить инвентарь.
Цитата - И что будет делать робот, когда переполнится сундук? Он остановит свою работу, впадет в пищащий цикл или все-таки продолжит закидывать и изнашивать удочку?
Сундук который снизу? Будет продолжать работу, рес так и будет кидать вниз, ну а то, что он не уходит уже проблемы игрока, сундук больше ставить надо было. Или вы про инвентарь робота? Тогда при заполнении инвентаря ресурсы будут автоматически сброшены вниз, в воронку.
Цитата - Почему робот не сбрасывает злостный хлам типа нестакающихся пузырьков с водой? Он сначала сундук забьет хламом и поломанными удочками, а потом на холостом ходу сломает все найденные (скорее всего, новые) удочки. Хламом могут оказаться и другие вещи, желательно иметь настраиваемый список.
Хлам и рыба идет вниз. Над возвратом удочек в верхний сундук подумаю.
Цитата - Так-то идея отличная, но реализация слабая и требует серьезного допиливания.
Согласен. Я старался предусмотреть все варианты, и мне почти это удалось)). Ну, а что вы хотели-то первая программа как-никак.
Цитата - Как заставить робота собирать сферы опыта?
Никак. Можно прибегнуть к модам иным разве что. Как вариант это притягиватель опыта из Ender IO, или особый всасыватель из мода OpenBlock. Апгрейд на опыт ставить нет смысла, этот опыт роботу не засчитывается. Или самому бегать время от времени опыт собирать.
Цитата - Я сейчас роботу-рыболову кирку в руки дал, и через 80 секунд он мне выдал: 'УРА! чего-то клюнуло ... или показалось...'. Клюнуло! На кирку, Карл! Даже если и показалось. Как такое вообще могло показаться?
А сообщения разве не было 'Продолжаем работать, положите в руку удочку.'? А уж чего там дали, на то и будет ловить))

P.S. Приходится писать Цитата - из-за того, что я нацитировал слишком много и сообщение не захотело отправляться.


Сообщение отредактировал Asior: 19 Январь 2016 - 20:38

  • newbie это нравится

#8 Оффлайн   Fingercomp

Fingercomp
  • Гуру
  • Сообщений: 2 015
  • Уровень сигнала: 149,05%
  • В игре: 1279 час. 35 мин.

Награды

                                               

Отправлено 20 Январь 2016 - 11:19

Как? Я о таком не слышал, подскажи исправлю.

(robot.inventorySize())[http://ocdoc.cil.li/api:robot]

Так-то идея отличная, но реализация слабая

А я наоборот считаю, что реализация отличная, а большинство текста — просто придирки мелкие. Некоторые даже не особо нужные или невозможные для выполнения. Ну и корректировку делаем на первую публичную программу =))

 

Я вот сам не пишу в проги обрабатывание ошибок, например, как и какую-то пеленастость для юзера, если не графический интерфейс. Всё-таки ничего не поломается на экране от этого, а лишние 5 строчек стэктрейса никому не вредили. А мне особенно — не люблю, когда в программах, которые мне иногда надо дебажить, ошибка короткая, непонятная или отсутствует совсем (в открытом логе). Благо ещё, есть дебаггеры. Ну и ещё от автокрафта, который постоянно баговал, тоже такое мнение сложилось.

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



#9 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 935
  • Уровень сигнала: 5,93%
  • В игре: 50 час. 55 мин.

Награды

                          

Отправлено 20 Январь 2016 - 21:25

А ты, быстро ответил, Asior. У меня все эти вопросы несколько дней нарабатывались, еще до того, как я включился в проект. На некоторые из них ты ответил излишне поспешно, о них-то я хочу поговорить подробнее. И текста будет еще больше.

Говоря о сырости программы, я не вкладывал в свои слова осуждающий смысл. Программа хороша, т. к. она выполняет свою цель – накормить изголодавшегося игрока, и даже бонусом подкидывает ему сферы опыта. Но меня обычно коробит неуместная избыточность постройки, алгоритма, кода, описания, затрат энергии, времени, ресурсов. Также меня напрягает недостаточность постройки, алгоритма, описания и всего другого, когда это затрудняет работу с готовым механизмом или мешает его пониманию. Программа твоя хороша, но разобрав всю эту кучу вопросов, ты сможешь сделать программу почти идеальной. Нужно ли это тебе, я не знаю, но я ожидаю улучшения этого проекта.

Повторю свою претензию к описанию: упоминание геомайнеров не имеет отношения к теме. Читателя интересует лишь минимальная рабочая и минимально рекомендуемая конфирурация, с которой робот будет выполнять свою задачу. Что там игрок еще напихает, чанклоадер или программу Артема/Дума, это его, конкретного игрока дело. Пришедших в эту тему в данный момент не интересуют копалки, грифилки, мободробилки, флудилки, спамилки и левойинформациейзабивалки. Им нужен простой способ добычи рыбы.

Из этого же стоит исходить и при проектировании всей системы: и постройки и алгоритма работы. Устройство с идеальным дизайном достаточно лишь включить, и оно работает. А если возникают проблемы, то оно не выполняет бессмысленной работы, а сигнализирует о проблеме пользователю.

Вот, например, зачем нам проверять, удочку ли дал игрок роботу или другой инструмент? Игрок может по запарке не тот инструмент в слот кинуть. И что делает робот? Ловит рыбу киркой. Ну, не дурак ли он? Можно сказать, что дураком является игрок. Но игрок просто ошибся, а робот сообщает радостное «УРА» без реальных причин, исключительно по истечению таймаута в своем примитивном мозгу. Я не зря так много говорил о работе датчика: в первую очередь от него зависит «интеллект» твоего робота. Правильное использование датчика позволит тебе не ловить рыбу на кусок урана часами напролет, а довольно быстро сообщить об этом игроку всё тем же писком.

То же самое касается и случайного пролета над датчиком игрока, или потерявшей страх курицей. Ясное дело, что такая ситуация вызовет сбой в работе системы. Но зачем ждать 80 секунд, когда можно всё решить за 10? Все возможные ситуации ты, разумеется, не отработаешь, но наиболее вероятные – запросто.

Под проверкой работы датчика я не подразумевал проверку правильности расставленных блоков. Тут главное, помнить, что сигнал с датчика должен появляться при заброшенной удочке, полностью исчезать при вытащенной и пропасть на короткое время при клевке. Проверка всех этих ситуаций позволит роботу не имитировать часами бурную деятельность при неправильно установленном датчике или упавшей в бассейн курице, а так же не рыбачить киркой. Поэтому проверяй результат event.pull. И сторону, с которой пришел сигнал, тоже следует проверять, а то однажды игрок поставит вплотную к роботу какой-нибудь механизм, мигающий редстоуном, и опять начнется бессмысленное закидывание-вытаскивание удочки.

То, что проверка правильности работы датчика бессмысленна при лагающем интернете, является бессмысленнм аргументом, т. к. во-первых, работа механизмов больше зависит от лагов сервера, а не интернета. Ну, не обновилась у тебя инфа в клиенте, механизм продолжает работать в своем, правильном ритме. Лаги же сервера могут нарушить работу даже очень продуманного и отлаженного механизма. И это во-вторых. Рыбалка твоей программой будет точно так же сбиваться лагами сервера. Разница лишь в том, что в нормальных условиях твоя программа будет кричать «УРА» при ловле киркой или изнашивать удочку при сломанном датчике, хотя могла бы выдать предупреждение на экран и пищалку и хотя бы пореже дергать удочку. В твоем коде она дергается два-три раза при том, что большинство проблем можно отследить лишь одним использованием.

Про определение размера инвентаря тебе уже Fingercomp ответил, а про съемные компоненты ответил он же в другой теме
Так что, мониторить вытаскивание расширений из робота возможно, это лишь вопрос желания защитить программу от дурака. Но что касается смысла, тут я и сам не уверен: надо сильно упороться, чтобы вытаскивать компоненты при работающей программе. Вот, кирку в спешке роботу запросто можно оставить. А то, что ты не встречал подобных проверок в других программах, так это проблема тех программ. Я-то говорю об идеальной программе, а насколько следует приблизиться к идеалу, ты сам решишь.

Здесь я процитирую сам себя: Почему при поломке инструмента в случае отсутствия контроллера инвентаря происходит выход из программы, зато при отсутствии удочек в сундуке робот пищит, но настойчиво пытается вытащить удочку еще раз?
Я специально задал оба вопроса вместе, т.к. оба эти случая равноценны для игрока. Нет удочки в сундуке или нет удочки в руке робота – в любом случае должен вмешаться игрок и дать роботу удочку, после чего тот сможет продолжить работу без необходимости повторно запускать программу. А можно и остановить программу: пусть игрок заправляет робота удочками или дает ему в руку, а потом включает. Но в однообразии управления кроется удобство использования механизма.

Сейчас заглянул в свежую редакцию программы. В ней робот без контроллера инвентаря тупо ждет 10 секунд, хотя можно было бы показывать обратный отсчет, и завершать ожидание досрочно. Более того, к моменту включения программы в руке робота уже могла быть вложена удочка (или кирка), тогда зачем ждать?

Впервые слышишь, что робот скидывает удочку вниз? Правильно делаешь. Каюсь. Это я уже упоролся в кактус. Тупо не обратил внимания на переменную err, и весь бессмысленный ритуал протекал в моем разыгравшемся воображении. Слаб я пока в чтении чужих программ, буду перепроверять в игре прежде, чем делать такие заявления.
Кстати, название переменной err совершенно не отражает ее назначения. И вообще, было бы лучше избавиться от нее, и просто присваивать nil переменной incontrol. Заодно и немного памяти робота сэкономится.

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

И зря ты сказал, что переполнение сундука – это проблемы игрока. Ты уже сказал игроку, что поможешь ему решить проблему голода, а робот, управляемый твоей программой может решать эту проблему хуже или лучше. И опять мы упираемся в отличия программ плохих от хороших.

Тут, конечно, проблема не только программы, но и общей схемы. Как по мне, так воронки вовсе не нужны, лучше поставить сундук впритык к роботу. Если есть время и желание, сравни схемы с воронками и без них. Или я потом сам проверю. У меня все-таки есть впечатление, что воронки работают не тогда, когда «рыба с крючка срывается», а когда инвентарь робота переполнен. Но в твоей схеме такая ситуация не должна возникать.

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

И еще раз повторюсь: я вообще не вижу смысла в двух сундуках. Достаточно одного и для удочек и для дропа. Робот без контроллера все равно не умеет менять удочку, а робот с контроллером может достать любой нужный ему предмет из сундука.

Посмотрел я твою новую схему «эконом-класса». Не буду критиковать, просто покажу свою.
 
А-а-а-а! Не покажу. Я не умею картинки вставлять. Сейчас погуглю.
 
Upd:
Настало время узнать, что значит экономия. В моих схемах от некоторых блоков тоже можно избавиться без потери работоспособности, но конструкция потеряет свою красоту. Появилась эта схема как результат поэтапной минимизации твоей изначальной схемы. Сделал два варианта. Обе конструкции получились мало того, что компактными, так еще и просторными, наглядными и удобными в обслуживании, если, например, захочется собрать разлетевшиеся сферы опыта.

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


Преимуществом второго варианта является закидывание роботом удочки вверх, что, как я уже говорил, ускоряет срабатывание датчика, но минус в том, что требуется дотянуть его сигнал до робота. Можно дотянуть и обычной красной пылью, но получится не столь красиво. Красный провод на правом столбе можно заменить табличкой или еще какой пакостью, но так глазу приятнее. Второй недостаток этого варианта в том, что робот не может получать питание от солнечной панели.
Спойлер


Для зарядника робота тоже найдется место без серьезного нарушения эстетики как в первом, так и втором варианте.

Сообщение отредактировал eu_tomat: 20 Январь 2016 - 21:50


#10 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 935
  • Уровень сигнала: 5,93%
  • В игре: 50 час. 55 мин.

Награды

                          

Отправлено 20 Январь 2016 - 22:17

А я наоборот считаю, что реализация отличная, а большинство текста — просто придирки мелкие. Некоторые даже не особо нужные или невозможные для выполнения. Ну и корректировку делаем на первую публичную программу =))

Для первого раза реализацию можно назвать отличной. Но придирался я не для того, чтобы отобрать у автора Байт. Чисто объективно программа далека от идеала. И пишу я так много текста обычно в двух случаях, либо с желанием разгромить автора, либо с желанием помочь ему, и мне казалось, я ясно выразил свою доброжелательность. Если нет, извините граждане, постараюсь быть осторожнее. И зря ты говоришь, что придирки составляют большинство текста. Но придирки есть, не буду скрывать. Раз уж я начал писать, то написал обо всем, чего ожидал бы от отличной программы. Да и не хочу я размазывать все свои пожелания по куче постов. Было дело, Quant писал свой передатчик, а мне была интересна его тема, я был увлечен ею, но выдавал информацию постепенно. Теперь он что-то там улучшил, но что я тогда хотел сказать, уже смутно помню, и интереса к схеме уже нет. Ну, не печально ли?
 

Я вот сам не пишу в проги обрабатывание ошибок, например, как и какую-то пеленастость для юзера, если не графический интерфейс. Всё-таки ничего не поломается на экране от этого, а лишние 5 строчек стэктрейса никому не вредили. А мне особенно — не люблю, когда в программах, которые мне иногда надо дебажить, ошибка короткая, непонятная или отсутствует совсем (в открытом логе). Благо ещё, есть дебаггеры. Ну и ещё от автокрафта, который постоянно баговал, тоже такое мнение сложилось.
И другие памперсы не делаю тоже обычно, только если лень не делать.

Нашел, чем гордиться. Разработчики MS тоже, видимо, так считали – несколько BSOD'ов не повредят пользователю.

#11 Оффлайн   newbie

newbie
  • Пользователи
  • Сообщений: 322
  • Уровень сигнала: 20,18%
  • В игре: 173 час. 15 мин.
  • ГородХарьков

Награды

   15                                    

Отправлено 21 Январь 2016 - 01:44

В первом варианте даже редстоун тянуть не требуется, а робот может использовать для зарядки солнечную панель. Скрытый текст Преимуществом второго варианта является закидывание роботом удочки вверх, что, как я уже говорил, ускоряет срабатывание датчика, но минус в том, что требуется дотянуть его сигнал до робота. Можно дотянуть и обычной красной пылью, но получится не столь красиво. Красный провод на правом столбе можно заменить табличкой или еще какой пакостью, но так глазу приятнее. Второй недостаток этого варианта в том, что робот не может получать питание от солнечной панели. Скрытый текст
 

Скриншоты заблудились не в своих сполерах, помоги Даше расставить скриншоты поместам)

19_1.jpg

Если честно то критика всегда хорошо, но полотенце критики - это перебор, серьезно я с трудом прочитал первое сообщение, второе я читал через 3-4 строки не до конца) Минимизировать код, затратить меньше ресурсов это хорошо, но ты не в реале где за все приходится платить, ты зашел в игру отдохнуть, покодить, пообщаться, а не думать как же уложиться в 4 забора 4 каменных кирпича пару ниток и создать убер эффективную ферму, человек старался и справился с заявленным в названии темы! Как по мне все темы из этого раздела форума это больше подсказка новичкам, чтоб они понимали по коду как и что реализуется в этом страшнонепонятном ОpenComputers на каких то легких примерах, которые сделал кто то с чуть большими знаниями. А эту бы тему вообще перенес в готовые программы, так как она оригинально оформлена, имеет адекватное содержимое и пояснения и автор поддерживает в ней изменения)
Ведь начнем с того что тут даже никто подумать не мог что с помощью растяжки можно ловить рыбу? А теперь с этой информацией и примером самым первым можно вообще свести ее конструкцию в минимум, но тема называется не "Как построить ферму в пару блоков которая будет суперэфективной", а просто "Робот рыбак" и автор эту тему раскрыл причем очень очень неплохо)

P.S. Много букав, но думаю автор длинных сообщений читает много букав)



#12 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 935
  • Уровень сигнала: 5,93%
  • В игре: 50 час. 55 мин.

Награды

                          

Отправлено 21 Январь 2016 - 16:45

Буду кртк.

newbie: а что не так со спойлерами и скриншотами? Проверил, всё на месте.
Fingercomp: поясни, пожалуйста, какие из моих придирок невозможны для выполнения? Я готов защитить любую из них.

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

Вообще всем: Мне кажется, многих напрягло ощущение, сформулированное newbie:

но тема называется не "Как построить ферму в пару блоков которая будет суперэфективной", а просто "Робот рыбак"

А что тут можно сделать? Ничего не предлагать автору, вопросов ему не задавать, а просто создать свой топик с лучшим механизмом? Но бывало уже такое на форуме, некоторые персонажи потом плакали, что у них украли идею.

Украду. Asior, спасибо за идею! Остальным спасибо за критику критика.

#13 Оффлайн   Asior

Asior
  • Автор темы
  • Пользователи
  • Сообщений: 184
  • Уровень сигнала: 60,66%
  • В игре: 520 час. 47 мин.

Награды

                          

Отправлено 21 Январь 2016 - 20:02

Ну идея работы и первая реализация все равно принадлежит мне)) 


  • davial и newbie это нравится

#14 Оффлайн   serafim

serafim
  • Пользователи
  • Сообщений: 9
  • Уровень сигнала: 7,1%
  • В игре: 60 час. 55 мин.

Награды

                    

Отправлено 17 Август 2016 - 18:38

Хочу вам представить доработанный вариант рыбалова

он берёт удочки из сундука и складывает рыбу в сундук.

 

http://pastebin.com/RPLWqKTZ

pastebin get -f RPLWqKTZ ribolov.lua

 

Мне лично понравился вариант сборки от  eu_tomat

post-13296-0-73005000-1453315450.png


  • Alex, Totoro и Fingercomp это нравится

#15 Оффлайн   serafim

serafim
  • Пользователи
  • Сообщений: 9
  • Уровень сигнала: 7,1%
  • В игре: 60 час. 55 мин.

Награды

                    

Отправлено 18 Август 2016 - 10:43

Добавил проверку на ошибки:

если нет удочки ищем в сундуке, если и там нет ждем пока дадут удочку.

если заполнен сундук, то прекращаем ловить.

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

 

p.s. Хочу байтик :)



#16 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 458
  • Уровень сигнала: 0,22%
  • В игре: 1 час. 54 мин.
  • ГородCity17

Награды

                             

Отправлено 18 Август 2016 - 13:50

p.s. Хочу байтик

Он не даёт никакой прибавки к скорости программирования или уровню оптимизации кода. Абсолютно бесполезная вещь.



#17 Оффлайн   serafim

serafim
  • Пользователи
  • Сообщений: 9
  • Уровень сигнала: 7,1%
  • В игре: 60 час. 55 мин.

Награды

                    

Отправлено 18 Август 2016 - 14:12

Байтик старание за труд, спосибо :)



#18 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 458
  • Уровень сигнала: 0,22%
  • В игре: 1 час. 54 мин.
  • ГородCity17

Награды

                             

Отправлено 18 Август 2016 - 14:36

Байтик старание за труд, спосибо :)

А я всегда думал, что лучшая награда - опыт и полученные знания, а не картинка у профиля на форуме, которая не цениться никак. (скажу по секрету, что пользователи у которых нет этих медалек, тем не менее имеют вес на этом форуме)

Посмотри на томата например, у него не одного байта нет, но он мне помог с оптимизацией кода и часто советы давал на эту тему. Не в байтиках и медальках человек ценится.


  • NEO, davial, lLuffy и еще 1 это нравится

#19 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 230
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 18 Август 2016 - 14:53

Он не даёт никакой прибавки к скорости программирования или уровню оптимизации кода. Абсолютно бесполезная вещь.

Он дает +1 к ЧСВ. У меня, к примеру, благодаря байтикам, ЧСВ близко к переполнению.


  • qwertyMAN и Kartze это нравится

#20 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 458
  • Уровень сигнала: 0,22%
  • В игре: 1 час. 54 мин.
  • ГородCity17

Награды

                             

Отправлено 18 Август 2016 - 16:09

Он дает +1 к ЧСВ. У меня, к примеру, благодаря байтикам, ЧСВ близко к переполнению.

Ага, разрешено иметь не более 3-х байтиков. (особо себя не разбалуешь :) )

И то, смысла от них не вижу. Чтобы повысить ЧСВ, нужно написать полезные проги, которые все будут использовать. А так как кроме робокопалки ничего полезного не написать, грош цена всем остальным прогам. Там хоть медальки выдавай, как были проги никому ненужные, так и останутся. Факт того, что проги никому не нужны, должен снижать ЧСВ.

 

А мне вообще, даже копалку жалко использовать. В майн захожу, чтобы насладиться геймплеем, а не ожиданием пока ресурсы наплывут сами собой. Для этого кликеры всякие есть - симуляторы ожидания.



#21 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 750
  • Уровень сигнала: 0,26%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 18 Август 2016 - 19:19

Немного почитал код, и в голову пришло несколько советов.

--[[ opencomputers рыболов create serafim

"by serafim" надо. Иначе выходит, что это рыболов серафима создал, а не наоборот.

print("только роботы могут использовать эту программу")
os.sleep(5)
computer.shutdown()

А зачем тут шутдаун? При любой ошибке игроку дается 5 сек. чтобы её прочесть, а потом комп/робот вырубается. На мой взгляд лучше просто без всяких слипов выйти из программы. Например через os.exit().

slot = i_c.getStackInInternalSlot(13)

Таки всякие внутренние переменные тоже стоит объявлять как local.

print("ошибка !")
print("нет сигнала от датчика")

Для таких комбинаций команд, которые часто повторяются вместе, удобно завести функцию. Типа log(message) или error(message).

_ = event.pull(60,'redstone_changed')

В случае, когда не важно вообще, что там функция вернёт, можно просто вызвать её, как обычную функцию. event.pull(60, 'redstone_changed'). Однако, имеет смысл подстраховаться, и проверить, что произошёл именно эвент. Если мне не изменяет память, есть возможность того, что функция просто вернёт nil вместо эвента (даже если его не было на самом деле).

lovka()
drop()

И наконец, сочетание английского и транслита в одной программе терзает глаз.

:)


  • Asior, qwertyMAN и Kartze это нравится

#22 Оффлайн   serafim

serafim
  • Пользователи
  • Сообщений: 9
  • Уровень сигнала: 7,1%
  • В игре: 60 час. 55 мин.

Награды

                    

Отправлено 18 Август 2016 - 19:33

увы английский у меня хромает

оптимизация вещь тонкая, щас допилим



#23 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 458
  • Уровень сигнала: 0,22%
  • В игре: 1 час. 54 мин.
  • ГородCity17

Награды

                             

Отправлено 18 Август 2016 - 19:55

create serafim

Столько раз видал как люди подписывают свои работы через by, что create меня просто убил :smile3:

 

 

 

оптимизация вещь тонкая

Вот вот, не о медальках думать надо, а о оптимизации  :smile9:  И когда опыта наберёшься, будешь изначально писать как надо, а не исправлять позже.


Сообщение отредактировал qwertyMAN: 18 Август 2016 - 19:55


#24 Оффлайн   serafim

serafim
  • Пользователи
  • Сообщений: 9
  • Уровень сигнала: 7,1%
  • В игре: 60 час. 55 мин.

Награды

                    

Отправлено 18 Август 2016 - 20:14

И когда опыта наберёшься, будешь изначально писать как надо, а не исправлять позже.

Тут не поспориш,  потому и раздел для начинающих

 

Totoro

Поправил, спасибо за замечания, пишу в меру знаний, но их всегда не достаточно


Сообщение отредактировал serafim: 18 Август 2016 - 21:11






Темы с аналогичным тегами робот, рыба, ферма, опыт, еда

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных