How do I make a Toggle Sprint with animation

does that change the amout of speed needed to change the state to running?

1 Like

Nah, I just checked and it works with me. What I think is happening to you is for some reason maybe the animation is not loading?

2 Likes

But it works as the walk animation…

1 Like

I only see humanoid state type running which is if their speed is above 0 which wouldn’t work

1 Like

Is this a R15 only thing? I’m using R6

1 Like

on line 464, you can insert another animation in the script, and replace
“runAnimTrack = humanoid:LoadAnimation(animTable[runAnimName][runIdx].anim)”
with “runAnimTrack = humanoid:LoadAnimation(script.YourRunningAnimation)”

2 Likes

Of the animate script?

On there line 464 is right shoulder something

1 Like

press Ctrl+F and search " humanoid:LoadAnimation(animTable[runAnimName][runIdx].anim) "
there should only be one

2 Likes

I’m the animate script it says 0 matches

1 Like

I hate to annoy you but after this simple toggle sprint is done I can actually work on the big parts of the game.

1 Like

The original idea was to change the default walk animation after the key was pressed then change it back to the default after the key was pressed again. But then realized local scripts can’t do that…

1 Like

@KinqAndi after another post and more research the run animation and walk seem to be the same it’s just that the walk is slower?

1 Like

Try to make the weight of the walk animation lower than the run animation

1 Like

What does that do

30characters

game.Workspace.Player.Humanoid.Running:Connect(function(speed)
if speed > 0 then
print(“Player is running”)
else
print(“Player has stopped”)
end
end)

Will this script work for playing the run animation?
(Change the print to animation)

Use this script on Animate.

local Figure = script.Parent
local Torso = Figure:WaitForChild(“Torso”)
local RightShoulder = Torso:WaitForChild(“Right Shoulder”)
local LeftShoulder = Torso:WaitForChild(“Left Shoulder”)
local RightHip = Torso:WaitForChild(“Right Hip”)
local LeftHip = Torso:WaitForChild(“Left Hip”)
local Neck = Torso:WaitForChild(“Neck”)
local Humanoid = Figure:WaitForChild(“Humanoid”)
local pose = “Standing”

