local Target = game:GetService("Workspace") --SELECT YOUR TARGET local Output = "-- Generated automatically\nlocal create = Instance.new\nlocal refs = {}\n\n" local blacklist = { ["TouchTransmitter"] = true, ["Camera"] = true, ["Terrain"] = true, ["Workspace"] = true, ["Status"] = true, ["ManualWeld"] = true, ["Weld"] = true, ["Motor6D"] = true, ["Snap"] = true } local defaultCache = {} local function cleanValue(val) if typeof(val) == "string" then return '"' .. val .. '"' elseif typeof(val) == "Vector3" then return "Vector3.new(" .. tostring(val) .. ")" elseif typeof(val) == "Vector2" then return "Vector2.new(" .. tostring(val) .. ")" elseif typeof(val) == "CFrame" then return "CFrame.new(" .. tostring(val) .. ")" elseif typeof(val) == "Color3" then return "Color3.new(" .. tostring(val) .. ")" elseif typeof(val) == "BrickColor" then return "BrickColor.new(\"" .. tostring(val) .. "\")" elseif typeof(val) == "UDim2" then return "UDim2.new(" .. tostring(val) .. ")" elseif typeof(val) == "UDim" then return "UDim.new(" .. tostring(val) .. ")" elseif typeof(val) == "NumberRange" then return "NumberRange.new(" .. val.Min .. ", " .. val.Max .. ")" elseif typeof(val) == "EnumItem" then return tostring(val) elseif typeof(val) == "Instance" then return "nil" end return tostring(val) end local function getProperties(className) local props = {} if className == "Part" or className == "SpawnLocation" then props = {"Name", "Size", "CFrame", "BrickColor", "Shape", "CanCollide", "Anchored", "Material", "Transparency", "CastShadow"} elseif className == "MeshPart" or className == "WedgePart" or className == "CornerWedgePart" then props = {"Name", "Size", "CFrame", "BrickColor", "CanCollide", "Anchored", "Material", "Transparency", "CastShadow"} elseif className == "Decal" or className == "Texture" then props = {"Name", "Texture", "Face", "Transparency", "Color3"} elseif className == "SpecialMesh" then props = {"Name", "MeshId", "TextureId", "MeshType", "Scale", "Offset"} elseif className == "PointLight" or className == "SpotLight" or className == "SurfaceLight" then props = {"Name", "Color", "Brightness", "Range", "Enabled", "Shadows"} elseif className == "Sound" then props = {"Name", "SoundId", "Volume", "PlaybackSpeed", "Playing", "Looped", "PlayingOffset", "RollOffMaxDistance", "RollOffMinDistance", "RollOffMode"} elseif className == "Shirt" then props = {"Name", "ShirtTemplate"} elseif className == "Pants" then props = {"Name", "PantsTemplate"} elseif className == "BodyColors" then props = {"Name", "HeadColor3", "LeftArmColor3", "LeftLegColor3", "RightArmColor3", "RightLegColor3", "TorsoColor3"} elseif className == "Humanoid" then props = {"Name", "Health", "MaxHealth", "WalkSpeed", "JumpPower", "HipHeight", "DisplayDistanceType", "HealthDisplayType", "NameDisplayDistance", "RigType"} elseif className == "SurfaceGui" or className == "BillboardGui" then props = {"Name", "Enabled", "Active", "AlwaysOnTop", "LightInfluence", "MaxDistance", "Size", "StudsOffset", "Adornee", "Face"} elseif className == "Frame" then props = {"Name", "Visible", "Size", "Position", "BackgroundColor3", "BackgroundTransparency", "BorderSizePixel", "BorderColor3", "AnchorPoint", "ZIndex"} elseif className == "TextLabel" or className == "TextButton" or className == "TextBox" then props = {"Name", "Visible", "Size", "Position", "BackgroundColor3", "BackgroundTransparency", "BorderSizePixel", "BorderColor3", "AnchorPoint", "ZIndex", "Text", "TextColor3", "TextSize", "Font", "TextScaled", "TextTransparency", "TextStrokeColor3", "TextStrokeTransparency", "TextXAlignment", "TextYAlignment"} elseif className == "ImageLabel" or className == "ImageButton" then props = {"Name", "Visible", "Size", "Position", "BackgroundColor3", "BackgroundTransparency", "BorderSizePixel", "BorderColor3", "AnchorPoint", "ZIndex", "Image", "ImageColor3", "ImageTransparency", "ScaleType", "SliceCenter", "SliceScale"} elseif className == "UIAspectRatioConstraint" then props = {"Name", "AspectRatio", "AspectType", "DominantAxis"} elseif className == "UICorner" then props = {"Name", "CornerRadius"} elseif className == "UIGradient" then props = {"Name", "Color", "Transparency", "Enabled", "Rotation", "Offset"} elseif className == "UIStroke" then props = {"Name", "Color", "Thickness", "Transparency", "ApplyStrokeMode", "LineJoinMode", "Enabled"} elseif className == "UIPadding" then props = {"Name", "PaddingBottom", "PaddingLeft", "PaddingRight", "PaddingTop"} elseif className == "UIListLayout" or className == "UIGridLayout" then props = {"Name", "FillDirection", "HorizontalAlignment", "SortOrder", "VerticalAlignment", "Padding"} else props = {"Name"} end return props end local function getDefaultValue(className, prop) if not defaultCache[className] then defaultCache[className] = {} local success, defaultObj = pcall(function() return Instance.new(className) end) if success and defaultObj then local props = getProperties(className) for _, p in ipairs(props) do pcall(function() defaultCache[className][p] = defaultObj[p] end) end defaultObj:Destroy() end end return defaultCache[className][prop] end local idCounter = 0 local opsCounter = 0 local processedObjects = 0 local totalObjects = 0 local MAX_OPS_PER_FRAME = 1000 local function countObjects(obj) if blacklist[obj.ClassName] or obj:IsA("LuaSourceContainer") or obj:IsA("RemoteEvent") or obj:IsA("RemoteFunction") then return end totalObjects = totalObjects + 1 for _, child in ipairs(obj:GetChildren()) do countObjects(child) end end local function serialize(obj, parentId) if blacklist[obj.ClassName] or obj:IsA("LuaSourceContainer") or obj:IsA("RemoteEvent") or obj:IsA("RemoteFunction") then return end idCounter = idCounter + 1 local currentId = idCounter opsCounter = opsCounter + 1 processedObjects = processedObjects + 1 if opsCounter >= MAX_OPS_PER_FRAME then opsCounter = 0 local percent = math.floor((processedObjects / totalObjects) * 100) print(string.format("Progress: %d%% (%d / %d instances)", percent, processedObjects, totalObjects)) task.wait() end Output = Output .. string.format("v = create(\"%s\")\n", obj.ClassName) Output = Output .. string.format("refs[%d] = v\n", currentId) local props = getProperties(obj.ClassName) for _, prop in ipairs(props) do pcall(function() local currentVal = obj[prop] local defaultVal = getDefaultValue(obj.ClassName, prop) if currentVal ~= defaultVal then Output = Output .. string.format("v.%s = %s\n", prop, cleanValue(currentVal)) end end) end if parentId then Output = Output .. string.format("v.Parent = refs[%d]\n\n", parentId) else Output = Output .. "v.Parent = game:GetService(\"Workspace\")\n\n" end for _, child in ipairs(obj:GetChildren()) do serialize(child, currentId) end end task.spawn(function() print("Counting objects...") for _, child in ipairs(Target:GetChildren()) do if not game:GetService("Players"):GetPlayerFromCharacter(child) then countObjects(child) end end print(string.format("Objects to serialize: %d. Starting dump...", totalObjects)) Output = Output .. "local v\n" for _, child in ipairs(Target:GetChildren()) do if not game:GetService("Players"):GetPlayerFromCharacter(child) then serialize(child, nil) end end Output = Output .. "table.clear(refs)\n" if setclipboard or toclipboard then local clipFunc = setclipboard or toclipboard clipFunc(Output) print("Done! Copied to clipboard.") else print("Done! Clipboard not supported.") end table.clear(defaultCache) end)