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

Как управлять двумя красными контроллерами ?

Вопрос

Мне максимально не понятно как управлять двумя красными контроллерами.

С одним я справился, надо идти дальше. Решил попробовать поставить два.

Комп видит что стоит два красного контроллера. Я пробовал и так и сяк, не получается.

Вот пример:

local component = require("component")

local rs1 = component.proxy("6b4")

local rs2 = component.proxy("9g5")

component.rs2.setOutput(1,15)

 

И после этой строчки ошибку выдает, мол "no primary 'rs2' available"

 

Сильно меня не срите, я новичек в моде)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

local com = require("component")
local zp = com.invoke
local list = {} --тут хранятся адреса

local function scan() --добавить в массив все адреса
  list = {}
  for k, _ in pairs(com.list("redstone")) do -- прогон по всем приборам
    list[#list+1] = k
  end
end

scan()
for i=1,#list do
  zp(list[i], 'setOutput', 1, 255) -- аналог redsone.setOutput(1, 255)
end

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Asior Спасибо большое, буду щас разбираться)

Мод офигенный, для того кто на программиста учится вообще каеф)

Благодаря моду познакомился с Lua

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В принципе уже того достаточно, просто разжую как оно происходит.

----
require('component').,invoke(addres:string, function:string,...)   -- Функция либы позволяет обращаться к компонентам по адресу.

----

Адрес понятно адрес нашего супер компонента.

--

функтион(литерали(literally)) это функция, пример:
rs.setOutput(sides.north, ...)

cmp.invoke('228','setOutput',sides.north)

--

 ... обозначается дополнительный аргументы, такие как и использовались бы в "оригинале"

--

Пример: последовательное включение выключение фонариков на красном камне, они на блоке контроллера с верху.

Скрытый текст

 


local cmp = require('component') -- либа компонента
local sides = require('sides') -- либа сторон, как ни странно хранит стороны света, их цифекри
local invoke = cmp.invoke -- "ярлык" дабы не писать такую большую строку
local rslist = {cmp.get('228'),cmp.get('666')} -- 2 аддреса компонентов красного камня, вводите свои
-- cmp.get(addres:string) -- получаем адрес компонента по его не полной части
local turn = false -- очередь, включается лево-право
while true do -- цикл, прерывается Ctrl+Alt+c
  os.sleep(1) -- Ожидание
  print('Oп, как могу') -- ххахахехахех
  if turn == true then -- смотрим какая сторона
    local turn = false -- дабы стороны менялись
    invoke(rslist[1],'setOutput',sides.up,0) -- выключаем одно ..
    invoke(rslist[2],'setOutput',sides.up,1) -- .. и включаем другое
  else -- "или"
    -- всё то-же но на оборот
    local turn = true
    invoke(rslist[2],'setOutput',sides.up,0)
    invoke(rslist[1],'setOutput',sides.up,1)
  end
end -- концы циклов
--конец!!!1!11

 

Пример: спам 2-мя (не ограничено) беспроводными картами на 1-й порт

Скрытый текст

local invoke = require('component').invoke
local modemlist = {'su5','404'}
for i = 1, #modemlist do -- Преобразовываем сокращённые адреса к полным
  modemlist[i] = require('component').get(modemlist[i])
end
for i = 1, #modemlist do -- открываем порты на всех картах
  invoke(modemlist[i],'open',1)
end
while true do
  os.sleep(0.01)
  for i = 1, #modemlist do -- отправляем
    invoke(modemlist[i],'broadcast',1,require('unicode').char(0x263B)) -- require('unicode').char(ColorCode:HEX) -- Символ из таблицы символов, на форуме она есть можешь глянуть
  end
end

 

Возможно не работает т.к. писалось на скорую руку и не проверялось, но на вид должно :)

На скорость спама (не перерывами, а активным времени) влияет CallBugets из конфиг файла, выкручиваешь на 999 и все летает.

Всё разжевал прямо для детей, хоть мы и серьёзные дядьки в костюмах. Но что-б прям было понятно прям ухххх...

Здесь я разжевал, как можно буквально в пару строк обращается к определённому компоненту.

Если появился вопрос можешь задать мне в лс или дискорд, я каждый день чекаю сайт, но сначала лучше смотри википедию (https://minecraft.fandom.com/ru/wiki/OpenComputers/Component_API#Интерфейс), там есть компоненты библиотеки и т.д.

Изменено пользователем Oleshe
Граматей

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


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