Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- 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)
Advertisement