Totoro
-
Публикации
1 950 -
Зарегистрирован
-
Посещение
-
Победитель дней
289
Сообщения, опубликованные пользователем Totoro
-
-
Статус выводить довольно легко - для этого можно воспользоваться тем,
что команда
computer.addUser(name: string): boolean or nil, string
работает только если человек онлайн.
Ну а ники придется вбивать в список вручную.
-
30 минут назад, Alexhotice сказал:изменил я на эту часть,
и
после того как, первый раз засекла выбило ошибку
Возможно это только в последних версиях добавили. Или оно для блоков не работает.
Значит придется по отдельности на каждую сторону сетить.
-
9 минут назад, Alexhotice сказал:тогда как-то будет выглядеть?
Да. А @Asior показал как оно будет выглядеть для работы с несколькими redstone контроллерами.
-
Блок:
if not monsters then ... end
не имеет смысла. В начале программы, вот так как у тебя.
Это же проверка имени того, на кого "сагрился" датчик.
И проверять надо после того как это имя было получено, внутри цикла.
Ты можешь оформить проверку как функцию (и тогда ее можно будет как раз оставить в начале программы):
function isMonster(name) for i=1, #monsterlist do if name == monsterlist[i] then return true end end return false end
Тогда внутри цикла, после срабатывания сенсора, можно будет проверить, монстр это был, или нет:
while true do local _, address, x, y, z, name = event.pull('motion') if isMonster(name) then print("Это был моб...") else print("Кто-то ломится в дом!") end end
-
1
-
1
-
-
Для удобной прокладки редстоуна придется повозиться с ванильной пылью.
Когда мы строили банк, мы использовали мод на липкий редстоун.
Ещё можно поставить не один красный контроллер, а несколько. Только тогда нужно будет устанавливать сигнал не только "главному" компоненту redstone, но и остальным.
Например так:
local sides = require('sides') local com = require('component') -- получаем список всех компонентов 'redstone' local redstone = component.list('redstone') -- когда нужно - изменяем на них на всех уровень сигнала for address, _ in pairs(redstone) do com.invoke(address, "setOutput", sides.front, 15) end
Или что-нибудь в таком духе.
-
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)
-
-
1
-
-
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 })
-
1 час назад, Alexhotice сказал:Там же уточнение про то что если стоит плата, значит с передней стороны идет сигнал,
Не не. Не "с передней", а "относительно передней". Там просто прикол в том, что у системника "юг" не на юге находится, а на передней стороне.
То есть ориентироваться надо не по реальным сторонам света, а как комп стоит.
Ну или писать не "south", "north", "west", "east", a "front", "back", "right", "left".
-
21 минуту назад, Alexhotice сказал:прога теперь работает, но все равно камень не испускает сигнал, плату на всякий случай тоже закинул, но сигнала все равно нет
Там в топике о программе написано как настроить программу.
Надо указать сторону блока на которую будет подан сигнал.
Если на дисплее алерт появился - то на блоке на какой-то стороне тоже должен сигнал появиться.
-
3 минуты назад, Alexhotice сказал:на всякий случай снес и загрузил заново
Ну вот теперь оно явно корректно скачалось.
OpenOS пишет тебе ошибку - "no primary 'redstone' available".
Это значит нет доступных компонентов "redstone".
Подсоедини Redstone I/O (красный контроллер, блок такой из OpenComputers). Кабелем к компу.
Этот блок будет выдавать сигнал редстоуна. К нему в принципе можно двери и прицепить.
-
3 минуты назад, Alexhotice сказал:попытался запустить вашу старую прогу, выбило ошибку.
похоже я криворукийА точно правильно скачалось / скопировалось?
Я вот прямо сейчас попробовал сделать:
pastebin get bTc7tJKv terminal.luaИ потом просто:
terminalИ оно запустилось нормально.
P.S. Запускал из OpenOS, не из MineOS.
P.P.S. Можно и на ты, я не обижусь. 😛
-
9 минут назад, Alexhotice сказал:а как на расстоянии подключить датчики к компу?
Кабелем.
-
17 минут назад, kaka888 сказал:Благодарю. Жаль, что я пока не знаю, что такое паттерн, "%" и "$" :((
Паттерны, они же шаблоны. Они же аналог "регексов" для Луа.
Вот тут про паттерны на английском: http://lua-users.org/wiki/PatternsTutorial
Тут - на русском: http://bot4sale.ru/blog-menu/qlua/265-lua-patterns.html
Ну и вообще погуглить можно.
-
1
-
-
В качестве примера можно посмотреть мою старую прогу - SpiderEye.
Это система слежения на датчиках. Там вроде можно было делать и так чтобы дверь открывало.
-
5 минут назад, Alexhotice сказал:да, радар есть, а как именно настроить чувствительность, а то не шарю(только начинаю разбираться в моде)
Датчик движения имеет радиус действия 8 блоков, и он не должен быть заслонен другими блоками (можно прятаться от него за стенкой).
Чувствительность - это порог скорости с которой должна двигаться цель, чтобы датчик ее "засёк".
Я не помню какие там числа, но можно поиграться и посмотреть. Задается чувствительность так:
sensor.setSensitivity(число)
Про радары из дополнений надо спросить кого-нибудь знающего, я ими не пользовался.
-
В чистом моде 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 есть радар.
-
1
-
-
На случай если кто-то будет искать ответ - проблема решилась.
Исходный текст был не в кодировке UTF-8, а в кодировке Windows-1251 (кодировка менялась при заливке файла, или неверно интерпретировалась железякой), и после смены чарсета все заработало.
-
Попробуй добавить в секцию <head> такую строку:
<meta charset="UTF-8">
-
А что за второе число возле памяти?
-
-
1 минуту назад, HeroBrine1st сказал:Этого пока нет. Но идея отличная. спасибо
Ждем. Свайпы для мобильной системы - маст хев.
-
Свайпать можно?
-
Скриншотов таблетоса в студию!
-
1
-


Чек людей привата
в Выполненные заказы
Опубликовано:
Это надо как-то читать приватный чат... Мне кажется не сможет.