Перейти к публикации
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

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


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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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

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

  Разрешено не более 75 эмодзи.

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

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

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


×