--[[
WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk!
]]
local scanDelay = 0.05
local decompileTimeout = 1
local HttpService = game:GetService("HttpService")
local Players = game:GetService("Players")
local gameName = "UnknownGame"
pcall(function()
gameName = game:GetService("MarketplaceService"):GetProductInfoAsync(game.PlaceId).Name
end)
local function sanitize(name)
return string.gsub(tostring(name), '[<>:"/\\|?*%c]', "_"):sub(1, 50)
end
local FOLDER_NAME = "decompile_" .. sanitize(gameName) .. "_" .. tostring(game.PlaceId) .. "_" .. HttpService:GenerateGUID(false):sub(1, 6)
local BRAND = "Ximmy's Sexy Script Decompiler"
local hasDecompiler = false
pcall(function()
if decompile then
local t = Instance.new("LocalScript")
t.Parent = game:GetService("ReplicatedStorage")
local ok, r = pcall(decompile, t)
t:Destroy()
hasDecompiler = ok and r ~= nil
end
end)
local getgenv = getgenv or function() return _G end
local env = getgenv()
local function makeGui()
local gui = Instance.new("ScreenGui")
gui.ResetOnSpawn = false
gui.DisplayOrder = 2e9
local ok = false
pcall(function()
local f = env.gethui or function() return game:GetService("CoreGui") end
gui.Parent = f()
ok = true
end)
if not ok then
pcall(function()
gui.Parent = Players.LocalPlayer:WaitForChild("PlayerGui")
end)
end
return gui
end
if not hasDecompiler then
local errGui = makeGui()
errGui.Name = "DecompilerError"
local f = Instance.new("Frame")
f.Size = UDim2.new(0.45, 0, 0, 80)
f.Position = UDim2.new(0.275, 0, 0, 10)
f.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
f.BorderSizePixel = 0
f.Parent = errGui
Instance.new("UICorner", f).CornerRadius = UDim.new(0, 8)
local p = Instance.new("UIPadding", f)
p.PaddingLeft = UDim.new(0, 12)
p.PaddingRight = UDim.new(0, 12)
p.PaddingTop = UDim.new(0, 10)
local t = Instance.new("TextLabel", f)
t.Size = UDim2.new(1, 0, 0, 22)
t.Position = UDim2.new(0, 0, 0, 0)
t.BackgroundTransparency = 1
t.TextColor3 = Color3.fromRGB(255, 80, 80)
t.TextScaled = true
t.Font = Enum.Font.GothamBold
t.TextXAlignment = Enum.TextXAlignment.Left
t.Text = "No Decompiler Available"
local m = Instance.new("TextLabel", f)
m.Size = UDim2.new(1, 0, 0, 36)
m.Position = UDim2.new(0, 0, 0, 28)
m.BackgroundTransparency = 1
m.TextColor3 = Color3.fromRGB(200, 200, 200)
m.TextScaled = true
m.Font = Enum.Font.Gotham
m.TextXAlignment = Enum.TextXAlignment.Left
m.TextWrapped = true
m.Text = "Your executor does not have a working decompiler.\nPlease use an executor that supports decompiling."
task.wait(8)
pcall(function() errGui:Destroy() end)
return
end
local function safeDecompile(scr)
local output = "-- Failed or empty output"
local finished = false
task.spawn(function()
local ok, result = pcall(decompile, scr)
output = (ok and result and result ~= "") and result or "-- Failed or empty output"
finished = true
end)
local waited = 0
while not finished and waited < decompileTimeout do
task.wait(0.1)
waited = waited + 0.1
end
if not finished then
output = "-- Timed out after " .. decompileTimeout .. "s"
end
return output
end
local createdDirs = {}
local function ensureDir(path)
if createdDirs[path] then return end
createdDirs[path] = true
local current = ""
for part in string.gmatch(path, "[^/]+") do
current = current == "" and part or (current .. "/" .. part)
if not createdDirs[current] then
createdDirs[current] = true
pcall(env.makefolder or makefolder, current)
end
end
end
local function buildScriptData(scr)
local parts = {}
local cur = scr.Parent
while cur and cur ~= game do
table.insert(parts, 1, sanitize(cur.Name))
cur = cur.Parent
end
local ext = scr:IsA("LocalScript") and ".local.lua"
or scr:IsA("ModuleScript") and ".module.lua"
or ".server.lua"
local dir = FOLDER_NAME .. "/" .. table.concat(parts, "/")
local path = dir .. "/" .. sanitize(scr.Name) .. ext
return { scr = scr, dir = dir, path = path }
end
local function isCoreScript(scr)
local success, isDescendant = pcall(function()
return scr:IsDescendantOf(game:GetService("CoreGui")) or scr:IsDescendantOf(game:GetService("CorePackages"))
end)
return success and isDescendant
end
local function collectAllScripts()
local found = {}
for _, obj in ipairs(game:GetDescendants()) do
if obj:IsA("LuaSourceContainer") and not isCoreScript(obj) then
table.insert(found, obj)
end
end
return found
end
local screenGui = makeGui()
screenGui.Name = "DecompilerGui"
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0.5, 0, 0, 165)
frame.Position = UDim2.new(0.25, 0, 0, 10)
frame.AnchorPoint = Vector2.new(0, 0)
frame.BackgroundColor3 = Color3.fromRGB(15, 15, 15)
frame.BorderSizePixel = 0
frame.Parent = screenGui
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 8)
local pad = Instance.new("UIPadding", frame)
pad.PaddingLeft = UDim.new(0, 10)
pad.PaddingRight = UDim.new(0, 10)
pad.PaddingTop = UDim.new(0, 8)
local titleLabel = Instance.new("TextLabel", frame)
titleLabel.Size = UDim2.new(1, 0, 0, 20)
titleLabel.Position = UDim2.new(0, 0, 0, 0)
titleLabel.BackgroundTransparency = 1
titleLabel.TextColor3 = Color3.fromRGB(255, 200, 50)
titleLabel.TextScaled = true
titleLabel.Font = Enum.Font.GothamBold
titleLabel.TextXAlignment = Enum.TextXAlignment.Left
titleLabel.Text = BRAND .. " - " .. gameName
local statusLabel = Instance.new("TextLabel", frame)
statusLabel.Size = UDim2.new(1, 0, 0, 18)
statusLabel.Position = UDim2.new(0, 0, 0, 24)
statusLabel.BackgroundTransparency = 1
statusLabel.TextColor3 = Color3.fromRGB(200, 200, 200)
statusLabel.TextScaled = true
statusLabel.Font = Enum.Font.Gotham
statusLabel.TextXAlignment = Enum.TextXAlignment.Left
statusLabel.Text = "Scanning..."
local scriptLabel = Instance.new("TextLabel", frame)
scriptLabel.Size = UDim2.new(1, 0, 0, 16)
scriptLabel.Position = UDim2.new(0, 0, 0, 46)
scriptLabel.BackgroundTransparency = 1
scriptLabel.TextColor3 = Color3.fromRGB(150, 150, 150)
scriptLabel.TextScaled = true
scriptLabel.Font = Enum.Font.Code
scriptLabel.TextXAlignment = Enum.TextXAlignment.Left
scriptLabel.Text = ""
local barBg = Instance.new("Frame", frame)
barBg.Size = UDim2.new(1, 0, 0, 14)
barBg.Position = UDim2.new(0, 0, 0, 68)
barBg.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
barBg.BorderSizePixel = 0
Instance.new("UICorner", barBg).CornerRadius = UDim.new(0, 4)
local barFill = Instance.new("Frame", barBg)
barFill.Size = UDim2.new(0, 0, 1, 0)
barFill.BackgroundColor3 = Color3.fromRGB(255, 200, 50)
barFill.BorderSizePixel = 0
Instance.new("UICorner", barFill).CornerRadius = UDim.new(0, 4)
local etaLabel = Instance.new("TextLabel", frame)
etaLabel.Size = UDim2.new(1, 0, 0, 14)
etaLabel.Position = UDim2.new(0, 0, 0, 87)
etaLabel.BackgroundTransparency = 1
etaLabel.TextColor3 = Color3.fromRGB(120, 120, 120)
etaLabel.TextScaled = true
etaLabel.Font = Enum.Font.Gotham
etaLabel.TextXAlignment = Enum.TextXAlignment.Left
etaLabel.Text = ""
local statsLabel = Instance.new("TextLabel", frame)
statsLabel.Size = UDim2.new(1, 0, 0, 14)
statsLabel.Position = UDim2.new(0, 0, 0, 105)
statsLabel.BackgroundTransparency = 1
statsLabel.TextColor3 = Color3.fromRGB(180, 180, 180)
statsLabel.TextScaled = true
statsLabel.Font = Enum.Font.GothamBold
statsLabel.TextXAlignment = Enum.TextXAlignment.Left
statsLabel.Text = "Passed: 0 | Failed: 0"
local savedLabel = Instance.new("TextLabel", frame)
savedLabel.Size = UDim2.new(1, 0, 0, 14)
savedLabel.Position = UDim2.new(0, 0, 0, 123)
savedLabel.BackgroundTransparency = 1
savedLabel.TextColor3 = Color3.fromRGB(80, 200, 255)
savedLabel.TextScaled = true
savedLabel.Font = Enum.Font.Gotham
savedLabel.TextXAlignment = Enum.TextXAlignment.Left
savedLabel.Text = "Folder: " .. FOLDER_NAME
local passedCount = 0
local failedCount = 0
local totalKnownScripts = 0
local function updateStats()
statsLabel.Text = string.format("Passed: %d | Failed: %d", passedCount, failedCount)
local ratio = passedCount / math.max(passedCount + failedCount, 1)
statsLabel.TextColor3 = Color3.fromRGB(math.floor(255 * (1 - ratio)), math.floor(255 * ratio), 80)
end
local lastGuiUpdate = 0
local function updateGui(scriptPath, elapsed, eta, finished)
local now = os.clock()
local processedTotal = passedCount + failedCount
if not finished and (now - lastGuiUpdate < 0.3) and (processedTotal % 5 ~= 0) then
return
end
lastGuiUpdate = now
local percent = totalKnownScripts > 0 and math.floor((processedTotal / totalKnownScripts) * 100) or 0
barFill.Size = UDim2.new(totalKnownScripts > 0 and (processedTotal / totalKnownScripts) or 0, 0, 1, 0)
statusLabel.Text = string.format("Scripts: %d / %d (%d%%)", processedTotal, totalKnownScripts, percent)
scriptLabel.Text = scriptPath or ""
if finished then
etaLabel.Text = string.format("Took %ds | Done!", elapsed)
titleLabel.TextColor3 = Color3.fromRGB(50, 255, 100)
barFill.BackgroundColor3 = Color3.fromRGB(50, 255, 100)
savedLabel.Text = "Saved: " .. FOLDER_NAME
else
etaLabel.Text = string.format("Elapsed: %ds | ETA: ~%ds", elapsed, eta)
end
end
local processed = {}
local function processScriptList(scriptList, startTime)
for i, scr in ipairs(scriptList) do
if scanDelay > 0 then
task.wait(scanDelay)
else
task.wait()
end
if not processed[scr] then
processed[scr] = true
local fullName = ""
pcall(function() fullName = scr:GetFullName() end)
local ok, err = pcall(function()
if not scr or not scr.Parent then
error("destroyed")
end
local data = buildScriptData(scr)
local rawSource = safeDecompile(scr)
local source = "-- " .. BRAND .. "\n-- Original: " .. fullName .. "\n\n" .. rawSource
ensureDir(data.dir)
local written = pcall(env.writefile or writefile, data.path, source)
if not written then
local flatPath = FOLDER_NAME .. "/" .. #processed .. "_" .. sanitize(scr.Name) .. ".lua"
ensureDir(FOLDER_NAME)
pcall(env.writefile or writefile, flatPath, source)
end
end)
if ok then
passedCount = passedCount + 1
else
failedCount = failedCount + 1
warn("[Decompiler] FAILED " .. fullName .. ": " .. tostring(err))
end
updateStats()
local processedTotal = passedCount + failedCount
local elapsed = math.floor(os.clock() - startTime)
local rate = processedTotal / math.max(os.clock() - startTime, 0.001)
local remaining = totalKnownScripts - processedTotal
local eta = math.floor(remaining / math.max(rate, 0.001))
updateGui(fullName, elapsed, eta, false)
end
end
end
local startTime = os.clock()
local round = 1
local MAX_ROUNDS = 5
repeat
local scripts = collectAllScripts()
local newScripts = {}
for _, scr in ipairs(scripts) do
if not processed[scr] then
table.insert(newScripts, scr)
end
end
if #newScripts == 0 then
break
end
totalKnownScripts = totalKnownScripts + #newScripts
statusLabel.Text = string.format("Pass %d: %d new scripts found", round, #newScripts)
task.wait(0.5)
processScriptList(newScripts, startTime)
round = round + 1
until round > MAX_ROUNDS
local totalTime = math.floor(os.clock() - startTime)
updateGui("All done!", totalTime, 0, true)
task.wait(15)
pcall(function() screenGui:Destroy() end)
Comments
0 B
|0 👍
/0 👎
0 B
|0 👍
/0 👎