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

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

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

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

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

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


Блоги

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

Форумы

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

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

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


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

  • Начать

    Конец


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

  • Начать

    Конец


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

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

  • Начать

    Конец


Группа


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


ВКонтакте


Gtalk


Facebook


Twitter


Город


Интересы

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

  1. Взываем на помощь богов и богинь звука! В общем, в 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 тоже не нужен. И если вы-таки поняли, как заставить её генерировать звук разных уровней крутости, отпишитесь об этом здесь.
  2. Написал, вот, утилитку для форматирования кассет из аддона 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 Скриншотов не прилагаю, так как интерфейс программы прост, как палка. З.Ы. Это далеко не финальная версия утилиты, выставил её на всеобщее обозрение я только, чтобы получить несколько дельных советов по улучшению проги.
  3. Всем привет. Нужна помощь с радаром из Computronics. Функция getPlayers() выдает таблицу данных. Мне нужно вытащить из этой таблицы значения, чтобы потом, к примеру, напечатать на экране. То есть, напечатать ник игрока, которого засек этот радар, а не всю таблицу. Заранее спасибо за помощь.
  4. Робот получает сигналы через "улучшение: чат" из мода Computronics Управление q = Вниз e = Вверх w = Вперёд s = Назад a = Поворот налево d = Поворот направот Пример: #qewsad
  5. В общем есть чат бокс из Computronics И надо сделать добавление юзера в вайт-лист командой из чата допустим $$adduser НИК Как считать ник? Допустим отправляем в чат $$adduser Koteyk0o и получаем сообщение "$$adduser Koteyk0o" Как из этого сообщения считать ник?
  6. Нигде не нашел, что можно сделать с этой камерой интересного. На вики есть пример рендера для CC, захотелось сделать преобразование изображения в тепловую карту высот/расстояния, но пытаясь добавить много цветов, у меня получалась каша из градиентов. Так что сделал по-проще и аккуратней. При помощи этой программки можно довольно хорошо разглядывать твердые блоки (сущности и многие недоблоки через нее не видно) pastebin get dYX5hERr cam Чтобы посмотреть картинку с камеры, надо запускать программу, с параметрами зависящими от используемого монитора. Например для монитора III уровня - /# cam 0.041, для монитора II уровня - /# cam 0.085 На самом простом мониторе больше 0.14 лучше не задавать, по умолчанию этот параметр и стоит (как можно заметить - чем число больше, тем меньше детализация). Если использовать программу на роботе с камерой, то можно смотреть вверх и вниз, указав, соответственно вторым аргументом up или down Картинки Можно сделать передачу картинки по сети, чтобы управлять роботом со всеми удобствами, еще и прикрутить к нему радар.
  7. Всем привет! Недавно мне понадобилось использовать камеру из 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
  8. В состав мода 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. Видать меня склероз попутал.
  9. Как можно побыстрей записывать информацию на кассеты? И вообще, где можно почитать описание формата, в котором хранятся данные на кассетах? А то возможности звукоизвлечения почти бесконечны, но на запись минуты звука уходит несколько часов.
×
×
  • Создать...