Andronio
-
Публикации
20 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные пользователем Andronio
-
-
а если можно что-то сократить при этом не потеряв смысла и понятности, то почему бы и не сократить?)
Действительно, почему бы и нет. Хотя это уже переходит в раздел логика + философия

К слову, название уже изменил, но еще не протестировал
-
А нельзя ли функции перемещения u(), d(), fw(), bw() сделать с параметром на сколько блоков переместиться?
И еще, рекурсия в данном случае не самое лучшее решение.
function robolib.u() while r.detectUp() do r.swingUp() end if r.up() then if waySw then way = way.."U" end else robolib.u() end z = z + 1 endМожно сделать. Хотелось бы, по крайней мере. Но что-то мне подсказывает, что юзать рекурсию в этом случае будет прям вообще не ок. А как в данном случае можно заменить рекурсию?
У меня вариант пока что: через while
-
Не плохо было бы чутка сократить "robolib." до чего-то более короткого, например "rlib." или вообще "rb.", а то слишком уж длинное "robolib." особенно с учетом того, что дальше название функции с одной буквы "u", "d".
Действительно. Просто rl мне не понравилось, поэтому написал полное название. rlib в самый раp.
А что мешает использовать, например, local r = require('robolib')?
-
Опять же, не знаю, как вы, но я частенько сталкивался с проблемой недостатка базовых функций библиотек. Из-за этого приходилось писать свою функцию. Но бывало часто, что одна и та же функция(или сразу несколько) использовались в нескольких программах. Для этого я и сделал данную библиотеку.
Что она может:
Передвижение(+ автопробитие преграды)
Навигация
Графический вывод компонентов(Чучуть недоделанная)
Отсылать сообщения по соед.карте
Включить/выключить чанклоадер(rlib.CL(true/false))
Передвижение:
rlib.u() - Вверх
rlib.d() - Вниз
rlib.fw() - Вперед
rlib.bw() - Назад
rlib.r() - Направо
rlib.l() - Влево
rlib.a() - Оборот
Навигация:
rlib.savePath(bool) - true/false включает/выключает запись маршрута(Передвижение)
rlib.goBackByPath() - Возвращение робота по записанному пути
rlib.goBackFast() - Возвращение робота по относительным координатам(x,y,z)
rlib.getCoords() - Выводит x,y,z и сторону, в которую смотрит робот(1,2,3,4)
rlib.resCoords() - Сбрасывает x,y,z(0,0,0) и сторону, в которую смотрит робот(принимает за 1)
rlib.getPath() - Выводит путь, проделанный роботом(если включена запись). Пример: 'UUDLFBAFFD'
rlib.resPath() - Сбрасывает путь
Проверка компонентов:
rlib.cc(имя_компонента_в_кавычках) - просто возвращает true/false в зависимости от наличия
Графический вывод компонентов:
rlib.CCWD(имя_компонента_в_кавычках,язык_в_кавычках(Ru/En)) - возвращает строку, состоящую из Тип_Компонента -> Имя_Компонента -> Статус_Компонента. Пример: robolib.CCWD('generator','En') мне может вернуть: "Upgrade -> Generator: Installed"
Отсылка сообщений по соед. карте
rlib.report('msg') - печатает сообщение в консоль и отправляет по карте, если таковая имеется
Сам код: https://pastebin.com/4d06TLbu
Не знаю, может будет кому полезно тоже
-
Возможно, я неправильно понял, но нельзя сказать, что это невозможно. Это возможно, но займет кууууучу времени и энергии, с учетом скорости перемещения робота и возможными препятствиями.Средствами OC и CX, без использования дебаги или комблока это невозможно. Радиус 50 килоблоков это pi(50k^2) - почти 8 миллиардов блоков, умножим это хотя-бы на высоту самых высоких гор, получим больше триллиона блоков. Следовательно, не имея файла мира или доступа к командам оператора, ничего сделать нельзя.
Возможно, мой вопрос покажется кому-то глупым, но можно ли в дрона впихнуть вайфайку и радар? Они встки пошустрее роботов
Отправлено с моего X5pro через Tapatalk
-
Заменил способы движения с обнаружением. В свободном пространстве это незаметно, но если робот встречает препятствие, он его начинает устранять сразу, а не пытается сначала двигаться и потом устранять. По-факту, тратит в два/три раза меньше времени при встрече с проблемой, чем до замены
-
Добавил функцию отправки сообщений по соединенной карте, если таковая имеется
-
Не знаю, как вы, а я периодически сталкивался с проблемой нехватки угля/дерева. Поэтому сделал вот такую небольшую программку для робота
Требуемые улучшения:
- Притягивающий луч
- Контроллер инвентаря
- Геолизёр
- Большой топор из тинкера
Остальное по желанию
Чтобы скачать программу, пишемpastebin get FQeCHETF woodman
https://pastebin.com/FQeCHETF
Чтобы получить помощь, пишем woodman help
http://imgur.com/a/EbydN
Перед запуском программы уясним сразу: первые 4 слота - обязательно саженцы, слева от робота(если смотреть в лицо) - сундук, также не помешает зарядник, ибо если уровень зарядки опустится меньше 25%, он будет ждать зарядник. Когда зарядник подключен, а уровень заряда меньше 25% - заряжается до 50% и продолжает работуТакже, если во время работы кончаются саженцы, он замораживается и ждет, пока их положат, периодически издавая писк. На старте может подвисать, но ненадолго
Чтобы запустить робота, пишемwoodman start X Y delay layers layer_h IsCoal
где X и Y - размер фермы по X и Y(вид сверху), delay - задержка в секундах, layers - количество слоев, layer_h - высота одного слоя(только если слоев больше, чем 1! Если слой только 1, этот пункт не писать), IsCoal(true/false) - угольная ли ферма(просто изменяет количество tb.suck() после рубки дерева, для экономии времени). Например:
woodman start 10 8 3600 3 10 false woodman start 10 8 1800 1 true
Также планируется добавить сохранение данных в файл и запуск программы с использованием сохраненных данных, а не вводить каждый раз
Еще скрин: http://imgur.com/a/xvcKi
В случае, если робот разрядится меньше 25%, то система просто не даст ему поехать, а будет ждать зарядник, либо, если он подключен, ждет, пока робот не зарядится до 50%
Если робот встретится с мобом, он не собьется, а будет бить, пока не сможет пройти дальше
Требуемое расстояние между деревьями - 1
Не рекомендую использовать мультислойность, если размер сетки - 1*1. Он просто завершит работу ._.
P.S. Также, если надо, могу записать кратенький видеогайдик
А зачем я вообще спрашиваю? Все равно когда-нибудь я запишу-
6
-
-
Ну наконец-то занялись нормальным делом! Наконец-то вернули старый InfoTech
Отправлено с моего X5pro через Tapatalk
-
но что? тебе нужен os.sleep(100500)? Так смело его юзай)
или это должна быть задержка, но код должен юзать что либо другое? Тогда юзай таймер.
Если таймер то:
local event = require("event") function func() print("hello word") end local t = event.timer(10,func,2) --где 10 - время для таймера, func - что выполнить по исходу времени таймера, 2 - кол-во раз выполнения таймераПлюс таймера в том что он работает в фоне, но все же раскрой суть своего вопроса до конца, а то "но..." не дают понимания никакого) как вилами по воде)
А можно по-подробнее про таймер? Вернее про то, как делать параллельные программы. До таймера или после писать?
-
Когда вайп?
Отправлено с моего X5pro через Tapatalk
-
Фух. Значит я не зря еще и в IC2 полез прогать. А то вдругИК будет, см. первый пост.
А иначе зачем речь о солярах и квантогравиках?

Отправлено с моего X5pro через Tapatalk
-
Про СС не знал. Думал есть, раз есть аддон для него- Как только — так (почти) сразу.
- OC, Computronics, OpenPeripheral будут. ComputerCraft нет испокон веков.
. А что насчет IC2? Стоит ли мне тратить время на написание контроля IC2шных мехов или его уберут после вайпа?Отправлено с моего X5pro через Tapatalk
-
Когда будет вайп на ИТ? И останутся ли наши любимые OC, CC, Computronix, OpenPeripheral?
Отправлено с моего X5pro через Tapatalk
-
Про computer.beep(). Что значат 1000 и 3?Я же в чате объяснил, как это сделать.
При крафте надо добавить в робота одну связанную карту, а другую в комп или планшет, сообщение ловить примерно таким образом:
print(table.pack(event.pull('modem_message'))[6], os.date()) computer.beep(1000, 3)
Отправлено с моего X5pro через Tapatalk
-
Дуб. Помнишь то, что я тебе вчера говорил? По поводу отсылки оповещений на компьютер. Можешь написать?
Отправлено с моего X5pro через Tapatalk

Библиотека для расширенного управления роботом
в Библиотеки
Опубликовано:
Сам свое же опроверг