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

Активация редстоуна

Вопрос

Всем привет. Такой вопрос: можно ли как-то сделать, чтобы комп активировал редстоун при приближении игрока к предмету. Допустим есть дверь напечатанная на принтере, радар и комп, и в момент приближения игрока радар посылал сигнал в комп и комп активировал ред, тем самым открывая дверь? Дверь отпечатана так, что при клике по ней или подаче сигнала, она меняет положение

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


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

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

В чистом моде OpenComputers (без дополнений) есть такая хрень - датчик движения.

 

Юзается примерно так:

local event = require('event')
local com = require('component')
local sensor = com.motion_sensor

while true do
  local _, address, x, y, z, name = event.pull('motion')
  print(name)
end

Чувствительность настраивается.

 

В дополнении OpenSecurity или Computronics есть радар.

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


Ссылка на сообщение
Поделиться на других сайтах
29 минут назад, Totoro сказал:

В чистом моде OpenComputers (без дополнений) есть такая хрень - датчик движения.

 

Юзается примерно так:


local event = require('event')
local com = require('component')
local sensor = com.motion_sensor

while true do
  local _, address, x, y, z, name = event.pull('motion')
  print(name)
end

Чувствительность настраивается.

 

В дополнении OpenSecurity или Computronics есть радар.

а как именно настроить чувствительность, а то не шарю(только начинаю разбираться в моде). 

датчик движения есть

Изменено пользователем Alexhotice

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


Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, Alexhotice сказал:

да, радар есть, а как именно настроить чувствительность, а то не шарю(только начинаю разбираться в моде)

 

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

Чувствительность - это порог скорости с которой должна двигаться цель, чтобы датчик ее "засёк".

 

Я не помню какие там числа, но можно поиграться и посмотреть. Задается чувствительность так:

sensor.setSensitivity(число)

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

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


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

В качестве примера можно посмотреть мою старую прогу - SpiderEye.

Это система слежения на датчиках. Там вроде можно было делать и так чтобы дверь открывало.

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


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

Спасибо

Изменено пользователем Alexhotice
я понял

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


Ссылка на сообщение
Поделиться на других сайтах
9 минут назад, Alexhotice сказал:

а как на расстоянии подключить датчики к компу?

 

Кабелем.

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


Ссылка на сообщение
Поделиться на других сайтах
В 17.01.2019 в 18:11, Totoro сказал:

В качестве примера можно посмотреть мою старую прогу - SpiderEye.

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

image.png.8bdf708447863eeac48b4b12def9f399.png

 

 

попытался запустить вашу старую прогу, выбило ошибку. похоже я криворукий

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


Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, Alexhotice сказал:

 попытался запустить вашу старую прогу, выбило ошибку. похоже я криворукий

 

А точно правильно скачалось / скопировалось?

Я вот прямо сейчас попробовал сделать:

pastebin get bTc7tJKv terminal.lua

И потом просто:

terminal

И оно запустилось нормально.

 

P.S. Запускал из OpenOS, не из MineOS.

P.P.S. Можно и на ты, я не обижусь. 😛

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


Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, Alexhotice сказал:

на всякий случай снес и загрузил заново

 

Ну вот теперь оно явно корректно скачалось.

OpenOS пишет тебе ошибку - "no primary 'redstone' available".

Это значит нет доступных компонентов "redstone".

 

Подсоедини Redstone I/O (красный контроллер, блок такой из OpenComputers). Кабелем к компу.

Этот блок будет выдавать сигнал редстоуна. К нему в принципе можно двери и прицепить.

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


Ссылка на сообщение
Поделиться на других сайтах
16 минут назад, Totoro сказал:

Подсоедини I/O Controller (красный контроллер, блок такой из OpenComputers). Кабелем к компу

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

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


Ссылка на сообщение
Поделиться на других сайтах
21 минуту назад, Alexhotice сказал:

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

 

Там в топике о программе написано как настроить программу.

Надо указать сторону блока на которую будет подан сигнал.

 

Если на дисплее алерт появился - то на блоке на какой-то стороне тоже должен сигнал появиться.

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


Ссылка на сообщение
Поделиться на других сайтах
34 минуты назад, Totoro сказал:

 

Там в топике о программе написано как настроить программу.

Надо указать сторону блока на которую будет подан сигнал.

 

Если на дисплее алерт появился - то на блоке на какой-то стороне тоже должен сигнал появиться.

