WheatComp
Пользователи-
Публикации
59 -
Зарегистрирован
-
Посещение
Тип публикации
Блоги
Профили
Форум
Багтрекер
Магазин
Все публикации пользователя WheatComp
-
Следующий код (robot.lua) почему-то не работает: local robot = component.proxy(component.list("robot")()) local computer = component.proxy(component.list("computer")()) computer.pullSignal(3) for i = 1, 4 do robot.turn(true) end Пытался проверить, будет ли 3-х секундная задержка (computer.pullSignal(3)), нет задержки. upd: оказалось, pullSignal() относится к api. Есть ли "компонентная" альтернатива?
-
Не совсем понял эту фразу. Во время игры пользоваться внеигровыми символьными ссылками? Чтобы программа робота обращалась к папке вне корневой папки Майнкрафта? Так мне это и требовалось. И как можно это реализовать? Ну раз игровая механика... Скажите, пожалуйста, как дюпать жесткий диск? Я за честную игру, но если припрет, может, когда-нибудь воспользуюсь. Очевидно, просто скопировать папку диска не выйдет, файловый менеджер не допустит.
-
@ECS Пришлось повозиться, но вроде получается ошибки вылавливать от робота с eeprom. Непривычно - не то слово. Может, эта возможность загружать в "маленькое программируемое хранилище для запуска компьютеров", как сказано в описании в игре, большие программы, которые по-хорошему требуют жесткого диска, выполнять программы без слотов памяти - это баг, которое в скором времени пофиксят? И тогда как бы не пришлось опять переписывать все программы. Вы тоже имели в виду роботы с eeprom? Или, может, UMFAL AtomicScience-а?
-
@ECS Почитал про апи filesystem на сайте мода. Оказалось, filesystem.exists() смотрит в /, а не в директории, откуда запущена программа. Добавил в агрумент название папки - заработало. Но пришлось закомментить проверку на директорию, иначе выводит сообщение, что это папка. Это странно, почему filesystem.exists() смотрит в /, а не в /home, где обычно стартует терминал при включении игрового компа. Некий диссонанс. Почему-то arg[1] выводит send. Вчера, когда пытался разобраться с аргументами, читал, что в Lua-интерпретаторах обычно args[0] выводит имя файла. Попытался в игре - выводит nil. Видимо, интерпретатор OC отличается от других. Изменил на [2], стал правильно печатать аргумент, содержащий название файла: elseif not filesystem.exists(args[2]) then print(args[2]) print("Specified file doesn't exist") return Робота удалось заставить шевелиться, но возникает некоторая путаница с командами. В ОpenOS же вперед - это forward(), а тут move(side). Придется изменить много кода и ошибки, чувствую, неизбежны. К тому же на сайте игры не написано, каковы же остальные "низкоуровневые" команды. Описаны move, turn, swing, а back, up, down не описаны. Я пытался "методом тыка" послать эти неописанные команды роботу, но он выключается. Где можно получить их список? А может, "низкоуровневые" команды для улучшений-компонентов для роботов также отличаются? Согласен. Придется переучиваться на новый способ управления роем. Это, конечно, непривычно, да и роботы придется разбирать-собирать, ну да ладно. Я почему так хотел, да и сейчас был бы непротив общей папки/функции. Раньше изучал основы Java, и там можно было импортировать функцию из файла. А когда разработчики ОС лишают такой возможности, испытываешь нечто вроде фантомной боли. Командой elseif не пользовался, показалось, главное слово тут - if, а оказалось - else. Понятно.
-
@ECS В дополнение. По-моему, пропущены end-ы после return в скрипте для хоста?: -- Проверяем, есть ли вообще входные аргумнты if not args[1] then print("Usage: send <path_to_script>") return -- Проверяем, существует ли файл, содержимое которого -- мы будем отсылать по сети elseif not filesystem.exists(args[1]) then print("Specified file doesn't exist") return
-
@eu_tomat Выживании.
-
@ECS Спасибо! Попытался запустить и так и сяк, не получилось (прикрепил фото). Хостовый файл назвал master.lua, тестовый ресивер - delete.lua Из интерпретатора еще хуже - ругается на send. Пытался послать тестовую программку на поднятие робота: local ro = require("robot") robot.up() Кстати про require("robot"). Без него же робот не поднимется, т.к. у него нет OpenOS? С eeprom-ом он как бы микроконтроллер становится? А мне нужно бы, чтобы робот летал и другие функции выполнял. И еще в скрипте-ресивере, заметил, есть компонент "computer": while true do local data = {computer.pullSignal()} а в начале файла-ресивера нет запроса библиотеки "computer". Сработает ли скрипт? Если делать как в микроконтроллерах через proxy, то это возможно ли? Я, помнится, безуспешно пытался через прокси запросить "computer" в микроконтроллер. В целом, если все это заработает, будет отлично для робот-крестьян. Но у меня еще есть 9 роботов на сборке компьютерных компонентов и еще планируются для обработки руды. Вот для них прямо необходима общая папка, поскольку внутри них будут всякие улучшения (верстаки, контроллеры инвентаря и емкости, а они же требуют OpenOS). И для всех них, включая крестьян, было бы очень удобно написать функции, общие для всех. Например, для слежения за уровнем зарядки.
-
@eu_tomat Подскажите, пожалуйста, что можно сделать. Цель моя простая - сделать так, чтобы 20 роботов обращались к одной функции, допустим, SeedWeat, расположенной в одном месте, хоть в пределах каталога OpenComputers, хоть вне пределов. Главное, чтобы в одной папке, в одном файле, чтобы можно было в любой момент редактировать эту функцию по неоходимости. А не вносить изменение (или изменения) во все 20 файлов в отдельных папках жестких дисков роботов. Честно сказать, утомился это делать.
-
Всем привет! Пытаюсь сделать так, чтобы программа использовала функции в модуле из папки вне корневой папки Майнкрафт-а, а из папки, допустим, D:/23 Вот код основной, вызывающей модуль программы: local printermodule = require("printermodule") printermodule.pr() Вот модуль: printermodule = {} function printermodule.pr() print("hello") end return printermodule В package.lua, что в папке lib папки жесткого диска робота, добавил конце строку "/D:/23/?.lua". Пытался и без слеша "D:/23/?.lua", но в этом случае ищет в "home/D:/23/?.lua": package.path = "/lib/?.lua;/usr/lib/?.lua;/home/lib/?.lua;./?.lua;/lib/?/init.lua;/usr/lib/?/init.lua;/home/lib/?/init.lua;./?/init.lua;/D:/23/?.lua" Скрин ошибки прикрепил.
