--// VDRIFT HUB V4 --// Made by Solunacitra --// Credits: i8o_onyx --// Roblox Studio LocalScript local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local Lighting = game:GetService("Lighting") local Player = Players.LocalPlayer local PlayerGui = Player:WaitForChild("PlayerGui") -------------------------------------------------- -- CONFIG -------------------------------------------------- local KEY = "onyxiscool" local KEY_LINK = "https://link-center.net/3731384/DsB6SnRFQNtN" local unlocked = false local uiScaleValue = 0.82 local rainbowEnabled = true local moveButtonEnabled = false -------------------------------------------------- -- CHARACTER -------------------------------------------------- local function getCharacter() return Player.Character or Player.CharacterAdded:Wait() end local function getHumanoid() return getCharacter():FindFirstChildOfClass("Humanoid") end local function getRoot() return getCharacter():FindFirstChild("HumanoidRootPart") end -------------------------------------------------- -- GUI -------------------------------------------------- local Gui = Instance.new("ScreenGui") Gui.Name = "VDriftHub" Gui.ResetOnSpawn = false Gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling Gui.Parent = PlayerGui local Main = Instance.new("Frame") Main.Name = "Main" Main.Size = UDim2.fromOffset(820,560) Main.Position = UDim2.fromScale(.5,.5) Main.AnchorPoint = Vector2.new(.5,.5) Main.BackgroundColor3 = Color3.fromRGB(12,12,18) Main.BorderSizePixel = 0 Main.Visible = false Main.Parent = Gui local MainCorner = Instance.new("UICorner") MainCorner.CornerRadius = UDim.new(0,16) MainCorner.Parent = Main local MainStroke = Instance.new("UIStroke") MainStroke.Thickness = 2 MainStroke.Parent = Main local Scale = Instance.new("UIScale") Scale.Scale = uiScaleValue Scale.Parent = Main -------------------------------------------------- -- NOTIFICATIONS -------------------------------------------------- local NotificationHolder = Instance.new("Frame") NotificationHolder.Size = UDim2.fromOffset(280,300) NotificationHolder.Position = UDim2.new(1,-295,0,15) NotificationHolder.BackgroundTransparency = 1 NotificationHolder.Parent = Gui local NotificationLayout = Instance.new("UIListLayout") NotificationLayout.Padding = UDim.new(0,7) NotificationLayout.Parent = NotificationHolder local function notify(text) local n = Instance.new("TextLabel") n.Size = UDim2.fromOffset(270,42) n.BackgroundColor3 = Color3.fromRGB(18,18,24) n.TextColor3 = Color3.new(1,1,1) n.Font = Enum.Font.GothamBold n.TextSize = 12 n.TextWrapped = true n.Text = text n.Parent = NotificationHolder local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0,10) c.Parent = n task.delay(2,function() if n then n:Destroy() end end) end -------------------------------------------------- -- RAINBOW -------------------------------------------------- task.spawn(function() while Gui.Parent do if rainbowEnabled then for h = 0,1,.008 do if not rainbowEnabled then break end MainStroke.Color = Color3.fromHSV(h,1,1) task.wait(.025) end else MainStroke.Color = Color3.fromRGB(80,80,90) task.wait(.2) end end end) -------------------------------------------------- -- TOP BAR -------------------------------------------------- local Top = Instance.new("Frame") Top.Size = UDim2.new(1,0,0,55) Top.BackgroundTransparency = 1 Top.Parent = Main local Title = Instance.new("TextLabel") Title.Size = UDim2.fromOffset(300,35) Title.Position = UDim2.fromOffset(18,3) Title.BackgroundTransparency = 1 Title.Text = "VDrift Hub" Title.TextColor3 = Color3.new(1,1,1) Title.Font = Enum.Font.GothamBlack Title.TextSize = 22 Title.TextXAlignment = Enum.TextXAlignment.Left Title.Parent = Top local Version = Instance.new("TextLabel") Version.Size = UDim2.fromOffset(300,20) Version.Position = UDim2.fromOffset(20,34) Version.BackgroundTransparency = 1 Version.Text = "V4 • 400+ COMMANDS" Version.TextColor3 = Color3.fromRGB(140,140,155) Version.Font = Enum.Font.Gotham Version.TextSize = 10 Version.TextXAlignment = Enum.TextXAlignment.Left Version.Parent = Top -------------------------------------------------- -- DRAG -------------------------------------------------- local function makeDraggable(frame,handle) local dragging = false local startMouse local startPosition handle.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true startMouse = input.Position startPosition = frame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) UIS.InputChanged:Connect(function(input) if not dragging then return end if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then local delta = input.Position - startMouse frame.Position = UDim2.new( startPosition.X.Scale, startPosition.X.Offset + delta.X, startPosition.Y.Scale, startPosition.Y.Offset + delta.Y ) end end) end makeDraggable(Main,Top) -------------------------------------------------- -- SIDEBAR -------------------------------------------------- local Sidebar = Instance.new("Frame") Sidebar.Size = UDim2.fromOffset(165,505) Sidebar.Position = UDim2.fromOffset(10,55) Sidebar.BackgroundColor3 = Color3.fromRGB(17,17,24) Sidebar.BorderSizePixel = 0 Sidebar.Parent = Main local SideCorner = Instance.new("UICorner") SideCorner.CornerRadius = UDim.new(0,12) SideCorner.Parent = Sidebar local SideScroll = Instance.new("ScrollingFrame") SideScroll.Size = UDim2.new(1,-8,1,-8) SideScroll.Position = UDim2.fromOffset(4,4) SideScroll.BackgroundTransparency = 1 SideScroll.BorderSizePixel = 0 SideScroll.ScrollBarThickness = 3 SideScroll.AutomaticCanvasSize = Enum.AutomaticSize.Y SideScroll.Parent = Sidebar local SideLayout = Instance.new("UIListLayout") SideLayout.Padding = UDim.new(0,5) SideLayout.Parent = SideScroll -------------------------------------------------- -- CONTENT -------------------------------------------------- local Content = Instance.new("Frame") Content.Size = UDim2.new(1,-190,1,-65) Content.Position = UDim2.fromOffset(180,55) Content.BackgroundTransparency = 1 Content.Parent = Main local Search = Instance.new("TextBox") Search.Size = UDim2.new(1,-10,0,38) Search.Position = UDim2.fromOffset(5,0) Search.BackgroundColor3 = Color3.fromRGB(20,20,28) Search.BorderSizePixel = 0 Search.PlaceholderText = "Search commands..." Search.PlaceholderColor3 = Color3.fromRGB(110,110,125) Search.Text = "" Search.TextColor3 = Color3.new(1,1,1) Search.Font = Enum.Font.Gotham Search.TextSize = 13 Search.ClearTextOnFocus = false Search.Parent = Content local SearchCorner = Instance.new("UICorner") SearchCorner.CornerRadius = UDim.new(0,10) SearchCorner.Parent = Search local CommandScroll = Instance.new("ScrollingFrame") CommandScroll.Size = UDim2.new(1,-10,1,-50) CommandScroll.Position = UDim2.fromOffset(5,46) CommandScroll.BackgroundTransparency = 1 CommandScroll.BorderSizePixel = 0 CommandScroll.ScrollBarThickness = 4 CommandScroll.AutomaticCanvasSize = Enum.AutomaticSize.Y CommandScroll.Parent = Content local CommandLayout = Instance.new("UIListLayout") CommandLayout.Padding = UDim.new(0,7) CommandLayout.Parent = CommandScroll -------------------------------------------------- -- KEY SYSTEM -------------------------------------------------- local KeyFrame = Instance.new("Frame") KeyFrame.Size = UDim2.fromOffset(360,220) KeyFrame.Position = UDim2.fromScale(.5,.5) KeyFrame.AnchorPoint = Vector2.new(.5,.5) KeyFrame.BackgroundColor3 = Color3.fromRGB(14,14,21) KeyFrame.BorderSizePixel = 0 KeyFrame.Parent = Gui local KeyCorner = Instance.new("UICorner") KeyCorner.CornerRadius = UDim.new(0,16) KeyCorner.Parent = KeyFrame local KeyStroke = Instance.new("UIStroke") KeyStroke.Thickness = 2 KeyStroke.Parent = KeyFrame makeDraggable(KeyFrame,KeyFrame) local KeyTitle = Instance.new("TextLabel") KeyTitle.Size = UDim2.new(1,-30,0,40) KeyTitle.Position = UDim2.fromOffset(15,10) KeyTitle.BackgroundTransparency = 1 KeyTitle.Text = "VDrift Key System" KeyTitle.TextColor3 = Color3.new(1,1,1) KeyTitle.Font = Enum.Font.GothamBlack KeyTitle.TextSize = 20 KeyTitle.Parent = KeyFrame local KeyBox = Instance.new("TextBox") KeyBox.Size = UDim2.new(1,-30,0,40) KeyBox.Position = UDim2.fromOffset(15,60) KeyBox.BackgroundColor3 = Color3.fromRGB(25,25,34) KeyBox.BorderSizePixel = 0 KeyBox.PlaceholderText = "Enter key..." KeyBox.Text = "" KeyBox.TextColor3 = Color3.new(1,1,1) KeyBox.Font = Enum.Font.Gotham KeyBox.TextSize = 13 KeyBox.Parent = KeyFrame local KeyBoxCorner = Instance.new("UICorner") KeyBoxCorner.CornerRadius = UDim.new(0,9) KeyBoxCorner.Parent = KeyBox local Submit = Instance.new("TextButton") Submit.Size = UDim2.fromOffset(155,38) Submit.Position = UDim2.fromOffset(15,112) Submit.BackgroundColor3 = Color3.fromRGB(40,40,55) Submit.Text = "Unlock" Submit.TextColor3 = Color3.new(1,1,1) Submit.Font = Enum.Font.GothamBold Submit.TextSize = 13 Submit.BorderSizePixel = 0 Submit.Parent = KeyFrame local SubmitCorner = Instance.new("UICorner") SubmitCorner.CornerRadius = UDim.new(0,9) SubmitCorner.Parent = Submit local GetKey = Instance.new("TextButton") GetKey.Size = UDim2.fromOffset(155,38) GetKey.Position = UDim2.fromOffset(190,112) GetKey.BackgroundColor3 = Color3.fromRGB(40,40,55) GetKey.Text = "Get Key" GetKey.TextColor3 = Color3.new(1,1,1) GetKey.Font = Enum.Font.GothamBold GetKey.TextSize = 13 GetKey.BorderSizePixel = 0 GetKey.Parent = KeyFrame local GetCorner = Instance.new("UICorner") GetCorner.CornerRadius = UDim.new(0,9) GetCorner.Parent = GetKey local KeyStatus = Instance.new("TextLabel") KeyStatus.Size = UDim2.new(1,-30,0,45) KeyStatus.Position = UDim2.fromOffset(15,162) KeyStatus.BackgroundTransparency = 1 KeyStatus.Text = "Enter your key to continue." KeyStatus.TextColor3 = Color3.fromRGB(150,150,165) KeyStatus.Font = Enum.Font.Gotham KeyStatus.TextSize = 11 KeyStatus.TextWrapped = true KeyStatus.Parent = KeyFrame GetKey.MouseButton1Click:Connect(function() KeyStatus.Text = "Key link:\n"..KEY_LINK end) Submit.MouseButton1Click:Connect(function() if KeyBox.Text == KEY then unlocked = true KeyFrame.Visible = false Main.Visible = true notify("VDrift Hub unlocked!") else KeyStatus.Text = "Invalid key." end end) KeyBox.FocusLost:Connect(function(enter) if enter then Submit:Activate() end end) -------------------------------------------------- -- COMMAND REGISTRY -------------------------------------------------- local Commands = {} local States = {} local function register(id,category,name,description,callback) table.insert(Commands,{ ID=id, Category=category, Name=name, Description=description, Callback=callback }) end -------------------------------------------------- -- COMMAND UI -------------------------------------------------- local CurrentCategory = "All" local function refreshCommands() for _,v in ipairs(CommandScroll:GetChildren()) do if v:IsA("Frame") then v:Destroy() end end local query = string.lower(Search.Text) for _,command in ipairs(Commands) do local categoryOK = CurrentCategory == "All" or command.Category == CurrentCategory local searchOK = query == "" or string.find(string.lower(command.Name),query,1,true) or string.find(string.lower(command.Description),query,1,true) if categoryOK and searchOK then local Card = Instance.new("Frame") Card.Size = UDim2.new(1,-5,0,62) Card.BackgroundColor3 = Color3.fromRGB(20,20,28) Card.BorderSizePixel = 0 Card.Parent = CommandScroll local Corner = Instance.new("UICorner") Corner.CornerRadius = UDim.new(0,10) Corner.Parent = Card local Name = Instance.new("TextLabel") Name.Size = UDim2.new(1,-110,0,25) Name.Position = UDim2.fromOffset(12,7) Name.BackgroundTransparency = 1 Name.Text = command.Name Name.TextColor3 = Color3.new(1,1,1) Name.Font = Enum.Font.GothamBold Name.TextSize = 13 Name.TextXAlignment = Enum.TextXAlignment.Left Name.Parent = Card local Desc = Instance.new("TextLabel") Desc.Size = UDim2.new(1,-110,0,23) Desc.Position = UDim2.fromOffset(12,32) Desc.BackgroundTransparency = 1 Desc.Text = command.Description Desc.TextColor3 = Color3.fromRGB(125,125,140) Desc.Font = Enum.Font.Gotham Desc.TextSize = 10 Desc.TextXAlignment = Enum.TextXAlignment.Left Desc.TextTruncate = Enum.TextTruncate.AtEnd Desc.Parent = Card local Run = Instance.new("TextButton") Run.Size = UDim2.fromOffset(82,36) Run.Position = UDim2.new(1,-92,.5,-18) Run.BackgroundColor3 = Color3.fromRGB(38,38,52) Run.Text = "RUN" Run.TextColor3 = Color3.new(1,1,1) Run.Font = Enum.Font.GothamBold Run.TextSize = 11 Run.BorderSizePixel = 0 Run.Parent = Card local RunCorner = Instance.new("UICorner") RunCorner.CornerRadius = UDim.new(0,9) RunCorner.Parent = Run Run.MouseButton1Click:Connect(function() local success,err = pcall(command.Callback) if success then notify("✓ "..command.Name) else notify("Error: "..tostring(err)) end end) end end end Search:GetPropertyChangedSignal("Text"):Connect(refreshCommands) -------------------------------------------------- -- CATEGORIES -------------------------------------------------- local Categories = { "All", "Movement", "Player", "Goofy", "Fun", "Effects", "Visuals", "Physics", "Camera", "Utility", "Settings", "About" } for _,category in ipairs(Categories) do local Tab = Instance.new("TextButton") Tab.Size = UDim2.new(1,-8,0,36) Tab.BackgroundColor3 = Color3.fromRGB(23,23,32) Tab.Text = category Tab.TextColor3 = Color3.fromRGB(210,210,220) Tab.Font = Enum.Font.GothamBold Tab.TextSize = 11 Tab.BorderSizePixel = 0 Tab.Parent = SideScroll local c = Instance.new("UICorner") c.CornerRadius = UDim.new(0,8) c.Parent = Tab Tab.MouseButton1Click:Connect(function() CurrentCategory = category Search.Text = "" refreshCommands() end) end -------------------------------------------------- -- MOVEMENT -------------------------------------------------- register( "fly", "Movement", "Fly", "Toggle flight.", function() States.Fly = not States.Fly local root = getRoot() if not root then return end if States.Fly then local velocity = Instance.new("BodyVelocity") velocity.Name = "VDriftFly" velocity.MaxForce = Vector3.new(1e6,1e6,1e6) velocity.Velocity = Vector3.zero velocity.Parent = root task.spawn(function() while States.Fly and root.Parent do local cam = workspace.CurrentCamera local direction = Vector3.zero if UIS:IsKeyDown(Enum.KeyCode.W) then direction += cam.CFrame.LookVector end if UIS:IsKeyDown(Enum.KeyCode.S) then direction -= cam.CFrame.LookVector end if UIS:IsKeyDown(Enum.KeyCode.A) then direction -= cam.CFrame.RightVector end if UIS:IsKeyDown(Enum.KeyCode.D) then direction += cam.CFrame.RightVector end velocity.Velocity = direction * 55 RunService.Heartbeat:Wait() end if velocity then velocity:Destroy() end end) else local old = root:FindFirstChild("VDriftFly") if old then old:Destroy() end end end ) register( "noclip", "Movement", "Noclip", "Walk through parts.", function() States.Noclip = not States.Noclip task.spawn(function() while States.Noclip do for _,part in ipairs(getCharacter():GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = false end end RunService.Heartbeat:Wait() end end) end ) register( "infinitejump", "Movement", "Infinite Jump", "Jump repeatedly.", function() States.InfiniteJump = not States.InfiniteJump end ) UIS.JumpRequest:Connect(function() if States.InfiniteJump then local hum = getHumanoid() if hum then hum:ChangeState(Enum.HumanoidStateType.Jumping) end end end) -------------------------------------------------- -- SPEED COMMANDS -------------------------------------------------- local speeds = { 8,10,12,14,16,18,20,22,24,26, 28,30,32,36,40,45,50,60,70,80, 90,100,125,150,175,200,250,300 } for _,speed in ipairs(speeds) do register( "speed"..speed, "Movement", "Speed "..speed, "Set WalkSpeed to "..speed..".", function() local hum = getHumanoid() if hum then hum.WalkSpeed = speed end end ) end -------------------------------------------------- -- JUMP COMMANDS -------------------------------------------------- local jumps = { 25,35,45,50,60,70,80,90,100, 120,140,160,180,200 } for _,jump in ipairs(jumps) do register( "jump"..jump, "Movement", "Jump "..jump, "Set JumpPower to "..jump..".", function() local hum = getHumanoid() if hum then hum.UseJumpPower = true hum.JumpPower = jump end end ) end -------------------------------------------------- -- FLIP SYSTEM -------------------------------------------------- local function flip(axis,amount) local root = getRoot() local hum = getHumanoid() if not root or not hum then return end if States.Flipping then return end States.Flipping = true hum.AutoRotate = false root.AssemblyLinearVelocity = Vector3.new( root.AssemblyLinearVelocity.X, 45, root.AssemblyLinearVelocity.Z ) local duration = .65 local start = tick() while tick()-start < duration and root.Parent do local alpha = (tick()-start)/duration local angle = alpha * math.pi * 2 * amount root.CFrame = CFrame.new(root.Position) * CFrame.Angles( axis.X*angle, axis.Y*angle, axis.Z*angle ) RunService.RenderStepped:Wait() end hum.AutoRotate = true States.Flipping = false end register( "backflip", "Goofy", "🤸 Backflip", "Perform a backwards flip.", function() flip(Vector3.new(1,0,0),1) end ) register( "doublebackflip", "Goofy", "🤸 Double Backflip", "Perform two backflips.", function() flip(Vector3.new(1,0,0),2) end ) register( "triplebackflip", "Goofy", "🤸 Triple Backflip", "Perform three backflips.", function() flip(Vector3.new(1,0,0),3) end ) register( "frontflip", "Goofy", "🤸 Frontflip", "Perform a front flip.", function() flip(Vector3.new(-1,0,0),1) end ) register( "doublefrontflip", "Goofy", "🤸 Double Frontflip", "Perform two front flips.", function() flip(Vector3.new(-1,0,0),2) end ) register( "leftflip", "Goofy", "↩️ Left Flip", "Perform a left side flip.", function() flip(Vector3.new(0,0,1),1) end ) register( "rightflip", "Goofy", "↪️ Right Flip", "Perform a right side flip.", function() flip(Vector3.new(0,0,-1),1) end ) register( "randomflip", "Goofy", "🎲 Random Flip", "Perform a random flip.", function() local options = { function() flip(Vector3.new(1,0,0),1) end, function() flip(Vector3.new(-1,0,0),1) end, function() flip(Vector3.new(0,0,1),1) end, function() flip(Vector3.new(0,0,-1),1) end } options[math.random(1,#options)]() end ) -------------------------------------------------- -- PLAYER -------------------------------------------------- register( "sit", "Player", "Sit", "Sit down.", function() local hum = getHumanoid() if hum then hum.Sit = true end end ) register( "stand", "Player", "Stand", "Stand up.", function() local hum = getHumanoid() if hum then hum.Sit = false end end ) register( "freeze", "Player", "Freeze", "Freeze your character.", function() local root = getRoot() if root then root.Anchored = not root.Anchored end end ) register( "invisible", "Player", "Invisible", "Hide your character locally.", function() States.Invisible = not States.Invisible for _,part in ipairs(getCharacter():GetDescendants()) do if part:IsA("BasePart") then part.LocalTransparencyModifier = States.Invisible and 1 or 0 end end end ) register( "bighead", "Player", "Big Head", "Make your head huge.", function() local head = getCharacter():FindFirstChild("Head") if head then head.Size = Vector3.new(4,4,4) end end ) register( "normalhead", "Player", "Normal Head", "Restore head size.", function() local head = getCharacter():FindFirstChild("Head") if head then head.Size = Vector3.new(2,1,1) end end ) -------------------------------------------------- -- GOOFY -------------------------------------------------- register( "spin", "Goofy", "Spin", "Spin continuously.", function() States.Spin = not States.Spin task.spawn(function() while States.Spin do local root = getRoot() if root then root.CFrame *= CFrame.Angles(0,math.rad(18),0) end RunService.RenderStepped:Wait() end end) end ) register( "bounce", "Goofy", "Bounce", "Bounce into the air.", function() local root = getRoot() if root then root.AssemblyLinearVelocity = Vector3.new( root.AssemblyLinearVelocity.X, 100, root.AssemblyLinearVelocity.Z ) end end ) register( "moonjump", "Goofy", "Moon Jump", "Launch yourself very high.", function() local root = getRoot() if root then root.AssemblyLinearVelocity = Vector3.new(0,180,0) end end ) register( "yeet", "Goofy", "YEET", "Launch upward.", function() local root = getRoot() if root then root.AssemblyLinearVelocity = Vector3.new(0,150,0) end end ) -------------------------------------------------- -- EFFECTS -------------------------------------------------- register( "sparkles", "Effects", "Sparkles", "Add sparkles.", function() local root = getRoot() if root then local sparkles = Instance.new("Sparkles") sparkles.Name = "VDrift_Sparkles" sparkles.Parent = root end end ) register( "forcefield", "Effects", "ForceField", "Add a forcefield.", function() local force = Instance.new("ForceField") force.Name = "VDrift_ForceField" force.Parent = getCharacter() end ) register( "trail", "Effects", "Trail", "Add a character trail.", function() local root = getRoot() if not root then return end local a0 = Instance.new("Attachment") a0.Name = "VDrift_A0" a0.Position = Vector3.new(-1,0,0) a0.Parent = root local a1 = Instance.new("Attachment") a1.Name = "VDrift_A1" a1.Position = Vector3.new(1,0,0) a1.Parent = root local trail = Instance.new("Trail") trail.Name = "VDrift_Trail" trail.Attachment0 = a0 trail.Attachment1 = a1 trail.Lifetime = 1 trail.Parent = root end ) register( "clearfx", "Effects", "Clear Effects", "Remove VDrift effects.", function() for _,v in ipairs(getCharacter():GetDescendants()) do if string.sub(v.Name,1,7) == "VDrift_" then v:Destroy() end end end ) -------------------------------------------------- -- VISUALS -------------------------------------------------- register( "fullbright", "Visuals", "Fullbright", "Brighten lighting.", function() Lighting.Brightness = 3 Lighting.ClockTime = 14 Lighting.FogEnd = 100000 end ) register( "night", "Visuals", "Night", "Set night lighting.", function() Lighting.ClockTime = 0 end ) register( "day", "Visuals", "Day", "Set daytime lighting.", function() Lighting.ClockTime = 14 end ) -------------------------------------------------- -- PHYSICS -------------------------------------------------- local gravities = { 0,25,50,75,100,125,150, 196.2, 250,300,400,500 } for _,gravity in ipairs(gravities) do register( "gravity"..tostring(gravity), "Physics", "Gravity "..tostring(gravity), "Change gravity.", function() workspace.Gravity = gravity end ) end register( "normalgravity", "Physics", "Normal Gravity", "Restore Roblox gravity.", function() workspace.Gravity = 196.2 end ) -------------------------------------------------- -- CAMERA -------------------------------------------------- local fovs = { 40,50,60,70,80,90,100,110,120 } for _,fov in ipairs(fovs) do register( "fov"..fov, "Camera", "FOV "..fov, "Change camera FOV.", function() workspace.CurrentCamera.FieldOfView = fov end ) end register( "normalfov", "Camera", "Normal FOV", "Restore normal FOV.", function() workspace.CurrentCamera.FieldOfView = 70 end ) register( "zoom", "Camera", "Zoom", "Zoom camera in.", function() workspace.CurrentCamera.FieldOfView = 35 end ) register( "wide", "Camera", "Wide Camera", "Make the camera wide.", function() workspace.CurrentCamera.FieldOfView = 120 end ) -------------------------------------------------- -- FUN SPEED PRESETS -------------------------------------------------- for i=1,100 do local speed = 5 + i * 3 register( "funpreset"..i, "Fun", "Goofy Speed #"..i, "Funny speed preset.", function() local hum = getHumanoid() if hum then hum.WalkSpeed = speed end end ) end -------------------------------------------------- -- RANDOM FLIP COMMANDS -------------------------------------------------- for i=1,100 do register( "randomflip"..i, "Goofy", "Random Flip #"..i, "Perform a randomized flip.", function() local choices = { function() flip(Vector3.new(1,0,0),1) end, function() flip(Vector3.new(-1,0,0),1) end, function() flip(Vector3.new(0,0,1),1) end, function() flip(Vector3.new(0,0,-1),1) end } choices[math.random(1,#choices)]() end ) end -------------------------------------------------- -- UTILITY -------------------------------------------------- register( "respawn", "Utility", "Respawn", "Respawn your character.", function() local hum = getHumanoid() if hum then hum.Health = 0 end end ) register( "performance", "Utility", "Performance Mode", "Reduce local visual settings.", function() Lighting.GlobalShadows = false Lighting.Brightness = 1 end ) register( "hide", "Utility", "Hide Hub", "Hide VDrift.", function() Main.Visible = false end ) register( "show", "Utility", "Show Hub", "Show VDrift.", function() if unlocked then Main.Visible = true end end ) -------------------------------------------------- -- SETTINGS -------------------------------------------------- register( "rainbow", "Settings", "Rainbow Theme", "Toggle rainbow border.", function() rainbowEnabled = not rainbowEnabled end ) register( "scaleup", "Settings", "UI Scale +", "Increase UI size.", function() uiScaleValue = math.clamp(uiScaleValue+.05,.55,1.25) Scale.Scale = uiScaleValue end ) register( "scaledown", "Settings", "UI Scale -", "Decrease UI size.", function() uiScaleValue = math.clamp(uiScaleValue-.05,.55,1.25) Scale.Scale = uiScaleValue end ) register( "resetui", "Settings", "Reset UI", "Reset VDrift position.", function() Main.Position = UDim2.fromScale(.5,.5) end ) -------------------------------------------------- -- ABOUT -------------------------------------------------- register( "about", "About", "VDrift Hub", "VDrift Hub information.", function() notify("VDrift Hub V4") end ) register( "creator", "About", "Made by Solunacitra", "Creator information.", function() notify("Made by Solunacitra") end ) register( "credits", "About", "Credits: i8o_onyx", "Project credits.", function() notify("Credits: i8o_onyx") end ) -------------------------------------------------- -- MOBILE V BUTTON -------------------------------------------------- local MobileButton = Instance.new("TextButton") MobileButton.Size = UDim2.fromOffset(54,54) MobileButton.Position = UDim2.new(0,18,.5,-27) MobileButton.BackgroundColor3 = Color3.fromRGB(15,15,22) MobileButton.Text = "V" MobileButton.TextColor3 = Color3.new(1,1,1) MobileButton.Font = Enum.Font.GothamBlack MobileButton.TextSize = 23 MobileButton.BorderSizePixel = 0 MobileButton.Parent = Gui local MobileCorner = Instance.new("UICorner") MobileCorner.CornerRadius = UDim.new(1,0) MobileCorner.Parent = MobileButton local MobileStroke = Instance.new("UIStroke") MobileStroke.Thickness = 2 MobileStroke.Parent = MobileButton local buttonDragging = false local buttonStart local buttonPosition MobileButton.InputBegan:Connect(function(input) if not moveButtonEnabled then return end if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then buttonDragging = true buttonStart = input.Position buttonPosition = MobileButton.Position end end) UIS.InputChanged:Connect(function(input) if not buttonDragging then return end if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then local delta = input.Position-buttonStart MobileButton.Position = UDim2.new( buttonPosition.X.Scale, buttonPosition.X.Offset+delta.X, buttonPosition.Y.Scale, buttonPosition.Y.Offset+delta.Y ) end end) UIS.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then buttonDragging = false end end) MobileButton.MouseButton1Click:Connect(function() if unlocked then Main.Visible = not Main.Visible else KeyFrame.Visible = true end end) -------------------------------------------------- -- RIGHT SHIFT -------------------------------------------------- UIS.InputBegan:Connect(function(input,gp) if gp then return end if input.KeyCode == Enum.KeyCode.RightShift then if unlocked then Main.Visible = not Main.Visible else KeyFrame.Visible = true end end end) -------------------------------------------------- -- RESPAWN RESET -------------------------------------------------- Player.CharacterAdded:Connect(function() task.wait(1) States.Fly = false States.Noclip = false States.InfiniteJump = false States.Flipping = false States.Spin = false local hum = getHumanoid() if hum then hum.WalkSpeed = 16 hum.UseJumpPower = true hum.JumpPower = 50 hum.AutoRotate = true hum.PlatformStand = false end end) -------------------------------------------------- -- START -------------------------------------------------- refreshCommands() notify("VDrift Hub loaded • 400+ commands")