
Key RequiredUniversal

-- 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()
endNo comments yet for this script.



