Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

(solved)Why is my slash (old 2010 ROBLOX animation) not working?

Asked by
ElBamino 153
3 years ago
Edited 3 years ago

Hey scriptinghelpers, this is the old ROBLOX animation script for characters script that I've redone. I'm having some problems with only one thing. The slash animation when I'm using swords (the linked sword by ROBLOX to be specific is the one I tested), just doesn't work. It keeps adding a new value every time but, the animation doesn't work. Eventually after clicking so many times it lunges. Below you will find the animate tool function and the whole script. Thanks for the help in advance! I really appreciate it. I'm only here to learn. I say 2010 because, that's the year I first played ROBLOX so I remember it.

The solution to the problem I forgot to say "className" I just put name.

The function from a Local Script inside of a Script inside of ServerScriptStorage

function animateTool()
    if (toolAnim == "None") then
        RightShoulder:SetDesiredAngle(1.57)
        return
    end
    if (toolAnim == "Slash") then
        RightShoulder.MaxVelocity = 0.5
        RightShoulder:SetDesiredAngle(0)
        return
    end
    if (toolAnim == "Lunge") then
        RightShoulder.MaxVelocity = 0.5
        LeftShoulder.MaxVelocity = 0.5
        RightHip.MaxVelocity = 0.5
        LeftHip.MaxVelocity = 0.5
        RightShoulder:SetDesiredAngle(1.57)
        LeftShoulder:SetDesiredAngle(1)
        RightHip:SetDesiredAngle(1.57)
        LeftHip:SetDesiredAngle(1)
        return
    end
end

The full script just incase you need it.

function waitForChild(parent, childName)
    local child = parent:FindFirstChild(childName)
    if child then return child end
    while true do
        child = parent.ChildAdded:Wait()
        if child.Name == childName then return child end
    end
end
local Figure = script.Parent
local Torso = waitForChild(Figure, "Torso")
local RightShoulder = waitForChild (Torso, "Right Shoulder")
local LeftShoulder = waitForChild (Torso, "Left Shoulder")
local RightHip = waitForChild (Torso, "Right Hip")
local LeftHip = waitForChild (Torso, "Left Hip")
local Neck = waitForChild (Torso, "Neck")
local Humanoid = waitForChild (Figure, "Humanoid")
local pose = "Standing"
local toolAnim = "None"
local toolAnimTime = 0
local jumpMaxLimbVelocity = 0.75
function onRunning(speed)
    if speed > 0 then
        pose = "Running"
    else
        pose = "Standing"
    end
end
function onDied()
    pose = "Dead"
end
function onJumping()
    pose = "Jumping"
end
function onClimbing()
    pose = "Climbing"
end
function onGettingUp()
    pose = "GettingUp"
end
function onFreeFall()
    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 moveJump()
    RightShoulder.MaxVelocity = jumpMaxLimbVelocity
    LeftShoulder.MaxVelocity = jumpMaxLimbVelocity
    RightShoulder:SetDesiredAngle(3.14)
    LeftShoulder:SetDesiredAngle(-3.14)
    RightHip:SetDesiredAngle(0)
    LeftHip:SetDesiredAngle(0)
end
function moveFreeFall()
    RightShoulder.MaxVelocity = jumpMaxLimbVelocity
    LeftShoulder.MaxVelocity = jumpMaxLimbVelocity
    RightShoulder:SetDesiredAngle(3.14)
    LeftShoulder:SetDesiredAngle(-3.14)
    RightHip:SetDesiredAngle(0)
    LeftHip:SetDesiredAngle(0)
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
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
        RightShoulder:SetDesiredAngle(1.57)
        return
    end
    if (toolAnim == "Slash") then
        RightShoulder.MaxVelocity = 0.5
        RightShoulder:SetDesiredAngle(0)
        return
    end
    if (toolAnim == "Lunge") then
        RightShoulder.MaxVelocity = 0.5
        LeftShoulder.MaxVelocity = 0.5
        RightHip.MaxVelocity = 0.5
        LeftHip.MaxVelocity = 0.5
        RightShoulder:SetDesiredAngle(1.57)
        LeftShoulder:SetDesiredAngle(1)
        RightHip:SetDesiredAngle(1.57)
        LeftHip:SetDesiredAngle(1)
        return
    end
end
function move(time)
    local amplitude
    local frequency
    if (pose == "Jumping") then
        moveJump()
        return
    end
    if  (pose == "FreeFall") then
        moveFreeFall()
        return
    end
    if (pose == "Seated") then
        moveSit()
        return
    end
    local climbFudge = 0
    if (pose == "Running") then
        if (RightShoulder.CurrentAngle > 1.5 or RightShoulder.CurrentAngle < -1.5) then
            RightShoulder.MaxVelocity = jumpMaxLimbVelocity
        else
            RightShoulder.MaxVelocity = 0.15
        end
        if (LeftShoulder.CurrentAngle > 1.5 or LeftShoulder.CurrentAngle < -1.5) then
            LeftShoulder.MaxVelocity = jumpMaxLimbVelocity
        else
            LeftShoulder.MaxVelocity = 0.15
        end
        amplitude = 1
        frequency = 9
    elseif (pose == "Climbing") then
        RightShoulder.MaxVelocity = 0.5
        LeftShoulder.MaxVelocity = 0.5
        amplitude = 1
        frequency = 9
        climbFudge = 3.14
    else
        amplitude = 0.1
        frequency = 1
    end
    desiredAngle = amplitude * math.sin(time*frequency)
    RightShoulder:SetDesiredAngle(desiredAngle + climbFudge)
    LeftShoulder:SetDesiredAngle(desiredAngle - climbFudge)
    RightHip:SetDesiredAngle(-desiredAngle)
    LeftHip:SetDesiredAngle(-desiredAngle)
    local tool = getTool()
    if tool then
        animStringValueObject = getToolAnim(tool)
        if animStringValueObject then
            toolAnim = animStringValueObject.Value
            animStringValueObject.Parent = nil
            toolAnimTime = time + .3
        end
        if time > toolAnimTime then
            toolAnimTime = 0
            toolAnim = "None"
        end
        animateTool()
    else
        toolAnim = "None"
        toolAnimTime = 0
    end
end
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)
local runService = game:GetService("RunService");
while Figure.Parent ~= nil do
    local _, time = wait(0.1)
    move(time)
end

Answer this question