Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local defaultR15 = game:GetService("InsertService"):LoadAsset(978469541)
- local defaultR6 = game:GetService("InsertService"):LoadAsset(978511844)
- local cache = {}
- local function ChangeAvatar(player, id)
- if not (id > 0) or id%1 ~= 0 then id = 1 end
- local character = player.Character
- if not character or not character:FindFirstChild("Humanoid") then return end
- local assets = cache[id] or game.Players:GetCharacterAppearanceAsync(id)
- player:ClearCharacterAppearance()
- local R15 = character.Humanoid.RigType == Enum.HumanoidRigType.R15
- local default = (R15 and defaultR15 or defaultR6):Clone()
- for _, part in pairs(default:GetChildren()) do
- local old = character:FindFirstChild(part.Name)
- part.Parent = character
- if old then
- part.CFrame = old.CFrame
- old:Destroy()
- end
- end
- local humanoid = character.Humanoid
- humanoid:BuildRigFromAttachments()
- humanoid.Parent = nil
- humanoid.Parent = character
- local content = Instance.new("Folder")
- for _, v in pairs(assets:GetChildren()) do
- v:Clone().Parent = content
- if (R15 and v.Name == "R15") or (not R15 and v.Name == "R6") then
- if R15 then
- for _, part in pairs(v:GetChildren()) do
- local old = character:FindFirstChild(part.Name)
- part:Clone().Parent = character
- old:Destroy()
- end
- else
- for _, CharacterMesh in pairs(v:GetChildren()) do
- CharacterMesh.Parent = character
- end
- end
- elseif (R15 and v.Name ~= "R6") or (not R15 and v.Name ~= "R15") then
- if v:IsA("FaceInstance") then
- character.Head.face.Texture = v.Texture
- elseif v:IsA("DataModelMesh") then
- character.Head.Mesh:Destroy()
- v.Parent = character.Head
- else
- spawn(function()
- pcall(function()
- player:LoadCharacterAppearance(v)
- end)
- end)
- end
- end
- end
- cache[id] = content
- humanoid:BuildRigFromAttachments()
- end
- local function AddPlayer(player)
- player.Chatted:Connect(function(msg)
- if msg:sub(1, 7):lower() == "avatar/" then
- local name = msg:sub(8)
- local id = game.Players:GetUserIdFromNameAsync(name)
- if id then
- ChangeAvatar(player, id)
- end
- elseif msg:sub(1, 9):lower() == "avatarid/" then
- local id = tonumber(msg:sub(10))
- if id then
- ChangeAvatar(player, id)
- end
- end
- end)
- end
- game.Players.PlayerAdded:Connect(AddPlayer)
- for _, player in pairs(game.Players:GetPlayers()) do
- AddPlayer(player)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement