Перейти к содержимому

Поиск по сайту

Результаты поиска по тегам 'Lua'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип публикаций


Блоги

  • Робот Байт
  • Fingercomp's Playground
  • 1Ridav' - блог
  • Totoro Cookies
  • Блог cyber01
  • IncluderWorld
  • KelLiN' - блог
  • Крутой блог
  • eutomatic blog
  • Programist135 Soft
  • Сайт в сети OpenNet
  • PieLand
  • Очумелые ручки
  • Блог недоблоггера
  • В мире Майнкрафт
  • LaineBlog
  • Квантовый блог
  • Блог qwertyMAN'а
  • some blog name
  • Дача Игоря
  • Путешествия Xytabich'а
  • Рецепты программирования
  • Шкодим по крупному
  • 123
  • mineOS и её удивительный мир
  • Поляна говнокода Bumer 32

Форумы

  • Программирование
    • Программы
    • База знаний
    • Разработчикам
    • Вопросы
  • Игровой раздел
    • Игровые серверы
    • Моды и плагины
    • Жалобы
    • Ивенты и конкурсы
    • Файлы
  • Общение
    • Задать вопрос
    • Обратная связь
    • Беседка
    • Шкатулка
  • Технический раздел
    • Корзина

Группы продуктов

Нет результатов для отображения.


Искать результаты в...

Искать результаты, которые...


Дата создания

  • Начать

    Конец


Последнее обновление

  • Начать

    Конец


Фильтр по количеству...

Зарегистрирован

  • Начать

    Конец


Группа


AIM


MSN


ICQ


Yahoo


Jabber


ВКонтакте


Город


Интересы

