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()