Перейти к публикации
  • 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
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

@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
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 использует более удобный способ. Он и памяти меньше требует, и код, использующий данные, более компактен.

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


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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

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

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

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


×