It’s an API that you’d use to get one page of animations which can be moved onto another (next page). If you search it up with your group ID, you’ll see the first page of animations in raw text.
To get this into your game, you’d need to get it by a proxy (website or anything) - but to make this easier, you could use catalog.rprxy.xyz, which is public for everyone. Something like this would do:
local groupId = 0 --replace.
local proxy = "https://catalog.rprxy.xyz"
local path = "/v1/search/items/details?CreatorType=2&CreatorTargetId="..groupId.."&Category=12&Limit=30"
local httpService = game:GetService("HttpService")
local cursor = "" --cursor for next pages.
while wait() do --so we can do all pages.
local result, pageInfo = pcall(function() --result: if successful (no errors), pageInfo: raw data.
local page = httpService:GetAsync(proxy..path.."&cursor="..cursor) --getting the page's information.
return httpService:JSONDecode(page) --returning the page's information in LUA's form.
end)
cursor = pageInfo.nextPageCursor or "" --so we can maneuver to other pages.
print(pageInfo.data) --printing the page with animations.
--[[
you'd want to use pageInfo.data as it contains all the information
for each animation.
--]]
if cursor == "" and result then --breaks the loop when all pages have been printed.
break
end
end
Okay, could you link a random animation created by the group? Need that for Group Agent ID, whatever that is. Don’t know why they didn’t make it the same as the catalog’s query.
It’s alright, at least you learnt something from the catalog API, haha. Honestly, even if you wanted to play an animation from a different group or game, it’d not play. The only use for this is to get general information of it overall (like description), which is easily used from MarketplaceService:GetProductInfo(assetId), but only for a specific asset.
well thats not what i wanted it for, i actually used an external program to transfer animations from my account to my group, its over 200 animations, im too lazy to assign each animation to their animation holder since my game has over 80 animation holders ready to be changed. its just too much work and not worth it even tho i spent 4 months on that game.
Yeah, just pointing it out. It’d work for sure if animations were supported, but tough luck, just default avatar animations are. I hope you find some motivation to carry on, though!
i have good news, spent several days making a script that gets items from the websites and match all its properties of the animations ingame then reassign them, because all my animations were uploaded in a range of 50,000 by id, i made it so it goes through over 50,000 interations of doing what i said earlier.
surprisingly short script
local tab = {}
wait(5)
for i = 150, 1, -1 do
local low = 100000000000
local chosen = nil
for i, v in ipairs(script.Parent:GetDescendants()) do
if v:IsA("Animation") and v.Name == "shoot" and not table.find(tab, v) then
local str = ""..v.AnimationId
local newStr, replaced = string.gsub(str, "rbxassetid://", "")
if tonumber(newStr) < low then
chosen = v
low = tonumber(newStr)
end
end
end
table.insert(tab, chosen)
end
local function test(asset)
local Success, Asset = pcall(game:GetService("InsertService").LoadAsset,
game:GetService("InsertService"), asset)
if Success then
local beep = game:GetService("InsertService"):LoadAsset(asset)
beep.Parent = workspace
for i, v in ipairs(tab) do
local str = ""..v.AnimationId
local newStr, replaced = string.gsub(str, "rbxassetid://", "")
local Success2, Asset2 = pcall(game:GetService("InsertService").LoadAsset,
game:GetService("InsertService"), tonumber(newStr))
if Success2 then
local bap = game:GetService("InsertService"):LoadAsset(tonumber(newStr))
bap.Name = "Ingame"
local nope = false
local new = {}
local amount1 = 0
local amount2 = 0
local amount1p = 0
local amount2p = 0
for ir, vr in ipairs(bap:GetDescendants()) do
if vr:IsA("Pose") then
amount1 = amount1 + 1
end
end
for it, vt in ipairs(beep:GetDescendants()) do
if vt:IsA("Pose") then
amount2 = amount2 + 1
table.insert(new, vt)
end
end
for ir, vr in ipairs(bap:GetDescendants()) do
if vr:IsA("Keyframe") then
amount1p = amount1p + 1
end
end
for it, vt in ipairs(beep:GetDescendants()) do
if vt:IsA("Keyframe") then
amount2p = amount2p + 1
end
end
if amount1p == amount2p then
if amount1 ~= amount2 then
nope = true
else
local actualam = 0
local alreadychecked = {}
for ip, v2 in ipairs(bap:GetDescendants()) do
if v2:IsA("Pose") then
for it, vt in ipairs(beep:GetDescendants()) do
if vt:IsA("Pose") then
if vt.CFrame == v2.CFrame and it == ip and vt.Name == v2.Name and not
table.find(alreadychecked, vt) then
table.insert(alreadychecked, vt)
actualam = actualam + 1
end
end
end
end
end
if actualam == amount2 then
else
nope = true
end
end
else
nope = true
end
if nope == false then
print(v.Parent.Parent.Name)
v.AnimationId = "rbxassetid://"..asset
end
bap:Destroy()
end
end
beep:Destroy()
end
end
local asset = 7251678322
spawn(function()
for i = 80000, 1, -1 do
test(asset)
asset = asset + 1
end
print("DONEEE")
end)