Krutoy 1 147 Опубликовано: 6 марта Роботы OC очень сложны в сборке и программировании. С этим биосом робота можно программировать через переименование на наковальне. Ссылка на английский Readme с большим количеством инфы. Установка Соберите робота минимальной конфигурации Корпус CPU RAM (Кстати, в моем модпаке Enigmatica 2: Expert - Extended этот чип будет крафтиться, так что игрокам даже не нужен стационарный компьютер что бы пользоваться чипом.) Скачайте программу из интернета: wget https://gist.githubusercontent.com/Krutoy242/db63637d605c2c247bc95e939c7f7ddd/raw/lostuser.min.lua Запишите прогу на чип: flash -q lostuser.min.lua LostUser Вставьте чип в робота Использование Робот программируется путем его переименования. Можно использовать наковальню или вот такой инструмент из мода Integrated Dynamics. Назовите своего Робота \3, поставьте на землю, включите и посмотрите, как он будет щелкать по блоку впереди. Для тех кто заинтересовался, о синтаксисе программирования робота через имя можно посмотреть в англ. Readme. Примеры IC2 растения Мы будем использовать робота для разведения культур Industrial Craft 2. Для этого нужно посадить семена в шахматном порядке, а между ними поставить поперечные палочки. Робот должен бегать по грядке и нажимать правой кнопкой мыши с инструментом, чтобы собирать сорняки. Имя такого робота будет \0ZZ Видео во вложении. Ferrous-Juniper ферма А вот пример более сложной программы ?(y0)'E9nS18''^9/0s18|0'Z Видео. Эта программа: Выкидывает предметы из слотов 9-16 вниз Засасывает предметы в слоты 1-8 сверху Перемещается зигзагообразно, ломает блок под собой и ставит новый Давайте ее разберем. С начала идет условный оператор ?. Он принимает 3 аргумента: 1) Условие (y0), 2) Блок then 'E9nS18' 3) Блок else '^9/0s18|0' Условие это программа y0, где y - сокращение команды inventory_controller.getInventorySize. Некоторые сокращения записаны в исходном коде. Блок then выполняет две программы. E9n - слить слоты с 9 по n вниз. S18 - набрать предметы сверху. Блок else выделяет 9 слот ^9, ломает блок под собой /0, выбирает первый не-пустой слот s18, устанавливает блок вниз |0. В самом конце проги стоит буква Z, которая означает Зигзагообразное движение. Фидбэк Если кому то понравилась идея, пишите как можно улучшить. Особенно интересно, какие операторы стоит добавить в заранее записанные сокращения, а в каких сокращениях лучше сменить букву. Главный принцип - возможность писать сложные программы используя всего несколько символов. LiMWFlH.mp4 7 1 1 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hohserg 182 Опубликовано: 6 марта Это звучит как байткод, которому требуется компилятор из более читаемого языка Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ECS 1 766 Опубликовано: 6 марта Респект за соулс от мира опенкомпов! Вики очень достойная, но логику работы сложно осилить даже на примере \0ZZ, учитывая необходимость перма-скроллинга то по списку алиасов в сырце, то по списку операторов в самой вики. Да и без поиска тут не обойтись. Пожалей наши мыши! Интереса ради я решил вникнуть в первый пример: 1) Читаю команду \0, понимаю, что это useDown(), вопросов нет 2) Читаю команду Z, осознаю, что это алиас на %`~F'ta'N` ?M*'F?M`FN``RRMN`', приступаю к расшифровке 3) Читаю команду %, смекаю, это ещё один алиас на ?{<a>==nil}, отвечающий за проверку истинности результата выполнения некоего Lua-выражения. А какого? 4) Судорожно ищу, что такое <a>, и вроде бы даже нахожу нужную секцию: То есть, согласно вики, a - это программа, которая... что? Которая названа a? 5) Пытаюсь найти в сырцах некую программу с названием а, но тщетно 6) Допускаю, что, скорее всего, a - это переменная, которая пока еще не определена в текущем окружении. Вроде бы. То есть, наверное, выражение ?{<a>==nil} эквивалентно if a == nil. Или a - это все же программа? Ладно, хрен с ним 7) Возвращаюсь к пункту 2, читаю символ `, вновь обращаюсь к сырцам. В сырцах не нахожу. Видимо, оно в вики? Скроллю вики, нахожу искомое: Так, падаж-ж-жи! Интересно, зачем столько вариантов... для возможности использовать внутри строк другие кавычки, когда требуется? Если да, то это хорошо, хотя классический эскейпинг через \" был бы правильнее, т.к., например, я не смогу заюзать все 3 варианта кавычек в строке "hello `sunny`, you are 'so shiny' and "beautiful"". Или все же смогу? Энивей иду вперед 8) Натыкаюсь на символ ~, определяющий алиас на подпрограмму ~F'ta'. Судя по вики, у нас теперь определена некая подпрограмма F, выполняющая команды ta 9) Ищу, что такое t и a. Сырцы говорят, что t отвечает за robot.turn(clockwise). Вероятно, переменная а и отвечает за поворот по часовой стрелке? Вроде бы понятно... 10) Читаю новый неизвестный символ N. Хоспади, только не алиас... МАМОЧКИ, ЭТО ОН. Ищу в сырцах содержимое, нахожу логику инверсии перменной a -a{not <a>}... не-е-е, все, убейте меня. Софтина хорошая, идея клёвая, но нервная система у меня одна хд 1 1 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Krutoy Автор темы 1 147 Опубликовано: 6 марта 3 часа назад, ECS сказал: Респект за соулс от мира опенкомпов! Спасибо! Тут как говорится - хотел как лучше - получилось как всегда. Цитата Пожалей наши мыши! Как? Я бы рад, но как? Может сделать какую то внутреннюю подпрограмму, которая будет расшифровывать все алиасы на месте? Типа, выводить куданибудь в output дерево расшифровки? Цитата ?{<a>==nil} эквивалентно if a == nil. Все твои шаги расшифровки почти полностью правильно поняли мою задумку. Мне приятно видеть что хоть кто то копнул так глубоко. Именно в этом шаге ?{<a>==nil} эквивалентно if VARS['a'] == nil, потому что иначе не нужны были бы <>. Цитата a - это программа, которая... что? Которая названа a? Может, проблема в том, что в языке перемешан синтаксис языка \ алиасы и переменные? Может в таком случае, нужно что бы, например Весь синтаксис только на не-буквеных символах @#$ Все переменные как маленькие буквы abc Все алиасы как большие ABC Цитата классический эскейпинг через \" был бы правильнее В принципе, мне не сложно добавить эскейпинг. Я это сделаю. Правда, это больше символов в программу. Почти нет таких условий когда тебе нужно 3 раза подряд вписывать строку внутри строки. А может подключить юникод и сделать что то такое. Правда, при больших программах это все равно растянется на страницы 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ECS 1 766 Опубликовано: 6 марта 2 часа назад, Krutoy сказал: Как? Я бы рад, но как? Может сделать какую то внутреннюю подпрограмму, которая будет расшифровывать все алиасы на месте? Типа, выводить куданибудь в output дерево расшифровки? Под мышами я имел в виду нужду в хаотичном скроллинге документации :p Было бы клево иметь всю инфу в маркдауновой доке без нужды бегать к комментам в сырцах и обратно, я об этом 2 часа назад, Krutoy сказал: Именно в этом шаге ?{<a>==nil} эквивалентно if VARS['a'] == nil, потому что иначе не нужны были бы <>. Занятно, а что будет означать конструкция ?{a==nil}? Такая запись вообще валидна или же <> требуется в обязательном порядке? В доке сказано: "You can use <> inside lua code to execute program between <> as commands", из чего я сделал вывод, что <> выполняет некую программу. Но <a> выглядит как переменная, а не программа. Что такое program? Это просто собирательный термин или там действительно какие-то программы поддерживаются? Поясни, пожалуйста 2 часа назад, Krutoy сказал: Может, проблема в том, что в языке перемешан синтаксис языка \ алиасы и переменные? Может в таком случае, нужно что бы, например Весь синтаксис только на не-буквеных символах @#$ Наверное, это было бы правильно, но вкусовщина такая вкусовщина. Имхо, главное, чтобы тебе было удобно и понятно, а невежественный плебс в любом случае подстроится)0 2 часа назад, Krutoy сказал: А может подключить юникод и сделать что то такое. Правда, при больших программах это все равно растянется на страницы Выглядит шикарно, особенно если бы это визуализировалось в некой скролл-зоне экрана, в то время сам скрипт писался бы в инпут-панели. Но так и до визуального кодинга недалеко, а это тревожный звоночек шизофрении! 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
rootmaster 18 Опубликовано: 3 апреля В 06.03.2022 в 16:30, Krutoy сказал: Роботы OC очень сложны в сборке и программировании. С этим биосом робота можно программировать через переименование на наковальне. Ссылка на английский Readme с большим количеством инфы. Установка Соберите робота минимальной конфигурации Корпус CPU RAM (Кстати, в моем модпаке Enigmatica 2: Expert - Extended этот чип будет крафтиться, так что игрокам даже не нужен стационарный компьютер что бы пользоваться чипом.) Скачайте программу из интернета: wget https://gist.githubusercontent.com/Krutoy242/db63637d605c2c247bc95e939c7f7ddd/raw/lostuser.min.lua Запишите прогу на чип: flash -q lostuser.min.lua LostUser Вставьте чип в робота Использование Робот программируется путем его переименования. Можно использовать наковальню или вот такой инструмент из мода Integrated Dynamics. Назовите своего Робота \3, поставьте на землю, включите и посмотрите, как он будет щелкать по блоку впереди. Для тех кто заинтересовался, о синтаксисе программирования робота через имя можно посмотреть в англ. Readme. Примеры IC2 растения Мы будем использовать робота для разведения культур Industrial Craft 2. Для этого нужно посадить семена в шахматном порядке, а между ними поставить поперечные палочки. Робот должен бегать по грядке и нажимать правой кнопкой мыши с инструментом, чтобы собирать сорняки. Имя такого робота будет \0ZZ Видео во вложении. Ferrous-Juniper ферма А вот пример более сложной программы ?(y0)'E9nS18''^9/0s18|0'Z Видео. Эта программа: Выкидывает предметы из слотов 9-16 вниз Засасывает предметы в слоты 1-8 сверху Перемещается зигзагообразно, ломает блок под собой и ставит новый Давайте ее разберем. С начала идет условный оператор ?. Он принимает 3 аргумента: 1) Условие (y0), 2) Блок then 'E9nS18' 3) Блок else '^9/0s18|0' Условие это программа y0, где y - сокращение команды inventory_controller.getInventorySize. Некоторые сокращения записаны в исходном коде. Блок then выполняет две программы. E9n - слить слоты с 9 по n вниз. S18 - набрать предметы сверху. Блок else выделяет 9 слот ^9, ломает блок под собой /0, выбирает первый не-пустой слот s18, устанавливает блок вниз |0. В самом конце проги стоит буква Z, которая означает Зигзагообразное движение. Фидбэк Если кому то понравилась идея, пишите как можно улучшить. Особенно интересно, какие операторы стоит добавить в заранее записанные сокращения, а в каких сокращениях лучше сменить букву. Главный принцип - возможность писать сложные программы используя всего несколько символов. LiMWFlH.mp4 4 \u041c\u0431 · 0 загрузок главный вопрос, а зачем? я в своих роботов либо ставлю монитор, либо подключаю к сети дома, регистрирую на нем удаленную файловую системму(чаще всего и то и другое)(мои софтом(netoworks, distfs2)) и открываю доступ в его lua по сети, и вооля все роботом можно управлять удаленно на диск записал /start.lua(запускаеться моим модом для openOS) и как тока включил он пойдет копать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asior 558 Опубликовано: 3 апреля 5 часов назад, rootmaster сказал: главный вопрос, а зачем? Наверное потому что так тоже можно. Зачем городить сложные системы и топологию, когда можно и так. Тебе удобно своими инструментами достигать того же результата, а другим удобно иными инструментами. Хотя если это сообщение оставлено ради рекламы твоего софта, то не самая удачная идея так делать. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Krutoy Автор темы 1 147 Опубликовано: 3 апреля 12 часа назад, rootmaster сказал: главный вопрос, а зачем? я в своих роботов либо ставлю монитор, либо подключаю к сети дома, регистрирую на нем удаленную файловую системму(чаще всего и то и другое)(мои софтом(netoworks, distfs2)) и открываю доступ в его lua по сети, и вооля все роботом можно управлять удаленно на диск записал /start.lua(запускаеться моим модом для openOS) и как тока включил он пойдет копать Моя версия проще. Лешего, не нужно учить луа. Скрафтил и вперёд. 1 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
rootmaster 18 Опубликовано: 5 апреля В 04.04.2022 в 00:37, Krutoy сказал: Моя версия проще. Лешего, не нужно учить луа. Скрафтил и вперёд. lua все кто с этим модом играют знают, без этого не как Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ECS 1 766 Опубликовано: 5 апреля 1 час назад, rootmaster сказал: lua все кто с этим модом играют знают, без этого не как С/Assembly все кто с Windows играют знают, без этого не как Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
rootmaster 18 Опубликовано: 5 апреля 18 минут назад, ECS сказал: С/Assembly все кто с Windows играют знают, без этого не как как не как а удаленный доступ к фски и lua робота лутще так и можно с планшета проявлять, такой вариант больше нравиться Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Bs0Dd 177 Опубликовано: 5 апреля 2 часа назад, rootmaster сказал: lua все кто с этим модом играют знают, без этого не как Прекрасно помню 2014-15 год, когда познакомился с СС (а Майноська еще была лишь простенькой оболочкой для него) и OC. И Lua я тогда не знал, но тем не менее компики тыкал и возился, используя готовый софт. А язык освоил только году в 19, до тех пор продолжая играть с ОС. Так что вышесказанное сообщение правдивым не является ибо, думаю, людей, как я в 15 году, возможно, даже больше тех, что умеет кодить. А потому данное программное решение я бы ругать не стал, каждому свое, как говорится. 2 1 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах