Перейти к публикации
Форум - ComputerCraft
ferel

OpenComputers Замок на OpenSecurity

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

Всем привет.
 
Представляю вашему вниманию: Замок для дома на Magnetic Card Reader

 

Также есть редстоун выход.

 

pastebin run LY6uj0xT 

 

Код: https://pastebin.com/LY6uj0xT

Изменено пользователем Alex
  • Like 5

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


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

Класс! Никогда не разбирался как карты работают. Сразу несколько вопросов/предложений/улучшений.

1) Как понимаю 

data == "RXZlcnlib2R5" 

это пароль?

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

2) Дальше, а как карту записать - то? Нужно дополнение к программе, записывающее пароль на карту.

3) Как понимаю придется комп на себя приватить? А если забудешь, придут любители вирусов с магической командой Ctrl+Alt+C, ну и или пароль вытащат, или чего веселенькое поставят. Используй 

event.shouldInterrupt = function () return false end 

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

4) А что будет если я дверь не поставлю? Или поставлю железные и редстоун захочу провести? Судя по коду, программа улетит в глубокую ошибку. Добавляй проверку.

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

 

P.S. Но поздравляю с первой программой! Чуть улучши и будет конфетка!

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

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


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

Спасибо  :)

P.S. Пароль это закодированное слово на base64

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

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


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

Представляю вашему вниманию: Замок для дома на Magnetic Card Reader

if data == "RXZlcnlib2R5" then

А если у меня например несколько друзей хотят войти и у них свои карты, то что в коде делать портянку из OR-ов чтоли? :blink:

 

Фингер и другие, помнят как на ИТ у меня стоял свой комп с авторизацией по карте, если найду бекап его, то может скину, там все сделано для каждого игрока, то есть проверка номера карты идет не из кода, а из некой БД... B-)

 

Ну а в целом респект за первую программу, надеюсь автор ее не забросит, модернизирует и сделает супер-пупер куллхакерц систему защиту :smile9:

Вот @Totoro растет подрастающее поколение, тебе уже точно можно идти на пенсию, ветеран ты наш :D Мы не забудем твой Тоторо-замок

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


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

...

Ну а в целом респект за первую программу, надеюсь автор ее не забросит, модернизирует и сделает супер-пупер куллхакерц систему защиту :smile9:

Вот @Totoro растет подрастающее поколение, тебе уже точно можно идти на пенсию, ветеран ты наш :D Мы не забудем твой Тоторо-замок

 

 

"10/10/2014"

Эхехе, давненько я её написал. Старость не радость.  :lol:

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


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

Пароль "RXZlcnlib2R5". Как его в карту записать?

 

Построил, а регать где? :(

https://imgur.com/a/dtOS7

http://computercraft.ru/topic/2247-programma-dlia-raboty-s-rfid-kartami-opensecurity/ посмотри тут есть writer.lua

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

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


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

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

1. Объявляй локальные ​переменные и давай им четкие названия:

c = require'component'
gpu = require'component'.gpu
->
local comp = require("component")
local gpu = comp.gpu


​2. Используй локальные функции. При программировании больших программ (я например: 200+ строк) это очень сильно поможет:

local function Draw()
 gpu.setBackground(0xFFFF00)
 gpu.fill(1,1,24,5," ")
 gpu.setBackground(0xBDBDBD)
 gpu.set(5,3,"                ")
 gpu.setForeground(0xFFFF00)
 gpu.set(5,3,"Проведите карту.")
end

​3.Используй отступления (пример не очень, т.к. лучше использовать логические выражения. кто-то писал на форуме):

...
if type == "magData" then
h = 1
else
h = 0
end
...
->
if type == "magData" then
 h = 1
else
 h = 0
end

Ну и на последок: лучше избегать бесконечные циклы. Так-же лучше выносить в отдельную переменную числа, строки и т.п. (в данной программе, пароль, т.е. string) в начало кода программы, что-бы конечному пользователю было проще ее настроить.

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

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


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

 

 

автор уже больше года не появлялся на форуме.

все-же другим новичкам будет полезно.

  • Like 1

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


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

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×