local currentAnim = “”
local currentAnimInstance = nil
local currentAnimTrack = nil
local currentAnimKeyframeHandler = nil
local currentAnimSpeed = 1.0
local animTable = {}
local animNames = {
idle = {
{ id = “http://www.roblox.com/asset/?id=14303606”, weight = 10 },
},
walk = {
{ id = “rbxassetid://14204500”, weight = 10 }
},
run = {
{ id = “rbxassetid://14215609”, weight = 10 }
},
jump = {
{ id = “rbxassetid://12210977”, weight = 10 }
},
fall = {
{ id = “http://www.roblox.com/asset/?id=114727922”, weight = 10 }
},
climb = {
{ id = “http://www.roblox.com/asset/?id=180436334”, weight = 10 }
},
sit = {
{ id = “http://www.roblox.com/asset/?id=178130996”, weight = 10 }
},

}
local dances = {“dance1”, “dance2”, “dance3”}

– Existance in this list signifies that it is an emote, the value indicates if it is a looping emote
local emoteNames = { wave = false, point = false, dance1 = true, dance2 = true, dance3 = true, laugh = false, cheer = false}

function configureAnimationSet(name, fileList)
if (animTable[name] ~= nil) then
for _, connection in pairs(animTable[name].connections) do
connection:disconnect()
end
end
animTable[name] = {}
animTable[name].count = 0
animTable[name].totalWeight = 0
animTable[name].connections = {}

-- check for config values
local config = script:FindFirstChild(name)
if (config ~= nil) then

– print(“Loading anims " … name)
table.insert(animTable[name].connections, config.ChildAdded:connect(function(child) configureAnimationSet(name, fileList) end))
table.insert(animTable[name].connections, config.ChildRemoved:connect(function(child) configureAnimationSet(name, fileList) end))
local idx = 1
for _, childPart in pairs(config:GetChildren()) do
if (childPart:IsA(“Animation”)) then
table.insert(animTable[name].connections, childPart.Changed:connect(function(property) configureAnimationSet(name, fileList) end))
animTable[name][idx] = {}
animTable[name][idx].anim = childPart
local weightObject = childPart:FindFirstChild(“Weight”)
if (weightObject == nil) then
animTable[name][idx].weight = 1
else
animTable[name][idx].weight = weightObject.Value
end
animTable[name].count = animTable[name].count + 1
animTable[name].totalWeight = animTable[name].totalWeight + animTable[name][idx].weight
– print(name … " [” … idx … “] " … animTable[name][idx].anim.AnimationId … " (” … animTable[name][idx].weight … “)”)
idx = idx + 1
end
end
end

-- fallback to defaults
if (animTable[name].count <= 0) then
	for idx, anim in pairs(fileList) do
		animTable[name][idx] = {}
		animTable[name][idx].anim = Instance.new("Animation")
		animTable[name][idx].anim.Name = name
		animTable[name][idx].anim.AnimationId = anim.id
		animTable[name][idx].weight = anim.weight
		animTable[name].count = animTable[name].count + 1
		animTable[name].totalWeight = animTable[name].totalWeight + anim.weight

– print(name … " [" … idx … “] " … anim.id … " (” … anim.weight … “)”)
end
end
end

– Setup animation objects
function scriptChildModified(child)
local fileList = animNames[child.Name]
if (fileList ~= nil) then
configureAnimationSet(child.Name, fileList)
end
end

script.ChildAdded:connect(scriptChildModified)
script.ChildRemoved:connect(scriptChildModified)

for name, fileList in pairs(animNames) do
configureAnimationSet(name, fileList)
end

– ANIMATION

– declarations
local toolAnim = “None”
local toolAnimTime = 0

local jumpAnimTime = 0
local jumpAnimDuration = 0.3

local toolTransitionTime = 0.1
local fallTransitionTime = 0.3
local jumpMaxLimbVelocity = 0.75

– functions

function stopAllAnimations()
local oldAnim = currentAnim

-- return to idle if finishing an emote
if (emoteNames[oldAnim] ~= nil and emoteNames[oldAnim] == false) then
	oldAnim = "idle"
end

currentAnim = ""
currentAnimInstance = nil
if (currentAnimKeyframeHandler ~= nil) then
	currentAnimKeyframeHandler:disconnect()
end

if (currentAnimTrack ~= nil) then
	currentAnimTrack:Stop()
	currentAnimTrack:Destroy()
	currentAnimTrack = nil
end
return oldAnim

end

function setAnimationSpeed(speed)
if speed ~= currentAnimSpeed then
currentAnimSpeed = speed
currentAnimTrack:AdjustSpeed(currentAnimSpeed)
end
end

function keyFrameReachedFunc(frameName)
if (frameName == “End”) then

	local repeatAnim = currentAnim
	-- return to idle if finishing an emote
	if (emoteNames[repeatAnim] ~= nil and emoteNames[repeatAnim] == false) then
		repeatAnim = "idle"
	end
	
	local animSpeed = currentAnimSpeed
	playAnimation(repeatAnim, 0.0, Humanoid)
	setAnimationSpeed(animSpeed)
end

end

– Preload animations
function playAnimation(animName, transitionTime, humanoid)

local roll = math.random(1, animTable[animName].totalWeight) 
local origRoll = roll
local idx = 1
while (roll > animTable[animName][idx].weight) do
	roll = roll - animTable[animName][idx].weight
	idx = idx + 1
end

– print(animName … " " … idx … " [" … origRoll … “]”)
local anim = animTable[animName][idx].anim

-- switch animation		
if (anim ~= currentAnimInstance) then
	
	if (currentAnimTrack ~= nil) then
		currentAnimTrack:Stop(transitionTime)
		currentAnimTrack:Destroy()
	end

	currentAnimSpeed = 1.0

	-- load it to the humanoid; get AnimationTrack
	currentAnimTrack = humanoid:LoadAnimation(anim)
	currentAnimTrack.Priority = Enum.AnimationPriority.Core
	 
	-- play the animation
	currentAnimTrack:Play(transitionTime)
	currentAnim = animName
	currentAnimInstance = anim

	-- set up keyframe name triggers
	if (currentAnimKeyframeHandler ~= nil) then
		currentAnimKeyframeHandler:disconnect()
	end
	currentAnimKeyframeHandler = currentAnimTrack.KeyframeReached:connect(keyFrameReachedFunc)
	
end

end



local toolAnimName = “”
local toolAnimTrack = nil
local toolAnimInstance = nil
local currentToolAnimKeyframeHandler = nil

function toolKeyFrameReachedFunc(frameName)
if (frameName == “End”) then
– print("Keyframe : "… frameName)
playToolAnimation(toolAnimName, 0.0, Humanoid)
end
end

function playToolAnimation(animName, transitionTime, humanoid, priority)

	local roll = math.random(1, animTable[animName].totalWeight) 
	local origRoll = roll
	local idx = 1
	while (roll > animTable[animName][idx].weight) do
		roll = roll - animTable[animName][idx].weight
		idx = idx + 1
	end

– print(animName … " * " … idx … " [" … origRoll … “]”)
local anim = animTable[animName][idx].anim

	if (toolAnimInstance ~= anim) then
		
		if (toolAnimTrack ~= nil) then
			toolAnimTrack:Stop()
			toolAnimTrack:Destroy()
			transitionTime = 0
		end
				
		-- load it to the humanoid; get AnimationTrack
		toolAnimTrack = humanoid:LoadAnimation(anim)
		if priority then
			toolAnimTrack.Priority = priority
		end
		 
		-- play the animation
		toolAnimTrack:Play(transitionTime)
		toolAnimName = animName
		toolAnimInstance = anim

		currentToolAnimKeyframeHandler = toolAnimTrack.KeyframeReached:connect(toolKeyFrameReachedFunc)
	end

end

function stopToolAnimations()
local oldAnim = toolAnimName

if (currentToolAnimKeyframeHandler ~= nil) then
	currentToolAnimKeyframeHandler:disconnect()
end

toolAnimName = ""
toolAnimInstance = nil
if (toolAnimTrack ~= nil) then
	toolAnimTrack:Stop()
	toolAnimTrack:Destroy()
	toolAnimTrack = nil
end


return oldAnim

end



function onRunning(speed)
if speed > 0.75 and Humanoid.WalkSpeed <= 18 then
local scale = Humanoid.WalkSpeed – 16.0
playAnimation(“walk”, 0.2, Humanoid)
setAnimationSpeed(speed / scale)
pose = “Running”
elseif speed > 0.75 and Humanoid.WalkSpeed > 18 then
local scale = Humanoid.WalkSpeed – 16.0
playAnimation(“run”, 0.5, Humanoid)
setAnimationSpeed(speed / scale)
pose = “Running”
else
if emoteNames[currentAnim] == nil then
playAnimation(“idle”, 0.2, Humanoid)
pose = “Standing”
end
end
end

function onDied()
pose = “Dead”
end

function onJumping()
print(“jump!”)
playAnimation(“jump”, 0.1, Humanoid)
jumpAnimTime = jumpAnimDuration
pose = “Jumping”
end

function onClimbing(speed)
playAnimation(“climb”, 0.1, Humanoid)
setAnimationSpeed(speed / 12.0)
pose = “Climbing”
end

function onGettingUp()
pose = “GettingUp”
end

function onFreeFall()
if (jumpAnimTime <= 0) then
playAnimation(“fall”, fallTransitionTime, Humanoid)
end
pose = “FreeFall”
end

function onFallingDown()
pose = “FallingDown”
end

function onSeated()
pose = “Seated”
end

function onPlatformStanding()
pose = “PlatformStanding”
end

function onSwimming(speed)
if speed > 0 then
pose = “Running”
else
pose = “Standing”
end
end

function getTool()
for _, kid in ipairs(Figure:GetChildren()) do
if kid.className == “Tool” then return kid end
end
return nil
end

function getToolAnim(tool)
for _, c in ipairs(tool:GetChildren()) do
if c.Name == “toolanim” and c.className == “StringValue” then
return c
end
end
return nil
end

function animateTool()

if (toolAnim == "None") then
	playToolAnimation("toolnone", toolTransitionTime, Humanoid, Enum.AnimationPriority.Idle)
	return
end

if (toolAnim == "Slash") then
	playToolAnimation("toolslash", 0, Humanoid, Enum.AnimationPriority.Action)
	return
end

if (toolAnim == "Lunge") then
	playToolAnimation("toollunge", 0, Humanoid, Enum.AnimationPriority.Action)
	return
end

end

function moveSit()
RightShoulder.MaxVelocity = 0.15
LeftShoulder.MaxVelocity = 0.15
RightShoulder:SetDesiredAngle(3.14 /2)
LeftShoulder:SetDesiredAngle(-3.14 /2)
RightHip:SetDesiredAngle(3.14 /2)
LeftHip:SetDesiredAngle(-3.14 /2)
end

local lastTick = 0

– connect events
Humanoid.Died:connect(onDied)
Humanoid.Running:connect(onRunning)
Humanoid.Jumping:connect(onJumping)
Humanoid.Climbing:connect(onClimbing)
Humanoid.GettingUp:connect(onGettingUp)
Humanoid.FreeFalling:connect(onFreeFall)
Humanoid.FallingDown:connect(onFallingDown)
Humanoid.Seated:connect(onSeated)
Humanoid.PlatformStanding:connect(onPlatformStanding)
Humanoid.Swimming:connect(onSwimming)

– setup emote chat hook
game:GetService(“Players”).LocalPlayer.Chatted:connect(function(msg)
local emote = “”
if msg == “/e dance” then
emote = dances[math.random(1, #dances)]
elseif (string.sub(msg, 1, 3) == "/e ") then
emote = string.sub(msg, 4)
elseif (string.sub(msg, 1, 7) == "/emote ") then
emote = string.sub(msg, 8)
end

if (pose == "Standing" and emoteNames[emote] ~= nil) then
	playAnimation(emote, 0.1, Humanoid)
end

end)

– main program

– initialize to idle
playAnimation(“idle”, 0.1, Humanoid)
pose = “Standing”

function stepAnimate(currentTime)
local amplitude = 1
local frequency = 1
local deltaTime = currentTime - lastTick
lastTick = currentTime

local climbFudge = 0
local setAngles = false

if (jumpAnimTime > 0) then
	jumpAnimTime = jumpAnimTime - deltaTime
end

if (pose == "FreeFall" and jumpAnimTime <= 0) then
	playAnimation("fall", fallTransitionTime, Humanoid)
elseif (pose == "Seated") then
	playAnimation("sit", 0.5, Humanoid)
	return
elseif (pose == "Running") then
	if Humanoid.WalkSpeed <= 16 then
		playAnimation("walk", 0.1, Humanoid)
	end
end

end

while Figure.Parent ~= nil do
local _, time = wait(0.1)
stepAnimate(time)
end

1 Like