
KeylessUniversal

local Players = game:GetService("Players")
local HttpService = game:GetService("HttpService")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local isMobile = UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled
local camera = workspace.CurrentCamera
local SCREEN_SIZE = camera.ViewportSize
local isSmallScreen = isMobile or SCREEN_SIZE.X < 800
local menuScale = 0.75
local minScale, maxScale = 0.5, 1.0
local scaleStep = 0.05
local scriptCache = {}
local function HttpGet(url)
for i = 1, 5 do
local s, r = pcall(game.HttpGet, game, url, true)
if s and r and #r > 50 then return r end
task.wait(1)
end
return nil
end
local function formatTime(utc)
if not utc then return "Recent" end
local y,m,d,h,min = utc:match("(%d+)-(%d+)-(%d+)T(%d+):(%d+)")
if y then
local t = os.time{year=y, month=m, day=d, hour=h, min=min}
return os.date("%m.%d %H:%M", t)
end
return utc:sub(1,16)
end
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "ScriptBloxPro"
screenGui.ResetOnSpawn = false
screenGui.IgnoreGuiInset = true
screenGui.Parent = playerGui
local mainFrame = Instance.new("Frame")
mainFrame.BackgroundColor3 = Color3.fromRGB(22, 22, 28)
mainFrame.BorderSizePixel = 0
mainFrame.ClipsDescendants = true
mainFrame.Parent = screenGui
local function updateFrameSize()
local w = SCREEN_SIZE.X * menuScale
local h = SCREEN_SIZE.Y * menuScale
mainFrame.Size = UDim2.new(0, w - 40, 0, h - 40)
end
updateFrameSize()
mainFrame.Position = UDim2.new(0.5, -mainFrame.Size.X.Offset/2, 0.5, -mainFrame.Size.Y.Offset/2)
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 20)
corner.Parent = mainFrame
local stroke = Instance.new("UIStroke")
stroke.Color = Color3.fromRGB(55, 55, 70)
stroke.Thickness = 1.8
stroke.Parent = mainFrame
local header = Instance.new("Frame")
header.Size = UDim2.new(1, 0, 0, 45)
header.BackgroundTransparency = 1
header.Parent = mainFrame
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -120, 1, 0)
title.BackgroundTransparency = 1
title.Text = "ScriptBlox"
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.TextScaled = true
title.Font = Enum.Font.GothamBold
title.Parent = header
local dragging = false
local dragStart, startPos
header.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = mainFrame.Position
end
end)
header.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
local delta = input.Position - dragStart
mainFrame.Position = UDim2.new(
startPos.X.Scale,
startPos.X.Offset + delta.X,
startPos.Y.Scale,
startPos.Y.Offset + delta.Y
)
end
end)
header.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = false
end
end)
local resizeContainer = Instance.new("Frame")
resizeContainer.Size = UDim2.new(0, 100, 0, 35)
resizeContainer.Position = UDim2.new(1, -110, 0, 5)
resizeContainer.BackgroundColor3 = Color3.fromRGB(40, 40, 50)
resizeContainer.Parent = header
local rcCorner = Instance.new("UICorner")
rcCorner.CornerRadius = UDim.new(0, 12)
rcCorner.Parent = resizeContainer
local rcStroke = Instance.new("UIStroke")
rcStroke.Color = Color3.fromRGB(70, 70, 80)
rcStroke.Thickness = 1
rcStroke.Parent = resizeContainer
local minusBtn = Instance.new("TextButton")
minusBtn.Size = UDim2.new(0, 30, 1, 0)
minusBtn.BackgroundTransparency = 1
minusBtn.Text = "-"
minusBtn.TextColor3 = Color3.fromRGB(200, 200, 200)
minusBtn.TextScaled = true
minusBtn.Font = Enum.Font.GothamBold
minusBtn.Parent = resizeContainer
local plusBtn = Instance.new("TextButton")
plusBtn.Size = UDim2.new(0, 30, 1, 0)
plusBtn.Position = UDim2.new(1, -30, 0, 0)
plusBtn.BackgroundTransparency = 1
plusBtn.Text = "+"
plusBtn.TextColor3 = Color3.fromRGB(200, 200, 200)
plusBtn.TextScaled = true
plusBtn.Font = Enum.Font.GothamBold
plusBtn.Parent = resizeContainer
local scaleLabel = Instance.new("TextLabel")
scaleLabel.Size = UDim2.new(0, 40, 1, 0)
scaleLabel.Position = UDim2.new(0, 30, 0, 0)
scaleLabel.BackgroundTransparency = 1
scaleLabel.Text = math.floor(menuScale * 100) .. "%"
scaleLabel.TextColor3 = Color3.fromRGB(180, 180, 180)
scaleLabel.TextScaled = true
scaleLabel.Font = Enum.Font.Gotham
scaleLabel.Parent = resizeContainer
minusBtn.MouseButton1Click:Connect(function()
menuScale = math.max(minScale, menuScale - scaleStep)
scaleLabel.Text = math.floor(menuScale * 100) .. "%"
updateFrameSize()
end)
plusBtn.MouseButton1Click:Connect(function()
menuScale = math.min(maxScale, menuScale + scaleStep)
scaleLabel.Text = math.floor(menuScale * 100) .. "%"
updateFrameSize()
end)
local searchFrame = Instance.new("Frame")
searchFrame.Size = UDim2.new(1, -24, 0, 40)
searchFrame.Position = UDim2.new(0, 12, 0, 50)
searchFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 48)
searchFrame.Parent = mainFrame
local sCorner = Instance.new("UICorner")
sCorner.CornerRadius = UDim.new(0, 14)
sCorner.Parent = searchFrame
local searchBox = Instance.new("TextBox")
searchBox.Size = UDim2.new(1, -50, 1, 0)
searchBox.Position = UDim2.new(0, 12, 0, 0)
searchBox.BackgroundTransparency = 1
searchBox.PlaceholderText = "Search..."
searchBox.Text = ""
searchBox.TextColor3 = Color3.fromRGB(220, 220, 220)
searchBox.PlaceholderColor3 = Color3.fromRGB(130, 130, 130)
searchBox.TextScaled = true
searchBox.Font = Enum.Font.Gotham
searchBox.Parent = searchFrame
local searchEmoji = Instance.new("TextLabel")
searchEmoji.Size = UDim2.new(0, 28, 0, 28)
searchEmoji.Position = UDim2.new(1, -38, 0.5, -14)
searchEmoji.BackgroundTransparency = 1
searchEmoji.Text = "🔎"
searchEmoji.TextColor3 = Color3.fromRGB(120, 120, 120)
searchEmoji.TextScaled = true
searchEmoji.Font = Enum.Font.Gotham
searchEmoji.Parent = searchFrame
local tabFrame = Instance.new("Frame")
tabFrame.Size = UDim2.new(1, -24, 0, 40)
tabFrame.Position = UDim2.new(0, 12, 0, 95)
tabFrame.BackgroundTransparency = 1
tabFrame.Parent = mainFrame
local tabs = {"all", "trending", "games"}
local tabButtons = {}
local tabNames = {all = "All", trending = "Trending", games = "Games"}
for i, tab in ipairs(tabs) do
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0.31, 0, 1, 0)
btn.Position = UDim2.new((i-1)*0.345, 0, 0, 0)
btn.BackgroundColor3 = (tab == "all") and Color3.fromRGB(0, 122, 255) or Color3.fromRGB(50, 50, 60)
btn.Text = tabNames[tab]
btn.TextColor3 = Color3.fromRGB(255, 255, 255)
btn.TextScaled = true
btn.Font = Enum.Font.GothamBold
btn.Parent = tabFrame
tabButtons[tab] = btn
local c = Instance.new("UICorner")
c.CornerRadius = UDim.new(0, 12)
c.Parent = btn
end
local content = Instance.new("Frame")
content.Size = UDim2.new(1, -24, 1, -150)
content.Position = UDim2.new(0, 12, 0, 140)
content.BackgroundColor3 = Color3.fromRGB(30, 30, 38)
content.Parent = mainFrame
local cCorner = Instance.new("UICorner")
cCorner.CornerRadius = UDim.new(0, 16)
cCorner.Parent = content
local scroll = Instance.new("ScrollingFrame")
scroll.Size = UDim2.new(1, -16, 1, -16)
scroll.Position = UDim2.new(0, 8, 0, 8)
scroll.BackgroundTransparency = 1
scroll.ScrollBarThickness = 8
scroll.CanvasSize = UDim2.new(0, 0, 0, 0)
scroll.AutomaticCanvasSize = Enum.AutomaticSize.Y
scroll.Parent = content
local layout = Instance.new("UIListLayout")
layout.Padding = UDim.new(0, 10)
layout.FillDirection = Enum.FillDirection.Vertical
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Parent = scroll
local currentTab = "all"
local loading = false
local function clear()
for _, v in pairs(scroll:GetChildren()) do
if v:IsA("Frame") then v:Destroy() end
end
end
local function fetchScriptCode(scriptId, callback)
if scriptCache[scriptId] then
callback(scriptCache[scriptId])
return
end
local url = "https://scriptblox.com/api/script/fetch?script_id=" .. scriptId
spawn(function()
local res = HttpGet(url)
if res then
local s, data = pcall(HttpService.JSONDecode, HttpService, res)
if s and data and data.result and data.result.script then
scriptCache[scriptId] = data.result.script
callback(data.result.script)
return
end
end
callback(nil)
end)
end
local function createCard(data)
local card = Instance.new("Frame")
card.Size = UDim2.new(1, 0, 0, 115)
card.BackgroundColor3 = Color3.fromRGB(45, 45, 55)
card.BorderSizePixel = 0
card.Parent = scroll
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 14)
corner.Parent = card
local pad = Instance.new("UIPadding")
pad.PaddingLeft = UDim.new(0, 14)
pad.PaddingRight = UDim.new(0, 14)
pad.PaddingTop = UDim.new(0, 10)
pad.PaddingBottom = UDim.new(0, 10)
pad.Parent = card
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, -210, 0, 26)
title.BackgroundTransparency = 1
title.Text = data.title or "Untitled"
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.TextScaled = true
title.Font = Enum.Font.GothamBold
title.TextXAlignment = Enum.TextXAlignment.Left
title.Parent = card
local game = Instance.new("TextLabel")
game.Size = UDim2.new(1, -210, 0, 20)
game.Position = UDim2.new(0, 0, 0, 30)
game.BackgroundTransparency = 1
game.Text = "Game: " .. (data.game and data.game.name or "Universal")
game.TextColor3 = Color3.fromRGB(130, 200, 255)
game.TextScaled = true
game.Font = Enum.Font.Gotham
game.TextXAlignment = Enum.TextXAlignment.Left
game.Parent = card
local statsFrame = Instance.new("Frame")
statsFrame.Size = UDim2.new(1, -210, 0, 22)
statsFrame.Position = UDim2.new(0, 0, 0, 54)
statsFrame.BackgroundTransparency = 1
statsFrame.Parent = card
local likesEmoji = Instance.new("TextLabel")
likesEmoji.Size = UDim2.new(0, 22, 0, 22)
likesEmoji.Position = UDim2.new(0, 0, 0, 0)
likesEmoji.BackgroundTransparency = 1
likesEmoji.Text = "👍"
likesEmoji.TextColor3 = Color3.fromRGB(255, 200, 0)
likesEmoji.TextScaled = true
likesEmoji.Font = Enum.Font.Gotham
likesEmoji.Parent = statsFrame
local likesText = Instance.new("TextLabel")
likesText.Size = UDim2.new(0, 50, 1, 0)
likesText.Position = UDim2.new(0, 24, 0, 0)
likesText.BackgroundTransparency = 1
likesText.Text = tostring(data.likeCount or 0)
likesText.TextColor3 = Color3.fromRGB(220, 220, 220)
likesText.TextScaled = true
likesText.Font = Enum.Font.Gotham
likesText.TextXAlignment = Enum.TextXAlignment.Left
likesText.Parent = statsFrame
local viewsEmoji = Instance.new("TextLabel")
viewsEmoji.Size = UDim2.new(0, 22, 0, 22)
viewsEmoji.Position = UDim2.new(0, 80, 0, 0)
viewsEmoji.BackgroundTransparency = 1
viewsEmoji.Text = "👁️"
viewsEmoji.TextColor3 = Color3.fromRGB(100, 200, 255)
viewsEmoji.TextScaled = true
viewsEmoji.Font = Enum.Font.Gotham
viewsEmoji.Parent = statsFrame
local viewsText = Instance.new("TextLabel")
viewsText.Size = UDim2.new(0, 60, 1, 0)
viewsText.Position = UDim2.new(0, 104, 0, 0)
viewsText.BackgroundTransparency = 1
viewsText.Text = tostring(data.views or 0)
viewsText.TextColor3 = Color3.fromRGB(220, 220, 220)
viewsText.TextScaled = true
viewsText.Font = Enum.Font.Gotham
viewsText.TextXAlignment = Enum.TextXAlignment.Left
viewsText.Parent = statsFrame
local timeText = Instance.new("TextLabel")
timeText.Size = UDim2.new(0, 100, 1, 0)
timeText.Position = UDim2.new(0, 170, 0, 0)
timeText.BackgroundTransparency = 1
timeText.Text = formatTime(data.createdAt)
timeText.TextColor3 = Color3.fromRGB(150, 150, 150)
timeText.TextScaled = true
timeText.Font = Enum.Font.Gotham
timeText.TextXAlignment = Enum.TextXAlignment.Left
timeText.Parent = statsFrame
local titleBtn = Instance.new("TextButton")
titleBtn.Size = UDim2.new(0, 60, 0, 32)
titleBtn.Position = UDim2.new(1, -210, 0.5, -16)
titleBtn.BackgroundColor3 = Color3.fromRGB(100, 150, 255)
titleBtn.Text = "TITLE"
titleBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
titleBtn.TextScaled = true
titleBtn.Font = Enum.Font.GothamBold
titleBtn.Parent = card
local tc = Instance.new("UICorner")
tc.CornerRadius = UDim.new(0, 10)
tc.Parent = titleBtn
local run = Instance.new("TextButton")
run.Size = UDim2.new(0, 65, 0, 32)
run.Position = UDim2.new(1, -140, 0.5, -16)
run.BackgroundColor3 = Color3.fromRGB(0, 180, 80)
run.Text = "RUN"
run.TextColor3 = Color3.fromRGB(255, 255, 255)
run.TextScaled = true
run.Font = Enum.Font.GothamBold
run.Parent = card
local rc = Instance.new("UICorner")
rc.CornerRadius = UDim.new(0, 10)
rc.Parent = run
local copy = Instance.new("TextButton")
copy.Size = UDim2.new(0, 65, 0, 32)
copy.Position = UDim2.new(1, -70, 0.5, -16)
copy.BackgroundColor3 = Color3.fromRGB(255, 170, 0)
copy.Text = "COPY"
copy.TextColor3 = Color3.fromRGB(255, 255, 255)
copy.TextScaled = true
copy.Font = Enum.Font.GothamBold
copy.Parent = card
local cc = Instance.new("UICorner")
cc.CornerRadius = UDim.new(0, 10)
cc.Parent = copy
card.MouseEnter:Connect(function()
TweenService:Create(card, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(55, 55, 65)}):Play()
end)
card.MouseLeave:Connect(function()
TweenService:Create(card, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(45, 45, 55)}):Play()
end)
titleBtn.MouseButton1Click:Connect(function()
pcall(setclipboard, data.title or "Untitled")
titleBtn.Text = "OK"
titleBtn.BackgroundColor3 = Color3.fromRGB(0, 180, 0)
task.delay(1, function()
if titleBtn and titleBtn.Parent then
titleBtn.Text = "TITLE"
titleBtn.BackgroundColor3 = Color3.fromRGB(100, 150, 255)
end
end)
end)
run.MouseButton1Click:Connect(function()
local function execute(code)
if code then
local s, f = pcall(loadstring, code)
if s and f then pcall(f) end
end
end
if data.script then
execute(data.script)
else
run.Text = "Loading..."
fetchScriptCode(data._id, function(code)
if code then execute(code) end
run.Text = "RUN"
end)
end
end)
copy.MouseButton1Click:Connect(function()
copy.Text = "Loading..."
copy.BackgroundColor3 = Color3.fromRGB(180, 120, 0)
local function tryCopy(code)
if code and code ~= "" then
pcall(setclipboard, code)
copy.Text = "OK"
copy.BackgroundColor3 = Color3.fromRGB(0, 180, 0)
else
copy.Text = "Error"
copy.BackgroundColor3 = Color3.fromRGB(180, 0, 0)
end
task.delay(1.2, function()
if copy and copy.Parent then
copy.Text = "COPY"
copy.BackgroundColor3 = Color3.fromRGB(255, 170, 0)
end
end)
end
if data.script then
tryCopy(data.script)
else
fetchScriptCode(data._id, tryCopy)
end
end)
end
local function loadScripts(urlBase, query)
local all = {}
local page = 1
local max = 12
repeat
local url = urlBase
if query and query ~= "" then
url = url .. (url:find("?") and "&" or "?") .. "q=" .. HttpService:UrlEncode(query) .. "&page=" .. page
else
url = url .. (url:find("?") and "&" or "?") .. "page=" .. page
end
local res = HttpGet(url)
if not res then break end
local s, data = pcall(HttpService.JSONDecode, HttpService, res)
if not s or not data.result or not data.result.scripts then break end
for _, s in ipairs(data.result.scripts) do
if #all >= 100 then break end
table.insert(all, s)
end
if #data.result.scripts == 0 then break end
page += 1
task.wait(0.25)
until page > max or #all >= 100
return all
end
local function showTab(tab)
if loading then return end
loading = true
currentTab = tab
clear()
for t, b in pairs(tabButtons) do
b.BackgroundColor3 = (t == tab) and Color3.fromRGB(0, 122, 255) or Color3.fromRGB(50, 50, 60)
end
local url = ""
if tab == "all" then url = "https://scriptblox.com/api/script/fetch"
elseif tab == "trending" then url = "https://scriptblox.com/api/script/trending"
elseif tab == "games" then url = "https://scriptblox.com/api/script/search"
end
local query = searchBox.Text ~= "" and searchBox.Text or nil
local scripts = loadScripts(url, query)
if #scripts > 0 then
for _, s in ipairs(scripts) do
createCard(s)
end
else
local lbl = Instance.new("TextLabel")
lbl.Size = UDim2.new(1, 0, 0, 50)
lbl.BackgroundTransparency = 1
lbl.Text = query and "Nothing found" or "Empty"
lbl.TextColor3 = Color3.fromRGB(180, 180, 180)
lbl.TextScaled = true
lbl.Font = Enum.Font.Gotham
lbl.Parent = scroll
end
loading = false
end
for tab, btn in pairs(tabButtons) do
btn.MouseButton1Click:Connect(function() showTab(tab) end)
end
searchBox.FocusLost:Connect(function(enter)
if enter then
showTab(currentTab)
end
end)
RunService.Heartbeat:Connect(function()
local newSize = camera.ViewportSize
if newSize.X ~= SCREEN_SIZE.X or newSize.Y ~= SCREEN_SIZE.Y then
SCREEN_SIZE = newSize
updateFrameSize()
mainFrame.Position = UDim2.new(0.5, -mainFrame.Size.X.Offset/2, 0.5, -mainFrame.Size.Y.Offset/2)
end
end)
task.wait(1)
showTab("all")No comments yet for this script.



