radamant 1 Опубликовано: 24 января, 2023 Мне максимально не понятно как управлять двумя красными контроллерами. С одним я справился, надо идти дальше. Решил попробовать поставить два. Комп видит что стоит два красного контроллера. Я пробовал и так и сяк, не получается. Вот пример: local component = require("component") local rs1 = component.proxy("6b4") local rs2 = component.proxy("9g5") component.rs2.setOutput(1,15) И после этой строчки ошибку выдает, мол "no primary 'rs2' available" Сильно меня не срите, я новичек в моде) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asior 586 Опубликовано: 24 января, 2023 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 Вот так это делается. Это при условии, что тебе по барабану в какой последовательности их включать. Да и не надо бегать с анализатором и тыкать по каждому. Остается правильно только отсортировать адреса и по ним обращаться. Можно адреса выгрузить в файл и потом подтягивать их при запуске 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
radamant Автор вопроса 1 Опубликовано: 24 января, 2023 @Asior Спасибо большое, буду щас разбираться) Мод офигенный, для того кто на программиста учится вообще каеф) Благодаря моду познакомился с Lua 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Oleshe 35 Опубликовано: 24 января, 2023 (изменено) В принципе уже того достаточно, просто разжую как оно происходит. ---- 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#Интерфейс), там есть компоненты библиотеки и т.д. Изменено 24 января, 2023 пользователем Oleshe Граматей 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Мне максимально не понятно как управлять двумя красными контроллерами.
С одним я справился, надо идти дальше. Решил попробовать поставить два.
Комп видит что стоит два красного контроллера. Я пробовал и так и сяк, не получается.
Вот пример:
local component = require("component")
local rs1 = component.proxy("6b4")
local rs2 = component.proxy("9g5")
component.rs2.setOutput(1,15)
И после этой строчки ошибку выдает, мол "no primary 'rs2' available"
Сильно меня не срите, я новичек в моде)
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах