Roblox not thinking that I'm the owner of my own animation...

Hello so I was trying to play an animation on a unpublished place and the output says that :
23:52:38.314 Using AnimationId: rbxassetid://107025376890511 - Server - TestScript [READ ME!]:33
23:52:38.585 Failed to load animation with sanitized ID rbxassetid://107025376890511: Animation failed to load, assetId: https://assetdelivery.roblox.com/v1/asset?id=107025376890511&serverplaceid=0 - Studio
23:52:39.060 The experience doesn’t have access permission to use asset id 107025376890511. Click to share access - Studio
23:52:39.102 ANALYSIS BEGIN - Server - TestScript [READ ME!]:82



The script I used :


local AnimationClipProvider = game:GetService("AnimationClipProvider")
local RunService = game:GetService("RunService")

local ANIM_MAX_DURATION = 10
local ANIM_MAX_BOUNDS = 5
local ANIM_MAX_DELTA = 1
local ANIM_FPS = 30

local testDummy = script.Parent
local humanoid = testDummy.Humanoid

local localAnimation = testDummy.LocalAnimation
local rootPart = testDummy.HumanoidRootPart
local safeZone = testDummy.SafeZone

local animRef = localAnimation.Value
local animId = script:GetAttribute("AnimationId")
local animation = Instance.new("Animation")

if animRef and animRef:IsA("AnimationClip") then
	warn("Using LocalAnimation:", animRef)
	animation.AnimationId = AnimationClipProvider:RegisterAnimationClip(animRef)
else
	-- Utilise directement l'ID sans GetAnimationClipAsync
	local numeric = tonumber(animId)

	if numeric then
		animId = `rbxassetid://{numeric}`
	end

	warn("Using AnimationId:", animId)
	animation.AnimationId = animId
end

animation.Parent = script

-- CORRECTION ICI : Utilise humanoid:LoadAnimation() au lieu de animator:LoadAnimation()
local track = humanoid:LoadAnimation(animation)
track.Looped = true
track:Play()

local limbs = {} :: {
	[MeshPart]: Highlight
}

local lastPoses = {} :: {
	[MeshPart]: CFrame
}

for i, child in testDummy:GetChildren() do
	if child:IsA("MeshPart") then
		local highlight = Instance.new("Highlight")
		highlight.OutlineColor = Color3.new(1, 0, 0)
		highlight.Enabled = false
		highlight.Parent = child

		limbs[child] = highlight
	end
end

local baseLoopRange = NumberRange.new(0, 60000)
safeZone.Size = Vector3.one * ANIM_MAX_BOUNDS * 2

while true do
	local frameDelay = tonumber(script:GetAttribute("FrameDelay")) or 0.1
	local userLoopRange = script:GetAttribute("LoopRange")

	local loopRange = if typeof(userLoopRange) == "NumberRange"
		then userLoopRange
		else baseLoopRange

	task.wait(frameDelay)

	local timePos = track.TimePosition
	local frame = (timePos * ANIM_FPS) // 1
	local maxFrames = "?"

	if frame == 0 then
		table.clear(lastPoses)
		warn("ANALYSIS BEGIN")
	end

	if track.Length == track.Length then
		local frameLen = (track.Length * ANIM_FPS) // 1
		maxFrames = tostring(frameLen)
	end

	if timePos > ANIM_MAX_DURATION then
		print("ANIMATION IS TOO LONG! CURRENTLY GOING", ANIM_MAX_DURATION - timePos, "SECONDS OVER LIMIT!!")
	end

	humanoid.DisplayName = `Frame: {frame} / {maxFrames}`
	RunService.PostSimulation:Wait()

	local origin = rootPart.CFrame
	local outOfBounds = false

	for part, highlight in limbs do
		local cf = part.CFrame
		local lastCF = lastPoses[part]
		local showHighlight = false

		if lastCF then
			local diff = (cf.Position - lastCF.Position).Magnitude
			local isError = diff > ANIM_MAX_DELTA

			if isError and time() > 0.25 then
				local severity = (diff - ANIM_MAX_DELTA)
				showHighlight = true

				local line = Instance.new("LineHandleAdornment")
				line.Color3 = Color3.new(1, 0, 0)
				line.Adornee = workspace.Terrain
				line.Length = diff
				line.CFrame = CFrame.lookAt(lastCF.Position, cf.Position)
				line.Thickness = 2
				line.Parent = script

				local box = Instance.new("BoxHandleAdornment")
				box.Size = part.Size / 2
				box.AlwaysOnTop = true
				box.ZIndex = 2
				box.Transparency = 1 - severity
				box.Color3 = Color3.new(1, 0, 0)
				box.CFrame = lastCF:Lerp(cf, 0.5)
				box.Adornee = workspace.Terrain
				box.Parent = line

				task.delay(1, function ()
					line:Destroy()
				end)

				print(`[Frame {frame}/{maxFrames}] BodyPart '{part}' moved {diff} studs between this frame and the previous! (max: {ANIM_MAX_DELTA})`)
			end
		end

		local offset = origin:ToObjectSpace(cf)
		local distToOrigin = offset.Position.Magnitude

		if distToOrigin > ANIM_MAX_BOUNDS then
			print(`[Frame {frame}/{maxFrames}] BodyPart '{part}' moved outside max radius of {ANIM_MAX_BOUNDS} studs relative to the HumanoidRootPart!`)
			showHighlight = true
			outOfBounds = true
		end

		if timePos > ANIM_MAX_DURATION then
			showHighlight = true
		end

		highlight.Enabled = showHighlight
		lastPoses[part] = cf
	end

	safeZone.Color = if outOfBounds
		then Color3.new(1, 0, 0)
		else Color3.new(0, 1, 1)

	if frame > loopRange.Max then
		local jumpTo = loopRange.Min * (1 / ANIM_FPS)
		track.TimePosition = jumpTo
		table.clear(lastPoses)
	else
		track.TimePosition = timePos + (1 / ANIM_FPS)
	end
end

But for strange reason, if I try to play the same animation with a basic script like this one, the animation plays :

local animation = script:WaitForChild(‘Animation’)
local humanoid = script.Parent:WaitForChild(‘Humanoid’)
local dance = humanoid:LoadAnimation(animation)
dance:play()

So that’s extremely weird.

Shout out to @Maximum_ADHD for making the original script.

1 Like

When I see this error, it makes me SOOOO ANGRY !!!
image

1 Like

Hi, sorry for late response. As I’m checking the db, looks like the asset 107025376890511 is owned by MaximumADHD - Roblox instead. not this account at least. The reason why you can see the configure page is maybe they gave your account access.

To unblock the workflow, can you let the asset owner to share this asset to your experience to unlock it.

Hello it was my fault indeed, I think I was very tired at the time, I’m sorry for wasting your time, you can close the bug report!

1 Like

Np, also apology for late response! thanks!

1 Like