IgnorGTO
-
Публикации
10 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные пользователем IgnorGTO
-
-
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', }
но не совсем понял как с ним работать
-
если после ифа для ведения лога кто пытался открыть дверь
спасибо за помощь теперь буду думать над конструкцией добавления 2 и более дверей -
В 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
вроде работает
-
В 12.02.2023 в 14:25, Oleshe сказал:Зачем ты делаешь функций, которые вызываются 1 раз? для био предлагаю сделать проще:
for i = 1,#userlist doif 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
К сожалению данный код не работоспособен вот проверка
-
8 часов назад, Oleshe сказал:Большое спасибо очень помогли
чуток модифицировал все работает пока что )
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
-
3 часа назад, Oleshe сказал:Запятые бы ставил... Ну тоесть ты запускаешь программу, тыкаешь на блок и выводит на экран uid і конец?
+
-
36 минут назад, serafim сказал:Что за мод ?
opensecurity
-
9 часов назад, Oleshe сказал:В чем должен быть смысл кода?
Просто считать uid пользователя не как не получается сделать это на версии 1.12.2
-
Подскажите пожалуйста простенький кодик для использования BiometricReader

BiometricReader
в Компоненты
Опубликовано:
Сори чуток ошибся 'био-1', ',био-2' исправил