--[[ Ultra-Premium Client-Sided GUI Script Roblox Luau ]] local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local LocalPlayer = Players.LocalPlayer --================================================== -- MAIN GUI --================================================== local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "AeroVapor_Utility" ScreenGui.ResetOnSpawn = false ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling if syn and syn.protect_gui then syn.protect_gui(ScreenGui) elseif gethui then ScreenGui.Parent = gethui() else ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") end --================================================== -- MAIN FRAME --================================================== local MainFrame = Instance.new("Frame") MainFrame.Name = "MainFrame" MainFrame.Size = UDim2.new(0, 260, 0, 365) MainFrame.Position = UDim2.new(0.5, -130, 0.4, -182) MainFrame.BackgroundColor3 = Color3.fromRGB(15, 16, 22) MainFrame.BackgroundTransparency = 0.15 MainFrame.BorderSizePixel = 0 MainFrame.Active = true MainFrame.ClipsDescendants = true MainFrame.Parent = ScreenGui local UICorner = Instance.new("UICorner") UICorner.CornerRadius = UDim.new(0, 16) UICorner.Parent = MainFrame local UIStroke = Instance.new("UIStroke") UIStroke.Color = Color3.fromRGB(0, 212, 255) UIStroke.Thickness = 2 UIStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border UIStroke.Parent = MainFrame --================================================== -- TOP BANNER --================================================== local TopBanner = Instance.new("Frame") TopBanner.Name = "TopBanner" TopBanner.Size = UDim2.new(1, 0, 0, 45) TopBanner.BackgroundColor3 = Color3.fromRGB(24, 25, 35) TopBanner.BorderSizePixel = 0 TopBanner.Parent = MainFrame local TopCorner = Instance.new("UICorner") TopCorner.CornerRadius = UDim.new(0, 16) TopCorner.Parent = TopBanner local TitleLabel = Instance.new("TextLabel") TitleLabel.Size = UDim2.new(1, -70, 1, 0) TitleLabel.Position = UDim2.new(0, 10, 0, 0) TitleLabel.BackgroundTransparency = 1 TitleLabel.Text = "⚡ VAPOR SYSTEM" TitleLabel.Font = Enum.Font.GothamBold TitleLabel.TextSize = 14 TitleLabel.TextColor3 = Color3.fromRGB(255, 255, 255) TitleLabel.TextXAlignment = Enum.TextXAlignment.Left TitleLabel.Parent = TopBanner --================================================== -- HEADER BUTTONS --================================================== local ControlsContainer = Instance.new("Frame") ControlsContainer.Size = UDim2.new(0, 60, 1, 0) ControlsContainer.Position = UDim2.new(1, -65, 0, 0) ControlsContainer.BackgroundTransparency = 1 ControlsContainer.Parent = TopBanner local ControlsLayout = Instance.new("UIListLayout") ControlsLayout.FillDirection = Enum.FillDirection.Horizontal ControlsLayout.HorizontalAlignment = Enum.HorizontalAlignment.Right ControlsLayout.VerticalAlignment = Enum.VerticalAlignment.Center ControlsLayout.Padding = UDim.new(0, 6) ControlsLayout.Parent = ControlsContainer local function createHeaderButton(text, color) local btn = Instance.new("TextButton") btn.Size = UDim2.new(0, 24, 0, 24) btn.BackgroundColor3 = color btn.Font = Enum.Font.GothamBold btn.TextSize = 12 btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.Text = text btn.AutoButtonColor = false local btnCorner = Instance.new("UICorner") btnCorner.CornerRadius = UDim.new(1, 0) btnCorner.Parent = btn btn.Parent = ControlsContainer return btn end local MinimizeBtn = createHeaderButton( "-", Color3.fromRGB(45, 48, 60) ) local CloseBtn = createHeaderButton( "X", Color3.fromRGB(235, 77, 75) ) --================================================== -- MAIN CONTENT --================================================== local Container = Instance.new("Frame") Container.Size = UDim2.new(1, 0, 1, -45) Container.Position = UDim2.new(0, 0, 0, 45) Container.BackgroundTransparency = 1 Container.Parent = MainFrame local UIListLayout = Instance.new("UIListLayout") UIListLayout.Padding = UDim.new(0, 10) UIListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder UIListLayout.Parent = Container local UIPadding = Instance.new("UIPadding") UIPadding.PaddingTop = UDim.new(0, 10) UIPadding.Parent = Container --================================================== -- COLORS --================================================== local COLOR_OFF = Color3.fromRGB(255, 74, 74) local COLOR_ON = Color3.fromRGB(0, 230, 118) local COLOR_ACTION = Color3.fromRGB(33, 150, 243) --================================================== -- TOGGLE ROW --================================================== local function createToggleRow(nameText, order) local RowFrame = Instance.new("Frame") RowFrame.Size = UDim2.new(0, 230, 0, 38) RowFrame.BackgroundTransparency = 1 RowFrame.LayoutOrder = order RowFrame.Parent = Container local TextLabel = Instance.new("TextLabel") TextLabel.Size = UDim2.new(0, 160, 1, 0) TextLabel.BackgroundTransparency = 1 TextLabel.Font = Enum.Font.GothamBold TextLabel.TextSize = 13 TextLabel.TextColor3 = Color3.fromRGB(255, 255, 255) TextLabel.TextXAlignment = Enum.TextXAlignment.Left TextLabel.Text = nameText TextLabel.Parent = RowFrame local ToggleBtn = Instance.new("TextButton") ToggleBtn.Size = UDim2.new(0, 50, 0, 24) ToggleBtn.Position = UDim2.new(1, -50, 0.5, -12) ToggleBtn.BackgroundColor3 = COLOR_OFF ToggleBtn.Text = "" ToggleBtn.AutoButtonColor = false ToggleBtn.Parent = RowFrame local ToggleCorner = Instance.new("UICorner") ToggleCorner.CornerRadius = UDim.new(1, 0) ToggleCorner.Parent = ToggleBtn local Slider = Instance.new("Frame") Slider.Size = UDim2.new(0, 18, 0, 18) Slider.Position = UDim2.new(0, 3, 0.5, -9) Slider.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Slider.BorderSizePixel = 0 Slider.Parent = ToggleBtn local SliderCorner = Instance.new("UICorner") SliderCorner.CornerRadius = UDim.new(1, 0) SliderCorner.Parent = Slider return ToggleBtn, Slider end --================================================== -- ACTION BUTTON --================================================== local function styleActionButton(btn, text, order) btn.Size = UDim2.new(0, 230, 0, 38) btn.Font = Enum.Font.GothamBold btn.TextSize = 13 btn.TextColor3 = Color3.fromRGB(255, 255, 255) btn.Text = text btn.LayoutOrder = order btn.BackgroundColor3 = COLOR_ACTION btn.AutoButtonColor = false local btnCorner = Instance.new("UICorner") btnCorner.CornerRadius = UDim.new(0, 10) btnCorner.Parent = btn local btnStroke = Instance.new("UIStroke") btnStroke.Color = Color3.fromRGB(255, 255, 255) btnStroke.Transparency = 0.85 btnStroke.Thickness = 1 btnStroke.Parent = btn btn.MouseEnter:Connect(function() if MainFrame.Size == UDim2.new(0, 260, 0, 365) then TweenService:Create( btn, TweenInfo.new( 0.2, Enum.EasingStyle.Back, Enum.EasingDirection.Out ), { Size = UDim2.new(0, 234, 0, 40) } ):Play() TweenService:Create( btnStroke, TweenInfo.new(0.2), { Transparency = 0.5 } ):Play() end end) btn.MouseLeave:Connect(function() if MainFrame.Size == UDim2.new(0, 260, 0, 365) then TweenService:Create( btn, TweenInfo.new( 0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out ), { Size = UDim2.new(0, 230, 0, 38) } ):Play() TweenService:Create( btnStroke, TweenInfo.new(0.2), { Transparency = 0.85 } ):Play() end end) btn.Parent = Container end --================================================== -- COMPONENTS --================================================== local SpinBotBtn, SpinSlider = createToggleRow("spinBOT", 1) local TpAwayBtn = Instance.new("TextButton") styleActionButton( TpAwayBtn, "tpAWAY", 2 ) local TpBtn = Instance.new("TextButton") styleActionButton( TpBtn, "tp", 3 ) local AngryTpBtn, AngrySlider = createToggleRow("angryTP", 4) local TpUpBtn = Instance.new("TextButton") styleActionButton( TpUpBtn, "tpUP", 5 ) -- NEW SPEED TOGGLE local SpeedBtn, SpeedSlider = createToggleRow("speed", 6) --================================================== -- STATE --================================================== local spinbotOn = false local angryTpOn = false local speedOn = false local spinConnection local angryTpConnection local isMinimized = false -- Speed starts at normal Roblox default local currentSpeed = 16 --================================================== -- TOGGLE ANIMATION --================================================== local function animateToggle(btn, slider, state) local targetPos = state and UDim2.new(1, -21, 0.5, -9) or UDim2.new(0, 3, 0.5, -9) local targetColor = state and COLOR_ON or COLOR_OFF TweenService:Create( slider, TweenInfo.new( 0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out ), { Position = targetPos } ):Play() TweenService:Create( btn, TweenInfo.new( 0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out ), { BackgroundColor3 = targetColor } ):Play() end --================================================== -- CHARACTER HELPERS --================================================== local function getCharacter() return LocalPlayer.Character end local function getHumanoid() local character = getCharacter() if character then return character:FindFirstChildOfClass("Humanoid") end return nil end local function applySpeed() local humanoid = getHumanoid() if humanoid and speedOn then humanoid.WalkSpeed = currentSpeed end end --================================================== -- TP HELPERS --================================================== local function getBehindCFrame(targetPlayer) if targetPlayer and targetPlayer.Character and targetPlayer.Character:FindFirstChild("HumanoidRootPart") then local targetRoot = targetPlayer.Character.HumanoidRootPart return targetRoot.CFrame * CFrame.new(0, 0, 3) end return nil end local function getRandomPlayer() local allPlayers = Players:GetPlayers() local available = {} for _, p in ipairs(allPlayers) do if p ~= LocalPlayer and p.Character and p.Character:FindFirstChild("HumanoidRootPart") then table.insert(available, p) end end if #available > 0 then return available[ math.random( 1, #available ) ] end return nil end --================================================== -- SPEED SETTINGS WINDOW --================================================== local SpeedWindow = Instance.new("Frame") SpeedWindow.Name = "SpeedSettings" SpeedWindow.Size = UDim2.new(0, 280, 0, 175) SpeedWindow.Position = UDim2.new(0.5, -140, 0.5, -87) SpeedWindow.BackgroundColor3 = Color3.fromRGB(15, 16, 22) SpeedWindow.BackgroundTransparency = 0.05 SpeedWindow.BorderSizePixel = 0 SpeedWindow.Visible = false SpeedWindow.Active = true SpeedWindow.ZIndex = 20 SpeedWindow.Parent = ScreenGui local SpeedWindowCorner = Instance.new("UICorner") SpeedWindowCorner.CornerRadius = UDim.new(0, 16) SpeedWindowCorner.Parent = SpeedWindow local SpeedWindowStroke = Instance.new("UIStroke") SpeedWindowStroke.Color = Color3.fromRGB(0, 212, 255) SpeedWindowStroke.Thickness = 2 SpeedWindowStroke.Parent = SpeedWindow -- Speed window top bar local SpeedTop = Instance.new("Frame") SpeedTop.Size = UDim2.new(1, 0, 0, 42) SpeedTop.BackgroundColor3 = Color3.fromRGB(24, 25, 35) SpeedTop.BorderSizePixel = 0 SpeedTop.ZIndex = 21 SpeedTop.Parent = SpeedWindow local SpeedTopCorner = Instance.new("UICorner") SpeedTopCorner.CornerRadius = UDim.new(0, 16) SpeedTopCorner.Parent = SpeedTop local SpeedTitle = Instance.new("TextLabel") SpeedTitle.Size = UDim2.new(1, -55, 1, 0) SpeedTitle.Position = UDim2.new(0, 12, 0, 0) SpeedTitle.BackgroundTransparency = 1 SpeedTitle.Text = "⚡ Speed Settings" SpeedTitle.Font = Enum.Font.GothamBold SpeedTitle.TextSize = 14 SpeedTitle.TextColor3 = Color3.fromRGB(255, 255, 255) SpeedTitle.TextXAlignment = Enum.TextXAlignment.Left SpeedTitle.ZIndex = 22 SpeedTitle.Parent = SpeedTop local SpeedClose = Instance.new("TextButton") SpeedClose.Size = UDim2.new(0, 25, 0, 25) SpeedClose.Position = UDim2.new(1, -35, 0.5, -12) SpeedClose.BackgroundColor3 = Color3.fromRGB(235, 77, 75) SpeedClose.Text = "X" SpeedClose.Font = Enum.Font.GothamBold SpeedClose.TextSize = 11 SpeedClose.TextColor3 = Color3.fromRGB(255, 255, 255) SpeedClose.AutoButtonColor = false SpeedClose.ZIndex = 22 SpeedClose.Parent = SpeedTop local SpeedCloseCorner = Instance.new("UICorner") SpeedCloseCorner.CornerRadius = UDim.new(1, 0) SpeedCloseCorner.Parent = SpeedClose --================================================== -- SPEED TEXTBOX --================================================== local SpeedBox = Instance.new("TextBox") SpeedBox.Size = UDim2.new(0, 240, 0, 38) SpeedBox.Position = UDim2.new(0.5, -120, 0, 58) SpeedBox.BackgroundColor3 = Color3.fromRGB(30, 32, 43) SpeedBox.BorderSizePixel = 0 SpeedBox.Text = tostring(currentSpeed) SpeedBox.PlaceholderText = "Enter speed..." SpeedBox.Font = Enum.Font.GothamBold SpeedBox.TextSize = 14 SpeedBox.TextColor3 = Color3.fromRGB(255, 255, 255) SpeedBox.PlaceholderColor3 = Color3.fromRGB(150, 150, 160) SpeedBox.ClearTextOnFocus = false SpeedBox.ZIndex = 22 SpeedBox.Parent = SpeedWindow local SpeedBoxCorner = Instance.new("UICorner") SpeedBoxCorner.CornerRadius = UDim.new(0, 10) SpeedBoxCorner.Parent = SpeedBox local SpeedBoxStroke = Instance.new("UIStroke") SpeedBoxStroke.Color = Color3.fromRGB(0, 212, 255) SpeedBoxStroke.Transparency = 0.65 SpeedBoxStroke.Thickness = 1 SpeedBoxStroke.Parent = SpeedBox --================================================== -- CURRENT SPEED LABEL --================================================== local CurrentSpeedLabel = Instance.new("TextLabel") CurrentSpeedLabel.Size = UDim2.new(1, -20, 0, 30) CurrentSpeedLabel.Position = UDim2.new(0, 10, 0, 108) CurrentSpeedLabel.BackgroundTransparency = 1 CurrentSpeedLabel.Text = "Current speed: " .. tostring(currentSpeed) CurrentSpeedLabel.Font = Enum.Font.GothamBold CurrentSpeedLabel.TextSize = 13 CurrentSpeedLabel.TextColor3 = Color3.fromRGB(255, 255, 255) CurrentSpeedLabel.ZIndex = 22 CurrentSpeedLabel.Parent = SpeedWindow --================================================== -- SPEED BOX INPUT --================================================== SpeedBox:GetPropertyChangedSignal("Text"):Connect(function() local text = SpeedBox.Text -- Allow numbers and decimals only local cleaned = text:gsub("[^%d%.%-]", "") if cleaned ~= text then SpeedBox.Text = cleaned return end local number = tonumber(cleaned) if number then currentSpeed = number CurrentSpeedLabel.Text = "Current speed: " .. tostring(currentSpeed) applySpeed() end end) --================================================== -- OPEN SPEED WINDOW --================================================== SpeedBtn.MouseButton1Click:Connect(function() speedOn = not speedOn animateToggle( SpeedBtn, SpeedSlider, speedOn ) if speedOn then applySpeed() SpeedWindow.Visible = true SpeedWindow.Size = UDim2.new(0, 260, 0, 155) TweenService:Create( SpeedWindow, TweenInfo.new( 0.25, Enum.EasingStyle.Back, Enum.EasingDirection.Out ), { Size = UDim2.new(0, 280, 0, 175) } ):Play() else local humanoid = getHumanoid() if humanoid then humanoid.WalkSpeed = 16 end SpeedWindow.Visible = false end end) --================================================== -- CLOSE SPEED WINDOW --================================================== SpeedClose.MouseButton1Click:Connect(function() SpeedWindow.Visible = false end) --================================================== -- KEEP SPEED AFTER RESPAWN --================================================== LocalPlayer.CharacterAdded:Connect(function(character) local humanoid = character:WaitForChild("Humanoid", 5) if humanoid and speedOn then humanoid.WalkSpeed = currentSpeed end end) --================================================== -- SPINBOT --================================================== SpinBotBtn.MouseButton1Click:Connect(function() spinbotOn = not spinbotOn animateToggle( SpinBotBtn, SpinSlider, spinbotOn ) if spinbotOn then spinConnection = RunService.RenderStepped:Connect(function() local char = LocalPlayer.Character local root = char and char:FindFirstChild( "HumanoidRootPart" ) if root then root.CFrame = root.CFrame * CFrame.Angles( 0, math.rad(140), 0 ) end end) else if spinConnection then spinConnection:Disconnect() spinConnection = nil end end end) --================================================== -- TP AWAY --================================================== TpAwayBtn.MouseButton1Click:Connect(function() local char = LocalPlayer.Character local root = char and char:FindFirstChild( "HumanoidRootPart" ) if root then root.CFrame = root.CFrame + Vector3.new(3000000, 0, 0) end end) --================================================== -- TP --================================================== TpBtn.MouseButton1Click:Connect(function() local char = LocalPlayer.Character local root = char and char:FindFirstChild( "HumanoidRootPart" ) if root then local target = getRandomPlayer() if target then local targetCFrame = getBehindCFrame(target) if targetCFrame then root.CFrame = targetCFrame end end end end) --================================================== -- ANGRY TP --================================================== AngryTpBtn.MouseButton1Click:Connect(function() angryTpOn = not angryTpOn animateToggle( AngryTpBtn, AngrySlider, angryTpOn ) if angryTpOn then angryTpConnection = RunService.Heartbeat:Connect(function() local char = LocalPlayer.Character local root = char and char:FindFirstChild( "HumanoidRootPart" ) if root then local target = getRandomPlayer() if target then local targetCFrame = getBehindCFrame(target) if targetCFrame then root.CFrame = targetCFrame end end end end) else if angryTpConnection then angryTpConnection:Disconnect() angryTpConnection = nil end end end) --================================================== -- TP UP --================================================== TpUpBtn.MouseButton1Click:Connect(function() local char = LocalPlayer.Character local root = char and char:FindFirstChild( "HumanoidRootPart" ) if root then root.CFrame = root.CFrame + Vector3.new(0, 20000, 0) end end) --================================================== -- MINIMIZE --================================================== MinimizeBtn.MouseButton1Click:Connect(function() isMinimized = not isMinimized if isMinimized then Container.Visible = false TitleLabel.Visible = false MinimizeBtn.Text = "+" TweenService:Create( MainFrame, TweenInfo.new( 0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out ), { Size = UDim2.new(0, 80, 0, 45) } ):Play() TweenService:Create( UICorner, TweenInfo.new(0.3), { CornerRadius = UDim.new(0, 22) } ):Play() TweenService:Create( TopCorner, TweenInfo.new(0.3), { CornerRadius = UDim.new(0, 22) } ):Play() TweenService:Create( TopBanner, TweenInfo.new(0.3), { Size = UDim2.new(1, 0, 1, 0) } ):Play() TweenService:Create( ControlsContainer, TweenInfo.new(0.3), { Size = UDim2.new(1, 0, 1, 0), Position = UDim2.new(0, 0, 0, 0) } ):Play() ControlsLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center else MinimizeBtn.Text = "-" ControlsLayout.HorizontalAlignment = Enum.HorizontalAlignment.Right local mainTween = TweenService:Create( MainFrame, TweenInfo.new( 0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out ), { Size = UDim2.new(0, 260, 0, 365) } ) TweenService:Create( UICorner, TweenInfo.new(0.3), { CornerRadius = UDim.new(0, 16) } ):Play() TweenService:Create( TopCorner, TweenInfo.new(0.3), { CornerRadius = UDim.new(0, 16) } ):Play() TweenService:Create( TopBanner, TweenInfo.new(0.3), { Size = UDim2.new(1, 0, 0, 45) } ):Play() TweenService:Create( ControlsContainer, TweenInfo.new(0.3), { Size = UDim2.new(0, 60, 1, 0), Position = UDim2.new(1, -65, 0, 0) } ):Play() mainTween.Completed:Connect(function() if not isMinimized then Container.Visible = true TitleLabel.Visible = true end end) mainTween:Play() end end) --================================================== -- CLOSE MAIN GUI --================================================== CloseBtn.MouseButton1Click:Connect(function() if spinConnection then spinConnection:Disconnect() end if angryTpConnection then angryTpConnection:Disconnect() end ScreenGui:Destroy() end) --================================================== -- DRAGGING --================================================== local dragging local dragInput local dragStart local startPos local function update(input) local delta = input.Position - dragStart TweenService:Create( MainFrame, TweenInfo.new( 0.08, Enum.EasingStyle.Linear ), { Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) } ):Play() end MainFrame.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 input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) MainFrame.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then update(input) end end)