I made a module, that when called will get some random challenges. However, sometimes, (Rarely though) the script will fail for some reason, and i made it so that if it is not successful it will give a warning:
function DailyChallenges.GetRandomChallenges(number)
local keyset = {}
for k, value in pairs(challenges) do
if value.enabled == true then
table.insert(keyset, k)
end
end
if number > #keyset then
number = #keyset
end
-- now you can reliably return a random key
local randomChallenges = {}
local usedNumbers = {}
while #usedNumbers < number do
local randomNumber = math.random(1, #keyset)
if not table.find(usedNumbers, randomNumber) then
local elem = {
total = 0,
completed = false,
}
randomChallenges[keyset[randomNumber]] = elem
table.insert(usedNumbers, randomNumber)
else
print(usedNumbers, randomNumber)
warn("Random number is not a part of used Numbers!")
end
end
return randomChallenges
end
This is what i use to call the function:
challenges["Daily"] = DailyChallenges.GetRandomChallenges(3)
As you can see, the warn is here: (in the first script)
if not table.find(usedNumbers, randomNumber) then
local elem = {
total = 0,
completed = false,
}
randomChallenges[keyset[randomNumber]] = elem
table.insert(usedNumbers, randomNumber)
else
print(usedNumbers, randomNumber)
warn("Random number is not a part of used Numbers!")
end
When i am warned, i only get 2 quests instead of the three i sent for.
Any help would be great :)
