eu_tomat
-
Публикации
2 666 -
Зарегистрирован
-
Посещение
-
Победитель дней
331
Сообщения, опубликованные пользователем eu_tomat
-
-
В 29.01.2022 в 13:40, Taoshi сказал:Теперь после запуска этого файла никто кроме вас не сможет вводить команды в терминал.
Ой, да сможет...
Скрытый текстМожет, новичка это остановит. Но достаточное количество переводов строк в буфере обмена поможет и препятствия вроде io.read() прочистить, и любую последовательность команд передать на выполнение. Доступ к интерпретатору команд Lua тоже не особо усложнится.
-
В 29.01.2022 в 17:08, Asior сказал:Если это робот, то оно при движении слетает.
Вроде бы раньше список пользователей слетал только при переустановке робота, а движение самого робота не приводило к сбросу списка. Когда это изменилось? Или оно всегда так работало?
-
Скорость добычи можно повысить с помощью апргейда опыта. Но ускорить перемещение робота таким же способом пока невозможно.
-
2 минуты назад, rootmaster сказал:интерестно что такой этот ваш capacity
Этот наш capacity, судя по выводимым значениям, сообщает размер текстового буфера, выраженный в символах. Произведение высоты и ширины. Но это моё интуитивное предположение.
-
Также computer.getDeviceInfo() возвращает таблицу с параметрами всех подключенных устройств. Уровень можно узнать косвенно, ориентируясь, например, по параметру capacity.
-
1
-
-
@ItsMakar Думаю, использованы беспроводные платы, и сигнал доходит два раза: по воздуху и через кабель.
Сравни два дублирующихся события. Чем они отличаются друг от друга? Расстоянием?
-
1
-
-
1 минуту назад, ItsMakar сказал:нет в сервере 1 и в компьютере 1
Сервер и компьютер соединены кабелем или другими блоками?
-
1 минуту назад, ItsMakar сказал:нет только 2 компьютера во всем мире и сетевая карта только 1
Сетевая карта одна на 2 компьютера?
-
2 часа назад, ItsMakar сказал:я отправляю на сервер 1 сообщение через modem.broadcast но события создается 2 в итоге код срабатывает 2 раза и плохо
Такое может быть, например, в случаях:
- Компьютер имеет две или более сетевых плат с открытым портом, на который поступило сообщение.
- В сети с этим компьютером имеется другой компьютер с сетевой платой с тем же самым открытым портом.
-
4 минуты назад, ItsMakar сказал:а где код?
В 04.07.2016 в 16:05, PandaDoddo сказал:и вот что получилось: >жмяк< . | pastebin get iA7jGLCd door |
-
1
-
-
-
15 минут назад, ItsMakar сказал:я не могу запустить лаунчер че с сервером или он не существует больше?
Сервера нет. Осталась лишь сборка для одиночной игры.
upd: и одиночная игра тоже почему-то не работает.
-
2 минуты назад, Bumer_32 сказал:Если можно то вопрос как?
Ну допустим, твоя программа принимает входящие запросы на какой-нибудь сетевой порт.
А робот через интернет-плату делает запросы на этот самый порт и получает ответы. Допустим.
-
13 минуты назад, Bumer_32 сказал:На своём РЕАЛЬНОМ пк
Ну допустим это просто интерфейс с кнопками (Допустим)
Робот или пк, с проги на реальном пкНу допустим, ответ положительный.
-
1 час назад, rootmaster сказал:будет ли клавиатура в роботе работать без монитора(я могу проверить сам но шас дебажу(занят я кароч))
Тут такое дело... крокодил... Солнце в небе проглотил.
Дела неотложные у всех. Пирогами там... блинами... и сушёными грибами.
-
1 час назад, rootmaster сказал:чее какого моего мода?
Вот этого, наверное:
В 15.01.2022 в 12:05, rootmaster сказал:Пишу мод openOS испровляюший баги и имеюший повышеную безопастность
-
12 минуты назад, Bumer_32 сказал:Допустим, я написал реальную прогу на python или c# и запустил её, могу ли я с робота/пк opencomputers получить какие то данные?
А запустил-то где? Что делает прога? И кто и откуда должен получить данные?
-
5 минут назад, Disc2 сказал:Погрешность чего именно
Погрешность вычисления computer.uptime(), а затем разницы между ними.
Вот демонстрация этого эффекта:
Скрытый текст> for tick=1e9,1e9+10 do print( (tick+1)/20 - tick/20)end 0.049999997019768 0.050000004470348 0.049999997019768 0.050000004470348 0.049999997019768 0.049999997019768 0.050000004470348 0.049999997019768 0.050000004470348 0.049999997019768 0.049999997019768
17 минут назад, Disc2 сказал:т.е. например такты идут 1\2\3\4\5\6.. во втором такте исполняем os.sleep(0.05) а замер времени выдал 0.050001 - в каком такте мы очутились? в 4 или 5?
Замер сообщает нам, что за время выполнения os.sleep(0.05) прошёл 1 игровой такт. И если пред этим был такт с номером 2, то сейчас мы находится в такте 3.
21 минуту назад, Disc2 сказал:..А на мониторе (в игре) вывод происходит в тот же самый момент когда код исполнился, или тоже с задержкой на такт?..
Изображение на мониторе обновляется один раз в такт, но на каком именно участке такта, сложно сказать. Поэтому изображение может обновиться как и через наносекунду после вывода, так и почти через целый такт.
-
6 минут назад, Disc2 сказал:У меня результат замера времени исполнения sleep(0.04) выдается то 0.049999 то 0.050001
Т.е. это два тика,или один? Мы же округляем вверх?
Это погрешность вычислений. Округляем до ближайшего 0.05, то есть до целого такта.
-
1 час назад, Disc2 сказал:Кстати os.sleep(0.5) или 0.4 - будет выполнятся 1 тик или 2?
Количество тактов можно получить, умножив значение времени на 20.
-
Возможно, поможет этот гайд:
-
14 минуты назад, Disc2 сказал:Каков список точностей из которого мне нужно выбрать одну?
А это, пожалуй, самый важный вопрос в теме времени. Хорошо было бы взять, да и получить такой список. У меня его нет. Есть какие-то смутные критерии для классификации разных видов точности, но это вообще не список. Попробуем составить его вместе, если получится.
Базовый уровень: время исполнения вызова.
22 минуты назад, Disc2 сказал:в последней версии ОС для МС 1.12.2 robot.place() вообще занимает 8-9 тиков, на 1.7.10 или более ранних версиях ОС роботы чтоли были быстрее?
При стандартном конфиге мода вызов robot.place() всегда требовал 8 тактов времени, а при наличии лагов и больше.
Это то, что мы можем легко протестировать без особого напряжения мозга.
26 минут назад, Disc2 сказал:Почему 2 такта на демонтаж? Как именно измеренно?
Почему 4 на установку? Как измеренно?
4 такта на установку? Нет, я ошибся. Требуется 8 тактов (0.4 сек). Измерено тем же способом, который в примере по ссылке.
Скоростной уровень: время гарантированного исполнения запрошенного действия.
Робот или транспозер сразу же выполняет запрошенное действие, и, выдержав паузу, возвращает управление в программу. Это значит, что уже в следующем такте результат этого действия можно будет однозначно отследить. Я думаю, что ранее я сильно завысил тайминги. На каждое действие можно смело выделять по одному такту времени: установка реактора, установка камер, заполнение реактора. На этом уровне я ещё могу говорить о какой-то понятной точности, выражая её в игровых тактах. И это время можно косвенно измерить.
Бешеный уровень: время фактического исполнения запрошенного действия.
На предыдущем уровне требовалось выждать один такт, чтобы однозначно отследить результат выполненного действия. Но это, строго говоря, не обязательно. Поставим себе простую задачу: пересобрать реактор с одной дополнительной камерой за один такт времени. Это возможно при условии, если роботы строго в обозначенном порядке выполнят действия:
- Первый робот снимает блок реактора. Дополнительная камера снимается автоматически. Робот уходит в ожидание на 2 такта.
- Второй робот устанавливает блок реактора и уходит в ожидание на 8 тактов. Успех этого робота полностью зависит от успеха первого.
- Третий робот устанавливает дополнительную камеру и также уходит в ожидание 8 тактов. Аналогично, его успех полностью зависит от действий предыдущих двух исполнителей.
Возникают вопросы: Какой из роботов будет выполнять действие первым? Как управлять порядком исполнения команд внутри одного игрового такта? Не ответив на эти вопросы, мы не сможем быть уверены в успешности выполнения всей цепочки действий.
Пока я не знаю, как это гарантировать. Но я, например, могу ранжировать роботов по скорости их реакции, чтобы каждого назначить на соответствующий участок последовательности. Скорее всего, в такой конфигурации они смогут успешно работать до следующей перезагрузки чанка, потом потребуется переназначить их роли. Это максимум, которого мне удавалось достичь. Но он пока неустойчив даже в лабораторных условиях. Синхронизация таких цепочек не гарантирована при загрузке сохранённого мира.
Итог: Более-менее о точности можно говорить, если не пытаться выполнять кучу действий за один такт. Внутри одного такта также протекают какие-то процессы. Ориентируясь по конечному результату, иногда можно уверенно говорить, что то или иное действие было выполнено раньше другого. Возможно, существует способ однозначно управлять последовательностью действий компьютерной периферии в рамках одного такта, и было бы интересно этот способ найти.
1 час назад, Disc2 сказал:Кстати,а не можем ли мы в 1 такт выполнить сразу несколько действий в определенной последовательности?
За один такт и в определённой последовательности? Получается, что, при некоторых условиях можем. Бешеный транспозер уже выполняет сотню действий за такт, но для его работы не требуется соблюдать последовательность.
Какие у тебя есть идеи для точного управления последовательностью действий?
-
20 минут назад, Disc2 сказал:Но нам же надо сначала как-то замерить в точности, как каждый элемент установки себя ведет и какие там тайминги латентности и т.д. чтобы потом было из чего считать затраты времени и строить алгоритм?
А в какой именно точности ты хочешь измерить тайминги?
-
2 минуты назад, Disc2 сказал:как мы знаем что 5 роботов поставили реакторные блоки одновременно в такой-то такт, транспозер переместил предметы в следующий такт, и реактор получил рэдстоун сигнал и запустился ровно череp n тактов?
В том примере по ссылке мы ничего не знаем о факте установки блока роботом. Мы знаем только о времени, в течение которого вызов обрабатывался.
В скоростных лабораторных установках вообще не осуществляются какие-либо проверки. Просто все узлы работают по расписанию, построенному на основе заранее посчитанных затрат времени для каждого вызова. Мы не знаем, установил ли тот или иной робот реакторную камеру. Мы лишь надеемся, что он успел это сделать в пределах предполагаемого отрезка времени.

Безопасность: Автоматическая блокировка клавиатуры
в Примеры
Опубликовано:
А может, лучше по старинке через computer.addUser?
Или этот механизм всё-таки ломается при каких-то условиях?
Есть какие-то идеи на этот счёт?