print("thx for using") local Players = game:GetService("Players") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local clone = nil local cloneHRP = nil local hum = nil local playerHum = nil local function cleanup() if clone then clone:Destroy() end clone, cloneHRP, hum = nil, nil, nil end local R6_ANIMATE_SOURCE = [[ print("Animate script running in clone!") -- DEBUG: Confirms it loads local Character = script.Parent local Humanoid = Character:WaitForChild("Humanoid") local RootPart = Character:WaitForChild("HumanoidRootPart") local Animator = Humanoid:WaitForChild("Animator") local currentAnim = "" local currentAnimTrack = nil local animationTable = {} local animations = { idleAnimation = "rbxassetid://180435571", walkAnimation = "rbxassetid://180426354", runAnimation = "rbxassetid://180426354", jumpAnimation = "rbxassetid://125750702", fallAnimation = "rbxassetid://180436148", climbAnimation = "rbxassetid://180436334", sitAnimation = "rbxassetid://178130996", } for animName, animId in pairs(animations) do local anim = Instance.new("Animation") anim.AnimationId = animId animationTable[animName] = anim end local function StopAllAnimations() if currentAnimTrack then currentAnimTrack:Stop() currentAnimTrack:Destroy() currentAnimTrack = nil end end local function PlayAnimation(animName, priority) if animName == currentAnim then return end StopAllAnimations() currentAnim = animName currentAnimTrack = Animator:LoadAnimation(animationTable[animName]) currentAnimTrack.Priority = priority or Enum.AnimationPriority.Idle currentAnimTrack.Looped = true currentAnimTrack:Play() print("Playing animation: " .. animName) -- DEBUG: See what plays end local function onSeated() PlayAnimation("sitAnimation") end local function onJumping() PlayAnimation("jumpAnimation", Enum.AnimationPriority.Action) end local function onFalling() PlayAnimation("fallAnimation") end local function onClimbing(speed) if math.abs(speed) > 0.2 then PlayAnimation("climbAnimation") end end local function onRunning(speed) if speed > 0.75 then PlayAnimation("runAnimation") elseif speed > 0.2 then PlayAnimation("walkAnimation") else PlayAnimation("idleAnimation") end end task.wait(0.1) Humanoid.Seated:Connect(onSeated) Humanoid.Jumping:Connect(onJumping) Humanoid.Running:Connect(onRunning) Humanoid.FreeFalling:Connect(onFalling) Humanoid.Climbing:Connect(onClimbing) Humanoid.Died:Connect(StopAllAnimations) PlayAnimation("idleAnimation") print("R6 Animate events connected!") -- DEBUG ]] local function createFollower() cleanup() local character = player.Character if not character then return end playerHum = character:FindFirstChildOfClass("Humanoid") if not playerHum then return end -- Get YOUR appearance local success1, desc = pcall(Players.GetHumanoidDescriptionFromUserId, Players, player.UserId) if not success1 then warn("Failed to get description - using default R6") desc = Players:CreateHumanoidModelFromDescription(Instance.new("HumanoidDescription"), Enum.HumanoidRigType.R6) end local success2, r6Model = pcall(Players.CreateHumanoidModelFromDescription, Players, desc, Enum.HumanoidRigType.R6) if not success2 or not r6Model then warn("Failed to create R6 model") return end clone = r6Model clone.Name = "R6GhostFollower" for _, obj in clone:GetDescendants() do if obj:IsA("Script") or obj:IsA("LocalScript") or obj:IsA("ModuleScript") then obj:Destroy() end end cloneHRP = clone:FindFirstChild("HumanoidRootPart") hum = clone:FindFirstChildOfClass("Humanoid") if not cloneHRP or not hum then clone:Destroy() return end local animateScript = Instance.new("LocalScript") animateScript.Name = "Animate" animateScript.Source = R6_ANIMATE_SOURCE animateScript.Parent = clone for _, part in clone:GetDescendants() do if part:IsA("BasePart") or part:IsA("MeshPart") then part.CanCollide = false end end hum.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None hum.WalkSpeed = 16 hum.AutoRotate = true cloneHRP.CFrame = cloneHRP.CFrame + Vector3.new(0, 5, 0) clone.Parent = workspace print("tested on drift executor") end local offset = Vector3.new(4, 0, 6) local connection connection = RunService.Heartbeat:Connect(function() if not clone or not player.Character then return end local playerHRP = player.Character:FindFirstChild("HumanoidRootPart") if not playerHRP or not cloneHRP or not hum or not playerHum then return end hum.WalkSpeed = playerHum.WalkSpeed local targetPos = playerHRP.Position + playerHRP.CFrame.RightVector * offset.X + playerHRP.CFrame.LookVector * (-offset.Z) local dir = (targetPos - cloneHRP.Position) local dist = dir.Magnitude local moveDir = Vector3.new(dir.X, 0, dir.Z).Unit if dist > 3.5 then hum:Move(moveDir, true) -- 'true' = face direction, triggers Running! else hum:Move(Vector3.new()) end local heightDiff = playerHRP.Position.Y - cloneHRP.Position.Y + 2 cloneHRP.CFrame = cloneHRP.CFrame + Vector3.new(0, heightDiff * 0.2, 0) end) local function onCharAdded(char) task.wait(2.5) -- Extra time for Animate to connect createFollower() end if player.Character then task.spawn(onCharAdded, player.Character) end player.CharacterAdded:Connect(onCharAdded) print("created by:ascoolasthe0cean")