--========================================================-- -- XENFREN HUB --========================================================-- -- Single LocalScript -- No extra scripts -- No extra folders -- No external dependencies --========================================================-- local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local RunService = game:GetService("RunService") local Lighting = game:GetService("Lighting") --========================================================-- -- CLIENT STARTUP --========================================================-- local Player = Players.LocalPlayer while not Player do task.wait() Player = Players.LocalPlayer end local PlayerGui = Player:WaitForChild("PlayerGui", 15) if not PlayerGui then warn("[XenFren] PlayerGui could not be found.") return end local ExistingGui = PlayerGui:FindFirstChild("XenFrenHub") if ExistingGui then ExistingGui:Destroy() task.wait() end local OWNER_KEY = "Xenfren_hasgoon" local VERSION = "1.01" --========================================================-- -- CONFIG --========================================================-- local Themes = { Purple = Color3.fromRGB(150, 80, 255), Blue = Color3.fromRGB(70, 130, 255), Red = Color3.fromRGB(255, 70, 70), Green = Color3.fromRGB(70, 220, 120), Orange = Color3.fromRGB(255, 145, 50), Pink = Color3.fromRGB(255, 90, 180), Grey = Color3.fromRGB(160, 160, 170) } local Languages = { "Russian", "Ukrainian", "Polish", "German", "French", "Spanish", "Portuguese", "English" } local Accent = Themes.Purple local LanguageIndex = 1 local SelectedPlayer = nil local OwnerUnlocked = false local TapEffects = false local AimEnabled = false local AntiFling = false local AntiVoid = false local FPSCounter = false local Coordinates = false local NightMode = false local FullBright = false local Spectating = false local Invisible = false -- CFrame speed local SpeedEnabled = false local CurrentSpeed = 16 local OriginalLighting = { Brightness = Lighting.Brightness, ClockTime = Lighting.ClockTime, FogEnd = Lighting.FogEnd, Ambient = Lighting.Ambient, OutdoorAmbient = Lighting.OutdoorAmbient } local OriginalCameraSubject = nil local SavedTransparency = {} --========================================================-- -- SCREEN GUI --========================================================-- local Gui = Instance.new("ScreenGui") Gui.Name = "XenFrenHub" Gui.ResetOnSpawn = false Gui.IgnoreGuiInset = true Gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling Gui.DisplayOrder = 999 Gui.Enabled = true Gui.Parent = PlayerGui --========================================================-- -- MAIN --========================================================-- local Main = Instance.new("Frame") Main.Name = "Main" Main.Size = UDim2.fromOffset(850, 560) Main.AnchorPoint = Vector2.new(0.5, 0.5) Main.Position = UDim2.fromScale(0.5, 0.5) Main.BackgroundColor3 = Color3.fromRGB(14, 14, 19) Main.BorderSizePixel = 0 Main.ClipsDescendants = true Main.ZIndex = 1 Main.Visible = true Main.Parent = Gui local MainCorner = Instance.new("UICorner") MainCorner.CornerRadius = UDim.new(0, 12) MainCorner.Parent = Main local MainStroke = Instance.new("UIStroke") MainStroke.Color = Accent MainStroke.Thickness = 1 MainStroke.Transparency = 0.2 MainStroke.Parent = Main --========================================================-- -- TOP BAR --========================================================-- local Top = Instance.new("Frame") Top.Name = "Top" Top.Size = UDim2.new(1, 0, 0, 45) Top.BackgroundColor3 = Color3.fromRGB(20, 20, 27) Top.BorderSizePixel = 0 Top.ZIndex = 5 Top.Parent = Main local Title = Instance.new("TextLabel") Title.Size = UDim2.new(1, -110, 1, 0) Title.Position = UDim2.fromOffset(15, 0) Title.BackgroundTransparency = 1 Title.Text = "XenFren Hub" Title.TextColor3 = Color3.fromRGB(240, 240, 245) Title.TextSize = 18 Title.Font = Enum.Font.GothamBold Title.TextXAlignment = Enum.TextXAlignment.Left Title.ZIndex = 6 Title.Parent = Top local VersionLabel = Instance.new("TextLabel") VersionLabel.Size = UDim2.fromOffset(50, 20) VersionLabel.Position = UDim2.new(1, -135, 0, 13) VersionLabel.BackgroundTransparency = 1 VersionLabel.Text = "v" .. VERSION VersionLabel.TextColor3 = Accent VersionLabel.TextSize = 11 VersionLabel.Font = Enum.Font.GothamBold VersionLabel.ZIndex = 6 VersionLabel.Parent = Top local Minimize = Instance.new("TextButton") Minimize.Size = UDim2.fromOffset(40, 30) Minimize.Position = UDim2.new(1, -85, 0, 7) Minimize.BackgroundTransparency = 1 Minimize.Text = "—" Minimize.TextColor3 = Color3.fromRGB(230, 230, 235) Minimize.TextSize = 20 Minimize.Font = Enum.Font.GothamBold Minimize.ZIndex = 6 Minimize.Parent = Top local Close = Instance.new("TextButton") Close.Size = UDim2.fromOffset(40, 30) Close.Position = UDim2.new(1, -45, 0, 7) Close.BackgroundTransparency = 1 Close.Text = "X" Close.TextColor3 = Color3.fromRGB(230, 230, 235) Close.TextSize = 16 Close.Font = Enum.Font.GothamBold Close.ZIndex = 6 Close.Parent = Top --========================================================-- -- DRAGGING --========================================================-- local Dragging = false local DragStart local StartPosition Top.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 then Dragging = true DragStart = Input.Position StartPosition = Main.Position Input.Changed:Connect(function() if Input.UserInputState == Enum.UserInputState.End then Dragging = false end end) end end) UserInputService.InputChanged:Connect(function(Input) if Dragging and Input.UserInputType == Enum.UserInputType.MouseMovement then local Delta = Input.Position - DragStart Main.Position = UDim2.new( StartPosition.X.Scale, StartPosition.X.Offset + Delta.X, StartPosition.Y.Scale, StartPosition.Y.Offset + Delta.Y ) end end) --========================================================-- -- MINIMIZE --========================================================-- local Restore = Instance.new("TextButton") Restore.Size = UDim2.fromOffset(130, 38) Restore.Position = UDim2.new(0, 15, 1, -55) Restore.BackgroundColor3 = Color3.fromRGB(20, 20, 27) Restore.Text = "X XenFren" Restore.TextColor3 = Color3.fromRGB(235, 235, 240) Restore.TextSize = 14 Restore.Font = Enum.Font.GothamBold Restore.Visible = false Restore.ZIndex = 999 Restore.Parent = Gui local RestoreCorner = Instance.new("UICorner") RestoreCorner.CornerRadius = UDim.new(0, 8) RestoreCorner.Parent = Restore local RestoreStroke = Instance.new("UIStroke") RestoreStroke.Color = Accent RestoreStroke.Parent = Restore Minimize.MouseButton1Click:Connect(function() Main.Visible = false Restore.Visible = true end) Restore.MouseButton1Click:Connect(function() Main.Visible = true Restore.Visible = false end) Close.MouseButton1Click:Connect(function() Gui:Destroy() end) --========================================================-- -- SIDEBAR --========================================================-- local Sidebar = Instance.new("Frame") Sidebar.Size = UDim2.fromOffset(175, 515) Sidebar.Position = UDim2.fromOffset(0, 45) Sidebar.BackgroundColor3 = Color3.fromRGB(18, 18, 24) Sidebar.BorderSizePixel = 0 Sidebar.ZIndex = 3 Sidebar.Parent = Main local SideScroll = Instance.new("ScrollingFrame") SideScroll.Size = UDim2.new(1, -10, 1, -10) SideScroll.Position = UDim2.fromOffset(5, 5) SideScroll.BackgroundTransparency = 1 SideScroll.BorderSizePixel = 0 SideScroll.ScrollBarThickness = 3 SideScroll.CanvasSize = UDim2.fromOffset(0, 0) SideScroll.ZIndex = 4 SideScroll.Parent = Sidebar local SideLayout = Instance.new("UIListLayout") SideLayout.Padding = UDim.new(0, 5) SideLayout.Parent = SideScroll SideLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() SideScroll.CanvasSize = UDim2.fromOffset( 0, SideLayout.AbsoluteContentSize.Y + 10 ) end) --========================================================-- -- CONTENT --========================================================-- local Content = Instance.new("Frame") Content.Size = UDim2.new(1, -175, 1, -45) Content.Position = UDim2.fromOffset(175, 45) Content.BackgroundColor3 = Color3.fromRGB(13, 13, 18) Content.BorderSizePixel = 0 Content.ZIndex = 3 Content.Parent = Main local Pages = {} local function CreatePage(Name) local Page = Instance.new("ScrollingFrame") Page.Name = Name Page.Size = UDim2.new(1, -20, 1, -20) Page.Position = UDim2.fromOffset(10, 10) Page.BackgroundTransparency = 1 Page.BorderSizePixel = 0 Page.ScrollBarThickness = 4 Page.CanvasSize = UDim2.fromOffset(0, 0) Page.Visible = false Page.ZIndex = 4 Page.Parent = Content local Layout = Instance.new("UIListLayout") Layout.Padding = UDim.new(0, 8) Layout.Parent = Page Layout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() Page.CanvasSize = UDim2.fromOffset( 0, Layout.AbsoluteContentSize.Y + 20 ) end) Pages[Name] = Page return Page end --========================================================-- -- UI HELPERS --========================================================-- local function Label(Parent, Text) local Object = Instance.new("TextLabel") Object.Size = UDim2.new(1, 0, 0, 30) Object.BackgroundTransparency = 1 Object.Text = Text Object.TextColor3 = Color3.fromRGB(190, 190, 200) Object.TextSize = 14 Object.Font = Enum.Font.GothamMedium Object.TextXAlignment = Enum.TextXAlignment.Left Object.ZIndex = 5 Object.Parent = Parent return Object end local function TextBox(Parent, Placeholder) local Object = Instance.new("TextBox") Object.Size = UDim2.new(1, 0, 0, 38) Object.BackgroundColor3 = Color3.fromRGB(23, 23, 30) Object.PlaceholderText = Placeholder Object.PlaceholderColor3 = Color3.fromRGB(110, 110, 120) Object.TextColor3 = Color3.fromRGB(235, 235, 240) Object.TextSize = 14 Object.Font = Enum.Font.Gotham Object.ClearTextOnFocus = false Object.BorderSizePixel = 0 Object.ZIndex = 5 Object.Parent = Parent local Corner = Instance.new("UICorner") Corner.CornerRadius = UDim.new(0, 7) Corner.Parent = Object return Object end local function Button(Parent, Text, Callback) local Object = Instance.new("TextButton") Object.Size = UDim2.new(1, 0, 0, 38) Object.BackgroundColor3 = Color3.fromRGB(25, 25, 33) Object.Text = Text Object.TextColor3 = Color3.fromRGB(230, 230, 235) Object.TextSize = 14 Object.Font = Enum.Font.GothamMedium Object.BorderSizePixel = 0 Object.AutoButtonColor = false Object.ZIndex = 5 Object.Parent = Parent local Corner = Instance.new("UICorner") Corner.CornerRadius = UDim.new(0, 7) Corner.Parent = Object Object.MouseEnter:Connect(function() Object.BackgroundColor3 = Color3.fromRGB(35, 35, 46) end) Object.MouseLeave:Connect(function() Object.BackgroundColor3 = Color3.fromRGB(25, 25, 33) end) Object.MouseButton1Click:Connect(function() if Callback then Callback(Object) end end) return Object end --========================================================-- -- NOTIFICATIONS --========================================================-- local NotificationHolder = Instance.new("Frame") NotificationHolder.Size = UDim2.fromOffset(300, 400) NotificationHolder.Position = UDim2.new(1, -315, 0, 20) NotificationHolder.BackgroundTransparency = 1 NotificationHolder.ZIndex = 900 NotificationHolder.Parent = Gui local NotificationLayout = Instance.new("UIListLayout") NotificationLayout.VerticalAlignment = Enum.VerticalAlignment.Top NotificationLayout.HorizontalAlignment = Enum.HorizontalAlignment.Right NotificationLayout.Padding = UDim.new(0, 8) NotificationLayout.Parent = NotificationHolder local function Notify(Text, Duration) Duration = Duration or 2.5 local Frame = Instance.new("Frame") Frame.Size = UDim2.fromOffset(280, 55) Frame.BackgroundColor3 = Color3.fromRGB(22, 22, 29) Frame.BackgroundTransparency = 0.05 Frame.BorderSizePixel = 0 Frame.ZIndex = 901 Frame.Parent = NotificationHolder local Corner = Instance.new("UICorner") Corner.CornerRadius = UDim.new(0, 8) Corner.Parent = Frame local Stroke = Instance.new("UIStroke") Stroke.Color = Accent Stroke.Transparency = 0.25 Stroke.Parent = Frame local TextLabel = Instance.new("TextLabel") TextLabel.Size = UDim2.new(1, -20, 1, 0) TextLabel.Position = UDim2.fromOffset(10, 0) TextLabel.BackgroundTransparency = 1 TextLabel.Text = Text TextLabel.TextColor3 = Color3.fromRGB(235, 235, 240) TextLabel.TextSize = 13 TextLabel.Font = Enum.Font.GothamMedium TextLabel.TextWrapped = true TextLabel.ZIndex = 902 TextLabel.Parent = Frame task.delay(Duration, function() if Frame.Parent then local Tween = TweenService:Create( Frame, TweenInfo.new(0.25), {BackgroundTransparency = 1} ) Tween:Play() Tween.Completed:Wait() if Frame.Parent then Frame:Destroy() end end end) end --========================================================-- -- PAGE SWITCHING --========================================================-- local function ShowPage(Name) if Name == "Owner Tools" and not OwnerUnlocked then Notify("Unlock Owner Tools first.") return end for PageName, Page in pairs(Pages) do Page.Visible = PageName == Name end end --========================================================-- -- SPEED --========================================================-- local SpeedPage = CreatePage("Speed") Label(SpeedPage, "CFrame Speed") local SpeedBox = TextBox(SpeedPage, "Speed 0 - 1000") SpeedBox.Text = "16" local function SetOwnSpeed(Value) if typeof(Value) ~= "number" then return false end CurrentSpeed = math.clamp(Value, 0, 1000) SpeedEnabled = CurrentSpeed > 0 return true end Button(SpeedPage, "Apply Speed", function() local Value = tonumber(SpeedBox.Text) if Value then SetOwnSpeed(Value) Notify("CFrame speed set to " .. math.clamp(Value, 0, 1000)) else Notify("Enter a valid speed.") end end) Button(SpeedPage, "Reset Speed", function() SpeedBox.Text = "16" SetOwnSpeed(16) Notify("CFrame speed reset.") end) for _, Value in ipairs({50, 100, 250, 1000}) do Button(SpeedPage, "Speed " .. Value, function() SpeedBox.Text = tostring(Value) SetOwnSpeed(Value) Notify("CFrame speed set to " .. Value) end) end --========================================================-- -- VISUALS --========================================================-- local VisualPage = CreatePage("Visuals") Label(VisualPage, "Visual Effects") Button(VisualPage, "Tap Effects: OFF", function(Object) TapEffects = not TapEffects Object.Text = TapEffects and "Tap Effects: ON" or "Tap Effects: OFF" end) Button(VisualPage, "FPS Counter: OFF", function(Object) FPSCounter = not FPSCounter Object.Text = FPSCounter and "FPS Counter: ON" or "FPS Counter: OFF" end) Button(VisualPage, "Coordinates: OFF", function(Object) Coordinates = not Coordinates Object.Text = Coordinates and "Coordinates: ON" or "Coordinates: OFF" end) Button(VisualPage, "Night Mode: OFF", function(Object) NightMode = not NightMode Object.Text = NightMode and "Night Mode: ON" or "Night Mode: OFF" Lighting.ClockTime = NightMode and 0 or OriginalLighting.ClockTime end) Button(VisualPage, "FullBright: OFF", function(Object) FullBright = not FullBright Object.Text = FullBright and "FullBright: ON" or "FullBright: OFF" if FullBright then Lighting.Brightness = 3 Lighting.FogEnd = 100000 Lighting.Ambient = Color3.fromRGB(255, 255, 255) Lighting.OutdoorAmbient = Color3.fromRGB(255, 255, 255) else Lighting.Brightness = OriginalLighting.Brightness Lighting.FogEnd = OriginalLighting.FogEnd Lighting.Ambient = OriginalLighting.Ambient Lighting.OutdoorAmbient = OriginalLighting.OutdoorAmbient end end) --========================================================-- -- TAP EFFECT --========================================================-- UserInputService.InputBegan:Connect(function(Input) if not TapEffects then return end if Input.UserInputType ~= Enum.UserInputType.MouseButton1 and Input.UserInputType ~= Enum.UserInputType.Touch then return end local Ring = Instance.new("Frame") Ring.AnchorPoint = Vector2.new(0.5, 0.5) Ring.Position = UDim2.fromOffset(Input.Position.X, Input.Position.Y) Ring.Size = UDim2.fromOffset(5, 5) Ring.BackgroundTransparency = 1 Ring.BorderSizePixel = 0 Ring.ZIndex = 950 Ring.Parent = Gui local Corner = Instance.new("UICorner") Corner.CornerRadius = UDim.new(1, 0) Corner.Parent = Ring local Stroke = Instance.new("UIStroke") Stroke.Color = Accent Stroke.Thickness = 2 Stroke.Parent = Ring local Tween = TweenService:Create( Ring, TweenInfo.new(0.35), {Size = UDim2.fromOffset(55, 55)} ) Tween:Play() Tween.Completed:Connect(function() if Ring.Parent then Ring:Destroy() end end) end) --========================================================-- -- AIM ASSIST --========================================================-- local AimPage = CreatePage("Aim Assist") Label(AimPage, "Client Aim Assist") Button(AimPage, "Aim Assist: OFF", function(Object) AimEnabled = not AimEnabled Object.Text = AimEnabled and "Aim Assist: ON" or "Aim Assist: OFF" Notify(AimEnabled and "Aim Assist enabled." or "Aim Assist disabled.") end) Label(AimPage, "FOV") local FOVBox = TextBox(AimPage, "FOV") FOVBox.Text = "120" Label(AimPage, "Smoothness") local SmoothBox = TextBox(AimPage, "Smoothness") SmoothBox.Text = "0.15" Button(AimPage, "Reset Aim Settings", function() FOVBox.Text = "120" SmoothBox.Text = "0.15" Notify("Aim settings reset.") end) --========================================================-- -- CONSOLE --========================================================-- local ConsolePage = CreatePage("Console") Label(ConsolePage, "XenFren Console") local ConsoleInput = TextBox(ConsolePage, "/command; /command") local ConsoleOutput = Instance.new("TextLabel") ConsoleOutput.Size = UDim2.new(1, 0, 0, 180) ConsoleOutput.BackgroundColor3 = Color3.fromRGB(8, 8, 12) ConsoleOutput.TextColor3 = Color3.fromRGB(190, 220, 190) ConsoleOutput.TextSize = 12 ConsoleOutput.Font = Enum.Font.Code ConsoleOutput.TextXAlignment = Enum.TextXAlignment.Left ConsoleOutput.TextYAlignment = Enum.TextYAlignment.Top ConsoleOutput.TextWrapped = true ConsoleOutput.Text = "[XenFren Console]\n" ConsoleOutput.BorderSizePixel = 0 ConsoleOutput.ZIndex = 5 ConsoleOutput.Parent = ConsolePage local ConsoleCorner = Instance.new("UICorner") ConsoleCorner.CornerRadius = UDim.new(0, 8) ConsoleCorner.Parent = ConsoleOutput local function ConsoleLog(Text) ConsoleOutput.Text = ConsoleOutput.Text .. "\n" .. tostring(Text) local Lines = string.split(ConsoleOutput.Text, "\n") if #Lines > 30 then table.remove(Lines, 2) ConsoleOutput.Text = table.concat(Lines, "\n") end end local function RunLocalCommand(Command) Command = Command:gsub("^%s+", ""):gsub("%s+$", "") if Command == "" then return end ConsoleLog("> " .. Command) local Parts = string.split(Command, " ") local Cmd = string.lower(Parts[1] or "") if Cmd == "/speed" then local Value = tonumber(Parts[2]) if Value then SetOwnSpeed(Value) ConsoleLog("CFrame speed set to " .. math.clamp(Value, 0, 1000)) else ConsoleLog("Usage: /speed 100") end elseif Cmd == "/heal" then local Character = Player.Character local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") if Humanoid then Humanoid.Health = Humanoid.MaxHealth ConsoleLog("Local player healed.") end elseif Cmd == "/respawn" then local Character = Player.Character local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") if Humanoid then Humanoid.Health = 0 ConsoleLog("Respawn requested.") end elseif Cmd == "/sit" then local Character = Player.Character local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") if Humanoid then Humanoid.Sit = true ConsoleLog("Sitting.") end elseif Cmd == "/jump" then local Character = Player.Character local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") if Humanoid then Humanoid.Jump = true ConsoleLog("Jumped.") end elseif Cmd == "/fov" then local Value = tonumber(Parts[2]) local Camera = workspace.CurrentCamera if Value and Camera then Camera.FieldOfView = math.clamp(Value, 40, 120) ConsoleLog("FOV changed.") end elseif Cmd == "/coords" then local Character = Player.Character local Root = Character and Character:FindFirstChild("HumanoidRootPart") if Root then ConsoleLog(string.format( "X %.1f | Y %.1f | Z %.1f", Root.Position.X, Root.Position.Y, Root.Position.Z )) end else ConsoleLog("Unknown/local command: " .. Cmd) end end Button(ConsolePage, "Run Command", function() local Text = ConsoleInput.Text if Text ~= "" then for _, Command in ipairs(string.split(Text, ";")) do RunLocalCommand(Command) end ConsoleInput.Text = "" end end) Button(ConsolePage, "Clear Console", function() ConsoleOutput.Text = "[XenFren Console]\n" end) for _, Text in ipairs({ "Local commands:", "/speed 100", "/heal", "/respawn", "/sit", "/jump", "/fov 90", "/coords", "Commands can be chained with ;" }) do Label(ConsolePage, Text) end --========================================================-- -- PROTECTION --========================================================-- local ProtectionPage = CreatePage("Protection") Label(ProtectionPage, "Local Protection") Button(ProtectionPage, "Anti-Fling: OFF", function(Object) AntiFling = not AntiFling Object.Text = AntiFling and "Anti-Fling: ON" or "Anti-Fling: OFF" end) Button(ProtectionPage, "Anti-Void: OFF", function(Object) AntiVoid = not AntiVoid Object.Text = AntiVoid and "Anti-Void: ON" or "Anti-Void: OFF" end) Button(ProtectionPage, "Reset Character", function() local Character = Player.Character local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") if Humanoid then Humanoid.Health = 0 end end) Button(ProtectionPage, "Reset Camera", function() local Camera = workspace.CurrentCamera local Character = Player.Character local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") if Camera then Camera.CameraType = Enum.CameraType.Custom if Humanoid then Camera.CameraSubject = Humanoid end end Spectating = false Notify("Camera reset.") end) --========================================================-- -- SETTINGS --========================================================-- local SettingsPage = CreatePage("Settings") Label(SettingsPage, "Themes") for Name, Color in pairs(Themes) do Button(SettingsPage, Name, function() Accent = Color MainStroke.Color = Accent RestoreStroke.Color = Accent VersionLabel.TextColor3 = Accent Notify("Theme changed to " .. Name) end) end local LanguageButton = Button( SettingsPage, "Language: " .. Languages[LanguageIndex], function(Object) LanguageIndex += 1 if LanguageIndex > #Languages then LanguageIndex = 1 end Object.Text = "Language: " .. Languages[LanguageIndex] end ) Label(SettingsPage, "Interface") Button(SettingsPage, "Center Window", function() Main.Position = UDim2.fromScale(0.5, 0.5) end) Button(SettingsPage, "Reset Window Size", function() Main.Size = UDim2.fromOffset(850, 560) Notify("Window size reset.") end) --========================================================-- -- PLAYER FINDER --========================================================-- local function FindPlayer(Text) if not Text then return nil end Text = string.lower(Text:gsub("^%s+", ""):gsub("%s+$", "")) if Text == "" then return nil end for _, PlayerObject in ipairs(Players:GetPlayers()) do if string.lower(PlayerObject.Name) == Text or string.lower(PlayerObject.DisplayName) == Text then return PlayerObject end end for _, PlayerObject in ipairs(Players:GetPlayers()) do if string.sub(string.lower(PlayerObject.Name), 1, #Text) == Text then return PlayerObject end end for _, PlayerObject in ipairs(Players:GetPlayers()) do if string.sub(string.lower(PlayerObject.DisplayName), 1, #Text) == Text then return PlayerObject end end return nil end --========================================================-- -- ADMIN PANEL --========================================================-- local AdminPage = CreatePage("Admin Panel") Label(AdminPage, "Admin Panel • XenFren Hub") local SelectedLabel = Label(AdminPage, "Selected Player: None") local PlayerBox = TextBox(AdminPage, "Player name") --========================================================-- -- CLICKABLE PLAYER LIST --========================================================-- Label(AdminPage, "Click a player to select them") local PlayerList = Instance.new("ScrollingFrame") PlayerList.Size = UDim2.new(1, 0, 0, 150) PlayerList.BackgroundColor3 = Color3.fromRGB(9, 9, 13) PlayerList.BorderSizePixel = 0 PlayerList.ScrollBarThickness = 4 PlayerList.CanvasSize = UDim2.fromOffset(0, 0) PlayerList.ZIndex = 5 PlayerList.Parent = AdminPage local PlayerListCorner = Instance.new("UICorner") PlayerListCorner.CornerRadius = UDim.new(0, 8) PlayerListCorner.Parent = PlayerList local PlayerListLayout = Instance.new("UIListLayout") PlayerListLayout.Padding = UDim.new(0, 4) PlayerListLayout.Parent = PlayerList local PlayerListPadding = Instance.new("UIPadding") PlayerListPadding.PaddingTop = UDim.new(0, 5) PlayerListPadding.PaddingBottom = UDim.new(0, 5) PlayerListPadding.PaddingLeft = UDim.new(0, 5) PlayerListPadding.PaddingRight = UDim.new(0, 5) PlayerListPadding.Parent = PlayerList PlayerListLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function() PlayerList.CanvasSize = UDim2.fromOffset( 0, PlayerListLayout.AbsoluteContentSize.Y + 10 ) end) local function SelectPlayer(Target) if not Target or not Target.Parent then return end SelectedPlayer = Target SelectedLabel.Text = "Selected Player: " .. Target.Name PlayerBox.Text = Target.Name Notify("Selected " .. Target.Name) end local function RefreshPlayerList() for _, Child in ipairs(PlayerList:GetChildren()) do if Child:IsA("TextButton") then Child:Destroy() end end local PlayerObjects = Players:GetPlayers() table.sort(PlayerObjects, function(A, B) return string.lower(A.Name) < string.lower(B.Name) end) for _, PlayerObject in ipairs(PlayerObjects) do local TargetButton = Instance.new("TextButton") TargetButton.Size = UDim2.new(1, -10, 0, 32) TargetButton.BackgroundColor3 = Color3.fromRGB(25, 25, 33) TargetButton.BorderSizePixel = 0 TargetButton.AutoButtonColor = false TargetButton.Text = PlayerObject.Name .. " [" .. PlayerObject.DisplayName .. "]" TargetButton.TextColor3 = Color3.fromRGB(230, 230, 235) TargetButton.TextSize = 13 TargetButton.Font = Enum.Font.GothamMedium TargetButton.TextXAlignment = Enum.TextXAlignment.Left TargetButton.ZIndex = 6 TargetButton.Parent = PlayerList local Padding = Instance.new("UIPadding") Padding.PaddingLeft = UDim.new(0, 8) Padding.Parent = TargetButton local Corner = Instance.new("UICorner") Corner.CornerRadius = UDim.new(0, 6) Corner.Parent = TargetButton TargetButton.MouseEnter:Connect(function() TargetButton.BackgroundColor3 = Color3.fromRGB(40, 40, 52) end) TargetButton.MouseLeave:Connect(function() if SelectedPlayer == PlayerObject then TargetButton.BackgroundColor3 = Accent else TargetButton.BackgroundColor3 = Color3.fromRGB(25, 25, 33) end end) TargetButton.MouseButton1Click:Connect(function() SelectPlayer(PlayerObject) for _, Other in ipairs(PlayerList:GetChildren()) do if Other:IsA("TextButton") then Other.BackgroundColor3 = Color3.fromRGB(25, 25, 33) end end TargetButton.BackgroundColor3 = Accent end) if SelectedPlayer == PlayerObject then TargetButton.BackgroundColor3 = Accent end end end Button(AdminPage, "Select Player From Name", function() local Target = FindPlayer(PlayerBox.Text) if Target then SelectPlayer(Target) RefreshPlayerList() else SelectedPlayer = nil SelectedLabel.Text = "Selected Player: None" Notify("Player not found.") end end) Button(AdminPage, "Refresh Players", function() RefreshPlayerList() Notify("Player list refreshed.") end) RefreshPlayerList() Players.PlayerAdded:Connect(function() task.wait(0.1) RefreshPlayerList() end) Players.PlayerRemoving:Connect(function(LeavingPlayer) if SelectedPlayer == LeavingPlayer then SelectedPlayer = nil SelectedLabel.Text = "Selected Player: None" PlayerBox.Text = "" end task.wait() RefreshPlayerList() end) --========================================================-- -- TARGET CHECK --========================================================-- local function GetSelectedCharacter() if not SelectedPlayer then Notify("Select a player first.") return nil end if not SelectedPlayer.Parent then SelectedPlayer = nil SelectedLabel.Text = "Selected Player: None" Notify("That player has left.") return nil end local Character = SelectedPlayer.Character if not Character then Notify("Selected player has no character.") return nil end return Character end local function GetSelectedRoot() local Character = GetSelectedCharacter() if not Character then return nil end local Root = Character:FindFirstChild("HumanoidRootPart") if not Root then Notify("HumanoidRootPart not found.") end return Root end --========================================================-- -- PLAYER ACTIONS --========================================================-- Button(AdminPage, "Heal", function() local Character = GetSelectedCharacter() if not Character then return end local Humanoid = Character:FindFirstChildOfClass("Humanoid") if Humanoid and SelectedPlayer == Player then Humanoid.Health = Humanoid.MaxHealth Notify("You were healed.") else Notify("Healing another player requires server authority.") end end) Button(AdminPage, "Kill", function() if not SelectedPlayer then Notify("Select a player first.") return end if SelectedPlayer == Player then local Character = Player.Character local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") if Humanoid then Humanoid.Health = 0 end else Notify("Kill requires server authority for another player.") end end) Button(AdminPage, "Respawn", function() if not SelectedPlayer then Notify("Select a player first.") return end if SelectedPlayer == Player then local Character = Player.Character local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") if Humanoid then Humanoid.Health = 0 end else Notify("Respawning another player requires server authority.") end end) Button(AdminPage, "Freeze", function() if not SelectedPlayer then Notify("Select a player first.") return end if SelectedPlayer == Player then local Character = Player.Character local Root = Character and Character:FindFirstChild("HumanoidRootPart") if Root then Root.Anchored = true Notify("You are frozen. Use Unfreeze.") end else Notify("Freezing another player requires server authority.") end end) Button(AdminPage, "Unfreeze", function() if not SelectedPlayer then Notify("Select a player first.") return end if SelectedPlayer == Player then local Character = Player.Character local Root = Character and Character:FindFirstChild("HumanoidRootPart") if Root then Root.Anchored = false Notify("You are unfrozen.") end else Notify("Unfreezing another player requires server authority.") end end) Button(AdminPage, "Bring", function() if not SelectedPlayer then Notify("Select a player first.") elseif SelectedPlayer == Player then Notify("You cannot bring yourself.") else Notify("Bring requires server authority for another player.") end end) Button(AdminPage, "Goto", function() local TargetRoot = GetSelectedRoot() if not TargetRoot then return end local Character = Player.Character local Root = Character and Character:FindFirstChild("HumanoidRootPart") if Root then Root.CFrame = TargetRoot.CFrame * CFrame.new(0, 0, -4) Notify("Teleported to " .. SelectedPlayer.Name) end end) Button(AdminPage, "Kick", function() if not SelectedPlayer then Notify("Select a player first.") elseif SelectedPlayer == Player then Player:Kick("Kicked by Xenfren.") else Notify("Kicking another player requires server authority.") end end) --========================================================-- -- TARGET VISUALS --========================================================-- local CurrentHighlight = nil Button(AdminPage, "Highlight", function() local Character = GetSelectedCharacter() if not Character then return end if CurrentHighlight then CurrentHighlight:Destroy() end local Highlight = Instance.new("Highlight") Highlight.FillColor = Accent Highlight.OutlineColor = Color3.fromRGB(255, 255, 255) Highlight.FillTransparency = 0.65 Highlight.OutlineTransparency = 0 Highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop Highlight.Parent = Character CurrentHighlight = Highlight Notify("Highlighted " .. SelectedPlayer.Name) end) Button(AdminPage, "Remove Highlight", function() if CurrentHighlight then CurrentHighlight:Destroy() CurrentHighlight = nil Notify("Highlight removed.") else Notify("No highlight active.") end end) --========================================================-- -- SPECTATE --========================================================-- Button(AdminPage, "Spectate", function() if not SelectedPlayer then Notify("Select a player first.") return end local Character = SelectedPlayer.Character local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") local Camera = workspace.CurrentCamera if Humanoid and Camera then OriginalCameraSubject = Camera.CameraSubject Camera.CameraType = Enum.CameraType.Custom Camera.CameraSubject = Humanoid Spectating = true Notify("Spectating " .. SelectedPlayer.Name) else Notify("Selected player's character is not loaded.") end end) Button(AdminPage, "Stop Spectating", function() local Camera = workspace.CurrentCamera local Character = Player.Character local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") if Camera then Camera.CameraType = Enum.CameraType.Custom if Humanoid then Camera.CameraSubject = Humanoid elseif OriginalCameraSubject then Camera.CameraSubject = OriginalCameraSubject end end Spectating = false Notify("Stopped spectating.") end) --========================================================-- -- PLAYER INFO --========================================================-- Button(AdminPage, "Player Info", function() if not SelectedPlayer then Notify("Select a player first.") return end local Character = SelectedPlayer.Character local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") if Humanoid then Notify( SelectedPlayer.Name .. " | HP: " .. math.floor(Humanoid.Health) .. "/" .. math.floor(Humanoid.MaxHealth) ) else Notify(SelectedPlayer.Name .. " | Character not loaded") end end) --========================================================-- -- PLAYER SPEED / JUMP / HEALTH --========================================================-- Label(AdminPage, "Selected Player Speed") local AdminSpeed = TextBox(AdminPage, "0 - 1000") AdminSpeed.Text = "16" Button(AdminPage, "Set Speed", function() local Value = tonumber(AdminSpeed.Text) if not Value then Notify("Enter a number.") return end if SelectedPlayer == Player then Value = math.clamp(Value, 0, 1000) SetOwnSpeed(Value) Notify("Your CFrame speed is now " .. Value) else Notify("Changing another player's speed requires server authority.") end end) Label(AdminPage, "Selected Player JumpPower") local AdminJump = TextBox(AdminPage, "JumpPower") AdminJump.Text = "50" Button(AdminPage, "Set JumpPower", function() local Value = tonumber(AdminJump.Text) if not Value then Notify("Enter a number.") return end if SelectedPlayer == Player then local Character = Player.Character local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") if Humanoid then Value = math.clamp(Value, 0, 1000) Humanoid.UseJumpPower = true Humanoid.JumpPower = Value Notify("Your JumpPower is now " .. Value) end else Notify("Changing another player's JumpPower requires server authority.") end end) Label(AdminPage, "Selected Player Health") local AdminHealth = TextBox(AdminPage, "Health") AdminHealth.Text = "100" Button(AdminPage, "Set Health", function() local Value = tonumber(AdminHealth.Text) if not Value then Notify("Enter a number.") return end if SelectedPlayer == Player then local Character = Player.Character local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") if Humanoid then Humanoid.Health = math.max(Value, 0) Notify("Your health was set.") end else Notify("Changing another player's health requires server authority.") end end) --========================================================-- -- LOCAL UTILITIES --========================================================-- Label(AdminPage, "Local Utilities") Button(AdminPage, "Force Sit", function() local Character = Player.Character local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") if Humanoid then Humanoid.Sit = true end end) Button(AdminPage, "Force Jump", function() local Character = Player.Character local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") if Humanoid then Humanoid.Jump = true end end) Button(AdminPage, "Teleport To Spawn", function() local Character = Player.Character local Root = Character and Character:FindFirstChild("HumanoidRootPart") if Root then local Spawn = workspace:FindFirstChildWhichIsA("SpawnLocation") if Spawn then Root.CFrame = Spawn.CFrame * CFrame.new(0, 4, 0) Notify("Teleported to spawn.") else Notify("No SpawnLocation found.") end end end) Button(AdminPage, "Reset Character", function() local Character = Player.Character local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") if Humanoid then Humanoid.Health = 0 end end) --========================================================-- -- INVISIBILITY --========================================================-- Button(AdminPage, "Invisible: OFF", function(Object) Invisible = not Invisible Object.Text = Invisible and "Invisible: ON" or "Invisible: OFF" local Character = Player.Character if not Character then return end if Invisible then table.clear(SavedTransparency) for _, Part in ipairs(Character:GetDescendants()) do if Part:IsA("BasePart") then SavedTransparency[Part] = Part.LocalTransparencyModifier Part.LocalTransparencyModifier = 1 end end else for Part, Transparency in pairs(SavedTransparency) do if Part and Part.Parent then Part.LocalTransparencyModifier = Transparency end end table.clear(SavedTransparency) end end) Button(AdminPage, "Visible", function() Invisible = false for Part, Transparency in pairs(SavedTransparency) do if Part and Part.Parent then Part.LocalTransparencyModifier = Transparency end end table.clear(SavedTransparency) Notify("You are visible again.") end) --========================================================-- -- GRAVITY --========================================================-- Label(AdminPage, "Local Gravity") local GravityBox = TextBox(AdminPage, "Gravity") GravityBox.Text = tostring(workspace.Gravity) Button(AdminPage, "Set Gravity", function() local Value = tonumber(GravityBox.Text) if Value then Value = math.clamp(Value, 0, 1000) workspace.Gravity = Value Notify("Local gravity set to " .. Value) else Notify("Enter a valid gravity value.") end end) Button(AdminPage, "Reset Gravity", function() workspace.Gravity = 196.2 GravityBox.Text = "196.2" Notify("Gravity reset.") end) --========================================================-- -- OWNER CODE --========================================================-- local OwnerPage = CreatePage("Owner Code") Label(OwnerPage, "Owner Access") local KeyBox = TextBox(OwnerPage, "Enter owner key") Button(OwnerPage, "Unlock Owner Tools", function() if KeyBox.Text == OWNER_KEY then OwnerUnlocked = true Notify("Owner Tools unlocked.") else Notify("Incorrect owner key.") end end) Button(OwnerPage, "Show XenFren Info", function() Notify( "XenFren Hub v" .. VERSION .. " | Owner: " .. tostring(OwnerUnlocked) ) end) --========================================================-- -- OWNER TOOLS --========================================================-- local OwnerTools = CreatePage("Owner Tools") Label(OwnerTools, "Owner Tools") Button(OwnerTools, "Print Player List", function() for _, PlayerObject in ipairs(Players:GetPlayers()) do print( PlayerObject.Name, PlayerObject.DisplayName, PlayerObject.UserId ) end Notify("Player list printed to Output.") end) Button(OwnerTools, "Print XenFren Status", function() print("========== XENFREN HUB ==========") print("Version:", VERSION) print("Owner:", OwnerUnlocked) print("Language:", Languages[LanguageIndex]) print("Theme:", Accent) print("CFrame Speed:", CurrentSpeed) print("=================================") Notify("Status printed to Output.") end) Button(OwnerTools, "Print Character Info", function() local Character = Player.Character if Character then print("Character:", Character:GetFullName()) for _, Object in ipairs(Character:GetChildren()) do print(Object.ClassName, Object.Name) end end Notify("Character information printed.") end) --========================================================-- -- TABS --========================================================-- local Tabs = { "Speed", "Visuals", "Aim Assist", "Console", "Protection", "Settings", "Admin Panel", "Owner Code", "Owner Tools" } for _, Name in ipairs(Tabs) do local Tab = Button(SideScroll, Name, function() ShowPage(Name) end) Tab.Size = UDim2.new(1, -5, 0, 38) end ShowPage("Speed") --========================================================-- -- X KEY --========================================================-- UserInputService.InputBegan:Connect(function(Input, Processed) if Processed then return end if Input.KeyCode == Enum.KeyCode.X then Main.Visible = not Main.Visible Restore.Visible = not Main.Visible end end) --========================================================-- -- STARS --========================================================-- for _ = 1, 35 do local Star = Instance.new("Frame") Star.Size = UDim2.fromOffset( math.random(1, 3), math.random(1, 3) ) Star.Position = UDim2.new( math.random(), 0, 0, math.random(0, 45) ) Star.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Star.BackgroundTransparency = math.random(5, 9) / 10 Star.BorderSizePixel = 0 Star.ZIndex = 5 Star.Parent = Top task.spawn(function() while Star.Parent do local Tween = TweenService:Create( Star, TweenInfo.new( math.random(6, 15) / 10, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut ), { BackgroundTransparency = math.random(5, 9) / 10 } ) Tween:Play() Tween.Completed:Wait() end end) end --========================================================-- -- GALAXY --========================================================-- local Galaxy = Instance.new("Frame") Galaxy.Name = "Galaxy" Galaxy.Size = UDim2.new(1, 0, 0, 90) Galaxy.Position = UDim2.new(0, 0, 1, -90) Galaxy.BackgroundColor3 = Color3.fromRGB(8, 8, 14) Galaxy.BackgroundTransparency = 0.55 Galaxy.BorderSizePixel = 0 Galaxy.ZIndex = 1 Galaxy.Parent = Main for _ = 1, 30 do local Star = Instance.new("Frame") Star.Size = UDim2.fromOffset( math.random(1, 3), math.random(1, 3) ) Star.Position = UDim2.new( math.random(), 0, math.random(), 0 ) Star.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Star.BackgroundTransparency = 0.65 Star.BorderSizePixel = 0 Star.ZIndex = 1 Star.Parent = Galaxy end --========================================================-- -- RESIZE --========================================================-- local Resize = Instance.new("Frame") Resize.Size = UDim2.fromOffset(12, 12) Resize.Position = UDim2.new(1, -14, 1, -14) Resize.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Resize.BorderSizePixel = 0 Resize.ZIndex = 20 Resize.Parent = Main local ResizeCorner = Instance.new("UICorner") ResizeCorner.CornerRadius = UDim.new(1, 0) ResizeCorner.Parent = Resize local Resizing = false local ResizeStart local OriginalSize Resize.InputBegan:Connect(function(Input) if Input.UserInputType == Enum.UserInputType.MouseButton1 then Resizing = true ResizeStart = Input.Position OriginalSize = Main.Size Input.Changed:Connect(function() if Input.UserInputState == Enum.UserInputState.End then Resizing = false end end) end end) UserInputService.InputChanged:Connect(function(Input) if Resizing and Input.UserInputType == Enum.UserInputType.MouseMovement then local Delta = Input.Position - ResizeStart Main.Size = UDim2.fromOffset( math.max(650, OriginalSize.X.Offset + Delta.X), math.max(450, OriginalSize.Y.Offset + Delta.Y) ) end end) --========================================================-- -- FPS / COORDINATE DISPLAY --========================================================-- local InfoLabel = Instance.new("TextLabel") InfoLabel.Size = UDim2.fromOffset(300, 45) InfoLabel.Position = UDim2.fromOffset(15, 75) InfoLabel.BackgroundTransparency = 0.3 InfoLabel.BackgroundColor3 = Color3.fromRGB(10, 10, 15) InfoLabel.TextColor3 = Color3.fromRGB(230, 230, 235) InfoLabel.TextSize = 13 InfoLabel.Font = Enum.Font.Code InfoLabel.TextXAlignment = Enum.TextXAlignment.Left InfoLabel.TextYAlignment = Enum.TextYAlignment.Center InfoLabel.Text = "" InfoLabel.Visible = false InfoLabel.BorderSizePixel = 0 InfoLabel.ZIndex = 950 InfoLabel.Parent = Gui local InfoCorner = Instance.new("UICorner") InfoCorner.CornerRadius = UDim.new(0, 7) InfoCorner.Parent = InfoLabel local Frames = 0 local LastFPSUpdate = os.clock() local CurrentFPS = 0 RunService.RenderStepped:Connect(function() Frames += 1 local Now = os.clock() if Now - LastFPSUpdate >= 1 then CurrentFPS = Frames Frames = 0 LastFPSUpdate = Now end if FPSCounter or Coordinates then InfoLabel.Visible = true local Text = "" if FPSCounter then Text = "FPS: " .. tostring(CurrentFPS) end if Coordinates then local Character = Player.Character local Root = Character and Character:FindFirstChild("HumanoidRootPart") if Root then if Text ~= "" then Text ..= "\n" end Text ..= string.format( "XYZ: %.1f, %.1f, %.1f", Root.Position.X, Root.Position.Y, Root.Position.Z ) end end InfoLabel.Text = Text else InfoLabel.Visible = false end end) --========================================================-- -- CFRAME SPEED --========================================================-- RunService.Heartbeat:Connect(function() if not SpeedEnabled then return end local Character = Player.Character local Root = Character and Character:FindFirstChild("HumanoidRootPart") local Humanoid = Character and Character:FindFirstChildOfClass("Humanoid") if not Root or not Humanoid then return end local MoveDirection = Humanoid.MoveDirection if MoveDirection.Magnitude > 0 then local Delta = MoveDirection.Unit * CurrentSpeed Root.CFrame = Root.CFrame + Delta end end) --========================================================-- -- ANTI-FLING / ANTI-VOID --========================================================-- RunService.Heartbeat:Connect(function() local Character = Player.Character local Root = Character and Character:FindFirstChild("HumanoidRootPart") if not Root then return end if AntiFling then local Velocity = Root.AssemblyLinearVelocity Root.AssemblyLinearVelocity = Vector3.new( math.clamp(Velocity.X, -100, 100), math.clamp(Velocity.Y, -100, 100), math.clamp(Velocity.Z, -100, 100) ) end if AntiVoid and Root.Position.Y < -100 then Root.CFrame = CFrame.new(0, 20, 0) end end) --========================================================-- -- CHARACTER RESPAWN --========================================================-- Player.CharacterAdded:Connect(function(Character) task.wait(0.5) if Invisible then table.clear(SavedTransparency) for _, Part in ipairs(Character:GetDescendants()) do if Part:IsA("BasePart") then SavedTransparency[Part] = Part.LocalTransparencyModifier Part.LocalTransparencyModifier = 1 end end end if Spectating then local Camera = workspace.CurrentCamera local Humanoid = Character:FindFirstChildOfClass("Humanoid") if Camera and Humanoid then Camera.CameraSubject = Humanoid end end if SelectedPlayer == Player then SelectedLabel.Text = "Selected Player: " .. Player.Name end end) --========================================================-- -- FINAL --========================================================-- task.defer(function() if Gui.Parent then Notify("XenFren Hub v" .. VERSION .. " loaded.", 3) end end) print("================================") print("XENFREN HUB v" .. VERSION) print("Loaded successfully.") print("Player selector enabled.") print("CFrame speed enabled.") print("================================")