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

im trying to set my own idle animation but it won't work?

Asked by 2 years ago

i used the default script from roblox characters and put it in startercharacterscripts, here's the relevant part, and yes i did change the animations ID with the same one i put in the script also set the animation i used in a loop and put it on idle for the animation priority

local Character = script.Parent
local Humanoid = Character:WaitForChild("Humanoid")
local pose = "Standing"

local userNoUpdateOnLoopSuccess, userNoUpdateOnLoopValue = pcall(function() return UserSettings():IsUserFeatureEnabled("UserNoUpdateOnLoop") end)
local userNoUpdateOnLoop = userNoUpdateOnLoopSuccess and userNoUpdateOnLoopValue

local userEmoteToRunThresholdChange do
    local success, value = pcall(function()
        return UserSettings():IsUserFeatureEnabled("UserEmoteToRunThresholdChange")
    end)
    userEmoteToRunThresholdChange = success and value
end

local userPlayEmoteByIdAnimTrackReturn do
    local success, value = pcall(function()
        return UserSettings():IsUserFeatureEnabled("UserPlayEmoteByIdAnimTrackReturn2")
    end)
    userPlayEmoteByIdAnimTrackReturn = success and value
end

local animateScriptEmoteHookFlagExists, animateScriptEmoteHookFlagEnabled = pcall(function()
    return UserSettings():IsUserFeatureEnabled("UserAnimateScriptEmoteHook")
end)
local FFlagAnimateScriptEmoteHook = animateScriptEmoteHookFlagExists and animateScriptEmoteHookFlagEnabled

local FFlagUserFixLoadAnimationError do
    local success, result = pcall(function()
        return UserSettings():IsUserFeatureEnabled("UserFixLoadAnimationError")
    end)
    FFlagUserFixLoadAnimationError = success and result
end

local AnimationSpeedDampeningObject = script:FindFirstChild("ScaleDampeningPercent")
local HumanoidHipHeight = 2

local EMOTE_TRANSITION_TIME = 0.1

local currentAnim = ""
local currentAnimInstance = nil
local currentAnimTrack = nil
local currentAnimKeyframeHandler = nil
local currentAnimSpeed = 1.0

local runAnimTrack = nil
local runAnimKeyframeHandler = nil

local PreloadedAnims = {}

local animTable = {}
local animNames = { 
    idle =  {   
                { id = "http://www.roblox.com/asset/?id=7141869877", weight = 1 },
                { id = "http://www.roblox.com/asset/?id=7141869877", weight = 1 },
                { id = "http://www.roblox.com/asset/?id=7141869877", weight = 9 }
            },
    walk =  {   
                { id = "http://www.roblox.com/asset/?id=507777826", weight = 10 } 
            }, 
    run =   {
                { id = "http://www.roblox.com/asset/?id=507767714", weight = 10 } 
            }, 
    swim =  {
                { id = "http://www.roblox.com/asset/?id=507784897", weight = 10 } 
            }, 
    swimidle =  {
                { id = "http://www.roblox.com/asset/?id=507785072", weight = 10 } 
            }, 
    jump =  {
                { id = "http://www.roblox.com/asset/?id=507765000", weight = 10 } 
            }, 
    fall =  {
                { id = "http://www.roblox.com/asset/?id=507767968", weight = 10 } 
            }, 
    climb = {
                { id = "http://www.roblox.com/asset/?id=507765644", weight = 10 } 
            }, 
    sit =   {
                { id = "http://www.roblox.com/asset/?id=2506281703", weight = 10 } 
            },  
    toolnone = {
                { id = "http://www.roblox.com/asset/?id=507768375", weight = 10 } 
            },
    toolslash = {
                { id = "http://www.roblox.com/asset/?id=522635514", weight = 10 } 
            },
    toollunge = {
                { id = "http://www.roblox.com/asset/?id=522638767", weight = 10 } 
            },
    wave = {
                { id = "http://www.roblox.com/asset/?id=507770239", weight = 10 } 
            },
    point = {
                { id = "http://www.roblox.com/asset/?id=507770453", weight = 10 } 
            },
    dance = {
                { id = "http://www.roblox.com/asset/?id=507771019", weight = 10 }, 
                { id = "http://www.roblox.com/asset/?id=507771955", weight = 10 }, 
                { id = "http://www.roblox.com/asset/?id=507772104", weight = 10 } 
            },
    dance2 = {
                { id = "http://www.roblox.com/asset/?id=507776043", weight = 10 }, 
                { id = "http://www.roblox.com/asset/?id=507776720", weight = 10 }, 
                { id = "http://www.roblox.com/asset/?id=507776879", weight = 10 } 
            },
    dance3 = {
                { id = "http://www.roblox.com/asset/?id=507777268", weight = 10 }, 
                { id = "http://www.roblox.com/asset/?id=507777451", weight = 10 }, 
                { id = "http://www.roblox.com/asset/?id=507777623", weight = 10 } 
            },
    laugh = {
                { id = "http://www.roblox.com/asset/?id=507770818", weight = 10 } 
            },
    cheer = {
                { id = "http://www.roblox.com/asset/?id=507770677", weight = 10 } 
            },
}

-- 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, dance = true, dance2 = true, dance3 = true, laugh = false, cheer = false}

math.randomseed(tick())

function findExistingAnimationInSet(set, anim)
    if set == nil or anim == nil then
        return 0
    end

    for idx = 1, set.count, 1 do 
        if set[idx].anim.AnimationId == anim.AnimationId then
            return idx
        end
    end

    return 0
end

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 = {}

    local allowCustomAnimations = true

    local success, msg = pcall(function() allowCustomAnimations = game:GetService("StarterPlayer").AllowCustomAnimations end)
    if not success then
        allowCustomAnimations = true
    end

    -- check for config values
    local config = script:FindFirstChild(name)
    if (allowCustomAnimations and config ~= nil) then
        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 = 0
        for _, childPart in pairs(config:GetChildren()) do
            if (childPart:IsA("Animation")) then
                local newWeight = 1
                local weightObject = childPart:FindFirstChild("Weight")
                if (weightObject ~= nil) then
                    newWeight = weightObject.Value
                end
                animTable[name].count = animTable[name].count + 1
                idx = animTable[name].count
                animTable[name][idx] = {}
                animTable[name][idx].anim = childPart
                animTable[name][idx].weight = newWeight
                animTable[name].totalWeight = animTable[name].totalWeight + animTable[name][idx].weight
                table.insert(animTable[name].connections, childPart.Changed:connect(function(property) configureAnimationSet(name, fileList) end))
                table.insert(animTable[name].connections, childPart.ChildAdded:connect(function(property) configureAnimationSet(name, fileList) end))
                table.insert(animTable[name].connections, childPart.ChildRemoved:connect(function(property) configureAnimationSet(name, fileList) end))
            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
        end
    end

    -- preload anims
    for i, animType in pairs(animTable) do
        for idx = 1, animType.count, 1 do
            if PreloadedAnims[animType[idx].anim.AnimationId] == nil then
                Humanoid:LoadAnimation(animType[idx].anim)
                PreloadedAnims[animType[idx].anim.AnimationId] = true
            end             
        end
    end
end

1 answer

Log in to vote
0
Answered by 2 years ago

Hopefully this will help https://www.youtube.com/watch?v=dKytA5tz-0Q&amp;t=21s

0
i don't think you posted the whole link Icy_limxz 14 — 2y
Ad

Answer this question