-- // Developer Script Hub (Mobile-Friendly) -- Place in StarterGui > ScreenGui > LocalScript -- Safe for developer/admin use only (not exploits) local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local RunService = game:GetService("RunService") local LocalPlayer = Players.LocalPlayer -- ⚙️ Admin List local ADMINS = { ["YourUsernameHere"] = true, -- Replace with your Roblox username(s) ["OtherDevName"] = true } -- GUI Setup local ScreenGui = Instance.new("ScreenGui", LocalPlayer:WaitForChild("PlayerGui")) ScreenGui.Name = "DevHub" local Frame = Instance.new("Frame", ScreenGui) Frame.Size = UDim2.new(0, 360, 0, 420) Frame.Position = UDim2.new(0.5, -180, 0.5, -210) Frame.BackgroundColor3 = Color3.fromRGB(25, 25, 25) Frame.Active = true Frame.Draggable = true Frame.BorderSizePixel = 0 local Title = Instance.new("TextLabel", Frame) Title.Size = UDim2.new(1, 0, 0, 40) Title.BackgroundColor3 = Color3.fromRGB(35, 35, 35) Title.Text = "Developer Hub" Title.TextColor3 = Color3.fromRGB(255, 255, 255) Title.Font = Enum.Font.GothamBold Title.TextSize = 18 -- Section Tabs local tabUniversal = Instance.new("TextButton", Frame) tabUniversal.Size = UDim2.new(0.5, 0, 0, 35) tabUniversal.Position = UDim2.new(0, 0, 0, 45) tabUniversal.BackgroundColor3 = Color3.fromRGB(55, 55, 55) tabUniversal.Text = "Universal" tabUniversal.TextColor3 = Color3.new(1,1,1) tabUniversal.Font = Enum.Font.Gotham local tabAdmin = Instance.new("TextButton", Frame) tabAdmin.Size = UDim2.new(0.5, 0, 0, 35) tabAdmin.Position = UDim2.new(0.5, 0, 0, 45) tabAdmin.BackgroundColor3 = Color3.fromRGB(35, 35, 35) tabAdmin.Text = "Admin Tools" tabAdmin.TextColor3 = Color3.new(1,1,1) tabAdmin.Font = Enum.Font.Gotham -- Containers local UniversalFrame = Instance.new("Frame", Frame) UniversalFrame.Size = UDim2.new(1, 0, 1, -80) UniversalFrame.Position = UDim2.new(0, 0, 0, 80) UniversalFrame.BackgroundTransparency = 1 local AdminFrame = Instance.new("Frame", Frame) AdminFrame.Size = UDim2.new(1, 0, 1, -80) AdminFrame.Position = UDim2.new(0, 0, 0, 80) AdminFrame.BackgroundTransparency = 1 AdminFrame.Visible = false -- Tab Switching tabUniversal.MouseButton1Click:Connect(function() tabUniversal.BackgroundColor3 = Color3.fromRGB(55, 55, 55) tabAdmin.BackgroundColor3 = Color3.fromRGB(35, 35, 35) UniversalFrame.Visible = true AdminFrame.Visible = false end) tabAdmin.MouseButton1Click:Connect(function() tabUniversal.BackgroundColor3 = Color3.fromRGB(35, 35, 35) tabAdmin.BackgroundColor3 = Color3.fromRGB(55, 55, 55) UniversalFrame.Visible = false AdminFrame.Visible = true end) --------------------------------------------------------------- -- 🧩 Universal Tools --------------------------------------------------------------- local flying = false local infiniteJump = false local flyGyro, flyVel local function createButton(parent, text, yPos, callback) local btn = Instance.new("TextButton", parent) btn.Size = UDim2.new(0.9, 0, 0, 40) btn.Position = UDim2.new(0.05, 0, 0, yPos) btn.BackgroundColor3 = Color3.fromRGB(60, 60, 60) btn.Text = text btn.TextColor3 = Color3.new(1,1,1) btn.Font = Enum.Font.Gotham btn.TextSize = 16 btn.BorderSizePixel = 0 btn.AutoButtonColor = true btn.MouseButton1Click:Connect(callback) end -- Fly createButton(UniversalFrame, "Toggle Fly", 0, function() flying = not flying local char = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait() local hrp = char:WaitForChild("HumanoidRootPart") if flying then flyGyro = Instance.new("BodyGyro", hrp) flyVel = Instance.new("BodyVelocity", hrp) flyGyro.MaxTorque = Vector3.new(400000,400000,400000) flyVel.MaxForce = Vector3.new(400000,400000,400000) RunService.RenderStepped:Connect(function() if flying then local cam = workspace.CurrentCamera flyGyro.CFrame = cam.CFrame local move = Vector3.zero if UIS:IsKeyDown(Enum.KeyCode.W) then move += cam.CFrame.LookVector end if UIS:IsKeyDown(Enum.KeyCode.S) then move -= cam.CFrame.LookVector end if UIS:IsKeyDown(Enum.KeyCode.A) then move -= cam.CFrame.RightVector end if UIS:IsKeyDown(Enum.KeyCode.D) then move += cam.CFrame.RightVector end flyVel.Velocity = move * 60 end end) else if flyGyro then flyGyro:Destroy() end if flyVel then flyVel:Destroy() end end end) -- Infinite Jump createButton(UniversalFrame, "Toggle Infinite Jump", 50, function() infiniteJump = not infiniteJump UIS.JumpRequest:Connect(function() if infiniteJump then local char = LocalPlayer.Character if char then local hum = char:FindFirstChildOfClass("Humanoid") if hum then hum:ChangeState(Enum.HumanoidStateType.Jumping) end end end end) end) -- Reveal usernames createButton(UniversalFrame, "Show Usernames", 100, function() local names = "Players:\n" for _, plr in ipairs(Players:GetPlayers()) do names = names .. plr.Name .. "\n" end game.StarterGui:SetCore("SendNotification", { Title = "Player List", Text = names, Duration = 5 }) end) --------------------------------------------------------------- -- 🛠️ Admin Tools (for authorized devs only) --------------------------------------------------------------- local function isAdmin() return ADMINS[LocalPlayer.Name] == true end local function adminNotice(msg) game.StarterGui:SetCore("SendNotification", { Title = "Admin Hub", Text = msg, Duration = 3 }) end createButton(AdminFrame, "Teleport To Player", 0, function() if not isAdmin() then return adminNotice("Not authorized.") end local target = Players:FindFirstChild(prompt("Enter Player Name:")) if target and target.Character then LocalPlayer.Character:MoveTo(target.Character.HumanoidRootPart.Position) end end) createButton(AdminFrame, "Bring Player To You", 50, function() if not isAdmin() then return adminNotice("Not authorized.") end local target = Players:FindFirstChild(prompt("Enter Player Name:")) if target and target.Character and LocalPlayer.Character then target.Character:MoveTo(LocalPlayer.Character.HumanoidRootPart.Position) end end) createButton(AdminFrame, "Heal Player", 100, function() if not isAdmin() then return adminNotice("Not authorized.") end local char = LocalPlayer.Character if char then local hum = char:FindFirstChildOfClass("Humanoid") if hum then hum.Health = hum.MaxHealth end adminNotice("You have been healed.") end end) createButton(AdminFrame, "Toggle Day/Night", 150, function() if not isAdmin() then return adminNotice("Not authorized.") end local lighting = game:GetService("Lighting") if lighting.ClockTime >= 18 then lighting.ClockTime = 12 else lighting.ClockTime = 20 end end) createButton(AdminFrame, "Announce Message", 200, function() if not isAdmin() then return adminNotice("Not authorized.") end game.StarterGui:SetCore("SendNotification", { Title = "Announcement", Text = "Hello from the Developer!", Duration = 5 }) end) createButton(Frame, "Close Hub", 380, function() ScreenGui:Destroy() end)