fent script
Key RequiredUniversal

fent script

Universal ScriptPs4sroPs4sro 748 views 61 executesUpdated Dec 7, 2025
Unrated
00
Lua Script•222 lines (6218 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Workspace = game:GetService("Workspace")
local UserInputService = game:GetService("UserInputService")

local player = Players.LocalPlayer
local char = player.Character or player.CharacterAdded:Wait()
local hum = char:WaitForChild("Humanoid")
local root = char:WaitForChild("HumanoidRootPart")
local animator = hum:WaitForChild("Animator")
local animateScript = char:WaitForChild("Animate")

if animateScript then animateScript.Disabled = true end
for _, track in pairs(animator:GetPlayingAnimationTracks()) do
	track:Stop()
end

hum.WalkSpeed = 0
hum.JumpPower = 0
hum.AutoRotate = false 

local flingEnabled = true 

local function loadAnim(id)
	local a = Instance.new("Animation")
	a.AnimationId = id
	return animator:LoadAnimation(a)
end

local introTrack = loadAnim("rbxassetid://101421264927228")
local walkTrack = loadAnim("rbxassetid://138992096476836")
local idleTrack = loadAnim("rbxassetid://126098522622859")
local jumpTrack = loadAnim("rbxassetid://88608327916498")
local flingTrack = loadAnim("rbxassetid://137181141349617")

UserInputService.InputBegan:Connect(function(input, gameProcessed)
	if not gameProcessed and input.KeyCode == Enum.KeyCode.T then
		flingEnabled = not flingEnabled
	end
end)

introTrack:Play()
task.wait(5)
introTrack:Stop()

hum.WalkSpeed = 50
hum.JumpPower = 50

local isMoving = false
local currentFlingTarget = nil
local flingEndTime = 0
local preFlingPosition = nil
local noclipConnection = nil

local rayParams = RaycastParams.new()
rayParams.FilterDescendantsInstances = {char}
rayParams.FilterType = Enum.RaycastFilterType.Exclude

local function enableNoclip(enable)
	if enable then
		if not noclipConnection then
			noclipConnection = RunService.Stepped:Connect(function()
				for _, part in pairs(char:GetDescendants()) do
					if part:IsA("BasePart") then part.CanCollide = false end
				end
			end)
		end
	else
		if noclipConnection then
			noclipConnection:Disconnect()
			noclipConnection = nil
			for _, part in pairs(char:GetDescendants()) do
				if part:IsA("BasePart") then part.CanCollide = true end
			end
		end
	end
end

root.Touched:Connect(function(hit)
	if not flingEnabled then return end 
	if currentFlingTarget then return end
	
	local targetChar = hit.Parent
	local targetHum = targetChar:FindFirstChild("Humanoid")
	local targetRoot = targetChar:FindFirstChild("HumanoidRootPart")
	
	if targetHum and targetRoot and targetChar ~= char and targetHum.Health > 0 then
		preFlingPosition = root.Position
		currentFlingTarget = targetRoot
		flingEndTime = tick() + 2
	end
end)

RunService.Heartbeat:Connect(function(dt)
	if root.Position.Y < -50 then
		root.AssemblyLinearVelocity = Vector3.zero
		root.Velocity = Vector3.zero
		if preFlingPosition then
			root.CFrame = CFrame.new(preFlingPosition + Vector3.new(0, 5, 0))
		else
			root.CFrame = CFrame.new(0, 50, 0)
		end
	end

	if currentFlingTarget and not flingEnabled then
		currentFlingTarget = nil
		flingTrack:Stop()
		enableNoclip(false)
		root.AssemblyAngularVelocity = Vector3.zero
		root.AssemblyLinearVelocity = Vector3.zero
		if preFlingPosition then
			root.CFrame = CFrame.new(preFlingPosition + Vector3.new(0, 2, 0))
			preFlingPosition = nil
		end
	end

	if currentFlingTarget then
		enableNoclip(true)

		if tick() >= flingEndTime or not currentFlingTarget.Parent then
			enableNoclip(false)
			currentFlingTarget = nil
			flingTrack:Stop()
			
			root.AssemblyAngularVelocity = Vector3.zero
			root.AssemblyLinearVelocity = Vector3.zero
			
			if preFlingPosition then
				root.CFrame = CFrame.new(preFlingPosition + Vector3.new(0, 2, 0))
				preFlingPosition = nil
			end
			return
		end
		
		if not flingTrack.IsPlaying then
			walkTrack:Stop()
			idleTrack:Stop()
			jumpTrack:Stop()
			flingTrack:Play()
		end

		local chaoticRotation = CFrame.Angles(math.random()*10, math.random()*10, math.random()*10)
		root.CFrame = currentFlingTarget.CFrame * chaoticRotation
		
		root.AssemblyLinearVelocity = Vector3.zero
		root.AssemblyAngularVelocity = Vector3.new(100000, 100000, 100000)

	else
		enableNoclip(false)
		if flingTrack.IsPlaying then flingTrack:Stop() end
		
		root.AssemblyAngularVelocity = Vector3.zero

		local moveDir = hum.MoveDirection
		
		local groundRay = Workspace:Raycast(root.Position, Vector3.new(0, -10, 0), rayParams)
		local onGround = false
		local targetY = root.Position.Y

		if groundRay then
			local dist = (root.Position - groundRay.Position).Magnitude
			if dist < (hum.HipHeight + 2) and not jumpTrack.IsPlaying then
				onGround = true
				targetY = groundRay.Position.Y + hum.HipHeight + (root.Size.Y / 2)
			end
		end

		if moveDir.Magnitude > 0 then
			local newPos = root.Position + (moveDir * 50 * dt)
			
			if onGround then
				root.CFrame = CFrame.lookAt(Vector3.new(newPos.X, targetY, newPos.Z), Vector3.new(newPos.X, targetY, newPos.Z) + moveDir)
				root.Velocity = Vector3.zero
			else
				root.CFrame = CFrame.lookAt(newPos, newPos + moveDir)
			end
			
			if not isMoving and onGround then
				isMoving = true
				idleTrack:Stop()
				walkTrack:Play()
			end
		else
			if onGround then
				root.CFrame = CFrame.new(root.Position.X, targetY, root.Position.Z) * root.CFrame.Rotation
				root.Velocity = Vector3.zero
			end

			if isMoving then
				isMoving = false
				walkTrack:Stop()
				idleTrack:Play()
			end
			if not idleTrack.IsPlaying and not walkTrack.IsPlaying and not jumpTrack.IsPlaying then
				idleTrack:Play()
			end
		end
	end
end)

RunService.RenderStepped:Connect(function()
	if walkTrack.IsPlaying then walkTrack:AdjustSpeed(10) end
	if idleTrack.IsPlaying then idleTrack:AdjustSpeed(2) end
	if flingTrack.IsPlaying then flingTrack:AdjustSpeed(10) end
	if jumpTrack.IsPlaying then jumpTrack:AdjustSpeed(5) end
end)

hum.StateChanged:Connect(function(_, new)
	if currentFlingTarget then return end
	if new == Enum.HumanoidStateType.Jumping or new == Enum.HumanoidStateType.Freefall then
		walkTrack:Stop()
		idleTrack:Stop()
		jumpTrack:Play()
	elseif new == Enum.HumanoidStateType.Landed then
		jumpTrack:Stop()
		if hum.MoveDirection.Magnitude > 0 then
			walkTrack:Play()
		else
			idleTrack:Play()
		end
	end
end)

Features & Information

R15 ONLY fling included custom animations

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts