Files
UniversalSynSaveInstance/Tools/NotScriptable-Related/NotScriptable Dumper/NotScriptable Dumper.luau
2024-06-03 16:45:52 +02:00

86 lines
2.1 KiB
Lua

-- ! Meant for Studio
local GlobalSettings, GlobalBasicSettings = settings(), UserSettings()
local service = setmetatable({}, {
__index = function(self, index)
local Service = game:GetService(index)
or GlobalSettings:GetService(index)
or GlobalBasicSettings:GetService(index)
self[index] = Service
return Service
end,
})
service.HttpService.HttpEnabled = true
local function ArrayToDictionary(Table, HybridMode, ValueOverride)
local tmp = {}
if HybridMode == "adjust" then
for Some1, Some2 in Table do
if type(Some1) == "number" then
tmp[Some2] = ValueOverride or true
elseif type(Some2) == "table" then
tmp[Some1] = ArrayToDictionary(Some2, "adjust") -- Some1 is Class, Some2 is Name
else
tmp[Some1] = Some2
end
end
else
for _, Key in Table do
if type(Key) == "string" then
tmp[Key] = true
end
end
end
return tmp
end
local s = "\n"
do
local function FetchAPI()
local API_Dump_Url =
"https://raw.githubusercontent.com/MaximumADHD/Roblox-Client-Tracker/roblox/Mini-API-Dump.json"
local API_Dump = service.HttpService:GetAsync(API_Dump_Url, true)
local API_Classes = service.HttpService:JSONDecode(API_Dump).Classes
for _index_0 = 1, #API_Classes do
local API_Class = API_Classes[_index_0]
local ClassName = API_Class.Name
local ClassMembers = API_Class.Members
local prevsiz = #s
for _index_1 = 1, #ClassMembers do
local Member = ClassMembers[_index_1]
local MemberName = Member.Name
local MemberType = Member.MemberType
if MemberType == "Property" then
local Serialization = Member.Serialization
local MemberTags = Member.Tags
local Special
if MemberTags then
MemberTags = ArrayToDictionary(MemberTags)
Special = MemberTags.NotScriptable
end
if Serialization.CanLoad and Serialization.CanSave and Special then
local ValueType = Member.ValueType.Name
s ..= ClassName .. "." .. MemberName .. (ValueType == "BinaryString" and " {BinaryString}" or "") .. "\n"
end
end
end
if prevsiz ~= #s then
s ..= "\n"
end
end
end
local ok, result = pcall(FetchAPI)
if ok then
print(s)
else
warn(result)
end
end