Перейти к содержимому
SDV

Примитивная система защиты жилища "АнтиМоб"

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

Изображение

Данная программа моя первая в изучении языка Lua.

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

Из-за его простоты и скорее всего ненужности я даже не стал его размещать на Pastebin.

 

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

Конечно скрипт можно доработать (а то и вовсе переработать), но на первое время я думаю и такой пример сойдет для изучения (как мне, так и другим игрокам-новичкам в этом деле).

 

Вообщем что я использовал:

  • Системный блок с комплектующими
  • Монитор
  • Датчик движения (Д.Д.)

  • Раздатчик (внутри стрелы)
Как видно на скришоте выше Д.Д. и раздатчик расположены друг на друге.

Я это сделал после ряда экспериментов. И в конце концов пришел ко мнению что такое расположение самое идеальное.

 

Во-первых, Д.Д. видит только то что перед ним, а не все вокруг (из-за этого пришлось его обложить блоками вокруг). Тобеж Д.Д. будет срабатывать только тогда когда объект будет именно перед его "камерой".

Во-вторых, даже если разместить раздатчик на место Д.Д. то тогда при выстреле стрелами, снаряды просто напросто будут лететь выше моба и улетать дальше. А так получается что выстрел идет в ноги.

 

Для своего первого скрипта, я замахнулся аж на 3 API: component, event, note.

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

 

Ниже представлен листинг программы:

local component = require("component")
local event = require("event")
local note = require("note")
redstone = component.redstone
while true do
event.pull("motion",_,_,_,_,"Зомби")
redstone.setOutput(4,2)
redstone.setOutput(4,0)
note.play(90, 0.2)
end

Разберу код построчно (это для новичков, типа меня =) ):

 

Подключаем интерфейс Component API:

local component = require("component")

 

Подключаем интерфейс Event API:

local event = require("event")

 

Подключаем интерфейс Note API:

local note = require("note")

 

Устанавливаем переменную redstone в которую возвратим прокси редстоун платы (или красного контроллера)

redstone = component.redstone

 

Запускаем цикл (бесконечный):

while true do

 

В него вставляем обработчик события. В нашем случаи это фильтрация по типу "motion".

Также мы установим на кого будет срабатывать Д.Д.

Вместо "Зомби", можно установить кого угодно:

event.pull("motion",_,_,_,_,"Зомби")

Если оставить просто event.pull(), то Д.Д. будет срабатывать на всех, даже на игрока.

 

Отправляем сигнал на раздатчик:

redstone.setOutput(4,2)

Число 4 это сторона на которую будет подан сигнал, число 2 - это сила (мощность) сигнала.

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

 

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

redstone.setOutput(4,0)

 

Необязательно. Чтобы услышать что программа сработала устанавливаем стандартный звук "системного блока". У меня это частота 90 Гц, с длительностью 0.2 сек:

note.play(90, 0.2)

 

И завершаем цикл:

end

 

Кстати, если Вы запустите программу то она никогда не завершиться сама. Чтобы остановить ее необходимо нажать Ctrl + Alt + C

 

Вообщем на этом все. Самая простая и скорее всего не идеальная система безопасности жилища готова.

Пусть это будет моим первым изучение языка Lua и мода OpenComputers в целом.

P.S. Я вообще начал сразу с мода OpenComputers, при этом пропустив изучение мода ComputerCraft.

Надеюсь что в дальнейшем мне хватит сил и времени чтобы дойти и до него =).

Кстати идею сделать такую примитивную систему мне пришла после того, как вспомнил о том, как на обычном MC делали систему защиты (из того же раздатчика, и нажимной плиты), но это оказалось слишком примитивно, и я решил использовать компьютер для этих целей.

Жду от Вас конструктивную критику по поводу программы и реализации системы в целом.

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


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

Большая просьба выложить изображение еще раз не открывается ни как  :smile25:

Нет возможности, файл был залит на Яндекс.Фото (на аккаунт который уже удален).

Больше оригинала нигде нет.

 

По памяти помню, что там просто стоит PCшник, а перед ним раздатчик в котором стрелы.

 

Алсо: Кстати это моя первая программа вообще на ОС и на форуме в целом. Уже больше года прошло :-D

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


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

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

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

Гость
Ответить в тему...

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

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

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

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

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


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