Да, я видел. Там же уточнение про то что если стоит плата, значит с передней стороны идет сигнал, но поставив плату сигнал все равно не идет. Или это все же стоит в коде указать сторону света, в которую пойдет сигнал?

P.S. Я нашёл вроде свой косяк там в коде указана задняя сторона, исправил на нужную

Изменено пользователем Alexhotice

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


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Alexhotice сказал:

Там же уточнение про то что если стоит плата, значит с передней стороны идет сигнал,

 

Не не. Не "с передней", а "относительно передней". Там просто прикол в том, что у системника "юг" не на юге находится, а на передней стороне.

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

Ну или писать не "south", "north", "west", "east", a "front", "back", "right", "left".

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


Ссылка на сообщение
Поделиться на других сайтах
4 минуты назад, Totoro сказал:

 

Не не. Не "с передней", а "относительно передней". Там просто прикол в том, что у системника "юг" не на юге находится, а на передней стороне.

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

Ну или писать не "south", "north", "west", "east", a "front", "back", "right", "left".

Я и исправил сразу на front

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


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

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

Видно я капец какой криворукий, что даже готовый код не работает  

А можно сделать, чтобы во все стороны подавал сигнал?

Изменено пользователем Alexhotice

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


Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, Totoro сказал:

В чистом моде OpenComputers (без дополнений) есть такая хрень - датчик движения.

 

Юзается примерно так:


local event = require('event')
local com = require('component')
local sensor = com.motion_sensor

while true do
  local _, address, x, y, z, name = event.pull('motion')
  print(name)
end

Чувствительность настраивается.

 

В дополнении OpenSecurity или Computronics есть радар.

вот этот код работает нормально, а как добавить функцию подачи сигнала?

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


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Alexhotice сказал:

вот этот код работает нормально, а как добавить функцию подачи сигнала?

 

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

У них у обоих одинаковый интерфейс, и компонент называется "redstone".

 

Для того чтобы подать сигнал редстоуном, надо выбрать сторону и уровень сигнала (от 0 до 16).

Например:

local sides = require('sides')
local com = require('component')
local redstone = com.redstone

redstone.setOutput(sides.top, 5)

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

либо передать функции таблицу:

redstone.setOutput({
  [sides.front] = 5,
  [sides.back] = 5,
  [sides.left] = 5,
  [sides.right] = 5,
  [sides.top] = 5,
  [sides.bottom] = 5
})

 

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


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

на сколько я понял, код выглядит так?

local event = require('event')
local com = require('component')
local sensor = com.motion_sensor
local sides = require('sides')
local redstone = com.redstone
redstone.setOutput({
  [sides.front] = 5,
  [sides.back] = 5,
  [sides.left] = 5,
  [sides.right] = 5,
  [sides.top] = 5,
  [sides.bottom] = 5
})
  1.  

при запуске программы, выдает ошибкуimage.png.6c2598655e8ebe3d9dcbf6f0584d8226.png

получается в этом месте: local redstone = com.redstone.

 

p.s. достал карту на красном камне стала эта ошибка image.png.5fd8cec93e2ab4798e3543cfab329325.png

p.p.s вставил часть чтобы проверить работает ли и изменил на одну сторону

local event = require('event')
local com = require('component')
local sensor = com.motion_sensor
local sides = require('sides')
local redstone = com.redstone
redstone.setOutput(sides.front, 5)
while true do
  local _, address, x, y, z, name = event.pull('motion')
  print(name)
end

заработало, ошибки перестало выдавать, но ред сигнал все равно не пускает

Изменено пользователем Alexhotice

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


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Alexhotice сказал:

заработало, ошибки перестало выдавать, но ред сигнал все равно не пускает 

 

Надо логику программы поправить.

У тебя есть основной цикл:

while true do
  ...
end

Он повторяется бесконечно.

Всю обработку имеет смысл делать внутри него, чтобы бесконечно обрабатывать сигналы от сенсора.

 

Первая строка ловит сигналы от сенсора и сохраняет в переменные:

local _, address, x, y, z, name = event.pull('motion')

Далее можно проверить, что сигнал действительно пришел, и это не сбой:

if name ~= nil then
  ...
end

Можно еще проверить, что name тут - это ник нужного игрока и т.п.

Ну и внутри этой проверки можно уже пускать сигнал редстоуна:

redstone.setOutput(sides.front, 5)

 

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


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

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

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

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

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

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

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

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

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


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