Fingercomp
-
Публикации
1 629 -
Зарегистрирован
-
Посещение
-
Победитель дней
283
Сообщения, опубликованные пользователем Fingercomp
-
-
Использование телепортаторов я бы приравнял к читу в данной ситуации — какой-то левый мод ещё.
Я бы в качестве перетаскивателя предложил офигительнейший вариант — дроны, которые прямо созданы для быстро перемещения предметов в том числе. Но минус конструкции этой вы все знаете

По роботу на реактор — извольте, это слишком дорого, к тому же, чем больше компов загружено, тем больше вероятность, что сообщения могут не доходить, роботы падать с TLWY и прочие нежелательнейшие фиговины. Транспозер выглядит круто, но надо транспортировать как-то.
Как верно заметил @eu_tomat, скорость в данной конструкции не слишком важна.
Вот вариант схемы: компьютер считывает переодически показания с транспозеров, посылая робота туда, куда надо. Экономим время робота и ускоряем мониторинг.
-
1
-
-
Не совсем. Продолжительность нот всё же нужно добавить. Иначе получается какая-то кастрированная музыка.
Я ещё раз повторюсь, проигрывается файл из NBS, NBs сделан для нотных блоков, которые не поддерживают длительность нот, как и железные нотные блоки

-
Как раз и не позволяют.
Программа офигенная, одна из моих давнишних идей, которые постоянно задвигаются, то языками новыми, то проектами более важными

На ИТ за это творение обязательно выдам призы, если пожелаете
Хм, у тебя все ноты по продолжительности одинаковые. Так было задумано или это минус ПО?Это не минус ПО, это фича Note Block Studio — у ванильных нотных блоков продолжительность ты не задашь. Да и не надо.
Есть звуковая плата позволяющая играть несколько нот из модов. Есть стандартная библиотека note, просто для игры. Ну и всякие железные нотные блоки.Звуковой платы нет. Ноты из модов — слишком зависит от сборки. Железные нотные блоки, сюрприз, и так используются.
К тому же если обычный нотный блок подключить через адаптер, по идее можно обойтись только одним.- Это фича OpenPeripheral-Integration.
- Этот мод не любят многие за читерность.
Так что всё верно сделал автор

-
robot.durability() — прочность инструмента возвращает. Может быть полезно.
-
Двадцати четырёх всё-таки же

-
1
-
-
Пропиши на компютере components -l screen_controller. Это покажет справку по кмпоненту.
Если OpenOS 1.6, можно прописать components -l screen_controller > /tmp/component и edit /tmp/component. Тогда можно будет читать лист длиной более высоты экрана.
-
1
-
-
-
Чудеса генерации


А вообще — офигительно.
-
1
-
-
Привёл бы пример такого кода хоть. А то какой то Чайник Рассела получается.
Оно прерывается только когда одновременно планеты встают в ряд, на экваторе танцует шаман, а в шмандерсбурге упал будтердром маслом вверх. Короче, без понятия.
-
2
-
-
Каким способом?
Написано же: "как-то". Без понятия.
-
Для общего развития — неограниченные по времени пуллы тоже могут как-то иногда возвращать nil и прерываться преждевременно.
-
2
-
-
Это клон либы ECS же

А индексированные жрут меньше памяти, чем ассоциативные массивы, потому и ECS юзал их.
-
Переросло в оффтопик какой-то, не ожидал

Но позволю себе закрыть и его, и вопрос, и даже деньги сэкономить топикстартеру.
Гляньте вот эту программульку на OpenPrograms: https://github.com/OpenPrograms/Vexatos-Programs/blob/master/reactor/bigreactors-control.lua
По заголовку и комменту в начале с описанием проги мне кажется, что это как раз то, что нужно.
Ах, да. То правило относится к нашему проекту, где BigReactors в помине нет, так что проблем никаких не вижу с деньгами. Пожертвования же есть, например.
-
Не занудь, программа — это не игровой ресурс.
-
3
-
-
Что значит "пропускает"? Возвращает любой, не возвращает вообще ничего?
Подробнее объясните.
-
- Использовать готовые функции карты данных.
Найти готовую библиотеку хеширования (в OPPM, вроде бы, есть sha512)
Google it -
Happy-end!

Вся информация полезная обязательно уйдёт в запись блога.
@@Alex, думаю, надо Стратегу медальки прилепить (решение проблемы со звуком и этот эмулятор).
ТЕМА ЗАКРЫТА.

-
@@Krutoy, попробуй очистить директорию OCEmu и снова скачать туда сырцы эмулятора, а затем запустить скрипт.
Просто кажется, что .o-файл был каким-то чудом повреждён, так что лучше попробовать собрать его заново.
-
Я, кажется, эдак годик (ну ладно-ладно, меньше) назад фигачил чатик и вроде был доволен (нет).
Вот тута хранится сей артефакт: http://computercraft.ru/topic/758-chat-dlia-googolglasses/
Как выяснилось впоследствии, чатик был совершенно непродуман и неудобен. К тому же, я изрядно получше научился кодить на Луа. И вот, полностью задолбавшить старым чатиком, я засел писать новый.
В этом топике представляю вниманию перевод README на гитхабе.
Фичи:- Каналы
- Поддержка беспроводной клавиатуры
- Модули
- Сетевой интерфейс
- Разделённые буферы вывода
- Конфиг-файл
- ...
Требования:
- Карта данных или блок данных (OpenSecurity) — нужен для сетевого интерфейса.
- Соотвественно, мост и очки OpenPeripheral (TODO здесь должна быть картина, наныть у Тоторо).
Использование
Установка
Вам нужны будут мост, очки, адаптер, а также карта или блок данных. Подсоедините адаптер к компьютеру (рядом поставить или кабелем соединить), поставьте мост рядом с адаптером. Вставьте карту данных в компьютер, если вы скрафтили её, или подключите блок данных.
Теперь пропишите edit /etc/chat.json и отконфигурируйте по своему желанию. Предсказываю, что наверняка вам хотелось бы сменить список админов, например, чтобы потушить чат по-нормальному.
Когда вы морально и физически готовы, пропишите opg-chat.
Базовое использование
Оденьте очки. Та-даам! Появится на мой взгляд довольно красивый интерфейсик. См. пикчу внизу.
Чтобы что-то туды отправить, прямо в чат пишите сообщение, добавив $$ в начало. Чтобы отправить команду, сделайте то же самое, но со / перед сообщением.
Кроме того, можно использовать беспроводную клавиатуру, тогда доллары не нужны.
Некоторые команды, которые желательно знать- stop — стопнуть прогу. Очевидно, только для админов доступно.
- join <канал> — подключиться к каналу.
- part [канал/номер вкладки] — покинуть канал. И да, главный канал покинуть нельзя. Приносим извинения.
- help [команда] — попросить помощи у сервера. Можно дать команду — даст подробную инфу о ней.
-
page <строки> — скроллить историю сообщения на канале. Положительные значения двигают вверх, отрицательные — вниз.
- На клавиатуре можно просто тыкать [PgUp]/[PgDn].
Продвинутое использование
Модули
Если вас не устраивает стандартная поставка чата, можно дописать свои модули. Просто создайте файл с разрешением .module в директории /usr/lib/chat-modules и творите магию. Как образец можно использоваться стандартные модули.
Окружение (доступные функции)- storage — таблица, временная память для всякого. Может быть использована для общения между модулями.
- apcall(func, args...) — advanced pcall — вырезает всякую ненужную фигню типа номера строчки и пр., оставляя только причину. Использована для показа ошибки пользователям (так как там ошибки для простоты assert'ом гонятся).
- createChannel — внутренняя функция.
- addUser(user) — создать пользователя с данным именем.
- join — рекомендую не использовать функцию.
- joinN(chan, user) — затаскивает пользователя на канал. Отсылает всякие оповещения, делает события и создаёт канал, если не существует.
- part — внутрення функция.
- partN(chan, user[, partMsg]) — заставляет пользователя выйти с канала с опциональной причиной.
- quitN(user[, quitMsg]) — заставляет его же покинуть вообще все каналы.
- sendMsgChan(chan, user, msg[, recipients]) — отослать сообщение на канал от имени пользователя. Можно дать таблицу тех, кому будет видно сообщение.
- sendMsgChanN(chan, user, msg) — то же самое, в принципе, но сделать дополнительные проверки (модерируемый ли канал там, достаточно ли прав). Не всегда полезно может быть — потому используйте функцию выше, если никаких проверок правовых не надо.
- addObject(surface, objName, funcKey, args...) — рекомендуемый способ для рисования объектов на поверхности (surface). Первым нужно дать таблицу из surfaces, потом задать имя объекту, указать название функции (строкой!) и дать аргументы функции. Нужно, чтобы можно было обратиться к объекту позже. Кроме того, хранит в userdata объекта его имя — если захочется использовать поддержку мыши без напряга.
- getActiveChannel(user) — вернуть "активный" канал. Т. е. у пользователя открыт возвращаемый канал (вкладка).
- bridge — прокси моста.
-
surfaces — таблица, содержащая поверхности пользователей.
surfaces[user] = { surface = {...}, -- Сама поверхность objects = {...} -- объекты на поверхности, созданные функцией `addObject` } - users — список пользователей, созданных функцией addUser.
- commands — список зарегистрированных команд.
- isin(tbl, value) — маленькая, но очень полезная функция, которая кочует из одной моей проги в другую. Проходится по таблице и ищет указанное значение. Возвращает true, первый найденный ключ таблицы при успехе и false при неудаче.
- cfg — таблица с конфигурацией. В неё можно записывать — конфиг сохраняется каждую минуту и при выходе.
- setMode(chan, user, mode[, arg]) — выставить mode. mode — это параметр типа ±<буква mode>, например, +o, -h. Почти как в IRC.
- modes — таблица всех доступных modes.
- getLevel(chan, user) — возвращает маску уровня доступа пользователя.
- checkLevel(chan, user, levels, any) — проверяет, достаточно ли прав у пользователя. levels — таблица, содержащая уровни ({OP, ADMIN, SERVER}). Если any == true, то пользователя достаточно иметь один из перечисленных уровней для успеха. Иначе, все.
- reqcom(componentName, required[, msg]) — возвращает прокси компонента. Если его нет, а required ~= true, то вернуть пустой компонент (при его индексации возвращает всегда function() end), если же required == true, то создаст ошибку. Напишет ещё сообщение msg, если дано, а компонента нет.
- copy(tbl) — тоже очень полезная небольшая рекурсивная функция. Копирует таблицу. Напомню, что в Луа при передачи таблицы в функцию, та не копируется, а даётся той же самой (ну как & в Си-языках), что иногда чрезвычайно полезно, не иногда совсем не нужно.
- _FILE — строка с именем файла модуля.
- _MODULE — строка с названием модуля (ну то есть то же имя файла его, но без разрешения)
- NORMAL, VOICE, HALFOP, OP, ADMIN, SERVER — уровни доступа.
- PREFIXES — таблица уровень-префикс для вывода на очки. всякие там @, %.
- addListener(eventName, name, func) — добавить слушатель с данным именем, работающий как event.listen, но игнорирующийся при завершении программы.
- delListener(eventName, name) — удалить слушатель.
-
command {args} — создать новую команду. Лично я опускаю скобки, так как не люблю их.
args = { name = "название команды, которую надо писать через /", level = NORMAL, -- кому позволено писать команду help = "Краткое описание команды в списке /help", doc = [[Длинная документация для команды, можно на несколько строк делать]], func = function(eventName, chan, user, raw, cmd, args...) -- eventName — название события -- chan — канал, откуда отправлено событие -- user — пользователь, запустивший команду -- raw — необработанная команда без / в начале -- cmd — название команды -- args... — аргументы, разделённые пробелом (пробелами) end }
Сетевой интерфейс (network.module)
Этот модуль позволяет вам создавать своих чат-ботов через сеть. Поддерживает оба типа модемов. Однако, советую знать о Spoofing Card из Computronics — она позволяет указывать адрес отправителя (не только проводная сеть, но и беспроводная).
Конфигурация
В конфиг-файле (/etc/chat.json) есть секция "net". Пример:"net": { "enabled": true, "modemStrength": 400, "ports": { "6667": true, "6666": ["519187"] } }- "enabled" задаёт, загружать ли модуль вообще.
- Если модем беспроводной, его сила будет установлена в значение параметра "modemStrength".
-
"ports" — список портов, которые программа будет слушать.
- Левая часть ("6667"), очевидно, порт.
- Правая часть можно быть или true — тогда программа не будет фильтровать порт, или белый список адресов (или их частей). В моём примере, программа будет принимать соединения на порту 6667 только от адресов, которые начинаются на "519187".
Команды
-
<имя пользователя>, "auth", <пароль> — подключиться к серверу.
- true, "keep", "auth", <сессия> — <сессия> — это временный пароль, требуемый для других команд.
-
<имя пользователя>, "msg", <сессия>, <сообщение> — отправить сообщение или команду на сервер.
- true, "keep", "ok" — сообщение успешно отправлено.
-
<имя пользователя>, "quit", <сессия>[, причина] — закрыть соединение.
- true, "close" — успешно закрыто.
-
<имя пользователя>, "chaninfo", <сессия>, <канал> — получить инфу о канале.
- false, "keep", "you are not on channel" — не на канале.
- true, "keep", <data> — <data> — это сериализованная таблица со всей информацией.
-
<имя пользователя>, "userinfo", <сессия>, <пользователь> — получить инфу о пользователе.
- false, "keep", "no such user" — запрошена инфа о несуществующем пользователе.
- true, "keep", <data> — <data> — это вериализованная таблица, соедржащая инфу о пользователе.
Ошибки
- false, "error", "there is already an open connection for this address" — соединение для данного адреса уже установлено.
- false, "error", "nickname is already in use" — данное имя пользователя уже используется.
- false, "error", "no password given" — не дан пароль.
- false, "error", "could not auth: <причина>" — не смог авторизоваться, неизвестная причина.
- false, "error", "wrong auth" — нет соединения для авдреса, не тот пользователь или неверная сессия.
- false, "error", "no message given" — не дано сообщение (3 аргумент).
События
- "event", "chat", <канал>, <пользователь>, <сообщение>, <все>, <получатели> — это собтие создаётся, когда пользователь пишет сообщение на канале. Здесь и ниже, <all> — это булева переменная, которая равна true[/i], когда отдельных получателей не задано (всем на канале отослано), и [il]false в противном случае. Если <all> == true, то <recipients> — сериализованная таблица получателей, иначе — сериализованная строка "all".
- "event", "notice", <канал>, <типУведомления>, <строкаУведомления>, <получатели> — событие создаётся при уведомлениях.
- "event", "pm", <пользователь>, <получатель>, <сообщение> — событие создаётся при отправке ЛС.
- "event", "join", <канал>, <пользователь> — пользователь вошёл на канал.
- "event", "part", <канал>, <пользователь>, <причина> — пользователь покинул канал.
- "event", "quit", <пользователь>, <причина> — пользователь вышел с сервера.
- false, "close", "server is stopping" — сервер завершает работу, соединение закрыто.
Пароли
Как вы могли заметить, нужен пароль для подключения. Где его взять?- Если для пользователя нет пароля (или это имя не было использовано), следует отправлять "" в качестве пароля.
- Если же он есть, его и нужно отправлять в аргументе.
- Для установки пароля используйте команду /pass [пароль]. Если аргумент опустить, он будет снят с имени.
- Пароли хранятся в виде MD5-хешей. Для небольшой программки сойдёт, думаю, и этого.
Сессии
После небольшого раздумья ко мне пришло решение проблемы со Spoofing card из Computronics. Было решено усложнить жизнь ботам и клиентам, добавив сессию — временный пароль длиной в 16 символов, который даётся при авторизации. Он требуется для большинства других команд.
Фуух. А теперь о том, как скачивать. Всё очень просто: устанавливаем OPPM (OpenPrograms Package Manager) и пишем oppm install opg-chat. Вуаля.
Кроме того, программа требует OpenOS 1.6 и Lua 5.3.
Исходники доступны тут: https://github.com/OpenPrograms/Fingercomp-Programs/tree/master/opg-chat
Ах, да, собственно, пикчи этого безобразия:




-
9
-
1
-
Человеческим языком написано и в блоге, и в README репозитория: Luarocks физически несовместима с виндой, и никакие CygWin'ы, емсисы и прочие фиговины заморские не помогут. Поймите уже.
Все либы надо собирать самому.
Для этого всего сделан скрипт в корне репозитория, который сам соберёт Луа, сам скачает все DLL'ки для эмулятора и сам их пропатчит.
Вот ума не приложу, что у вас не так. У payonel, например, как и у других людей-виндузятников, всё заработало без проблем.
Как вариант, уберите все пробелы в пути к эмулятору.
-
> Запускать майн ради теста пары строчек кода
Мазохизм во всей красе, кодинг в майноедиторе с этим не сравнится даже.
И очередное унижение тостероводов.
Если есть готовый эмулятор вместо Майна (так комфортно кодить на 10-15 фпс, аж жуть) — я бы воспользовался им, тем более если в Майн совсем не тянет.

-
-
Не понял. Что за видео?
"Рандомные" видео, не слишком долгие и тяжёлые.
Парочку закинул там.
-
Ну в общем, решил я оставить в покое бедные компудахтеры, которые сбрасываются.
Тем более, что из Чёрт-Знает-Откуда прилетел набор кыношника-
чайника.Кыну быть!

Подключил я стример, не заработал. Но что может устоять против красивого пинка в самые шестерёнки? Явно не это замечательное чудо техники. Звуку быть! Тоже.
Ну приходите, в общем, в "HI", будем крутить шарманку иногда

-
1
-



Проигрыватель музыки в формате NBS
в Разное
Опубликовано:
Мне ещё раз повторить?..
Другой формат — другая прога.