-- Necessary scripts, pls don't delete. (The script did not update) local url = "https://raw.githubusercontent.com/franciscomilguel1802-ui/Dive/refs/heads/main/Dive.rbxmx" local file = "Dive.rbxm" if isfile(file) then print("You already have the file.") else print("Downloading...") writefile(file, game:HttpGet(url)) end local asset = getcustomasset(file) local model = game:GetObjects(asset)[1] model.Parent = workspace task.wait(1) -- Services local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local Workspace = game:GetService("Workspace") local Player = Players.LocalPlayer local Character = Player.Character or Player.CharacterAdded:Wait() local Humanoid = Character:WaitForChild("Humanoid") local Root = Character:WaitForChild("HumanoidRootPart") local Camera = Workspace.CurrentCamera local animate = Character:FindFirstChild("Animate") local UsingMove = false local DriftActive = false local ShiftLockEnabled = false local normalFOV = Camera.FieldOfView local maxDriftFOV = 110 local ShiftOffset = Vector3.new(1.75, 0, 0) local DefaultOffset = Vector3.new(0, 0, 0) if not getgenv().Animator6DLoadedPro then loadstring(game:HttpGet("https://raw.githubusercontent.com/gObl00x/Stuff/refs/heads/main/Animator6D.lua"))() repeat task.wait() until getgenv().Animator6DLoadedPro end local Rbxmasset = "Dive" local model = game:GetObjects(getcustomasset(Rbxmasset..".rbxm"))[1] local Animations = {} local function scan(obj) if obj:IsA("KeyframeSequence") then table.insert(Animations,obj) end for _,v in ipairs(obj:GetChildren()) do scan(v) end end scan(model) local Idle, Run, Jump, Fall, Dive, Roll, Drift for _,anim in ipairs(Animations) do local n = anim.Name:lower() if n == "idle" then Idle = anim elseif n == "run" then Run = anim elseif n == "jump" then Jump = anim elseif n == "fall" then Fall = anim elseif n == "dive" then Dive = anim elseif n == "roll" then Roll = anim elseif n == "drift" then Drift = anim end end Idle = Idle or Animations[1] Run = Run or Animations[1] local JumpSound = Instance.new("Sound") JumpSound.SoundId = "rbxassetid://12222140" JumpSound.Volume = 1 JumpSound.Parent = Root local RunSound = Instance.new("Sound") RunSound.SoundId = "rbxassetid://12221952" RunSound.Volume = 3 RunSound.Looped = true RunSound.Parent = Root local currentAnim local function Play(anim, looped) if currentAnim == anim then return end getgenv().Animator6DStop() task.wait(0.03) getgenv().Animator6D(anim,1,looped~=false) currentAnim = anim end Humanoid.WalkSpeed = 55 Humanoid.JumpPower = 60 local function DoDive() if UsingMove or DriftActive then return end UsingMove = true local original = Camera.FieldOfView TweenService:Create(Camera, TweenInfo.new(0.25), {FieldOfView = original + 20}):Play() task.delay(0.25,function() TweenService:Create(Camera, TweenInfo.new(0.75), {FieldOfView = original}):Play() end) Play(Dive,false) local dashTime = 0.5 local start = tick() local conn conn = RunService.RenderStepped:Connect(function() if tick() - start >= dashTime then conn:Disconnect() return end local look = Root.CFrame.LookVector Root.Velocity = Vector3.new(look.X*110, Root.Velocity.Y, look.Z*110) end) task.delay(dashTime,function() if Roll then Play(Roll,false) end local t = 0 local duration = 0.4 local conn2 conn2 = RunService.RenderStepped:Connect(function(dt) t += dt local alpha = t/duration if alpha >= 1 then Humanoid.WalkSpeed = 55 conn2:Disconnect() UsingMove = false return end Humanoid.WalkSpeed = 110 - (55 * alpha) end) end) end local driftSpeed = 55 local driftConn local function StartDrift() if DriftActive or UsingMove then return end DriftActive = true UsingMove = true driftSpeed = 55 Humanoid.WalkSpeed = driftSpeed Play(Drift,true) task.spawn(function() while DriftActive do task.wait(0.1) if driftSpeed < 150 then driftSpeed += 2 Humanoid.WalkSpeed = driftSpeed end end end) driftConn = RunService.RenderStepped:Connect(function() local look = Root.CFrame.LookVector Root.Velocity = Vector3.new(look.X * driftSpeed, Root.Velocity.Y, look.Z * driftSpeed) local alpha = math.clamp((driftSpeed - 55) / (150 - 55), 0, 1) local targetFOV = normalFOV + (maxDriftFOV - normalFOV) * alpha Camera.FieldOfView = Camera.FieldOfView + (targetFOV - Camera.FieldOfView) * 0.15 end) end local function StopDrift() if not DriftActive then return end DriftActive = false if driftConn then driftConn:Disconnect() driftConn = nil end TweenService:Create(Camera, TweenInfo.new(0.4), { FieldOfView = normalFOV }):Play() local startSpeed = driftSpeed local t = 0 local duration = 0.4 local conn conn = RunService.RenderStepped:Connect(function(dt) t += dt local alpha = t/duration if alpha >= 1 then Humanoid.WalkSpeed = 55 UsingMove = false conn:Disconnect() return end Humanoid.WalkSpeed = startSpeed - ((startSpeed - 55) * alpha) end) end local function ToggleDrift() if DriftActive then StopDrift() else StartDrift() end end RunService.RenderStepped:Connect(function() if not Character or not Root or not Humanoid then return end if ShiftLockEnabled then Humanoid.CameraOffset = ShiftOffset local camLook = Camera.CFrame.LookVector local flat = Vector3.new(camLook.X, 0, camLook.Z) if flat.Magnitude > 0 then Root.CFrame = CFrame.new(Root.Position, Root.Position + flat) end else Humanoid.CameraOffset = DefaultOffset end end) UserInputService.InputBegan:Connect(function(input,gp) if gp then return end if input.KeyCode == Enum.KeyCode.Q then DoDive() elseif input.KeyCode == Enum.KeyCode.E then ToggleDrift() elseif input.KeyCode == Enum.KeyCode.LeftShift then -- Shiftlock button💥💥💥 ShiftLockEnabled = not ShiftLockEnabled end end) RunService.RenderStepped:Connect(function() if UsingMove then return end local state = Humanoid:GetState() local moving = Humanoid.MoveDirection.Magnitude > 0 if state == Enum.HumanoidStateType.Jumping then if Jump then Play(Jump,false) end JumpSound:Play() RunSound:Stop() return end if state == Enum.HumanoidStateType.Freefall then if Fall then Play(Fall,true) end RunSound:Stop() return end if moving then Play(Run,true) if not RunSound.IsPlaying then RunSound:Play() end else Play(Idle,true) if RunSound.IsPlaying then RunSound:Stop() end end end) local ScreenGui = Instance.new("ScreenGui") ScreenGui.Parent = Player:WaitForChild("PlayerGui") ScreenGui.ResetOnSpawn = false local function rgb(t) return Color3.fromHSV((t % 5) / 5, 1, 1) end local function makeButton(text,pos,callback) local Frame = Instance.new("Frame") Frame.Size = UDim2.new(0,120,0,60) Frame.Position = pos Frame.BackgroundColor3 = Color3.fromRGB(0,0,0) Frame.Parent = ScreenGui Instance.new("UICorner", Frame) local Stroke = Instance.new("UIStroke") Stroke.Thickness = 2.5 Stroke.Parent = Frame local Button = Instance.new("TextButton") Button.Size = UDim2.new(1,-10,1,-10) Button.Position = UDim2.new(0,5,0,5) Button.Text = text Button.TextScaled = true Button.BackgroundColor3 = Color3.fromRGB(0,0,0) Button.Parent = Frame Instance.new("UICorner", Button) task.spawn(function() local t = 0 while Frame.Parent do t += 0.02 local c = rgb(t) Stroke.Color = c Button.TextColor3 = c task.wait(0.03) end end) local dragging = false local dragStart local startPos Frame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = Frame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) RunService.RenderStepped:Connect(function() if not dragging then return end local mousePos = UserInputService:GetMouseLocation() local delta = mousePos - dragStart Frame.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) end) Button.MouseButton1Click:Connect(callback) return Frame end makeButton("Dive", UDim2.new(0.8,0,0.6,0), DoDive) makeButton("Drift", UDim2.new(0.8,0,0.75,0), ToggleDrift) makeButton("ShiftLock", UDim2.new(0.8,0,0.9,0), function() ShiftLockEnabled = not ShiftLockEnabled end) if Humanoid then animate:Destroy() end