local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local function clearVisuals(char) for _, inst in ipairs(char:GetChildren()) do if inst:IsA("Accessory") or inst:IsA("Hat") or inst:IsA("Shirt") or inst:IsA("Pants") or inst:IsA("ShirtGraphic") or inst:IsA("CharacterMesh") then inst:Destroy() end end local head = char:FindFirstChild("Head") if head then for _, d in ipairs(head:GetChildren()) do if d:IsA("Decal") and d.Name:lower() == "face" then d:Destroy() end end end local bc = char:FindFirstChildOfClass("BodyColors") if bc then bc:Destroy() end end local function attachAccessory(char, accessory) local handle = accessory:FindFirstChild("Handle") if not handle then return end local targetAttachment, accAttachment for _, part in ipairs(char:GetChildren()) do if part:IsA("BasePart") then for _, att in ipairs(part:GetChildren()) do if att:IsA("Attachment") then local match = handle:FindFirstChild(att.Name) if match and match:IsA("Attachment") then targetAttachment = att accAttachment = match break end end end end if targetAttachment then break end end if targetAttachment and accAttachment then handle.CFrame = targetAttachment.WorldCFrame * accAttachment.CFrame:Inverse() else local root = char:FindFirstChild("HumanoidRootPart") if root then handle.CFrame = root.CFrame end end local weld = Instance.new("WeldConstraint") weld.Part0 = handle weld.Part1 = (targetAttachment and targetAttachment.Parent) or char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("Head") weld.Parent = handle accessory.Parent = char end local function applyAppearance(userId) local char = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait() local ok, model = pcall(function() return Players:GetCharacterAppearanceAsync(userId) end) if not ok or not model then return end clearVisuals(char) local bc = model:FindFirstChildOfClass("BodyColors") if bc then bc:Clone().Parent = char end for _, item in ipairs(model:GetChildren()) do if item:IsA("Shirt") or item:IsA("Pants") or item:IsA("ShirtGraphic") then item:Clone().Parent = char end end for _, acc in ipairs(model:GetChildren()) do if acc:IsA("Accessory") or acc:IsA("Hat") then attachAccessory(char, acc:Clone()) end end local head = char:FindFirstChild("Head") if head then local face = model:FindFirstChild("face", true) if face and face:IsA("Decal") then face:Clone().Parent = head end end end local function resetCharacter() LocalPlayer:LoadCharacter() end local Rayfield = loadstring(game:HttpGet("https://sirius.menu/rayfield"))() local Window = Rayfield:CreateWindow({ Name = "Solara Character Changer", LoadingTitle = "Avatar Copier", LoadingSubtitle = "UserId -> Character", ConfigurationSaving = { Enabled = false } }) local Tab = Window:CreateTab("Character") local userIdInput = "" Tab:CreateInput({ Name = "Enter UserId", PlaceholderText = "Например: 1", RemoveTextAfterFocusLost = false, Callback = function(text) userIdInput = text end }) Tab:CreateButton({ Name = "Применить скин", Callback = function() local uid = tonumber(userIdInput) if uid then applyAppearance(uid) Rayfield:Notify({ Title = "Успех", Content = "Скин применён с UserId: " .. uid, Duration = 3 }) else Rayfield:Notify({ Title = "Ошибка", Content = "Введи корректный UserId!", Duration = 3 }) end end }) Tab:CreateButton({ Name = "Сбросить персонажа", Callback = function() resetCharacter() Rayfield:Notify({ Title = "Персонаж сброшен", Content = "Возвращён стандартный вид", Duration = 3 }) end })