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

Массивы Lua

Вопрос

Здравствуйте, форумчане! Прошу помощи, я с другом решили создать сборник программ. И решили сделать вход по никам. Мой друг-*программист*, сказал что нужно делать через массивы, загуглил, попробовал сам, не получилось, попробовал друг, тоже не получилось. Прошу помочь:)


g.setForeground(COLOR1)
Bar.Word(mid - 24,7, "BARAPAD", 0x222222)
Bar.MidR(WIGHT,32,"Введите пароль:")
term.setCursor(mid-2,33)
local p, nick = Bar.Read({mask = "*", max = 8, accept = "0-9a-f", blink = true, center = true, nick = true})
if p==Bar.PASSES then
if nick ==Bar.NICK  then
login = true
Bar.MidR(WIGHT,33,"Приветствую, " .. nick)
computer.addUser(nick)
os.sleep(2)
Bar.ClearL(HEIGHT)
Bar.ClearR(WIGHT,HEIGHT)
Rules(nick)
Table()
end
end

--=========МАССИВЫ========== Bar.NICK = {"Barawik_", "InfinityDark", "alexowe", "Muronuch"} Bar.PASSES = {"11042005","darks", "owes", "2288"}



*подробности, где в начале стоит "Bar" это подключенная библиотека. Вопросы можете отписать здесь или в http://vk.me/k.i.r.i.l.l.gorodilov*

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


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

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

  • 0

@Barawik_ Код желательно оформлять тегом "код" и, если потребуется, уже в таком виде прятать под спойлер.

Тег "код" позволит сохранить отступы, и читать правильно оформленный код другим людям станет заметно легче.

 

Кроме того, опубликован не весь код, а лишь его часть. Не ясно, например, как устроена таблица Bar. Она из какой-то библиотеки?

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


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

@Barawik_ Код желательно оформлять тегом "код" и, если потребуется, уже в таком виде прятать под спойлер.

Тег "код" позволит сохранить отступы, и читать правильно оформленный код другим людям станет заметно легче.

 

Кроме того, опубликован не весь код, а лишь его часть. Не ясно, например, как устроена таблица Bar. Она из какой-то библиотеки?

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

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


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

Мой друг-*программист*, сказал что нужно делать через массивы, загуглил, попробовал сам, не получилось, попробовал друг, тоже не получилось. Прошу помочь:)

если честно то вообще не понятно с чем нужна помощь? С массивами?

вот простейший пример массива:

t = {"красный", "зеленый", "синий"} -- создаем массив
print (t[2]) -- выводим второй элемент массива
все работает :)

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


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

если честно то вообще не понятно с чем нужна помощь? С массивами?

вот простейший пример массива:


t = {"красный", "зеленый", "синий"} -- создаем массив
print (t[2]) -- выводим второй элемент массива
все работает :)

Смотри,  а мне нужно чтобы программа сравнивала введеный пароль например: 1234, и если в массиве есть такой же пароль, то он отключает авторизацию и идет дальше D

 

 

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


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

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

Тогда возможны другие варианты:

1) Описать каждый из использованных методов библиотеки и какие-то принципы её работы;

2) Написать эквивалентный код, не использующий библиотеку;

3) Написать простейший пример кода, не решающий полную задачу, но отражающий лишь суть возникшей проблемы.

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


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

Смотри,  а мне нужно чтобы программа сравнивала введеный пароль например: 1234, и если в массиве есть такой же пароль, то он отключает авторизацию и идет дальше D

 

 

для хранения пар "имя":"пароль" создаешь таблицу таблиц, некий аналог хешей в Перл

вот набросал простейший пример иллюстрирующий такое:

p = {nick = {}}
p["nick1"] = "pass1"
p["nick2"] = "pass2"

print ("логин:")
nick = io.read()
print ("пароль:")
pass = io.read()

if p[nick] == pass then
  print ("ура вы вошли")
else
  print ("облом")
end

 

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

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


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

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

Нужно проверять только пароль, или пару логин-пароль?

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


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

Нужно проверять только пароль, или пару логин-пароль?

 Пароль и логин.

 

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


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

