Хорошо, я буду честен, я ничего не знаю о lua, лучшее, что я могу сделать, это скопировать некоторые вещи и изменить их, когда мне это нужно. В настоящее время у меня возникает проблема, когда консоль отладки сообщает мне следующее:
lua: [string "<eval>"]:41: bad argument #1 to 'random' (interval is empty)
stack traceback:
[C]: in function 'random'
[string "<eval>"]:41: in main chunk
Это мой код (я знаю, что он не оптимизирован):
local x = math.random(1,1000000000)
local keyLength = 0
local lowerCase = ""
local upperCase = ""
local numbers = ""
local characterSet = ""
local output = ""
repeat
math.randomseed(x * os.time())
print('Length?')
resp1 = io.read():lower()
print('Lower case?')
resp2 = io.read():lower()
print('Upper case?')
resp3 = io.read():lower()
print('Numbers?')
resp4 = io.read():lower()
if resp1 ~= '0' or nil then
keyLength = resp1
elseif resp2 == 'yes' then
lowerCase = "abcdefghijklmnopqrstuvwxyz"
characterSet = characterSet..lowerCase
elseif resp3 == 'yes' then
upperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
characterSet = characterSet..upperCase
elseif resp4 == 'yes' then
numbers = "0123456789"
characterSet = characterSet..numbers
end
for i = 1, keyLength do
local rand = math.random(#characterSet)
output = output.. string.sub(characterSet, rand, rand)
end
print("Code is " .. output)
print("Repeat?")
resp5 = io.read():lower()
if resp5 == 'yes' then
for i = 1, keyLength do
local rand = math.random(#characterSet)
output = output.. string.sub(characterSet, rand, rand)
end
print("Code is ".. output)
elseif resp5 == 'no' then
lowerCase = "abcdefghijklmnopqrstuvwxyz"
upperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
numbers = "0123456789"
keyLength = 0
else
print("Please enter 'Yes' or 'No'")
end
until false
Я считаю, что проблема единственной проблемой является пустая строка characterSet, так как она работала раньше, за исключением того, что мне приходилось исправлять проблему с неправильной настройкой параметров.
Правка: я нашел способ ее решить; фига.