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

ItsMakar

Пользователи
  • Публикации

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

  • Посещение

Сообщения, опубликованные пользователем ItsMakar


  1. В 18.10.2015 в 14:52, SergOmarov сказал:

    Не пашет этот bibi, ошибка: boolean ожидается, передано string. Я ошибку не нашел, извольте исправить, автор)

    gpu.bind(component.list("screen")()) <---
    component.list("screen")() ---> 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 'screen'

    Получается

    gpu.bind('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 'screen')

    2 аргумент функции gpu.bind это reset: boolean

    Поэтому ошибка

    С какого то момента добавили второй аргумент в gpu.bind

    Здесь его нет, а здесь есть

    Можно заменить на

    gpu.bind(({component.list("screen")()})[1])

     

    • Нравится 1

  2. Только что, Bs0Dd сказал:

    Фуууух, уже же было сказано. В компьютер вшиты три библиотеки: component, computer и unicode. Они существуют сами по себе и OpenOS при загрузке только добавляет в component (и в computer вроде тоже) свои, программные функции. Потому луа файла этих библиотек и нету.

    ясно


  3. 52 минуты назад, Bs0Dd сказал:

    Вот, именно про это расширение я и говорил. Поскольку это уже программная фича, реализованная на уровне OpenOS.

     

    require? Она хоть с виду и является самостоятельной функцией, но на самом деле входит в вышеупомянутую либу package:

     

    https://github.com/MightyPirates/OpenComputers/blob/master-MC1.7.10/src/main/resources/assets/opencomputers/loot/openos/lib/package.lua#L45-L70

     

    Я не в курсе почему ее вынесли отдельно, но значит так надо.

    я имею ввиду component


  4. Только что, ECS сказал:

    В дополнение к инфе от @Bs0Dd поясню, что если ты кодишь под биос, то работаешь на самом низком уровне, доступном в моде. Следовательно, фича component.имяКомпонента.метод(...) из OpenOS доступна не будет, т.к. она добавляется на более позднем этапе во время инициализации самой ОС:

     

    https://github.com/MightyPirates/OpenComputers/blob/af2db43c53b9690fceabfb813987572bf2258db5/src/main/resources/assets/opencomputers/loot/openos/boot/04_component.lua#L10-L32

     

    Поэтому для обращения к компоненту из-под биоса есть 2 варианта:

    
    -- Чтобы обратиться к компоненту, нам нужно знать его уникальный адрес
    -- Список адресов всех доступных компонентов с указанным типом можно получить через метод component.list("имя")
    -- В одном компьтере может быть установлено несколько компонентов одного типа, поэтому метод list 
    -- возвращает функцию-итератор, при каждом вызове которой возвращается адрес следующего компонента
    local gpuIterator = component.list("gpu")
    local gpu1Address = gpuIterator()
    local gpu2Address = gpuIterator()
    
    -- Конструкцию выше можно скомпоновать в цикл
    for address in component.list("gpu") do
      -- Делаем что угодно с каждой имеющейся GPU
    end
    
    -- В случае EEPROM все несколько проще. Поскольку в 1-ом компьютере может быть только 1 EEPROM, то нам
    -- следует вызвать функцию-итератор хотя бы 1 раз, чтобы получить адрес 1-го (и единственного) EEPROM
    local eepromAddress = component.list("eeprom")()
    
    -- Раз адрес компонента EEPROM нам известен, теперь мы можем обратиться к нему и вызвать
    -- какой-нибудь метод. Сделать это можно двумя путями. Первый более линейный, его следует
    -- использовать для каких-то разовых операций "в лоб":
    local data = component.invoke(eepromAddress, "getData")
    component.invoke(eepromAddress, "setData", "sample text")
    
    -- Второй более универсальный, и позволяет создать так называемый прокси компонента, то есть
    -- таблицу в памяти, содержащую все доступные методы компонента. Разумеется, он расходует больше ОЗУ,
    -- однако работать с ним в разы удобнее:
    local eepromProxy = component.proxy(eepromAddress)
    local data = eepromProxy.getData()
    eepromProxy.setData("sample text")

    Кроме того, "чистые" компьютеры без ОС имеют глобальные переменные component, computer и unicode, которые всегда доступны в биосе, и в случае OpenOS "вырезаются", становясь частью глобальной библиотеки package:

     

    https://github.com/MightyPirates/OpenComputers/blob/af2db43c53b9690fceabfb813987572bf2258db5/src/main/resources/assets/opencomputers/loot/openos/lib/core/boot.lua#L94-L112

     

    По этой причине в биосе ты должен обращаться к глобальной библиотеке component, а в OpenOS для этого уже требуется конструкция require("component"). Почему авторы так поступили? Да хрен знает, их ОС - их правила. Но путаницу это вносит знатную

    я знаю это и я просто забыл что component.proxy работает не по названию а по аддрессу то есть я пытался сделать так component.proxy("eeprom") и про require("component") это вообще что за библиотека? я не нашел ее в файлах опенос


  5. 4 часа назад, eu_tomat сказал:

    @ItsMakar Думаю, использованы беспроводные платы, и сигнал доходит два раза: по воздуху и через кабель.

     

    Сравни два дублирующихся события. Чем они отличаются друг от друга? Расстоянием?

    да расстояние разное у 1 ноль блоков у 2 больше в общем я понял


  6. Только что, eu_tomat сказал:

    Такое может быть, например, в случаях:

    • Компьютер имеет две или более сетевых плат с открытым портом, на который поступило сообщение.
    • В сети с этим компьютером имеется другой компьютер с сетевой платой с тем же самым открытым портом.

    нет только 2 компьютера во всем мире и сетевая карта только 1


  7. 7 часов назад, hohserg сказал:

    Ну так может, стоит рассказать о фичах, о плюсах и минусах? Как-нить в список оформить, чтоли

    проблема в том что их нет пока есть только загрузчик (который время от времени не запускается с ошибкой 3 аргумент нил и я вообще не е** какая строка) и чтото вроде шелла


  8. В 15.11.2021 в 00:54, hohserg сказал:

    Это может произойти, если у апи openglasses нету метода setRenderPosition. Хороший вопрос - почему его нет. Программа работает на версии мода: 

    https://www.curseforge.com/minecraft/mc-mods/openglasses2/files/3143467

    Возможно, ты пытался запустить на 1.7.10

     

    погоди что? это не работает на 1.7.10? :(


  9. 4 часа назад, Zer0Galaxy сказал:

    Все компоненты системы получают запрос от пользователя. Но поскольку физически компоненты расположены в разных точках пространства, расстояния с которых получен запрос, будут разные для каждого компонента и зависеть от положения пользователя. Зная эти расстояния и координату базового контроллера, система вычисляет координату пользователя и возвращает эту координату в ответном сообщении.

    ясно


  10. ~~В общем исходного кода нет пока ибо автор не за пк соответственно не может его закинуть на гитхаб~~

    Короче mOS - самая лучшая (нет) ос в опен компухтерах которая была написана за несколько дней половина методов были культурно украдены из openOS а несколько методов для загрузчика из CyanBIOS есть чето вроде шелла но он нифига не работает почти просто выполняет луа файл который указан

×
×
  • Создать...