Перейти к содержимому
  • 0
IgnorGTO

BiometricReader

Вопрос

Подскажите пожалуйста простенький кодик для использования BiometricReader

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


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

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

25 минут назад, IgnorGTO сказал:

BiometricReader

В чем должен быть смысл кода?

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

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


Ссылка на сообщение
Поделиться на других сайтах
9 часов назад, Oleshe сказал:

В чем должен быть смысл кода?

Просто считать uid пользователя не как не получается сделать это на версии 1.12.2

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


Ссылка на сообщение
Поделиться на других сайтах
10 часов назад, IgnorGTO сказал:

Подскажите пожалуйста простенький кодик для использования BiometricReader

Что за мод ?

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


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

Что за мод ?

opensecurity

 

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


Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, IgnorGTO сказал:

Просто считать uid пользователя не как не получается сделать это на версии 1.12.2

Запятые бы ставил... Ну тоесть ты запускаешь программу, тыкаешь на блок и выводит на экран uid і конец?

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


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

Запятые бы ставил... Ну тоесть ты запускаешь программу, тыкаешь на блок и выводит на экран uid і конец?

+

 

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


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

Прога:

Скрытый текст

while true do a = {require('event').pull('bioReader')} print('Адрес считывателя: '..a[2]..' '..'вроде айди игрока: '..a[3]) end

 

Специально максимально укоротил, если надо могу и расписать.

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


Ссылка на сообщение
Поделиться на других сайтах
8 часов назад, Oleshe сказал:

Прога:

  Скрыть содержимое


while true do a = {require('event').pull('bioReader')} print('Адрес считывателя: '..a[2]..' '..'вроде айди игрока: '..a[3]) end

 

Специально максимально укоротил, если надо могу и расписать.

Большое спасибо очень помогли
чуток модифицировал все работает пока что )
 

print("Server started :", os.date("%a-%b-%Y %H:%M:%S"))
rolldoor = require("component").os_rolldoorcontroller

userlist={
	{"7e4132ac-0f0d-3e7a-b74d-015640e6419c7d","Саша"},
	{"62416a97-e5e2-3172-95de-d0564698a36875","Артур"},
	{"62416a97-e5e2-3172-95de-d0564446326874","Женя"}
}


-- function start()
-- 	a = {require('event').pull('bioReader')} 
-- 	if a[2] == '09a7a689-5f1c-48f4-a7af-61203502f84a' then
-- 		user_name = 'Неизвестный'
-- 		user_uid = a[3]
-- 		data = {user_name, user_uid}
-- 	else 
-- 		data = bio()
-- 	end

-- 	return data
-- end


function bio()
	a = {require('event').pull('bioReader')}  
		print(a[1], a[2], a[3])
		for i,_ in ipairs(userlist) do 
	    user_name = userlist[i][2]
	    user_uid = userlist[i][1] 
		    if a[3] == user_uid then
		    	data = {user_name, user_uid}
		    	door()
		    end
		end

	return data
end


function door()
	--dorr = require("component").os_dorcontroller
	--dorr.toggle()
	rolldoor.toggle()
	os.sleep(3)
	rolldoor.toggle()
end


while true do bio()
	user_name = data[1]
	user_uid = data[2]
	print('Пользователь:',user_name,'ID:',user_uid,'OPEN',os.date("%a-%b-%Y %H:%M:%S"))
end

 

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

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


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

Зачем ты делаешь функций, которые вызываются 1 раз? для био предлагаю сделать проще:
for i = 1,#userlist do

  if userlist == a[3] then

    door()

  end

end

 

А для print использовать наши параметры, и не переназначать на пустые переменные.
print('Пользователь: '..userlist[a[3]]..' ID: '..a[3]..' Открылось в: '.. os.date('%a-%b-%Y %H:%M:%S'))

Закомментированный старт() занимает место на диске, тебе-же она не нужна тебя уже есть био()

Я только заметил какой-же узер лист плохой:
local userlist = {

  ["7e4132ac-0f0d-3e7a-b74d-015640e6419c7d"] = 'Саша',

  ["62416a97-e5e2-3172-95de-d0564698a36875"] = 'Артур',

  ["62416a97-e5e2-3172-95de-d0564446326874"] = 'Женя'

}

тогда userlist[addres] = name, мы сможем сразу по адресу получить имя.

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

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


Ссылка на сообщение
Поделиться на других сайтах
В 12.02.2023 в 14:25, Oleshe сказал:

Зачем ты делаешь функций, которые вызываются 1 раз? для био предлагаю сделать проще:
for i = 1,#userlist do

  if userlist == a[3] then

    door()

  end

end

 