для хранения пар "имя":"пароль" создаешь таблицу таблиц, некий аналог хешей в Перл

вот набросал простейший пример иллюстрирующий такое:


p = {nick = {}}
p["nick1"] = "pass1"
p["nick2"] = "pass2"

print ("логин:")
nick = io.read()
print ("пароль:")
pass = io.read()

if p[nick] == pass then
  print ("ура вы вошли")
else
  print ("облом")
end

 

Попробовал ваш пример, не работает, все идет один облом, или мб облом, из-за того что я кинул данные в библиотеку?..

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


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

Попробовал ваш пример, не работает, все идет один облом, или мб облом, из-за того что я кинул данные в библиотеку?..

проверял тут

https://repl.it/repls/GleefulExperiencedSymbols

все работает

но это лишь пример, под конкретную программу нужно наверняка что то править...

 

чтобы в моем примере пройти проверку нужно вводить

логин:

nick1

пароль:

pass1

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

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


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

проверял тут

https://repl.it/repls/GleefulExperiencedSymbols

все работает

но это лишь пример, под конкретную программу нужно наверняка что то править...

 

чтобы в моем примере пройти проверку нужно вводить

логин:

nick1

пароль:

pass1


Попробую чуть-чуть переделать.

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


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


Попробую чуть-чуть переделать. 

применительно к твоему коду возможно можно сделать так:

g.setForeground(COLOR1)
Bar.Word(mid - 24,7, "BARAPAD", 0x222222)
Bar.MidR(WIGHT,32,"Введите пароль:")
term.setCursor(mid-2,33)

baza = {name = {}} -- создаем массив для базы паролей
baza["user1"] = "pass1" -- вносим в базу пользователя с логином и паролем user1:pass1

local p, nick = Bar.Read({mask = "*", max = 8, accept = "0-9a-f", blink = true, center = true, nick = true})

if baza[nick] == p then -- проверяем на соответствие пароля и имени, если совпадают то вуаля
    login = true
    Bar.MidR(WIGHT,33,"Приветствую, " .. nick)
    computer.addUser(nick)
    os.sleep(2)
    Bar.ClearL(HEIGHT)
    Bar.ClearR(WIGHT,HEIGHT)
    Rules(nick)
    Table()
end

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

Bar.Read как я понял вводит пароль и присваивает его переменной p?

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


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

применительно к твоему коду возможно можно сделать так:


g.setForeground(COLOR1)
Bar.Word(mid - 24,7, "BARAPAD", 0x222222)
Bar.MidR(WIGHT,32,"Введите пароль:")
term.setCursor(mid-2,33)

baza = {name = {}} -- создаем массив для базы паролей
baza["user1"] = "pass1" -- вносим в базу пользователя с логином и паролем user1:pass1

local p, nick = Bar.Read({mask = "*", max = 8, accept = "0-9a-f", blink = true, center = true, nick = true})

if baza[nick] == p then -- проверяем на соответствие пароля и имени, если совпадают то вуаля
    login = true
    Bar.MidR(WIGHT,33,"Приветствую, " .. nick)
    computer.addUser(nick)
    os.sleep(2)
    Bar.ClearL(HEIGHT)
    Bar.ClearR(WIGHT,HEIGHT)
    Rules(nick)
    Table()
end

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

Bar.Read как я понял вводит пароль и присваивает его переменной p?


Смотри, Bar.Read как io.Read, только чуть-чуть переделанная под программу. Так-же присваивает паролю p, а логину nick


А Bar.PASSES и Bar.NICKS - базы паролей и ников.

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


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


Смотри, Bar.Read как io.Read, только чуть-чуть переделанная под программу. Так-же присваивает паролю p, а логину nick


А Bar.PASSES и Bar.NICKS - базы паролей и ников.

ну что, удалось прикрутить авторизацию, или что то таки не получается?

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


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

А Bar.PASSES и Bar.NICKS - базы паролей и ников.

А почему выбран именно такой способ хранения пар логин-пароль?

@Ingr использует более удобный способ. Он и памяти меньше требует, и код, использующий данные, более компактен.

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


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

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

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

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

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

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

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

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

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


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