
Keyless

local LocalPlayer = game:GetService("Players").LocalPlayer
local propsToSkip = {Parent = true, ClassName = true}
local commonProps = {
"Name", "Visible", "Size", "Position", "Rotation", "AnchorPoint",
"BackgroundColor3", "BackgroundTransparency", "BorderSizePixel", "BorderColor3",
"ZIndex", "ClipsDescendants", "LayoutOrder",
"Text", "TextColor3", "TextTransparency", "TextSize", "TextScaled", "TextWrapped",
"Font", "TextXAlignment", "TextYAlignment", "ClearTextOnFocus", "MultiLine", "PlaceholderText",
"Image", "ImageColor3", "ImageTransparency", "ImageRectOffset", "ImageRectSize", "ScaleType",
"CornerRadius", "Color", "Thickness", "ApplyStrokeMode", "LineJoinMode",
"CanvasSize", "ScrollBarThickness", "ScrollBarImageColor3",
"FillDirection", "HorizontalAlignment", "VerticalAlignment", "SortOrder", "Padding",
"CellSize", "CellPadding"
}
local function serVal(v, ind)
ind = ind or 0
local t = typeof(v)
if t == "string" then return string.format("%q", v)
elseif t == "number" or t == "boolean" then return tostring(v)
elseif t == "nil" then return "nil"
elseif t == "Vector3" then return string.format("Vector3.new(%s,%s,%s)", v.X, v.Y, v.Z)
elseif t == "Vector2" then return string.format("Vector2.new(%s,%s)", v.X, v.Y)
elseif t == "CFrame" then
local c = {v:GetComponents()}
return string.format("CFrame.new(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)", table.unpack(c))
elseif t == "Color3" then return string.format("Color3.fromRGB(%d,%d,%d)", math.floor(v.R*255+0.5), math.floor(v.G*255+0.5), math.floor(v.B*255+0.5))
elseif t == "BrickColor" then return string.format("BrickColor.new(%q)", v.Name)
elseif t == "UDim" then return string.format("UDim.new(%s,%s)", v.Scale, v.Offset)
elseif t == "UDim2" then return string.format("UDim2.new(%s,%s,%s,%s)", v.X.Scale, v.X.Offset, v.Y.Scale, v.Y.Offset)
elseif t == "Rect" then return string.format("Rect.new(%s,%s,%s,%s)", v.Min.X, v.Min.Y, v.Max.X, v.Max.Y)
elseif t == "NumberRange" then return string.format("NumberRange.new(%s,%s)", v.Min, v.Max)
elseif t == "NumberSequence" then
local p = {}
for _, k in ipairs(v.Keypoints) do
table.insert(p, string.format("NumberSequenceKeypoint.new(%s,%s,%s)", k.Time, k.Value, k.Envelope))
end
return "NumberSequence.new({" .. table.concat(p, ",") .. "})"
elseif t == "ColorSequence" then
local p = {}
for _, k in ipairs(v.Keypoints) do
table.insert(p, string.format("ColorSequenceKeypoint.new(%s,Color3.new(%s,%s,%s))", k.Time, k.Value.R, k.Value.G, k.Value.B))
end
return "ColorSequence.new({" .. table.concat(p, ",") .. "})"
elseif t == "EnumItem" then return string.format("Enum.%s.%s", tostring(v.EnumType), v.Name)
elseif t == "Font" then return string.format("Font.new(%q,%s,%s)", v.Family, tostring(v.Weight), tostring(v.Style))
elseif t == "table" then
local p = {}
for k, val in pairs(v) do
local key
if type(k) == "string" and k:match("^[%a_][%w_]*$") then key = k .. "="
elseif type(k) == "number" then key = "[" .. k .. "]="
else key = "[" .. serVal(k, 0) .. "]=" end
table.insert(p, key .. serVal(val, ind + 1))
end
return "{" .. table.concat(p, ",") .. "}"
end
return "nil"
end
local classCounters = {}
local function getVarName(inst)
local className = inst.ClassName
classCounters[className] = (classCounters[className] or 0) + 1
local count = classCounters[className]
if count == 1 then
return className
else
return className .. "_" .. (count - 1)
end
end
local function isUI(inst)
return inst:IsA("GuiObject") or inst:IsA("UIComponent") or inst:IsA("UIGridStyleLayout") or inst:IsA("UIConstraint") or inst:IsA("UIBase")
end
local function serInstProps(inst, var)
local lines = {}
local propNames = {}
local propSet = {}
local ok, list = pcall(function() return inst:GetProperties() end)
if ok and type(list) == "table" then
for _, pi in ipairs(list) do
if not propsToSkip[pi.Name] and pi.CanSave then
propSet[pi.Name] = true
table.insert(propNames, pi.Name)
end
end
end
for _, pName in ipairs(commonProps) do
if not propSet[pName] and not propsToSkip[pName] then
local o, _ = pcall(function() return inst[pName] end)
if o then
propSet[pName] = true
table.insert(propNames, pName)
end
end
end
for _, n in ipairs(propNames) do
local o, val = pcall(function() return inst[n] end)
if o and val ~= nil then
local def = nil
local o2, di = pcall(function() return Instance.new(inst.ClassName) end)
if o2 then
local o3, dv = pcall(function() return di[n] end)
if o3 then def = dv end
di:Destroy()
end
if def == nil or tostring(val) ~= tostring(def) then
local o4, s = pcall(serVal, val, 0)
if o4 then
table.insert(lines, var .. "." .. n .. " = " .. s)
end
end
end
end
return table.concat(lines, "\n")
end
local function convert(gui)
classCounters = {}
local instances = {}
local map = {}
local function collect(inst)
local var = getVarName(inst)
map[inst] = var
table.insert(instances, inst)
for _, ch in ipairs(inst:GetChildren()) do
if isUI(ch) then
collect(ch)
end
end
end
for _, ch in ipairs(gui:GetChildren()) do
if isUI(ch) then
collect(ch)
end
end
local codeLines = {}
table.insert(codeLines, "local UserInputService = game:GetService(\"UserInputService\")")
table.insert(codeLines, "local ScreenGui = Instance.new(\"ScreenGui\")")
for _, inst in ipairs(instances) do
table.insert(codeLines, "local " .. map[inst] .. " = Instance.new(" .. string.format("%q", inst.ClassName) .. ")")
end
table.insert(codeLines, "")
table.insert(codeLines, "ScreenGui.Name = " .. string.format("%q", gui.Name))
table.insert(codeLines, "ScreenGui.Parent = game:GetService(\"Players\").LocalPlayer:WaitForChild(\"PlayerGui\")")
table.insert(codeLines, "ScreenGui.ResetOnSpawn = " .. tostring(gui.ResetOnSpawn))
table.insert(codeLines, "ScreenGui.IgnoreGuiInset = " .. tostring(gui.IgnoreGuiInset))
table.insert(codeLines, "ScreenGui.DisplayOrder = " .. tostring(gui.DisplayOrder))
table.insert(codeLines, "ScreenGui.Enabled = " .. tostring(gui.Enabled))
table.insert(codeLines, "ScreenGui.ZIndexBehavior = " .. serVal(gui.ZIndexBehavior))
local mainFrameVar = nil
for _, inst in ipairs(instances) do
local var = map[inst]
local parentVar = inst.Parent == gui and "ScreenGui" or map[inst.Parent]
if parentVar then
table.insert(codeLines, var .. ".Parent = " .. parentVar)
end
if inst.Parent == gui and inst:IsA("GuiObject") and not mainFrameVar then
mainFrameVar = var
end
local pCode = serInstProps(inst, var)
if pCode ~= "" then
table.insert(codeLines, pCode)
end
end
if mainFrameVar then
table.insert(codeLines, "")
table.insert(codeLines, "local dragging, dragInput, dragStart, startPos")
table.insert(codeLines, "local function updateDrag(input)")
table.insert(codeLines, " local delta = input.Position - dragStart")
table.insert(codeLines, " " .. mainFrameVar .. ".Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)")
table.insert(codeLines, "end")
table.insert(codeLines, mainFrameVar .. ".InputBegan:Connect(function(input)")
table.insert(codeLines, " if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then")
table.insert(codeLines, " dragging = true")
table.insert(codeLines, " dragStart = input.Position")
table.insert(codeLines, " startPos = " .. mainFrameVar .. ".Position")
table.insert(codeLines, " input.Changed:Connect(function()")
table.insert(codeLines, " if input.UserInputState == Enum.UserInputState.End then")
table.insert(codeLines, " dragging = false")
table.insert(codeLines, " end")
table.insert(codeLines, " end)")
table.insert(codeLines, " end")
table.insert(codeLines, "end)")
table.insert(codeLines, mainFrameVar .. ".InputChanged:Connect(function(input)")
table.insert(codeLines, " if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then")
table.insert(codeLines, " dragInput = input")
table.insert(codeLines, " end")
table.insert(codeLines, "end)")
table.insert(codeLines, "UserInputService.InputChanged:Connect(function(input)")
table.insert(codeLines, " if input == dragInput and dragging then")
table.insert(codeLines, " updateDrag(input)")
table.insert(codeLines, " end")
table.insert(codeLines, "end)")
end
return table.concat(codeLines, "\n")
end
local function copy(text)
if setclipboard then setclipboard(text); return true end
if toclipboard then toclipboard(text); return true end
return false
end
local gui = Instance.new("ScreenGui")
gui.Name = "SCConv"
gui.ResetOnSpawn = false
gui.Parent = LocalPlayer:WaitForChild("PlayerGui")
local f = Instance.new("Frame")
f.Size = UDim2.new(0, 300, 0, 60)
f.Position = UDim2.new(0.5, -150, 0.5, -30)
f.BackgroundColor3 = Color3.fromRGB(30, 30, 35)
f.BorderSizePixel = 0
f.Active = true
f.Draggable = true
f.Parent = gui
Instance.new("UICorner", f).CornerRadius = UDim.new(0, 8)
local b = Instance.new("TextButton")
b.Size = UDim2.new(1, -20, 1, -20)
b.Position = UDim2.new(0, 10, 0, 10)
b.BackgroundColor3 = Color3.fromRGB(60, 140, 90)
b.BorderSizePixel = 0
b.Text = "Convert SC Clipboard"
b.TextColor3 = Color3.fromRGB(255, 255, 255)
b.Font = Enum.Font.GothamBold
b.TextSize = 14
b.Parent = f
Instance.new("UICorner", b).CornerRadius = UDim.new(0, 6)
b.MouseButton1Click:Connect(function()
local pg = LocalPlayer:WaitForChild("PlayerGui")
local target = nil
for _, ch in ipairs(pg:GetChildren()) do
if ch:IsA("ScreenGui") and ch ~= gui then
target = ch
end
end
if not target then
b.Text = "Tidak ada ScreenGui!"
task.wait(2)
b.Text = "Convert SC Clipboard"
return
end
local ok, res = pcall(convert, target)
if not ok then
b.Text = "Gagal: " .. tostring(res):sub(1, 20)
task.wait(2)
b.Text = "Convert SC Clipboard"
return
end
if copy(res) then
b.Text = "Tersalin ke clipboard!"
gui:Destroy()
else
b.Text = "Clipboard gagal"
task.wait(2)
b.Text = "Convert SC Clipboard"
end
end)
مش شغال يسطا
the game is dead