А для print использовать наши параметры, и не переназначать на пустые переменные.
print('Пользователь: '..userlist[a[3]]..' ID: '..a[3]..' Открылось в: '.. os.date('%a-%b-%Y %H:%M:%S'))

Закомментированный старт() занимает место на диске, тебе-же она не нужна тебя уже есть био()

Я только заметил какой-же узер лист плохой:
local userlist = {

  ["7e4132ac-0f0d-3e7a-b74d-015640e6419c7d"] = 'Саша',

  ["62416a97-e5e2-3172-95de-d0564698a36875"] = 'Артур',

  ["62416a97-e5e2-3172-95de-d0564446326874"] = 'Женя'

}

тогда userlist[addres] = name, мы сможем сразу по адресу получить имя.

 

 

for i = 1,#userlist do

  if userlist == a[3] then

    door()

  end

end

К сожалению данный код не работоспособен вот проверка 

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


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

Ну, немного затупил, с кем не бывает.

Теперь я удостоверился что работает, весь код:

Скрытый текст

print("Server started :", os.date("%a-%b-%Y %H:%M:%S"))
local rd = require("component").os_rolldoorcontroller
local database = {
	"7e4132ac-0f0d-3e7a-b74d-015640e6419c7d",
	"62416a97-e5e2-3172-95de-d0564698a36875",
	"62416a97-e5e2-3172-95de-d0564446326874"
}
local userlist={
	["7e4132ac-0f0d-3e7a-b74d-015640e6419c7d"] = "Саша",
	["62416a97-e5e2-3172-95de-d0564698a36875"]= "Артур",
	["62416a97-e5e2-3172-95de-d0564446326874"] ="Женя"
}
while true do
  local a = {require('event').pull('bioReader')}
  for i = 1, #database do
    if database[i] == a[3] then
      user = userlist[database[i]]
      rd.toggle()
      os.sleep(3)
      rd.toggle()
    end
  end
  print('Пользователь:',user,'ID:',a[3],'OPEN',os.date("%a-%b-%Y %H:%M:%S"))
end

 

вроде

Изменено пользователем Oleshe
Очевидный косяк в коде

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


Ссылка на сообщение
Поделиться на других сайтах
В 15.02.2023 в 22:46, Oleshe сказал:

Ну, немного затупил, с кем не бывает.

Теперь я удостоверился что работает, весь код:

  Скрыть содержимое


print("Server started :", os.date("%a-%b-%Y %H:%M:%S"))
local rd = require("component").os_rolldoorcontroller
local database = {
	"7e4132ac-0f0d-3e7a-b74d-015640e6419c7d",
	"62416a97-e5e2-3172-95de-d0564698a36875",
	"62416a97-e5e2-3172-95de-d0564446326874"
}
local userlist={
	["7e4132ac-0f0d-3e7a-b74d-015640e6419c7d"] = "Саша",
	["62416a97-e5e2-3172-95de-d0564698a36875"]= "Артур",
	["62416a97-e5e2-3172-95de-d0564446326874"] ="Женя"
}
while true do
  local a = {require('event').pull('bioReader')}
  for i = 1, #database do
    if database[i] == a[3] then
      user = userlist[database[i]]
      rd.toggle()
      os.sleep(3)
      rd.toggle()
    end
  end
  print('Пользователь:',user,'ID:',a[3],'OPEN',os.date("%a-%b-%Y %H:%M:%S"))
end

 

вроде

Спасибо 

Я тут немного подумал над сокращением

а так будут правильно ?

 

a = '62416a97-e5e2-3172-95de-d0564446326874'
userlist = {
    ["7e4132ac-0f0d-3e7a-b74d-015640e6419c7d"] = "Саша",
	["62416a97-e5e2-3172-95de-d0564698a36875"] = "Артур",
	["62416a97-e5e2-3172-95de-d0564446326874"] = "Женя"
}

if userlist[a] then
    print(userlist[a])
else
    print("NO")
end

вроде работает

 

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

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


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

Я тут немного подумал над сокращением

а так будут правильно ?

Да, че нет то. Это еще лучше, более коротко. Я правда не понимаю зачем после ифа елсе? если оно не напечатало это уже значит что не подошло по условию. А так молодец.

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


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

если после ифа для ведения лога кто пытался открыть дверь

спасибо за помощь теперь буду думать над конструкцией добавления 2 и более дверей

 

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


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

спасибо за помощь теперь буду думать над конструкцией добавления 2 и более дверей

А че там думать? Есть список содержащий наше количество дверей (их адреса) с биосчитывателями также. Аля:
Если этот адрес равен 1-му био значит открываем ту то дверь, если адрес равен 2-му био значит открываем другую дверь.
local bio = {'123','sus'} -- первые 3 буквы адреса

