Здравствуйте, уважаемые форумчане! В процессе создания на сервере InfoTech собственной энергостанции RF на биотопливе, появилась необходимость фермы дерева. Так как мультифермы из Форестри здесь отключены, в срочном порядке спаял роботика, вручил ему электропилу и написал простенький алгоритмик для добычи дерева:
Робот находится в одном блоке за фермой, в правом нижнем её углу:
XXXX|
XXXX|
XXXX|
---⌷+
X — саженцы, |, -, + — граница фермы, а ⌷ — робот.
При каждом цикле сбора робот поднимается на 1 клетку над саженцами, обходит её "змейкой", если ему по пути попадается дерево — он его срубает и садит саженец из первого слота. Дойдя до конца, он выходит за границы фермы и идёт к стартовой позиции.
На таком алгоритме бы всё и закончилось, если бы не одно "но". Спасибо, Майнкрафт: если саженец вырастает и робот находится в месте, где должен быть блок древесины, последний заменяет роботика полностью и безвозвратно. Естественно, меня такой поворот опечалил бы безразмерно, потому на смену этому алгоритму пришёл новый, куда менее эффективный:
Робот находится в той же позиции, что и в прошлый раз, но "обход" фермы совершается иначе. Робот идёт вперёд на уровне фермы, срубая перед ним саженцы и деревья (мы избавляемся от прорастания в робота), затем возвращается через robot.back(), ставя перед собой саженцы. Дойдя до начала ряда, он выходит за границу, ставит саженец и поворачивает налево, проходит блок и снова поворачивается лицом к ферме, затем повторяется описанное. Возвращается так же, как и в прошлом алгоритме.
Долго обдумав, я решил, что это полностью безопасный алгоритм, записал на робота, запустил и вышел из игры.
Вернулся я сегодня на сервер на том же месте, где и вышел, поворачиваюсь к ферме, смотрю — робот пропал! Но паниковать рано. Твёрдой рукой ввожу секретное заклинание: /co l a:block u:Fingercomp.robot t:24h r:20, смотрю — 22 часа назад робот ставит саженец, затем перестаёт, что логично, так как ЧЛ в нём не было (ну, не накопил на него тугрей, бывает), а я вышел из игры. Но! 1.03 часа назад... Робот оживает!.. и ставит саженец. Один, второй, третий... Третий. Дальше лог молчит. Вчера был поставлен сенсор на месте фермы, в котором крутятся игроки, которые были на ферме (ну, мало ли что, угонят там, например ), бегу туда, ввожу edit /var/log/players/players.log, смотрю — один я был замечен на ферме. Немного поразмыслив, мысль появилась: эй, так ведь 1.03 часа назад был же рестарт!..
Ох уж эти Котлы с ненавистью к роботам. Что конкретно случилось — мне понять не дано, но робот исчез бесследно... А ферма нужна позарез, питать машинки биогазовыми движками на воде и лаве — не вариант совершенно. Поэтому создаю тему здесь, дабы опытные лесоводы могли дать совет, как же обустроить ферму дерева на роботах.
Здравствуйте, уважаемые форумчане! В процессе создания на сервере InfoTech собственной энергостанции RF на биотопливе, появилась необходимость фермы дерева. Так как мультифермы из Форестри здесь отключены, в срочном порядке спаял роботика, вручил ему электропилу и написал простенький алгоритмик для добычи дерева:
Робот находится в одном блоке за фермой, в правом нижнем её углу:
X — саженцы, |, -, + — граница фермы, а ⌷ — робот.
При каждом цикле сбора робот поднимается на 1 клетку над саженцами, обходит её "змейкой", если ему по пути попадается дерево — он его срубает и садит саженец из первого слота. Дойдя до конца, он выходит за границы фермы и идёт к стартовой позиции.
На таком алгоритме бы всё и закончилось, если бы не одно "но". Спасибо, Майнкрафт: если саженец вырастает и робот находится в месте, где должен быть блок древесины, последний заменяет роботика полностью и безвозвратно. Естественно, меня такой поворот опечалил бы безразмерно, потому на смену этому алгоритму пришёл новый, куда менее эффективный:
Робот находится в той же позиции, что и в прошлый раз, но "обход" фермы совершается иначе. Робот идёт вперёд на уровне фермы, срубая перед ним саженцы и деревья (мы избавляемся от прорастания в робота), затем возвращается через robot.back(), ставя перед собой саженцы. Дойдя до начала ряда, он выходит за границу, ставит саженец и поворачивает налево, проходит блок и снова поворачивается лицом к ферме, затем повторяется описанное. Возвращается так же, как и в прошлом алгоритме.
Долго обдумав, я решил, что это полностью безопасный алгоритм, записал на робота, запустил и вышел из игры.
Вернулся я сегодня на сервер на том же месте, где и вышел, поворачиваюсь к ферме, смотрю — робот пропал! Но паниковать рано. Твёрдой рукой ввожу секретное заклинание: /co l a:block u:Fingercomp.robot t:24h r:20, смотрю — 22 часа назад робот ставит саженец, затем перестаёт, что логично, так как ЧЛ в нём не было (ну, не накопил на него тугрей, бывает), а я вышел из игры. Но! 1.03 часа назад... Робот оживает!.. и ставит саженец. Один, второй, третий... Третий. Дальше лог молчит.
Вчера был поставлен сенсор на месте фермы, в котором крутятся игроки, которые были на ферме (ну, мало ли что, угонят там, например ), бегу туда, ввожу edit /var/log/players/players.log, смотрю — один я был замечен на ферме. Немного поразмыслив, мысль появилась: эй, так ведь 1.03 часа назад был же рестарт!..
Ох уж эти Котлы с ненавистью к роботам. Что конкретно случилось — мне понять не дано, но робот исчез бесследно... А ферма нужна позарез, питать машинки биогазовыми движками на воде и лаве — не вариант совершенно. Поэтому создаю тему здесь, дабы опытные лесоводы могли дать совет, как же обустроить ферму дерева на роботах.
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах