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

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

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

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

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

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


Блоги

  • Робот Байт
  • 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


Skype


ВКонтакте


Gtalk


Facebook


Twitter


Город


Интересы

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

  1. В общем есть чат бокс из Computronics И надо сделать добавление юзера в вайт-лист командой из чата допустим $$adduser НИК Как считать ник? Допустим отправляем в чат $$adduser Koteyk0o и получаем сообщение "$$adduser Koteyk0o" Как из этого сообщения считать ник?
  2. Привет мир! При использовании компонента 'chat_box' из аддона 'computronics', меняю имя чат бокса в чате методом setName("Name") Хочется сделать полноценную имитацию локального чата, чтобы форматирование выглядело красиво. Вот код с форматированием которое я сделал. При выводе сообщения чат боксом в начале и в конце установленного имени появляется квадратная скобка " [ ] " Возможно ли это как-то исправить без изминения файлов клиента и сервера?
  3. В состав мода Computronics входит блок стример, о котором я хочу рассказать. Чтобы подключить стример к компьютеру, просто установите его вплотную или соедините при помощи кабеля. После подключения стример становится виден как компонент под именем tape_drive. Стример позволяет записывать данные на кассеты, считывать эти данные, а так же, если данные записаны в определенном формате, воспроизводить звук, записанный на кассете. Кассеты различаются по количеству записываемой на них информации. Ниже приводится зависимость времени звучания кассеты и её объема. Чтобы вставить кассету в стример, кликните ПКМ по стримеру и в открывшемся интерфейсе переместите кассету в стример. Стример, как компонент, предоставляет следующие функции: isReady() – возвращает true, если в стример вставлена кассета. isEnd() – возвращает true, если до конца кассеты осталось меньше четверти секунды. getSize() – возвращает количество информации в байтах, которое может быть записано на кассету (не свободное место, а всего). getLabel() – возвращает строку, содержащую метку кассеты или пустую строку, если метка не назначена. setLabel(label) – принимает строку и устанавливает ее в качестве новой метки кассеты. getState() – возвращает текущее состояние стримера. Возможные значения: “PLAYING” - воспроизведение, “REWINDING” – перемотка назад, “FORWARDING” – перемотка вперед, “STOPPED” – остановлено. setSpeed(speed) – принимает число в диапазоне 0.25 – 2.0 и устанавливает скорость воспроизведения аудио. Нормальная скорость соответствует 1.0 setVolume(volume) – принимает число в диапазоне 0.0 – 1.0 и устанавливает громкость воспроизведения аудио. seek(amount) – осуществляет перемотку кассеты на заданное параметром число байт. Если параметр amount отрицательный, перемотка осуществляется назад. Функция возвращает количество байт, на которое кассета была реально перемотана. read([count]) – если параметр count не задан, функция считывает с кассеты один байт и возвращает его в виде числа. При заданном count, функция считывает заданное число байт и возвращает их в виде строки. write(data) – осуществляет запись данных на кассету. Параметр data может быть строкой или числом в диапазоне 0-255. play() – запускает кассету на воспроизведение. stop() – останавливает воспроизведение кассеты. Однако, в большинстве случаев для управления стримером достаточно утилиты tape, которая становится доступной после подключения стримера к компьютеру. tape play - запускает кассету на воспроизведение. tape pause - останавливает воспроизведение кассеты. tape stop - останавливает воспроизведение и перематывает кассету в начало. tape rewind - перематывает кассету в начало. tape label [name] - если параметр name задан, устанавливает его в качестве новой метки кассеты. Иначе выводит текущую метку. tape speed <speed> - устанавливает скорость воспроизведения кассеты. Значение speed должно быть в диапазоне между 0.25 и 2.0. tape volume <volume> - устанавливает громкость воспроизведения кассеты. Значение volume должно быть в диапазоне между 0.0 и 1.0. tape write <path_file> - осуществляет запись содержимого файла на кассету. Если path_file представляет собой URL-ссылку, файл будет скачан из Интернета. Однако для этого Вам потребуется интернет-карта. Дополнительные опции утилиты: --address=<address> определяет первые несколько символов адреса устройства. Требуется, если к компьютеру подключено более одного стримера. --b=<bytes> определяет размер блоков данных при записи файла на кассету. По умолчанию этот параметр равен 2048. Честно говоря, не знаю зачем его менять. И наконец, что же собственно нужно, что бы наслаждаться любимой мелодией не только в реальном мире, но и в мире Minecraft? Для этого необходимо выполнить несколько несложных шагов: Берем аудио-файл в каком-нибудь из известных форматов и конвертируем его в WAV-файл при помощи онлайн-конвертера или любым другим способом. Качаем утилиту LionRay по ссылке. Запускаем LionRay. В окно ”Input File:” вводим имя wav-файла (ленивые могут воспользоваться кнопкой “Browse”), а в окно ”Output File:” – имя, под которым файл будет сохранен после конвертации в формат dfpwm. Жмем кнопку ”Convert”. Полученный dfpwm-файл заливаем на диск ОС-компьютера (если играем в сингле) или размещаем на каком либо интернет-ресурсе. Заходим в Minecraft. Вставляем в стример кассету объемом не менее, чем размер dfpwm-файла, и перематываем ее в начало. Запускаем утилиту tape write <path_file>, где path_file – имя dfpwm-файла на диске ОС-компьютера или URL. Ждем. Заходим в интерфейс стримера, снова перематываем кассету в начало и жмем кнопку «Воспроизведение». Наслаждаемся. Плюсуем Zer0Galaxy на форуме. Конечно, качество звучания оставляет желать лучшего. Ну, а чего вы хотели? Уже после написания вынужден признать, что данная статья частично дублирует гайд @Fingercompа по моду Computronics. Видать меня склероз попутал.
  4. Мод Computronics существует уже более 5 лет. Однако почему-то и по сей день нет ни одной более-менее рабочей файловой системы для кассет из этого мода. Будем исправлять ситуацию))) На сей раз я и представляю вашему вниманию файловую систему для этих самых кассет. TapFAT (Tape File Allocation Table) является функционально полной ФС с возможностью фрагментированного хранения данных. Первые идеи о написании ФС для кассет меня посетили еще в октябре, но время появилось лишь к концу декабря, тогда же я начал обдумывать основу системы. К январю начал писать основную библиотеку, вспомогательные утилиты, отлавливал баги, оптимизировал и упорядочивал код. Наконец, к июню месяцу готова первая версия драйвера. ПРЕДУПРЕЖДАЮ! Файловая система - вещь сложная и довольно серьезная. Я постарался устранить все обнаруженные баги, но не исключено, что некоторые могли проскользнуть мимо глаз. Поэтому я не несу ответственности за порчу данных на кассете в следствии сбоя драйвера. Сохраняя данные на кассетах вы действуете на свой страх и риск! Скажу сразу, ФС довольно медленная (виной тому буферы в операционках, ибо запись на кассету больших и мелких кусков занимает, как ни странно, одинаковое количество времени), поэтому она больше подходит для архивации данных. Учитывая, что самая крутая кассета дает нам около 30МБ, туда можно заархивировать очень много информации (не знаю, нужно ли кому столько). Первые 8КБ кассеты зарезервированы под саму таблицу FAT. Она представляет собой обычную сериализоваyную таблицу Lua, которую при желании можно сжать двумя способами, поскольку она немного не экономична. Так при разных режимах в 8КБ таблицы может уместиться: Без сжатия - около 150 файлов Сжатие LZSS - около 580 файлов Сжатие Картой Данных - около 720 файлов Также можно сэкономить пространство таблицы, отключив хранение даты изменения файла, в таком случае все записанные файлы будут иметь дату изменения 0 (т.е. 00:00:00, 1 Января 1970 года). Краткое руководство: Загрузка ОС с кассет: Установка: pastebin run Tq3hbpaz Драйвер также доступен в MineOS App Market Репозиторий на GitHub Планы на будущее: Нормальное кодирование таблицы Шифрование таблицы. Сжатие и шифрование файлов. Ускорение работы файловой системы
  5. Написал, вот, утилитку для форматирования кассет из аддона Computronics для OC. Вообще, эта утилита планируется как часть программного пакета для упрощения работы с кассетами, но её я решил выложить заранее. Процесс форматирования не быстрый и упирается он, в основном, в моё незнание преобразования форматов в Lua. Так как я не нашёл способа преобразования массива в строку, пришлось использовать вот такой костыль: x = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" В итоге, я тупо храню в коде строку с 256ю терминальными нулями, которыми и забивается кассета (чистые кассеты из мода ими и заполнены). Именно 256 символов за 1 проход цикла я выбрал просто, чтобы не забивать код простынёй нулей, как только я найду способ реализовать это менее банально, планирую увеличить количество терминальных нулей в строке до 512 или 1024. Это ощутимо ускорило бы работу программы. Ссылка на пастебин: https://pastebin.com/3ucbj3fr Скриншотов не прилагаю, так как интерфейс программы прост, как палка. З.Ы. Это далеко не финальная версия утилиты, выставил её на всеобщее обозрение я только, чтобы получить несколько дельных советов по улучшению проги.
  6. На связи [Данные удалены], и сейчас вы возможно удивитесь. Новичок (то-есть я) написал псевдо файловую систему для кассет из Computronics Давайте по порядку I Что такое TPFS и с чем это едят TPFS - это сокращённое название моей файловой системы. Оно расшифровывается как TaPe File System. Она не будет работать нормально без подключённого стримера и вставленной кассеты. Моя файловая система(далее - ФС) умеет работать с двумя типами кассет - с подготовленными и с чистыми. О том как ФС работает с каждой из них я расскажу позже. Главное - то что подготовленная кассета имеет 4 байта "заголовка", а чистая - это кассета после крафта и нигде не использованная. II Требования к компьютеру и кассете Требования к компьютеру средние - Процессор 1 уровня, желательно одна планка 1.5 уровня, жёсткий диск второго уровня, EEPROM с биосом, OpenOS на жёстком диске. Также нужна интернет карта для скачивания программы и стример III О записи данных Моя ФС записывает данные по разному для разных типов кассет. На чистую кассету ФС записывает данные без ограничений по размеру, а сама кассета "монтируется" одним файлом в каталоге /usr/tape. На подготовленную кассету ФС пишет данные по другому. Пока-что максимальное количество файлов на подготовленной кассете - 10 штук. Все они после монтирования будут находиться в /usr/tape/ и пронумерованы от 0 до 9. Ограничение по размеру - 4килобайта. --Дорогой я_из_будущего. Прости меня за этот код Если вы смелы, можете заглянуть в исходник кода Команда для установки: pastebin get 5NtFLbNc /usr/bin/tapefs.lua
  7. Кто хочет видеть взрывных дронов, поставьте лайк этому иссью https://github.com/Vexatos/Computronics/issues/306
  8. Взываем на помощь богов и богинь звука! В общем, в CX в 1.6.1 заезжает крутейшая, звуковая карточка. Я сейчас вкратце опишу её функции, взятые из исходников мода. sound.modes — это таблица, которая содержит пары "имя формы волны ⟷ её код" и наоборот. Например, sound.modes.sine вернёт код для синусоиды. Вроде 0, лень вверх по сырцам бежать. Имеются следующие формы волн: square (ква... меандр), sine (синусоида), triangle (треугольная), sawtooth (пилообразная). А ещё есть noise — это белый шум. Есть функция sound.setTotalVolume(volume: number), которая моментально для всех каналов выставляет общую громкость (от 0 до 1). Каналы? Их, как и у предшественников — шумовых и пищащих карт, — 8 штук. Они нумеруются от 1 до 8 включительно, и на каждый из них можно поместить... Инструкции, которыми управляется звуковая карта. Есть некая "очередь" у звуковой карточки, в которую помещаются определённые инструкции, и затем... sound.process() запускает в фоне обработку этой "очереди". То есть, будут устанавливаться параметры, играться звук и прочее. Обращу внимание, что это всё в фоне, да. То есть, нам нужны циклы типа таких: while not sound.process() do os.sleep(.05) end. Очередь можно почистить через sound.clear(). И снова про каналы. Каждый из них может быть закрыт или открыт. Соответственно, закрытый канал в большинстве случаев играть звук не будет, а открытый — с превеликим удовольствием. Открыть можно с помощью sound.open(channel: number), закрыть — sound.close(channel: number). И да, это уже инструкции. Вот вам ещё инструкций. Можно установить форму волны на отдельном канале: sound.setWave(channel: number, type: number), вторым аргументом надо скормить код, полученный через sound.modes. Можно установить частоту этой самой волны с помощью sound.setFerquency(channel: number, frequency: number). Инструкция, а как же. Если вы любители... ээ, регистра сдвига с линейной обратной связью, в общем, LFSR/РСЛОС, можно даже на канал ответственную задачу генерирования этого шума возложить. Функция: sound.setLFSR(channel: number, initial: number, mask: number). Чёрт знает, как она работает. Функция sound.delay(duration: number), должна, вообще, выставить какую-то задержку с данной длительностью в миллисекундах. Но что-то я совершенно не понимаю, как её использовать. А использовать надо! Иначе звука не будет. И сразу же можно поставить частотную модуляцию с помощью sound.setFM(channel: number, modIndex: number, intensity: number). Или убрать её: sound.resetFM(channel: number). Тем же образом можно выставить и амплитудную модуляцию. sound.setAM(channel: number, modIndex: number) и sound.resetAM(channel: number). С помощью sound.setADSR(channel: number, attack: number, decay: number, attenuation: number, release: number) имеется возможность выставить ADSR-огибающую. Второй, третий и пятый аргументы указываются в миллисекундах, четвёртый — в виде числа от 0 до 1. Или убрать её: sound.resetEnvelope(channel: number). Для отдельного канала возможно выставить громкость, для этого нужна команда sound.setVolume(channel: number, volume: number). Громкость, как обычно, от 0 до 1. Собственно, это все функции. Теперь осталась мааааленькая запинка, с которой после несколько часов тыканья я не особо справился. Как заставить эту карту сгенерировать мне звук? Потому предлагаю поиграться с этой штукой всем форумом 1.7.10: качаем OC, CX и Asielib. 1.8: OC тут, Asielib не нужен. 1.9: OC тут, Asielib тоже не нужен. И если вы-таки поняли, как заставить её генерировать звук разных уровней крутости, отпишитесь об этом здесь.
  9. Всем привет. Нужна помощь с радаром из Computronics. Функция getPlayers() выдает таблицу данных. Мне нужно вытащить из этой таблицы значения, чтобы потом, к примеру, напечатать на экране. То есть, напечатать ник игрока, которого засек этот радар, а не всю таблицу. Заранее спасибо за помощь.
  10. Робот получает сигналы через "улучшение: чат" из мода Computronics Управление q = Вниз e = Вверх w = Вперёд s = Назад a = Поворот налево d = Поворот направот Пример: #qewsad
  11. Нигде не нашел, что можно сделать с этой камерой интересного. На вики есть пример рендера для CC, захотелось сделать преобразование изображения в тепловую карту высот/расстояния, но пытаясь добавить много цветов, у меня получалась каша из градиентов. Так что сделал по-проще и аккуратней. При помощи этой программки можно довольно хорошо разглядывать твердые блоки (сущности и многие недоблоки через нее не видно) pastebin get dYX5hERr cam Чтобы посмотреть картинку с камеры, надо запускать программу, с параметрами зависящими от используемого монитора. Например для монитора III уровня - /# cam 0.041, для монитора II уровня - /# cam 0.085 На самом простом мониторе больше 0.14 лучше не задавать, по умолчанию этот параметр и стоит (как можно заметить - чем число больше, тем меньше детализация). Если использовать программу на роботе с камерой, то можно смотреть вверх и вниз, указав, соответственно вторым аргументом up или down Картинки Можно сделать передачу картинки по сети, чтобы управлять роботом со всеми удобствами, еще и прикрутить к нему радар.
  12. Всем привет! Недавно мне понадобилось использовать камеру из Computrnics'а. Немного по мучавшись, с неточным определением координат, я все таки решил написать сюда, в надежде на то что здешние светлые умы мне помогут. В общем для тех кто еще не понял что я хочу: получая с камеры расстояние до объекта, мне нужно получить его координаты относительно координат камеры (иначе никак..). Для двух измерений все работает достаточно точно, но когда появляется третее - все идет на перекосяк т.к. я не знаю как учесть 2-й угол.. Код, который уже есть: local camera local cCords = {x = 0, y = 0, z = 0} local tCords = {{}} local res, count = 0.25, 1 local distance for x = -1, 1, res do for y = -1, 1, res do distance = camera.distance(x,y) if distance >= 0 then tCords[count][x] = cCords[x] + distance*math.cos(x) tCords[count][y] = cCords[y] + distance*math.sin(x) tCords[count][z] = ? count = count + 1 end end end
  13. Как можно побыстрей записывать информацию на кассеты? И вообще, где можно почитать описание формата, в котором хранятся данные на кассетах? А то возможности звукоизвлечения почти бесконечны, но на запись минуты звука уходит несколько часов.
×
×
  • Создать...