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

IgnorGTO

Пользователи
  • Публикации

    10
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные пользователем IgnorGTO


  1. 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

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

     


  3. В 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

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


  4. 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

     

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