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

Кодовый замок на OpenSecurity

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

Доброго времени суток , недавно задумывался о том чтобы создать комнату для системы безопасности... 
Как и в любом стратегическом помещении в комнате должна быть кодовая дверь... посмотрел на OpenSecurity и тут понеслась...
накидал основу +- пару часов на добавление плюшек и вот что получилось: >жмяк< . | pastebin get iA7jGLCd door |

Как оно работает?

> Для начала нужно установить аппарат на котором будет базироваться наша дверь :
 В моем случае это компьютер с характеристиками:

 

 

   Корпус: 2 ур.
   GPU: 1 ур.
   RAM: 2x1.5 ур.
   HDD: 1 ур.

   CPU: 2 ур.

 

Процессор и уровень самого блока стоит выбирать из того сколько компонентов вы хотите прикрутить.

 

UhACp6ZNNI8.jpg

 

 

 

> Далее собираем саму дверь:

 Обязательно:
    Door Controller.
    Keypad.
    Security Door. 

  Дополнительно:
    Entity Detector.
    ЧатБокс (OpenTechnology)

 

Запуск.

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

 

Внимание!!!

 

-! При запуске программы все двери закроются.
-! При перезапуске программы пароль не сохраняется.
-! При верном пароле откроются все двери подключенные к вашему аппарату.

-! Не стоит подключать более 1 ЧатБокса , а также более 1 Entity Detector'a.

Итог: 

 

 


> что получается в итоге:
 

vHCCJ_k0mj4.jpg

> C ЧатБоксом и Entity Detector:

0nF7o91Y8GA.jpg

> С ЧатБоксом , но без Entity Detector:

rVusTwxG4oA.jpg

> Без ЧатБокса с Entity Detector:
 

O7LDoyr8Yz4.jpg

 

 

  










 

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

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


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

Чистенький код, приятно читать. (Не то что у некоторых. :) )

 

Немного предложений:

1) Однобуквенные названия переменных (особенно глобальных) снижают читабельность кода.

Для циклов например, юзать название i - нормально. Но переменную, которая широко используется во всем коде, стоит назвать говоряще.

Не c, а например component или com.

 

2) Имеет смысл объявлять все локальные переменные словом local. Хотябы потому, что это повышает скорость выполнения кода.

function findControllers()
  local controllers = com.list('os_door')
  ...

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

В то время как локальные переменные видны только тому блоку кода, который их объявил.

 

3) Если в цикле есть event.pull(...) то os.sleep(...) уже можно не ставить. Потому что пулл - это сам по себе слип.  :) И OpenComputers это учитывает.

while true do
  -- os.sleep(0.001)                                 -- не обязательно
  ...
  local key, b, num, name = event.pull('press_key')  -- потому что это тоже слип

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


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

 

Чистенький код, приятно читать. (Не то что у некоторых. :) )

 

Немного предложений:

1) Однобуквенные названия переменных (особенно глобальных) снижают читабельность кода.

Для циклов например, юзать название i - нормально. Но переменную, которая широко используется во всем коде, стоит назвать говоряще.

Не c, а например component или com.

 

2) Имеет смысл объявлять все локальные переменные словом local. Хотябы потому, что это повышает скорость выполнения кода.

function findControllers()
  local controllers = com.list('os_door')
  ...

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

В то время как локальные переменные видны только тому блоку кода, который их объявил.

 

3) Если в цикле есть event.pull(...) то os.sleep(...) уже можно не ставить. Потому что пулл - это сам по себе слип.  :) И OpenComputers это учитывает.

while true do
  -- os.sleep(0.001)                                 -- не обязательно
  ...
  local key, b, num, name = event.pull('press_key')  -- потому что это тоже слип

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

 

сейчас исправлю , спасибо за советы :)

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

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


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

Да, код красивый и читабельный.

Но всегда ставить локальные переменные всё же - хорошая привычка. И увы в данном примере функции глобальны. Нехорошо.

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


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

Блин , да вас не поймешь... то хорошо , то плохо xD

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


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

а где код? я хотел в нем посмотреть как открывать дверь из опен секьюрити ибо ее нет в списке компонентов редстоуном не открывается а кабель и опенкомпов подключается

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


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

а где код?

 

В 04.07.2016 в 16:05, PandaDoddo сказал:

и вот что получилось: >жмяк< . | pastebin get iA7jGLCd door |

 

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


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

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

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

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

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

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

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

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

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


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