So everyone knows for a fact that roblox moderation is meh.
And when I play games I saw multiple instances of people using “sus” or “r63” avatar which I hate cause I don’t think it belongs on this platform. (I’m ok with whatever people want to do I just don’t want it in my game)
I’d like my experience to still have customizable character but not including these degen stuff, how can I make a script that blacklists gui from a certain ugc publishers/accounts?
I know how to hide them and put shirt/stuff over it but I want to know how would I know if a ugc was made by a certain publishers/accounts?
local HttpService = game:GetService("HttpService")
local link = "https://avatar.roproxy.com/v1/users/ID/avatar"
local badcreators = { -- insert ids here
}
game.Players.PlayerAdded:Connect(function(Player)
local roproxylink = string.gsub(link, "ID", Player.UserId)
local request = HttpService:JSONDecode(HttpService:GetAsync(roproxylink))
for index, asset in request.assets do
local name : string = asset.assetType.name
if name:match("Animation") then -- roblox provided animation, etc rthro animations, for some reaason they get listed which is dumb dumb stupid
continue
else
local info = Marketplace:GetProductInfo(asset.id)
if table.find(badcreators, info.Creator.Id) then
Player:Kick("nuh uh buddy")
end
end
end
end)
Quick question, how would I get the accessory itself to delete it? cause i don’t know how the proxy works
This is what I did so far
player.CharacterAdded:Connect(function(character)
wait(character:WaitForChild("Humanoid"):WaitForChild("HumanoidDescription"))
local roproxylink = string.gsub(RoproxylinkThingy, "ID", player.UserId)
local request = HttpService:JSONDecode(HttpService:GetAsync(roproxylink))
for index, asset in request.assets do
local name : string = asset.assetType.name
if name:match("Animation") then
continue
else
local info = mps:GetProductInfo(asset.id)
print(name.." "..info.Creator.Id)
if table.find(BannedUGCCreator, info.Creator.Id) then
print(asset)
local accessory = character:FindFirstChild(asset["name"])
accessory:Destroy()
--player:Kick("nuh uh buddy")
end
end
end
end)
you could probably try storing the ids of any id created by a bad ugc creator, creating a clone of the humanoid description, going through each field and if it’s a bad id you remove it from that humanoid description and reapply it on the player when it’s done?
player.CharacterAdded:Connect(function(character)
wait(character:WaitForChild("Humanoid"):WaitForChild("HumanoidDescription"))
character.Archivable = true
local roproxylink = string.gsub(RoproxylinkThingy, "ID", player.UserId)
local request = HttpService:JSONDecode(HttpService:GetAsync(roproxylink))
for index, asset in request.assets do
local name : string = asset.assetType.name
if name:match("Animation") then
continue
else
local info = mps:GetProductInfo(asset.id)
print(name.." "..info.Creator.Id)
if table.find(BannedUGCCreator, info.Creator.Id) then
print(asset["name"])
print(asset)
local accessoryname = asset["name"]
local accessory = character:FindFirstChild(accessoryname)
if accessory then
accessory:Destroy()
else
warn("Can't find "..accessoryname)
--player:Kick("nuh uh buddy")\
end
end
end
end
character.Archivable = false
end)
It seems to work but it couldn’t get the accessory at the end
player.CharacterAdded:Connect(function(character)
wait(character:WaitForChild("Humanoid"):WaitForChild("HumanoidDescription"))
character.Archivable = true
local roproxylink = string.gsub(RoproxylinkThingy, "ID", player.UserId)
local request = HttpService:JSONDecode(HttpService:GetAsync(roproxylink))
for index, asset in request.assets do
local name : string = asset.assetType.name
if name:match("Animation") then
continue
else
local info = mps:GetProductInfo(asset.id)
print(name.." "..info.Creator.Id)
if table.find(BannedUGCCreator, info.Creator.Id) then
local CompareAsset = game:GetService("InsertService"):LoadAsset(info["AssetId"]):GetChildren()
local CompareAssetName = CompareAsset[1].Name
local accessoryname = asset["name"]
local accessory = character:FindFirstChild(CompareAssetName)
if accessory then
accessory:Destroy()
else
warn("Can't find "..accessoryname)
end
end
end
end
character.Archivable = false
end)