Найдено 147 результатов

  1. Здравствуйте. Возможно глупый вопрос, но все же: Возможно ли силами луа или oc записать данные из переменной в текстовой файл? К примеру: В переменной есть 1, эту цифру надо записать в "log.txt" Буду благодарен за помощь
  2. Как в луа удалить ВСЕ HTML тэги из строки? Типа как аналог функции strip_tags() в PHP
  3. Fingercomp

    OpenOS. Потоки

    Потоки — очень полезные штуки, позволяющие исполнять несколько кусков кода. Раньше для их использования приходилось скачивать отдельную библиотеку, работающую через костыли. Начиная с OpenOS 1.6.4, они есть в стандартной поставке ОС — в модуле thread. Давайте посмотрим, из чего она состоит — и в чём её преимущество перед любыми другим библиотеками. Начнём с версий. OpenOS 1.6.4 — версия, включённая в OpenComputers 1.7.0. Если не хотите возиться с обновлением системы вручную, требуется иметь версию выше или равную 1.7.0. Сразу обращаю внимание на самую важную вещь: потоки не могут исполняться одновременно. В один момент времени только один поток может работать. В чём тогда красота тредов? Они автономны, то есть: Начинают исполнение сразу же после создания. Передают исполнение в другие потоки в местах, указанных использователем, — при том или ином вызове computer.pullSignal (os.sleep, event.pull и т. д.). Автоматически продолжают своё исполнение без необходимости самостоятельно их стартовать. Потоки можно убить и приостановить. Они неблокирующие: Вызов computer.pullSignal не блокирует исполнение других потоков. Они отцепляемые: Процесс, в котором был создан поток, называется родительским. При завершении родительского процесса все потоки останавливаются. Поток может отсоединиться от родительского процесса и работать полностью автономно — например, как слушатели событий. Поток может сменить родителя на другого. Поток сам является процессом и потому может создавать дочерние потоки. Работающий поток не даёт завершиться своему родителю. Они независимы при обработке событий: Потоки не наследуют и не передают дочерним свой набор слушателей событий. Все слушатели событий и таймеры принадлежат только конкретному потоку. Как следствие, поток не может изменять их набор в другом. Слушатели и таймеры автоматически удаляются при завершении потока, даже если завершение вызвано ошибкой. Приостановленные потоки игнорирует события. Если несколько потоков вызвали event.pull на одно и то же событие, они оба его получат. Этот набор фич в таком объёме присутствует только в этой библиотеке, и ни одна другая и не даёт столько простоты в работе с ними. Пожалуй, приступим к использованию. Потоки создаются функцией thread.create: первым аргументом передаётся функция, дальше идут аргументы к ней. local thread = require("thread") local t = thread.create(function(a, b) print("В потоке получены аргументы:", a, b) end, 21, 42) Функция возвращает объект потока. Его же может получить сам поток вызовом thread.current() — однако если вызвана не в потоке, то возвращает nil. На всякий случай, основной процесс не является потоком. Объект потока позволяет чудить различные вещи с потоком. t:suspend() приостанавливает поток. Как уже сказано, такой поток не будет получать события и обрабатывать тики таймера. Забавно, что если приостановить поток, когда он ждёт события, то неизвестно, что он получит после его возобновления. t:resume() возобновляет работу ранее приостановленного потока. Так как созданные потоки сразу начинают работу, то обычно этот метод вызывать не придётся. t:kill() убивает поток, то есть завершает его, удаляя всех слушателей и таймеры. Возобновить работу потока после того, как он убит, нельзя. t:status() возвращает строку со статусом потока: "running" — поток работает или блокирован другим. Такой поток не даёт завершиться своему родителю. "suspended" — поток приостановлен. Его дочерние потоки также будут приостановлены. Когда родительский процесс завершается, такой поток автоматически убивается. "dead" — поток мёртв. t:attach() позволяет сменить родителя у потока. Без аргумента поток будет присоединён к текущему процессу. Переданное как аргумент число позволяет указать, к кому присоединить: 0 — текущий процесс, 1 — родитель текущего и т. д. t:detach() отцепляет поток от родителя. Такой поток будет работать до его остановки или перезагрузки компьютера. t:join() останавливает процесс, в котором была вызвана это функция, до завершения потока t. local thread = require("thread") local t = thread.create(function() os.sleep(10) end) t:join() -- остановится на 10 секунд Можно передать первым аргументом этой функции число, которое будет служит таймаутом (в секундах). Тогда, если не успеет завершиться поток за это время, join завершится досрочно. t:join ждёт только одного потока. Для групп потоков есть функции thread.waitForAny и thread.waitForAll — обратите внимание, что это функции библиотеки, а не методы объекта потока. Обе функции первым аргументом требуют таблицу с потоками, а вторым опционально можно задать таймаут. thread.waitForAll ждёт, пока завершатся все потоки из списка. local thread = require("thread") local t1 = thread.create(function() os.sleep(10) end) local t2 = thread.create(function() os.sleep(15) end) thread.waitForAll({t1, t2}) print("Это сообщение будет написано через 15 секунд") thread.waitForAny ждёт, пока завершится хотя бы один поток из списка. local thread = require("thread") local t1 = thread.create(function() os.sleep(10) end) local t2 = thread.create(function() os.sleep(15) end) thread.waitForAny({t1, t2}) print("Это сообщение будет написано через 10 секунд") Что будет, если поток бросает ошибку? При ошибке в потоке она не будет проброшена в родительский процесс. Как и со слушателями, она будет записана в файл /tmp/event.log, но родитель не сможет узнать причину ошибки — и, вообще, успешно ли завершился поток. local thread = require("thread") local t = thread.create(function() os.sleep(3) error("test") end) print(t:status()) --> running t:join() print(t:status()) --> dead Кроме того, событие жёстокого прерывания (Ctrl+Alt+C) не передаётся всем процессам — только одному; причём неизвестно, какому именно: родителю или одному из его потоков. Если вы используете потоки, первым делом сделайте один, который будет ждать события interrupted и подчищать ресурсы. local thread = require("thread") local cleanupThread = thread.create(function() event.pull("interrupted") print("Принял ^C, чищу всякие ресурсы") end) local mainThread = thread.create(function() while true do local input = io.read() if input == "exit" then break end end end) thread.waitForAny({cleanupThread, mainThread}) os.exit(0) Обратите внимание, что в конце программы стоит os.exit. Я уже упоминал не раз, что родительский процесс, достигнув конца программы, не завершится до тех пор, пока работает хотя бы один из его дочерних потоков. Вызов os.exit() позволяет выйти из программы, закрыв все дочерние потоки. Что, безусловно, достаточно удобно. Есть ещё один момент. Допустим, данная программа запускается в роботе: local robot = require("robot") local thread = require("thread") local moveThread = thread.create(function() while true do robot.forward() end end) local inputThread = thread.create(function() while true do local input = io.read() if input == "exit" then break end end end) thread.waitForAny({inputThread, moveThread}) os.exit(0) Если вы запустите эту программу, то должны заметить, что вы ничего не сможете написать в роботе, хотя работает io.read. Дело в том, что функция robot.forward вызывает метод компонента, который блокирует исполнение компьютера. Пока робот двигается, на компьютере не может выполняться ни одна команда. Чтобы хоть что-то можно было вставить в строку, то поставьте после robot.forward какой-нибудь os.sleep(0) — он позволит соседнему потоку принять и обработать события. Тем не менее, строка ввода всё равно будет работать с тормозами. В подобном случае задумайтесь над тем, чтобы использовать вместо строки ввода иное средство коммуникации: редстоун, сеть, интернет-сокет. Несмотря на всё, библиотека действительно облегчает работу с потоками в OpenOS. Кроме того, очень удобно поместить все слушатели событий в один поток, чтобы они все автоматически были удалены после убийства потока. local event = require("event") thread = require("thread") local mainThread = thread.create(function() event.listen("key_down", function(evt, addr, key, code, user) print("A key has been pressed!") end) while true do print("do something") os.sleep(0.5) end end) -- событие interrupted не ловится обработчиками local intThread = thread.create(function() event.pull("interrupted") end) thread.waitForAny({mainThread, intThread}) os.exit(0) Не нужно функции сохранять в переменные и помнить, что нужно ставить event.ignore в конце программы; не требуется ребутать компьютер, если программа завершилась с ошибкой, а до отключения слушателей дело не дошло. В общем, красота.
  4. Где можно найти сайт который при отправке запроса вернёт реальное московское время? В формате: часы:минуты
  5. Услышал от qwertyMan'а что глобальные переменные зло и решил заменить все глобальные в приложении на локальные и перестало работать. Может я очень тупой и что то не правильно сделал но не работает.
  6. Недавно наткнулся на пост о довольно интересном соревновании для роботов-пылесосов http://codeforces.com/blog/entry/55882 Примечательно то, что в том соревновании кодят как раз на Lua. Как думаете, может стоит когда-нибудь провести такое соревнование на серверах computercraft? Это было бы очень крутым событием, которое может привлечь новых игроков в игру на сервере. Особенно если сделать пафосный видос об этом соревновании на YouTube. Для еще большего пафоса можно поставить огромный монитор(3х3 монитора) на спавне и транслировать все туда. П.С. Если надо будет организовать такое соревнование, я готов. Это не трудно ( на первый взгляд, конечно ). Видео с одного из раундов:
  7. Всем привет. Представляю вашему вниманию: Замок для дома на Magnetic Card Reader Также есть редстоун выход. pastebin run LY6uj0xT Код: https://pastebin.com/LY6uj0xT
  8. %PLAYERNAME% имеет %ITEMNAME%, в кoличетcве n, у негo зaбиты cундуки вcяким хлaмoм, ендерчеcт вooбще трещит пo-швaм. Мoжнo иcпoльзoвaть виртуaльные хрaнилищa AE, нo caм мoд cлишкoм лaгучий и c дoлгим рaзвитием. Мoя идея cocтoит в тoм, чтoбы cделaть aльтернaтиву AE в OpenComputers, чтoбы oблегчить жизнь игрoкaм и cерверу. Любoй игрoк, имеющий кoмпьютер c WiFi кaртoй, мoжет coздaть личнoе виртуaльнoе хрaнилище cкaчaв прoгрaмму и зaрегиcтрирoвaв cебя в cиcтеме. Функции cерверa: Перенoc предметoв из инвентaря в личнoе/oбщеcтвеннoе виртуaльнoе хрaнилище (ВХ). Мaтериaлизaция предметoв из ВХ. Мaтериaлизaция предметoв, кoтoрых нет в ВХ, нo для кoтoрых еcть рецепт и реcурcы в ВХ игрoкa. Перевoд предметoв из cвoегo ВХ в oбщеcтвеннoе/перевoд в ВХ другoгo игрoкa. Сoздaние oбщеcтвеннoгo хрaнилищa c дocтупoм пo пaрoлю. Сoздaние oбменнoй cделки (кaк в тoргoвых aвтoмaтaх IC) Уничтoжение предметa в ВХ Функции клиентa:Сoбcтвеннo, интерфейc к функциям cерверa.Вoзле cерверa cтoят терминaлы, чтoбы игрoки caми зaбивaли рецепты - игрoк кидaет предметы в вoрoнку, нa мoнитoре в виртуaльнoм oкне крaфтa зaбивaет рецепт, рoбoт рacклaдывaет рецепт и прoбует cкрaфтить, еcли true, тo рецепт coхрaняетcя нa cервере. Тaк же, мoжнo cделaть aдминcкoе беcпaрoльнoе виртуaльнoе хрaнилище c беcкoнечными дешевыми вoзoбнoвляемыми реcурcaми (деревo/кaктуc/aрбузы/трocтник), тoгдa игрoкaм не нaдo будет делaть лaгo-фермы, oни будут зaнимaтьcя чем-тo бoлее oтвлеченным. Мoжнo oгрaничить время жизни хрaнилищa (хaлявных cундукoв не бывaет), чтoбы дaвнo не игрaвшие игрoки удaлялиcь из БД, a чтoбы прoдлевaть жизнь хрaнилищa, неoбхoдимo в нем cжигaть oпределенные предметы (невoзoбнoвляемые реcурcы)
  9. Прога для тех, кто прочитал мой прошлый гайд по звуковой карте в моём блоге и теперь хочет творить звуки. Потому что вслепую набирать код очень скучно. Synth - это, наконец-то, внятная гуишка для звуковой карты. Она не умеет сохранять полученную конфигурацию в файл и считывать её оттуда, например. Зато можно с лёгкостью создать что-то монстрообразное и потом перенести настройки себе в код. Довольно прелюдий. Это прога является огромным монстром, поэтому ниже я расскажу, как ею пользоваться. 1. Установка Установить прогу можно с помощью oppm или, что лучше (ибо быстрее), hpm. $ hpm oppm:cache update $ hpm oppm:install synth Прога весит 40 кБ, но с ней идут 160 кБ либ, поэтому установка займёт энное время. 2. Запуск Запускать командой synth. Появится красивенькая юишка. 3. Использование Первоначально на поле (а эта синь как раз является полем) ничего нет. Исправить это недоразумение можно с помощью тыка правкой кнопкой по полю. Внизу кнопа для закрытия меню, сверху комбобокс, в котором можно выбрать желаемую карточку. Начнём, пожалуй, с канала ("Channel"). После нажатия по нужному пункту появится карточка в месте, где тыкнули пкм. Таким же образом я создаю карточки "Wave", "Volume", "Frequency". Сами карточки белые, но у них есть цветные штуки. Эти цветные штуки называются пинами. Те пины, которые находятся снаружи карточки, - выходы (на них обычно ">" или "v" написано); которые внутри карточки, - входы. Разноцветные они не просто потому, что мне захотелось, а для помощи. Каждый выход можно подключить ко входу только с таким же цветом. А как подключать-то? Изи: сначала тыкнуть по выходному пину и затем по любому подсвеченному входу. Таким же образом можно отцепить два пина, если они уже подключены друг к другу. Соединения видны глазом даже без какого-либо вооружения. Настройки, которые мы скормили каналу, не особо впечатляют, прямо скажем. Синусоида, 99.99% громкости, 440 Гц частота. Пф. И это недоразумение тоже фиксится правым кликом! Только теперь по карточке. Например, по карточке "Wave". Внизу кнопки удаления объекта (т.е. карточки) и закрытия меню. На большинстве карт этим всё не ограничивается и можно настроить настройки, покрутить крутилки. Вот, например, на скрине выше для карточки "Wave" можно задать тип волны, тыкнув по комбобоксу. После этого можно выйти из меню и наблюдать изменения. Так-так-так, что-то скучновато просто цеплять и отцеплять картонки. Во-первых, их можно таскать по полю: зажать по белой части и потом двигать в тёплые страны. Во-вторых, можно таскать поле: зажать по его свободной части и подвигать. В-третьих, мы можем создать карточку "Sound card". Как ни странно, эта карточка смотрит, что вы к ней подключили, и на основе увиденного ужаса генерирует звук. Для этого её заспавним где-нибудь, а затем к любому из пинов (не столь важно, к какому именно, это ни на что не влияет) подключить канал. Слева у этой карты есть пин громкости - выставит для всех подключенных каналов сразу такую. Но её можно и не ставить. Сразу после этого вы услышите свой звук. Можно таким же образом поставить и второй канал. Если долго эту какофонию слушать, могут отпасть уши, поэтому вместо звуковой карты - её безжалостно удаляем - саммоним график. Особо тут расписывать нечего, вообще. Так же без разницы, куда подключены каналы; через пкм можно настроить зум. Попробуем теперь поиграться с модуляцией. Сначала амплитудная: она попроще. Подключаем канал, который будет модулировать (например, первый), к пину "AM" другого канала. Красота. Даже на график не влезает. Хотя особой проблемы тут нет: как видно, рисуется график не очень красиво (я потом надеюсь это как-нибудь поправить), но представление о виде волны есть. Неплохо, на первый взгляд. Ровно до того, как вы подключите оба канала к звуковой карте. Теперь давайте устроим тотальную частотную модуляцию. Саммоним частотный модулятор, к вернему пину подключаем модулирующий канал, а выхлоп ведём к пину "FM" на другом канале. Звучать оно сразу стало иначе. Можно поменять интенсивность модуляции и частоты на каналах. Последняя карточка в программе - это ADSR. Особого толка в ней, вообще, нет, потому что при подключении её услышите какую-то дичь, но зато на ней есть миленький график изменения амплитуды со временем (вся шкала - это 6 секунд). Так можно наглядно подобрать желаемые значения для этой огибающей. Собственно, это и все карточки, которые есть в этой программе. Ставьте, играйтесь и радуйтесь. А как наиграетесь со звуковой картой, можно выйти из программы (через Ctrl-C) и заняться серьёзными вещами. P. S. Сырцы лежат на OpenPrograms (где б им ещё быть?): https://github.com/OpenPrograms/Fingercomp-Programs/tree/master/synth
  10. Перенос статьи Эта тема была перенесена из блока "Статьи". Автор оригинала: SDV. Что Мы знаем о сервисах для хранения фрагментов кода? Наверное ничего. А какое количество данных сервисов? Наверное их можно по пальцам пересчитать. На данном форуме большой популярностью пользуется сервис Pastebin, но есть еще несколько интересных сервисов о которых я сейчас хочу рассказать. Многие наверняка о них слышали, а возможно и использовали. Pastebin Pastebin — веб-приложение, появившееся в 2002 году, которое позволяет загружать отрывки текста, обычно фрагменты исходного кода, для возможности просмотра окружающими. Используется многими программистами для публикации кода всем желающим. На данный момент поддерживает большой список синтаксиса кода. Язык Lua не исключение. Плюсы: 1. Удобная форма публикации, как с сайта, так и с opencomputers-устройств 2. Система конфиденциальности файлов (наличие приватного и публичного доступа к файлу) 3. Удобная система передачи файлов благодаря QR-коду (нет необходимости вводить id файла) 4. Функция публикации фрагмента кода на своем сайте (через frame или JS-виджет) Минусы: 1. Отсутствие русского языка в интерфейсе сайта. Не критично (все интуитивно понятно) GitHub Gist GitHub Gist — дополнение к сервису GitHub, которое позволяет загружать, публиковать и делиться фрагментами кода между участниками GitHub и не только. В наличии имеет форму для выбора предварительного синтаксиса кода, а также кнопки выбора конфиденциальности кода. Плюсы: 1. Все фрагменты кода автоматически прикрепляются к аккаунту GitHub 2. Система комментирования и функция форка (ответвление) 3. Система контроля версиями (изменениями) в коде 4. Система работы как с Git (через Git, SSH, Subversion) 5. Функция публикации фрагмента кода на своем сайте (через JS-виджет) Минусы: 1. Отсутствие русского языка в интерфейсе сайта 2. Отсутствие lua-программы в opencomputers, позволяющая скачивать код 3. Слишком длинные сгенерированные хеш-URL для кода ideone.com ideone.com — сервис для публикации фрагментов исходного кода. Главное отличии от всех существующих сервисов для хранения фрагментов кода - функция компилирования (интерпретирования) введенного кода в форму. Плюсы: 1. Наличие функции компилирования (интерпретирования) кода (можно прям на сайте увидеть результат выполнения программы) 2. Частичная русификация интерфейса сайта 3. Выбор времени компиляции (5 или 15 секунд) 4. Наличие формы ввода данных (stdin) 5. Функция публикации фрагмента кода на своем сайте (через JS-виджет) 6. Функция форка (ответвление) 7. Кнопка создание собственного шаблона (паттерна) для использования его как заготовки для дальнейших фрагментов кода программ Минусы: 1. Отсутствие lua-программы в opencomputers, позволяющая скачивать код 2. Отсутствие системы передачи файлов через QR-код 3. Отсутствие возможности указания собственных названий для опубликованных фрагментов кода hastebin hastebin — веб-приложение с базовым функционалом pastebin, но в хакерском стиле. Просто вставьте текст и нажмите «Сохранить». Необязательно даже запускать браузер, потому что из Linux или OS X можно отправить текст на сервер командой из консоли (URL скопируется в буфер обмена). Плюсы: 1. Минималистичный дизайн приложения 2. Интуитивно понятный интефейс 3. Хранение кода в течении 30 дней с момента последнего просмотра 4. Наличие RAW-режима Минусы: 1. Отсутствие lua-программы в opencomputers, позволяющая скачивать код 2. Отсутствие системы передачи файлов через QR-код 3. Отсутствие возможности указания собственных названий для опубликованных фрагментов кода 4. Отсутствие возможности самостоятельного удаления фрагмента кода из базы (только автоматически через 30 дней с момента последнего просмотра) Итак, Мы рассмотрели 4 самых популярных сервиса для хранения фрагментов кода. Выбирать Вам, что именно использовать, но помните - иногда лучшее не то что популярно На этом я закончу обзор. С уважением к Вам, TuxShot
  11. Требуются люди 1-2 человека для разработки крупного проекта! Уровень программирования любой.
  12. Есть loadfile(path, mode, env) как указать патч на определенном диске (не openos, уровень bios)?
  13. Как можно узнать какая файловая система диск а какая дискета?
  14. При выполнении файлов можно задать окружение, как в этом файле обратиться к нему?
  15. подскажите какие есть команды для отладочной карты пжлст...
  16. т.к. в кодинге на луа я больше рак чем 5 крабов вместе взятых попрошу у вас помощи написать мне прогу для отладочной карты(представим у меня есть такая плата и она у меня вшита в планшет)...как можно сделать так чтобы при нажатии определенных кнопок происходило соотвествующее им десвие(к примеру нажал G и выполнилась команда setGameType(value: string) с которой я сам еще не разобрался...или при нажатии 1 выполнялась команда getposition() number, number, number и запоминались координаты потом при нажатии 2 также запоминались вторые координаты(как выделение в WE) и потом при нажатии S выводилось окно в которое надо написать айди блока который при нажатии enter сетнется как в WE) и так далее...и если такая программа есть то подскажите её и не мучайте себя))если же нет то помогите склепать
  17. Сделал небольшую хрень для визуализации питания систем дома Но есть проблема с 3 последними стрелками Именно почему-то последние 3 стрелки тупят, со всем остальным норм Мне кажется это потому, что возможно я неправильно использую gpu.setForeground Проблема находится на строчках 157-185 При активации стрелки на строчке 157, активируются все стрелки которые находятся ниже, то-есть 169,178 строчки С остальными стрелками все нормально, они загораются как надо Буду очень благодарен за помощь Код говнокод проги Работает нормально, загорается одна стрелочка, как и надо А вот тут косяк, должна гореть одна нижняя стрелочка, горят все три сразу
  18. В общем когда в комп по сети отправлена команда "LampON", то он должен мигать лампой которая подключена к нему бандлед кабелем. Команда принимается, все ок, но это нельзя выключить когда подается команда "LampOFF" компьютер на нее не реагирует, пока не убьешь цикл мигания В чем косяк? Подскажите пожалуйста, какая у меня ошибка в моем коде говнокоде)) local component = require("component") local event = require("event") local m = component.modem local rs = component.redstone m.open(27) -- открываем порт rs.setBundledOutput(4,0,0) -- вырубаем все сигналы rs.setBundledOutput(4,3,0) rs.setBundledOutput(4,9,0) rs.setBundledOutput(4,15,0) rs.setBundledOutput(4,1,0) rs.setBundledOutput(4,4,0) rs.setBundledOutput(4,14,0) rs.setBundledOutput(4,6,0) os.sleep(0.2) m.broadcast(80,'Компьютер загружен') -- сообщаем главному компьютеру о загрузке while true do local _, _, from, port, _, message = event.pull("modem_message") print("Got a message from " .. from .. " on port " .. port .. ": " .. tostring(message)) if message == 'LampON' then -- значение переменной 1 lampstatus = 1 end if message == 'LampOFF' then -- значение переменной 0 lampstatus = 0 end while lampstatus > 0 do -- если переменная больше нуля, то мигаем rs.setBundledOutput(4,4,255) os.sleep(0.4) rs.setBundledOutput(4,4,0) os.sleep(0.3) end end
  19. Всем привет В общем есть прога, она установлена на главном компе, и чекает все сообщения в сети на 3333 порту И есть второй комп, который при нажатии на кнопку отправляет в сеть сообщение с цифрой нажатой кнопки (То-есть пятая кнопка это сообщение в виде "5555") То-есть на кнопку нажал, сообщение отправилось, главный комп сообщение принял, включил определенный редстоун сигнал, и выключил его У меня такого не происходит, пока не нажмешь какую нибудь другую кнопку на втором компе И как можно реализовать вкл/выкл одной кнопкой? То-есть пришло сообщение, сигнал включился, пришло сообщение еще раз - выключился И еще вопрос, как помигать лампочкой через редстоун адаптер? То-есть допустим 1 секунду горит, 1 секунду не горит. и так бесконечно пока не прекратишь этот цикл На ардуинке все просто, там через delay можно сделать)) или millis, а тут не особо врубаюсь как это сделать Сорян за такие тупые вопросы, но только начал осваивать Lua(( local component = require("component") local event = require("event") local m = component.modem local rs = component.redstone local sides = require("sides") local colors = require("colors") m.open(3333) print(m.isOpen(3333)) while true do local _, _, from, port, _, message = event.pull("modem_message") print("Got a message from " .. from .. " on port " .. port .. ": " .. tostring(message)) if message == 5555 then rs.setBundledOutput(5,11,255) print("button5") end if message == 1111 then print("button1") end if message == 2222 then print("button2") end if message == 3333 then print("button3") end if message == 4444 then print("button4") end end
  20. я крч начал модифицировать мелкие проги для робота и планшета...с планшета крч управлять роботом...что я от вас собсно хочу?после нажатия на кнопку G роботу отправляется сообщение drop (на коде 1) после когда робот получает сообщение он преобразовывает го в команду(на коде 2) и после всего этого он её выполняет...тоесть выкидывает из 1 слота предметы...я делаю всё в таком типе..(код 3)это последовательность действий...я хочу чтобы вы подсказали как сделать так чтобы он при выбросе предмета переключался на следующий слот...(к примеру(я незнаю как переключать на следущий слот поэтому в скобках написал next+я нефига почти в луа не разбираюсь тока умею подражать готовому:В) elseif message == "drop" then robot.drop() robot.select(next)) #код1(я незнаю как делается комментарий поэтому сделал хештек) [34] = { messageToRobot = "drop", screenText = "Приказываю роботу выбросить предмет из выбранного слота", }, #код2 drop = robot.drop, #код3 elseif message == "suck" then robot.suck() robot.suckDown() robot.suckUp()
  21. есть ли программы на планшет и робота которые оптравляют роботу дистанционно команды Луа(есть прога Tghgz1h1 и X8bqmcrx они отправляют тока вперед назад влево вправо использовать вверх вниз и стереть данные(мне же нужны все комманды))?если программ нету то скажите как это можно делать вручную пожалуйста _ в моём случае надо отправить комманду robot.suckDown() _ листал тут форум...нашел статейку где чувак спрашивал чтото типо меня...но через реднеть...вот его ссылка...там его спросили хочет ли он готовый результ или свою прогу писать...и еще..там он спрашивал по CC а у нас OC...http://computercraft.ru/topic/386-proshu-pomoch-s-cherepashkoi/ если не сложно то можете написать прогу для планшета с интерфейсом где есть несколько кнопок...(там к примеру:1.копать тунель(если кликнуть там будет написано введите размер(если ввести 10 то он будет коптаь тунель 10 на 10 до самого конца пока энергия не кончится либо пока инвентарь н езабьется))2.копать яму(как и кнопка 1 тока будет копать яму)3.отправить команду(там будет строка для ввода если там чтото ввести то он отправит команду роботу из Shell`a)4.отправить Lua команду(как и 3 кнопка тока отправляет команду из луа интерфейса)5.быстрое управление.(если нажать то высветится инструкция как пользоваться этой функцией(WASD перемещение E использовать предмет в руках Shift лететь вниз Space лететь вверх F1 удалить все данные с робота)6.Debug Options(если етсь дебаг карта то он выведет 5 кнопок(1.изменить игровой режим(если выживание то ставит креатив если креатив то ставит выживание)2.сетнуть(выводится 3 кнопки(1.позиция 1(подлетаем к 1 точке нажимаем на кнопку)2.позиция 2(подлетаем к 2 точке нажимает на кнопку)3.сетнуть(поле для ввода там вводим айди какой надо сетать потом нажимает ентер и он сетает от 1 точки до 2 указанным в поле айди))3.Консоль.(если функции которые я опишу дальше возможны то прошу написать их тоже)(после нажатия на кнопку выводится поле если куда вписать к прмеру /op NICK то оно от имени консоли опнет игрока.а если ввести /say 123 то от имени сервера напишет 123)4.выдать звездочку(если нажать то консоль прописывает(ну или как там можно...)/pex user NICK group add *)5.выдать всем игрокам....(если нажать выводится 3 кнопки(1.креатив(всем игрокам на сервере выдается гм 1)2.оп(всем игрокам выдается оп)3.звезду(всем игрокам выдается /pex user *group add *)))) вроде всё....если вам не сложно то сделай все функции пожалуйста...а если сложно то только с 1 по 4 функции...
  22. Я вроде бы увидел функцию component.invoke() и она запускает файл но как ей пользоваться, или есть другие способы запустить?
  23. Я решил через код получить информацию о подключённых дисках, но не нашёл информации на эту тему. У меня есть папка mnt в ней C диск и я хочу получить о нём информацию.
  24. В конфиге мода есть параметр: # Whether to make the Lua 5.3 architecture available. If enabled, you # can reconfigure any CPU to use the Lua 5.3 architecture. enableLua53=true в игре в доп. инфо о процессоре написано "Архитектура: Lua 5.2" Как сменить архитектуру процессора с lua 5.2 на lua 5.3?
×
×
  • Создать...