local doors= {'666','103'} -- первые 3 буквы адреса

a= {'4fh498fj276goj3f'} -- адрес био входа евента

for i = 1, #bio do -- для каждого биосканера

  if bio == a then -- если мы нажали на один из них

    cmp.invoke(cmp.get(doors),'toggle') -- обращаемся к соответствующему контроллеру двери

  end

end
а в данном случаи не уид игрока, а адрес био, он даётся при событий. cmp.invoke обращается именно к компоненту с n-ным адресов, cmp.get получаем полный адрес по сокращенному. В "таком" случаи 1-й био сканер должен находиться на 1-й позиций списка, как и его дверь, так-же со 2-ми. Эта конструкция универсальна, добавляй всего сколько хочешь.

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

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


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

А че там думать? Есть список содержащий наше количество дверей (их адреса) с биосчитывателями также. Аля:
Если этот адрес равен 1-му био значит открываем ту то дверь, если адрес равен 2-му био значит открываем другую дверь.
local bio = {'123','sus'} -- первые 3 буквы адреса

local doors= {'666','103'} -- первые 3 буквы адреса

a= {'4fh498fj276goj3f'} -- адрес био входа евента

for i = 1, #bio do -- для каждого биосканера

  if bio == a then -- если мы нажали на один из них

    cmp.invoke(cmp.get(doors),'toggle') -- обращаемся к соответствующему контроллеру двери

  end

end
а в данном случаи не уид игрока, а адрес био, он даётся при событий. cmp.invoke обращается именно к компоненту с n-ным адресов, cmp.get получаем полный адрес по сокращенному. В "таком" случаи 1-й био сканер должен находиться на 1-й позиций списка, как и его дверь, так-же со 2-ми. Эта конструкция универсальна, добавляй всего сколько хочешь.

dorslist={
	['Био-1']="дверь-1",
  	['Био-2']="дверь-1",
  	['Био-1']="дверь-2",
  	['Био-2']="дверь-2",
}

Думал так попробовать так как у 1 двери стоит 2 био

Ещё где-то видел пример 
 

dorslist={
	{'био-1', ',био-2'}='дверь-1',
  	{'био-1', ',био-2'}='дверь-2',
}

но не совсем понял как с ним работать

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

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


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

dorslist={
	['Био-1']="дверь-1",
  	['Био-2']="дверь-1",
  	['Био-1']="дверь-2",
  	['Био-2']="дверь-2",
}

Думал так попробовать так как у 1 двери стоит 2 био

Да, опять придумал как сделать короче. Хорош.

 

13 минуты назад, IgnorGTO сказал:

dorslist={
	{'био-1', ',bj-2'}='дверь-1',
  	{'био-1', ',bj-2'}='дверь-2',
}

но не совсем понял как с ним работать

Ну, я тоже ;Р. пазл бы сошелся если бы знал что за bj.

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

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


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

Да, опять придумал как сделать короче. Хорош.

 

Ну, я тоже ;Р. пазл бы сошелся если бы знал что за bj.

Сори чуток ошибся 'био-1', ',био-2' исправил

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


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

Сори чуток ошибся 'био-1', ',био-2' исправил

Имел в виду что за bj-2, тип строка, рядом со этим био в списке.

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

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


Ссылка на сообщение
Поделиться на других сайтах
17 часов назад, IgnorGTO сказал:

Сори чуток ошибся 'био-1', ',био-2' исправил

Тяк, ну смотри, тут у нас 2 био привязаны к 1-й дери.
Не правильно построил список, список никак не может быть именем переменной.
В общем:
У нас есть список в котором био, у на сесть двери, по той схеме их никак не связать. Зачем искать 2-е решение проблемы если есть 1-е.
Можно что-то такое:
 {{door1 = {bio1, bio2}, door2 = {bio2, bio3}| на пример.

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

local address= {{'126','102'},{'abc','hui'}} -- адресса
local cmp = require('component')
local a = '3r6i45g-1fefrh24-tr2hh2rtg-2wkkkosg-23yhqfg2' -- 2-й аргумент события
for i = 1, #address do -- для каждой двери
  for e = 1, #address[i] do -- для каждого био от двери
    if cmp.get(address[i][e]) == a then -- если они одинаковые
      cmp.invoke(cmp.get(address[i]),'toggle') -- открываем дверь деверь првязаную к био
    end
  end
end

Тогда в 1-м списке адресов будет 1-я дверь, к ней относятся био, их может быть сколько угодно. Это даже оптимизирование и быстрее редактируется.

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


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

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

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

Гость
Ответить на вопрос...

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

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

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

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

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


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