bob558 28 Опубликовано: 8 мая, 2017 Здравствуйте! Подскажите, как с помощью опенкомпутера соединить две или три воротины из мода Stargate? Пытался разобраться в чужих программах. Не понимаю как соединяться с другими воротами, если известны адреса ворот. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asior 586 Опубликовано: 8 мая, 2017 (изменено) Трое врат одновременно не соединить, но присоединиться сначала к одним, а потом к другим легко и просто local event = require("event") local stargate = require("component").stargate status, info = stargate.dial('0000-000-sa') --возвращает true/false при подключении и в info ошибку если что-то пошло не так a={} while a[1] ~= 'touch' do --просто выводит все о чем информируют врата a={event.pull()} for i=1,#a do print(a[i]) end end stargate.disconnect() --отрубает врата Есть еще опция передачи сообщения между вратами (но нужна подгрузка с обоих сторон врат), закрытие/открытие ирис, проверка уровня топлива, проверка расхода топлива для перехода через врата и много иных опций. Можете сами пощелкать их и почитать, или при помощи программы kak-uznat-metody-komponentov-v-osИли вручную >lua >=component.stargate (море информации) >=component.stargate.disconnect (инфа по нужной функции) кстати обрати внимание на тему что автоматически рекоментудется StarGate control panel Изменено 8 мая, 2017 пользователем Asior 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
bob558 Автор вопроса 28 Опубликовано: 8 мая, 2017 (изменено) Большое спасибо, за мысли ! Сейчас разбираюсь с информацией от врат. Вот простой код, который соеденяет на 30 сеунд врата: local comp = require("component") local sg = comp.stargate local term = require("term") function main() term.clear() print("Введите адрес врат: ") local address = io.read() sg.dial(address) os.sleep(30) sg.disconnect() end while true do main() end StarGate control panel смотрел, но там все завязано на keypad. Я хотел сам устанавливать адреса врат. Изменено 8 мая, 2017 пользователем bob558 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 749 Опубликовано: 8 мая, 2017 Можно даже не изобретать велосипеды. https://github.com/Nex4rius/Nex4rius-Programme/blob/master/Stargate-Programm/README.md#russian 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
bob558 Автор вопроса 28 Опубликовано: 8 мая, 2017 (изменено) Эта программа попадалась на глаза. Программа сложная, я не смог разобраться Изменено 25 мая, 2017 пользователем bob558 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
bob558 Автор вопроса 28 Опубликовано: 25 мая, 2017 (изменено) Столкнулся с ошибкой при открытии врат Вот код программы: https://pastebin.com/zRPU24PU Интересно: что этот код открытия врат без обвязки работает великолепно: local comp = require("component") local sg = comp.stargate local term = require("term") local gpu=require('component').gpu local key_net = 'W9MX-YD7-MF' function main() term.clear() local address = key_net sg.dial(address) os.sleep(10) -- время когда ворота открыты sg.disconnect() end while true do main() end В чем может быть проблема? Изменено 25 мая, 2017 пользователем bob558 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 25 мая, 2017 Столкнулся с ошибкой при открытии врат В чем может быть проблема? В 73-й строке ты объявляешь функцию sg: local function sg() И она начинает конфликтовать с переменной sg которая хранит прокси компонента ворот. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
bob558 Автор вопроса 28 Опубликовано: 25 мая, 2017 Totoro, огромное спасибо!!! Забыл обратить на это внимание и был конфликт! Спасибо! Не первый раз выручаешь!! Попровил код, поменял имя функции. Теперь программа просто не видит врата старгейта. Установил принт "соединение?" после вероятного подключения к вратам, но соединения нет. https://pastebin.com/1ErD2ymz Ошибок не выдает, в то же время и соединения нет (( Не могу понять где я что не так сделал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 749 Опубликовано: 26 мая, 2017 Дело в том, что переменная address создается в функции touch, вне функции она не видна, поэтому ее следует объявить в начале программы, тогда она будет видна для всех функций. Код слишком громоздкий, адреса/кнопки лучше как-нибудь упаковать отдельно, отрисовку рамок можно сделать за две операции gpu.fill. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
bob558 Автор вопроса 28 Опубликовано: 3 июня, 2017 Я разобрался, почему программа не видит врата. В коде stargate.dial(address) gpu.set(20, 23, "соединение?"); os.sleep(0.5); gpu.set(20, 23, " ") -- отладка os.sleep(2) -- время когда врата открыты stargate.disconnect() Я проставил os.sleep(2) думал, врата stargate.dial(address) открываются и потом работает 2-х секундный слип . Оказалось, во время слипа и происходит открытие врат. Поэтому для слипа нужно устанавливать как минимум 20-30 секунд. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Здравствуйте!
Подскажите, как с помощью опенкомпутера соединить две или три воротины из мода Stargate?
Пытался разобраться в чужих программах. Не понимаю как соединяться с другими воротами, если известны адреса ворот.
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах