Dive script REMASTERED
Key RequiredUniversal

Dive script REMASTERED

Universal ScriptFEscript_showcaserFEscript_showcaser 864 views 540 executesUpdated Apr 26, 2026
Unrated
00
Lua Script•380 lines (9713 chars)
-- 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

Features & Information

This is the dive script from Mr eyes (shout-out to him) but I modified it so it works better with mobile and still also compatible with PC. Slight differences from the original.

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts