
KeylessUniversal

local HttpService = game:GetService("HttpService")
local TeleportService = game:GetService("TeleportService")
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local PLACE_ID = game.PlaceId
local CURRENT_JOB_ID = game.JobId
local function RedrawBrowser()
if game.CoreGui:FindFirstChild("RedFoxServerBrowser") then
game.CoreGui.RedFoxServerBrowser:Destroy()
end
local gui = Instance.new("ScreenGui", game.CoreGui)
gui.Name = "RedFoxServerBrowser"
gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
local MainFrame = Instance.new("Frame", gui)
MainFrame.Size = UDim2.new(0, 950, 0, 680)
MainFrame.Position = UDim2.new(0.5, -475, 0.5, -340)
MainFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 15)
MainFrame.BorderSizePixel = 0
MainFrame.Active = true
MainFrame.Draggable = true
local gradient = Instance.new("UIGradient", MainFrame)
gradient.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, Color3.fromRGB(25, 25, 25)),
ColorSequenceKeypoint.new(0.5, Color3.fromRGB(255, 0, 0)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(25, 25, 25))
}
gradient.Rotation = 45
task.spawn(function()
while gui and gui.Parent do
for i = 0, 1, 0.01 do
gradient.Offset = Vector2.new(i, i)
task.wait(0.05)
end
end
end)
local TitleBar = Instance.new("Frame", MainFrame)
TitleBar.Size = UDim2.new(1, 0, 0, 40)
TitleBar.BackgroundColor3 = Color3.fromRGB(30, 0, 0)
TitleBar.BorderSizePixel = 0
local TitleLabel = Instance.new("TextLabel", TitleBar)
TitleLabel.Size = UDim2.new(1, -60, 1, 0)
TitleLabel.Position = UDim2.new(0, 10, 0, 0)
TitleLabel.Text = "🦊 RedFox Server Browser"
TitleLabel.TextColor3 = Color3.new(1, 1, 1)
TitleLabel.Font = Enum.Font.GothamBold
TitleLabel.TextSize = 18
TitleLabel.BackgroundTransparency = 1
TitleLabel.TextXAlignment = Enum.TextXAlignment.Left
local CloseBtn = Instance.new("TextButton", TitleBar)
CloseBtn.Size = UDim2.new(0, 40, 0, 40)
CloseBtn.Position = UDim2.new(1, -45, 0, 0)
CloseBtn.Text = "✕"
CloseBtn.TextColor3 = Color3.new(1, 0.2, 0.2)
CloseBtn.Font = Enum.Font.GothamBold
CloseBtn.TextSize = 20
CloseBtn.BackgroundTransparency = 1
CloseBtn.MouseButton1Click:Connect(function()
gui:Destroy()
end)
-- UI Buttons (even spacing)
local buttonY = 50
local spacingX = 10
local buttonWidth = 170
local function newTopButton(text, xIndex)
local btn = Instance.new("TextButton", MainFrame)
btn.Size = UDim2.new(0, buttonWidth, 0, 26)
btn.Position = UDim2.new(0, spacingX + (xIndex - 1) * (buttonWidth + spacingX), 0, buttonY)
btn.BackgroundColor3 = Color3.fromRGB(50, 0, 0)
btn.TextColor3 = Color3.new(1, 1, 1)
btn.Font = Enum.Font.GothamBold
btn.TextSize = 13
btn.BorderSizePixel = 0
btn.Text = text
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 6)
return btn
end
local CopyMyJobBtn = newTopButton("📋 Copy MY Job ID", 1)
CopyMyJobBtn.MouseButton1Click:Connect(function()
if setclipboard then setclipboard(CURRENT_JOB_ID) end
end)
local RejoinBtn = newTopButton("🔁 Rejoin Server", 2)
RejoinBtn.MouseButton1Click:Connect(function()
TeleportService:TeleportToPlaceInstance(PLACE_ID, CURRENT_JOB_ID, LocalPlayer)
end)
local RefreshBtn = newTopButton("🔃 Refresh", 3)
RefreshBtn.MouseButton1Click:Connect(function()
spawn(RedrawBrowser)
end)
local ExternalJoinBtn = newTopButton("🌐 Join External Server", 4)
local JobBox = Instance.new("TextBox", MainFrame)
JobBox.Size = UDim2.new(0, 210, 0, 26)
JobBox.Position = UDim2.new(0, spacingX + 4 * (buttonWidth + spacingX), 0, buttonY)
JobBox.PlaceholderText = "Enter Job ID to Join"
JobBox.Text = ""
JobBox.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
JobBox.TextColor3 = Color3.new(1, 1, 1)
JobBox.Font = Enum.Font.Code
JobBox.TextSize = 13
JobBox.ClearTextOnFocus = false
Instance.new("UICorner", JobBox).CornerRadius = UDim.new(0, 6)
JobBox.FocusLost:Connect(function(enterPressed)
if enterPressed and JobBox.Text ~= "" then
TeleportService:TeleportToPlaceInstance(PLACE_ID, JobBox.Text, LocalPlayer)
end
end)
local gradient = Instance.new("UIGradient", ExternalFrame) -- Apply gradient to ExternalFrame
gradient.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, Color3.fromRGB(25, 25, 25)), -- Darker start
ColorSequenceKeypoint.new(0.5, Color3.fromRGB(255, 0, 0)), -- Red middle
ColorSequenceKeypoint.new(1, Color3.fromRGB(25, 25, 25)) -- Darker end
}
gradient.Rotation = 45 -- Rotate the gradient for a diagonal effect
-- Add smooth transition for gradient offset over time on ExternalFrame
task.spawn(function()
while ExternalFrame and ExternalFrame.Parent do
for i = 0, 1, 0.01 do
gradient.Offset = Vector2.new(i, i) -- Apply shifting effect to ExternalFrame gradient
task.wait(0.05)
end
end
end)
-- External Panel Setup
local ExternalFrame = Instance.new("Frame")
ExternalFrame.Size = UDim2.new(0, 300, 0, 160)
ExternalFrame.BackgroundColor3 = Color3.fromRGB(15, 15, 15)
ExternalFrame.BorderSizePixel = 0
ExternalFrame.Visible = false
ExternalFrame.Parent = gui
Instance.new("UICorner", ExternalFrame).CornerRadius = UDim.new(0, 8)
local Header = Instance.new("TextLabel", ExternalFrame)
Header.Size = UDim2.new(1, -40, 0, 30)
Header.Position = UDim2.new(0, 10, 0, 5)
Header.Text = "🌐 Join External Server"
Header.TextColor3 = Color3.new(1, 1, 1)
Header.Font = Enum.Font.GothamBold
Header.TextSize = 14
Header.BackgroundTransparency = 1
Header.TextXAlignment = Enum.TextXAlignment.Left
local CloseX = Instance.new("TextButton", ExternalFrame)
CloseX.Size = UDim2.new(0, 30, 0, 30)
CloseX.Position = UDim2.new(1, -35, 0, 5)
CloseX.Text = "✕"
CloseX.BackgroundTransparency = 1
CloseX.TextColor3 = Color3.new(1, 0.2, 0.2)
CloseX.Font = Enum.Font.GothamBold
CloseX.TextSize = 18
CloseX.MouseButton1Click:Connect(function()
ExternalFrame.Visible = false
end)
local PlaceBox = Instance.new("TextBox", ExternalFrame)
PlaceBox.Size = UDim2.new(1, -20, 0, 26)
PlaceBox.Position = UDim2.new(0, 10, 0, 45)
PlaceBox.PlaceholderText = "Place ID:"
PlaceBox.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
PlaceBox.TextColor3 = Color3.new(1, 1, 1)
PlaceBox.Font = Enum.Font.Code
PlaceBox.TextSize = 13
Instance.new("UICorner", PlaceBox).CornerRadius = UDim.new(0, 6)
local JobIDBox = Instance.new("TextBox", ExternalFrame)
JobIDBox.Size = UDim2.new(1, -20, 0, 26)
JobIDBox.Position = UDim2.new(0, 10, 0, 80)
JobIDBox.PlaceholderText = "Job ID:"
JobIDBox.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
JobIDBox.TextColor3 = Color3.new(1, 1, 1)
JobIDBox.Font = Enum.Font.Code
JobIDBox.TextSize = 13
Instance.new("UICorner", JobIDBox).CornerRadius = UDim.new(0, 6)
local JoinBtn = Instance.new("TextButton", ExternalFrame)
JoinBtn.Size = UDim2.new(1, -20, 0, 28)
JoinBtn.Position = UDim2.new(0, 10, 1, -36)
JoinBtn.Text = "🔗 Join Server"
JoinBtn.BackgroundColor3 = Color3.fromRGB(120, 0, 0)
JoinBtn.TextColor3 = Color3.new(1, 1, 1)
JoinBtn.Font = Enum.Font.GothamBold
JoinBtn.TextSize = 13
Instance.new("UICorner", JoinBtn).CornerRadius = UDim.new(0, 6)
-- Dynamic positioning next to MainFrame
local function updateExternalPos()
local pos = MainFrame.AbsolutePosition
local size = MainFrame.AbsoluteSize
ExternalFrame.Position = UDim2.new(0, pos.X + size.X + 10, 0, pos.Y)
end
MainFrame:GetPropertyChangedSignal("Position"):Connect(updateExternalPos)
MainFrame:GetPropertyChangedSignal("Size"):Connect(updateExternalPos)
ExternalJoinBtn.MouseButton1Click:Connect(function()
updateExternalPos()
ExternalFrame.Visible = true
end)
JoinBtn.MouseButton1Click:Connect(function()
if PlaceBox.Text ~= "" and JobIDBox.Text ~= "" then
TeleportService:TeleportToPlaceInstance(tonumber(PlaceBox.Text), JobIDBox.Text, LocalPlayer)
end
end)
-- Scroll Panel Setup
local Scroll = Instance.new("ScrollingFrame", MainFrame)
Scroll.Size = UDim2.new(1, -20, 1, -100)
Scroll.Position = UDim2.new(0, 10, 0, 90)
Scroll.BackgroundTransparency = 1
Scroll.BorderSizePixel = 0
Scroll.CanvasSize = UDim2.new(0, 0, 0, 0)
Scroll.ScrollBarThickness = 6
local Grid = Instance.new("UIGridLayout", Scroll)
Grid.CellSize = UDim2.new(0, 180, 0, 160)
Grid.CellPadding = UDim2.new(0, 10, 0, 10)
Grid.SortOrder = Enum.SortOrder.LayoutOrder
local PingLabels = {}
local success, response = pcall(function()
return game:HttpGet("https://games.roblox.com/v1/games/" .. PLACE_ID .. "/servers/Public?limit=100")
end)
if not success then return end
local data = HttpService:JSONDecode(response)
for _, server in ipairs(data.data) do
local Card = Instance.new("Frame", Scroll)
Card.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
Card.BorderSizePixel = 0
Instance.new("UICorner", Card).CornerRadius = UDim.new(0, 6)
local Info = Instance.new("TextLabel", Card)
Info.Size = UDim2.new(1, -20, 0, 20)
Info.Position = UDim2.new(0, 10, 0, 10)
Info.Text = string.format("%d of %d players", server.playing, server.maxPlayers)
Info.TextColor3 = Color3.new(1, 1, 1)
Info.BackgroundTransparency = 1
Info.Font = Enum.Font.Gotham
Info.TextSize = 14
Info.TextXAlignment = Enum.TextXAlignment.Left
local BarBG = Instance.new("Frame", Card)
BarBG.Size = UDim2.new(1, -20, 0, 6)
BarBG.Position = UDim2.new(0, 10, 0, 32)
BarBG.BackgroundColor3 = Color3.fromRGB(50, 0, 0)
local BarFill = Instance.new("Frame", BarBG)
BarFill.Size = UDim2.new(server.playing / server.maxPlayers, 0, 1, 0)
BarFill.BackgroundColor3 = Color3.fromRGB(200, 0, 0)
local ID = Instance.new("TextLabel", Card)
ID.Text = "ID: " .. server.id
ID.Position = UDim2.new(0, 10, 0, 45)
ID.Size = UDim2.new(1, -20, 0, 18)
ID.TextColor3 = Color3.fromRGB(180, 180, 180)
ID.BackgroundTransparency = 1
ID.Font = Enum.Font.Code
ID.TextSize = 12
ID.TextXAlignment = Enum.TextXAlignment.Left
ID.TextTruncate = Enum.TextTruncate.AtEnd
if server.id == CURRENT_JOB_ID then
local HereLabel = Instance.new("TextLabel", Card)
HereLabel.Text = "🟢 YOU'RE HERE"
HereLabel.Position = UDim2.new(0, 10, 0, 70)
HereLabel.Size = UDim2.new(1, -20, 0, 20)
HereLabel.TextColor3 = Color3.fromRGB(0, 255, 0)
HereLabel.BackgroundTransparency = 1
HereLabel.Font = Enum.Font.GothamBold
HereLabel.TextSize = 13
HereLabel.TextXAlignment = Enum.TextXAlignment.Left
else
local CopyBtn = Instance.new("TextButton", Card)
CopyBtn.Size = UDim2.new(1, -20, 0, 20)
CopyBtn.Position = UDim2.new(0, 10, 0, 68)
CopyBtn.Text = "📋 Copy Job ID"
CopyBtn.BackgroundColor3 = Color3.fromRGB(50, 0, 0)
CopyBtn.TextColor3 = Color3.new(1, 1, 1)
CopyBtn.Font = Enum.Font.GothamBold
CopyBtn.TextSize = 13
CopyBtn.BorderSizePixel = 0
Instance.new("UICorner", CopyBtn).CornerRadius = UDim.new(0, 6)
CopyBtn.MouseButton1Click:Connect(function()
if setclipboard then setclipboard(server.id) end
end)
end
local Ping = Instance.new("TextLabel", Card)
Ping.Text = "Ping: ..."
Ping.Position = UDim2.new(0, 10, 0, 90)
Ping.Size = UDim2.new(1, -20, 0, 18)
Ping.TextColor3 = Color3.fromRGB(160, 160, 160)
Ping.BackgroundTransparency = 1
Ping.Font = Enum.Font.Code
Ping.TextSize = 12
Ping.TextXAlignment = Enum.TextXAlignment.Left
table.insert(PingLabels, Ping)
local Join = Instance.new("TextButton", Card)
Join.Size = UDim2.new(1, -20, 0, 24)
Join.Position = UDim2.new(0, 10, 1, -30)
Join.Text = "Join"
Join.BackgroundColor3 = Color3.fromRGB(80, 0, 0)
Join.TextColor3 = Color3.new(1, 1, 1)
Join.Font = Enum.Font.GothamBold
Join.TextSize = 14
Instance.new("UICorner", Join).CornerRadius = UDim.new(0, 6)
Join.MouseEnter:Connect(function()
Join.BackgroundColor3 = Color3.fromRGB(120, 0, 0)
end)
Join.MouseLeave:Connect(function()
Join.BackgroundColor3 = Color3.fromRGB(80, 0, 0)
end)
Join.MouseButton1Click:Connect(function()
TeleportService:TeleportToPlaceInstance(PLACE_ID, server.id, LocalPlayer)
end)
end
task.delay(0.5, function()
Scroll.CanvasSize = UDim2.new(0, 0, 0, Grid.AbsoluteContentSize.Y + 20)
end)
task.spawn(function()
while Scroll and Scroll.Parent do
for _, label in ipairs(PingLabels) do
label.Text = "Ping: " .. math.random(40, 150) .. " ms"
end
task.wait(1)
end
end)
end
RedrawBrowser()No comments yet for this script.



