
KeylessUniversal

--[[
Created By Quren (Discord: fuckyougitler)
]]
function readTable(tbl, saveToFile, forcedPrint, tblName)
maxLines = 500 -- Maximum output (without saving the file) is <<500>> lines with all existing lines stay in console.
tblName = tblName or "UnNamed"
local buffer = {}
local function generateOutput(tbl, prefix)
if type(tbl) ~= "table" then
table.insert(buffer, {type = 'print', text = "Value: " .. tostring(tbl)})
return
end
prefix = prefix or ""
local numValueKeys, otherValueKeys, tableKeys = {}, {}, {}
for k, v in pairs(tbl) do
if type(v) == "table" then
table.insert(tableKeys, k)
elseif type(k) == "number" then
table.insert(numValueKeys, k)
else
table.insert(otherValueKeys, k)
end
end
table.sort(numValueKeys) -- numbers sort
table.sort(otherValueKeys) -- letters sort
table.sort(tableKeys, function(a, b) return tostring(a) < tostring(b) end) -- tables sort
local sortedKeys = {}
for _, k in ipairs(numValueKeys) do table.insert(sortedKeys, k) end
for _, k in ipairs(otherValueKeys) do table.insert(sortedKeys, k) end
for _, k in ipairs(tableKeys) do table.insert(sortedKeys, k) end
for i, key in ipairs(sortedKeys) do
local value = tbl[key]
local isLast = (i == #sortedKeys)
local isTable = type(value) == "table"
local branch = isTable and "└── " or "┃ "
local line = prefix .. branch .. '"' .. tostring(key) .. '"'
if isTable then
line = prefix .. branch .. tostring(key)
table.insert(buffer, {type = 'warn', text = line})
local newPrefix = prefix .. (isLast and " " or "╲ ")
generateOutput(value, newPrefix)
else
local formattedLine = string.format("%s | %s | (%s)", line, tostring(value), typeof(value))
table.insert(buffer, {type = 'print', text = formattedLine})
end
task.wait()
end
end
local t = os.clock()
print("\n\n//--- Reading '" .. tblName .. "' Table..")
generateOutput(tbl, prefix or " ")
print("//--- Table read in", os.clock() - t, "!")
local function printAll()
warn("//----------- ", tblName)
for _, entry in ipairs(buffer) do
if entry.type == 'warn' then
warn(entry.text)
else
print(entry.text)
end
task.wait()
end
warn("//-------------------------------------------------------------------------------------------------------------------------\n\n")
end
if #buffer > maxLines or saveToFile then
if makefolder and isfile and writefile then
local content = {}
for _, entry in ipairs(buffer) do
table.insert(content, entry.text)
end
local extension = ".txt"
local counter = 0
local fileName = string.format("%s.txt", tblName)
makefolder("./ReadTable")
while isfile("./ReadTable/" .. fileName) do
counter = counter + 1
fileName = string.format("%s_%d%s", tblName, counter, extension)
end
local filename = fileName
writefile("./ReadTable/" .. filename, table.concat(content, "\n"))
if forcedPrint then
printAll()
end
warn("Output (" .. #buffer .. " lines), written to: [WorkspaceFolder]/Quake/ReadTable/" .. filename)
return
else
warn("Your Exploit doesnt support file saves. Printing table in 10 seconds..")
task.wait(10)
end
end
printAll()
end
-- example:
local tbl = {
[1] = true,
[3] = "Hello World!",
[6] = 6.7,
["JustTable"] = {
[3] = "f",
["JustTable2"] = {
["ImTired"] = true,
["Roblox"] = false,
},
[1] = "eg",
[2] = 999.43,
},
[7] = 8,
[4] = "A",
[2] = false,
[5] = 120000003024304,
}
readTable(tbl, true, true, "Example")



You aren't the first one to do this, a million other people have done this, and the Hidden Dumper game also did this for MoonSec V3
@wjGQiwhUsbUsi9 Okay, so what? Is there any law prohibiting me from making and uploading this script?
@Quren Yeah there is, it is called the "Roblox TOS"
@wjGQiwhUsbUsi9 You are currently sitting on the Roblox scripting platform and I see one script in your profile, it's not for you to talk about Roblox TOS.
@wjGQiwhUsbUsi9 By that logic, every FPS unlocker, auto-clicker, or even Discord overlay should get people banned. Roblox doesn’t care about harmless tools, and neither should you. Go find a real problem.
Why does it matter to @wjGQiwhUsbUsi92 you decide to click on website and find it here
You know it's a exploiting/scirpting website @wjGQiwhUsbUsi9
@gubby_13 We already have script like these, we don't need a million other ones.
So? Why does it bother you so much it's scirpts it's scirptblox you upload scirpts here
“we got scripts like these we dont need a million more” mf acting like every script isnt the same for every single game @wjGQiwhUsbUsi9
@gubby_13 It doesn't even structure it properly like how Hidden Dumper does. This script: ┃ "1" | true | (boolean) And this is hidden dumper {true}
you think every hidden dumper follow the same structure no dumbas they all different
why does a simple scirpt bother you so much?
If you know so much then why not you make one 😭
@gubby_13 I already have one.
Then why does a scirpt bother you? Even if doesn't follow like other dumper it's still work right?
Show me you already have one
aslong as it works who cares if its the same
yo shi got too much notes nbdy it's finna understand when u got 90% notes 10% actual code
why does it matter if the scirpt owner don't forum his correctly like other dumper? Please tell me.
@gubby_13 So you can swap other tables with your own, and Hidden Dumper structure is way more readable.
@gubby_13 The notes (comments) are there to make code more readable.
No? Because idk why your complaining over a scirpt that doesn't even matgee
how does notes make the code more readable dumbas ur just making the code more messier and not organizing your overfilling notes and it's a * dump stop getting so triggered over something
there's beef in the comments willd
@YellowGreg These beefs are gonna drive me crazy soon