local Players = game:GetService("Players") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local LocalPlayer = Players.LocalPlayer pcall(function() Players.CharacterAutoLoads = false end) local currentTargetName = nil -- GUI local Copier = Instance.new("ScreenGui") local Main = Instance.new("Frame") local Line = Instance.new("Frame") local TextLabel = Instance.new("TextLabel") local CopierPage = Instance.new("Frame") local Username = Instance.new("TextBox") local tutorial = Instance.new("TextLabel") local UserPFP = Instance.new("ImageLabel") local Copy = Instance.new("TextButton") local Buttons = Instance.new("Frame") local CopierPage_2 = Instance.new("TextButton") local PremadePage = Instance.new("TextButton") local IngamePage = Instance.new("TextButton") local Premade = Instance.new("Frame") local Ingame = Instance.new("Frame") local ScrollingFrame = Instance.new("ScrollingFrame") local Frame = Instance.new("Frame") Copier.Name = "Copier" Copier.Parent = LocalPlayer:WaitForChild("PlayerGui") Copier.ZIndexBehavior = Enum.ZIndexBehavior.Sibling Copier.ResetOnSpawn = false Main.Name = "Main" Main.Parent = Copier Main.BackgroundColor3 = Color3.fromRGB(33, 42, 42) Main.BorderColor3 = Color3.fromRGB(255, 255, 255) Main.Position = UDim2.new(0.304305285, 0, 0.286624104, 0) Main.Size = UDim2.new(0, 418, 0, 328) Main.ZIndex = 2 Line.Name = "Line" Line.Parent = Main Line.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Line.BorderColor3 = Color3.fromRGB(0, 0, 0) Line.BorderSizePixel = 0 Line.Position = UDim2.new(0, 0, 0.120575413, 0) Line.Size = UDim2.new(0, 418, 0, 1) TextLabel.Parent = Line TextLabel.BackgroundColor3 = Color3.fromRGB(255, 255, 255) TextLabel.BackgroundTransparency = 1 TextLabel.BorderColor3 = Color3.fromRGB(0, 0, 0) TextLabel.BorderSizePixel = 0 TextLabel.Position = UDim2.new(0, 0, -41, 0) TextLabel.Size = UDim2.new(0, 417, 0, 41) TextLabel.Font = Enum.Font.Unknown TextLabel.Text = "Avatar Copier - By ProjectLigma" TextLabel.TextColor3 = Color3.fromRGB(255, 255, 255) TextLabel.TextScaled = true TextLabel.TextSize = 14 TextLabel.TextWrapped = true CopierPage.Name = "CopierPage" CopierPage.Parent = Main CopierPage.BackgroundColor3 = Color3.fromRGB(255, 255, 255) CopierPage.BackgroundTransparency = 1 CopierPage.BorderColor3 = Color3.fromRGB(0, 0, 0) CopierPage.BorderSizePixel = 0 CopierPage.Position = UDim2.new(0, 0, 0.123624288, 0) CopierPage.Size = UDim2.new(0, 418, 0, 229) Username.Name = "Username" Username.Parent = CopierPage Username.BackgroundColor3 = Color3.fromRGB(100, 124, 119) Username.BorderColor3 = Color3.fromRGB(92, 118, 121) Username.Position = UDim2.new(0.344497621, 0, 0.0436681211, 0) Username.Size = UDim2.new(0, 266, 0, 55) Username.ClearTextOnFocus = false Username.Font = Enum.Font.Unknown Username.Text = "ProjectLigma" Username.TextColor3 = Color3.fromRGB(255, 255, 255) Username.TextScaled = true Username.TextSize = 14 Username.TextWrapped = true tutorial.Name = "tutorial" tutorial.Parent = CopierPage tutorial.BackgroundColor3 = Color3.fromRGB(255, 255, 255) tutorial.BackgroundTransparency = 1 tutorial.BorderColor3 = Color3.fromRGB(0, 0, 0) tutorial.BorderSizePixel = 0 tutorial.Position = UDim2.new(0.0167464111, 0, 0.602620065, 0) tutorial.Size = UDim2.new(0, 402, 0, 92) tutorial.Font = Enum.Font.Unknown tutorial.Text = "Put the target name on the textbox, then click \"Copy this avatar!\" to get the target's avatar!" tutorial.TextColor3 = Color3.fromRGB(255, 255, 255) tutorial.TextScaled = true tutorial.TextSize = 22 tutorial.TextWrapped = true tutorial.TextXAlignment = Enum.TextXAlignment.Left tutorial.TextYAlignment = Enum.TextYAlignment.Top UserPFP.Name = "UserPFP" UserPFP.Parent = CopierPage UserPFP.BackgroundColor3 = Color3.fromRGB(33, 42, 42) UserPFP.BorderColor3 = Color3.fromRGB(170, 170, 255) UserPFP.Position = UDim2.new(0.0167464111, 0, 0.0436681211, 0) UserPFP.Size = UDim2.new(0, 128, 0, 120) UserPFP.Image = "rbxasset://textures/ui/GuiImagePlaceholder.png" Copy.Name = "Copy" Copy.Parent = CopierPage Copy.BackgroundColor3 = Color3.fromRGB(100, 124, 119) Copy.BorderColor3 = Color3.fromRGB(92, 118, 121) Copy.Position = UDim2.new(0.344497621, 0, 0.336244553, 0) Copy.Size = UDim2.new(0, 265, 0, 53) Copy.Font = Enum.Font.SourceSansLight Copy.Text = "Copy this avatar!" Copy.TextColor3 = Color3.fromRGB(171, 203, 198) Copy.TextScaled = true Copy.TextSize = 14 Copy.TextWrapped = true Buttons.Name = "Buttons" Buttons.Parent = Main Buttons.BackgroundColor3 = Color3.fromRGB(33, 42, 42) Buttons.BorderColor3 = Color3.fromRGB(255, 255, 255) Buttons.Position = UDim2.new(0, 0, 0.843136489, 0) Buttons.Size = UDim2.new(0, 418, 0, 51) CopierPage_2.Name = "CopierPage" CopierPage_2.Parent = Buttons CopierPage_2.BackgroundColor3 = Color3.fromRGB(60, 77, 79) CopierPage_2.BorderColor3 = Color3.fromRGB(92, 118, 121) CopierPage_2.Position = UDim2.new(0.0189999659, 0, 0.0899999291, 0) CopierPage_2.Size = UDim2.new(0, 128, 0, 43) CopierPage_2.Font = Enum.Font.SourceSansLight CopierPage_2.Text = "Avatar Copier" CopierPage_2.TextColor3 = Color3.fromRGB(171, 203, 198) CopierPage_2.TextScaled = true CopierPage_2.TextSize = 14 CopierPage_2.TextWrapped = true PremadePage.Name = "PremadePage" PremadePage.Parent = Buttons PremadePage.BackgroundColor3 = Color3.fromRGB(60, 77, 79) PremadePage.BorderColor3 = Color3.fromRGB(92, 118, 121) PremadePage.Position = UDim2.new(0.674287081, 0, 0.0799997374, 0) PremadePage.Size = UDim2.new(0, 129, 0, 43) PremadePage.Font = Enum.Font.SourceSansLight PremadePage.Text = "Premade avatars" PremadePage.TextColor3 = Color3.fromRGB(171, 203, 198) PremadePage.TextScaled = true PremadePage.TextSize = 14 PremadePage.TextWrapped = true IngamePage.Name = "IngamePage" IngamePage.Parent = Buttons IngamePage.BackgroundColor3 = Color3.fromRGB(60, 77, 79) IngamePage.BorderColor3 = Color3.fromRGB(92, 118, 121) IngamePage.Position = UDim2.new(0.344999999, 0, 0.0900000036, 0) IngamePage.Size = UDim2.new(0, 131, 0, 43) IngamePage.Font = Enum.Font.SourceSansLight IngamePage.Text = "Ingame Avatars" IngamePage.TextColor3 = Color3.fromRGB(171, 203, 198) IngamePage.TextScaled = true IngamePage.TextSize = 14 IngamePage.TextWrapped = true Premade.Name = "Premade" Premade.Parent = Main Premade.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Premade.BackgroundTransparency = 1 Premade.BorderColor3 = Color3.fromRGB(0, 0, 0) Premade.BorderSizePixel = 0 Premade.Position = UDim2.new(0, 0, 0.123624288, 0) Premade.Size = UDim2.new(0, 418, 0, 229) Premade.Visible = false local function makePremadeButton(name, posX, posY, sizeX, sizeY, text) local btn = Instance.new("TextButton") btn.Name = name btn.Parent = Premade btn.BackgroundColor3 = Color3.fromRGB(100, 124, 119) btn.BorderColor3 = Color3.fromRGB(92, 118, 121) btn.Position = UDim2.new(posX, 0, posY, 0) btn.Size = UDim2.new(0, sizeX, 0, sizeY) btn.Font = Enum.Font.SourceSansLight btn.Text = text btn.TextColor3 = Color3.fromRGB(171, 203, 198) btn.TextScaled = true btn.TextSize = 14 btn.TextWrapped = true return btn end local ProjectLigma = makePremadeButton("ProjectLigma", 0.0172487106, 0.0262008738, 128, 50, "ProjectLigma") local UXI_302 = makePremadeButton("UXI_302", 0.344999909, 0.0262008738, 131, 50, "UXI_302") local babyoutmooooooon2o22 = makePremadeButton("babyoutmooooooon2o22", 0.6742872, 0.0262008738, 128, 50, "babyoutmooooooon2o22") local Shedletsky = makePremadeButton("Shedletsky", 0.0172487106, 0.275109172, 128, 49, "Shedletsky") local MrDoomBringer = makePremadeButton("MrDoomBringer", 0.344999909, 0.275109172, 131, 49, "MrDoomBringer") local johnnyschwehel1234 = makePremadeButton("johnnyschwehel1234", 0.6742872, 0.275109172, 128, 49, "ProjectLigma's brother avatar") Ingame.Name = "Ingame" Ingame.Parent = Main Ingame.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Ingame.BackgroundTransparency = 1 Ingame.BorderColor3 = Color3.fromRGB(0, 0, 0) Ingame.BorderSizePixel = 0 Ingame.Position = UDim2.new(0, 0, 0.123624288, 0) Ingame.Size = UDim2.new(0, 418, 0, 229) Ingame.Visible = false ScrollingFrame.Parent = Ingame ScrollingFrame.Active = true ScrollingFrame.BackgroundColor3 = Color3.fromRGB(255, 255, 255) ScrollingFrame.BackgroundTransparency = 1 ScrollingFrame.BorderColor3 = Color3.fromRGB(0, 0, 0) ScrollingFrame.BorderSizePixel = 0 ScrollingFrame.Position = UDim2.new(0.0167464837, 0, 0.0262008738, 0) ScrollingFrame.Size = UDim2.new(0, 403, 0, 224) ScrollingFrame.ScrollBarImageColor3 = Color3.fromRGB(0, 0, 0) ScrollingFrame.CanvasSize = UDim2.new(0, 0, 6, 0) Frame.Parent = ScrollingFrame Frame.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Frame.BackgroundTransparency = 1 Frame.BorderColor3 = Color3.fromRGB(0, 0, 0) Frame.BorderSizePixel = 0 Frame.Size = UDim2.new(0, 403, 1, 0) -- In-game player list buttons local tehbuttons = 72 local positionsX = {0.024813896, 0.362282872, 0.679900765} local startY = 0.0043668123 local stepY = 0.0429403214 local sizeX = {112, 110, 109} local sizeY = 43 local ingameButtons = {} for i = 1, tehbuttons do local col = ((i - 1) % 3) + 1 local row = math.floor((i - 1) / 3) local plrqq = Instance.new("TextButton") plrqq.Parent = Frame plrqq.BackgroundColor3 = Color3.fromRGB(60, 77, 79) plrqq.BorderSizePixel = 0 plrqq.Font = Enum.Font.SourceSansLight plrqq.TextScaled = true plrqq.TextWrapped = true plrqq.TextColor3 = Color3.fromRGB(171, 203, 198) plrqq.Visible = false plrqq.Size = UDim2.new(0, sizeX[col], 0, sizeY) plrqq.Position = UDim2.new(positionsX[col], 0, startY + (row * stepY), 0) plrqq:SetAttribute("PlayerName", "") plrqq.MouseButton1Click:Connect(function() local name = plrqq:GetAttribute("PlayerName") if name ~= "" then Ingame.Visible = false CopierPage.Visible = true Username.Text = name end end) table.insert(ingameButtons, plrqq) end local function refreshIngameButtons() local plrs = Players:GetPlayers() for i, btn in ipairs(ingameButtons) do local plr = plrs[i] if plr then btn.Visible = true btn.Text = plr.Name btn:SetAttribute("PlayerName", plr.Name) else btn.Visible = false btn:SetAttribute("PlayerName", "") end end end Players.PlayerAdded:Connect(refreshIngameButtons) Players.PlayerRemoving:Connect(refreshIngameButtons) refreshIngameButtons() task.spawn(function() while true do refreshIngameButtons() task.wait(1) end end) -- Draggable window local function dragify(frame) local dragToggle, dragSpeed, dragInput, dragStart, startPos local function updateInput(input) local delta = input.Position - dragStart local pos = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) TweenService:Create(frame, TweenInfo.new(dragSpeed or 0), {Position = pos}):Play() end frame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragToggle = true dragSpeed = 0 dragStart = input.Position startPos = frame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragToggle = false end end) end end) frame.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragToggle then updateInput(input) end end) end dragify(Main) -- Live avatar-picture preview while typing task.spawn(function() while true do local name = Username.Text local ok, userId = pcall(function() return Players:GetUserIdFromNameAsync(name) end) if ok then UserPFP.Image = string.format("rbxthumb://type=AvatarHeadShot&id=%s&w=420&h=420", userId) end task.wait(0.1) end end) -- R6 / R15 idle-walk-run-jump animation setup (shared, not duplicated) local function setupR6Animate(character, humanoid) local animNames = { idle = "http://www.roblox.com/asset/?id=180435571", walk = "http://www.roblox.com/asset/?id=180426354", jump = "http://www.roblox.com/asset/?id=125750702", fall = "http://www.roblox.com/asset/?id=180436148", climb = "http://www.roblox.com/asset/?id=180436334", sit = "http://www.roblox.com/asset/?id=178130996", } local tracks = {} for name, id in pairs(animNames) do local anim = Instance.new("Animation") anim.AnimationId = id tracks[name] = humanoid:LoadAnimation(anim) end local current local function play(name) if current == name then return end if tracks[current] then tracks[current]:Stop(0.1) end current = name if tracks[name] then tracks[name]:Play(0.1) end end humanoid.Running:Connect(function(speed) play(speed > 0.5 and "walk" or "idle") end) humanoid.Jumping:Connect(function() play("jump") end) humanoid.FreeFalling:Connect(function() play("fall") end) humanoid.Climbing:Connect(function() play("climb") end) humanoid.Seated:Connect(function() play("sit") end) play("idle") task.spawn(function() while character.Parent do while humanoid.Health < humanoid.MaxHealth and character.Parent do task.wait(1) humanoid.Health = math.min(humanoid.Health + humanoid.MaxHealth * 0.01, humanoid.MaxHealth) end if not character.Parent then break end humanoid.HealthChanged:Wait() end end) end local function setupR15Animate(character, humanoid) local animNames = { idle = "http://www.roblox.com/asset/?id=507766388", walk = "http://www.roblox.com/asset/?id=507777826", jump = "http://www.roblox.com/asset/?id=507765000", fall = "http://www.roblox.com/asset/?id=507767968", climb = "http://www.roblox.com/asset/?id=507765644", sit = "http://www.roblox.com/asset/?id=2506281703", } local tracks = {} for name, id in pairs(animNames) do local anim = Instance.new("Animation") anim.AnimationId = id tracks[name] = humanoid:LoadAnimation(anim) end local current local function play(name) if current == name then return end if tracks[current] then tracks[current]:Stop(0.15) end current = name if tracks[name] then tracks[name]:Play(0.15) end end humanoid.Running:Connect(function(speed) play(speed > 0.75 and "walk" or "idle") end) humanoid.Jumping:Connect(function() play("jump") end) humanoid.FreeFalling:Connect(function() play("fall") end) humanoid.Climbing:Connect(function() play("climb") end) humanoid.Seated:Connect(function() play("sit") end) play("idle") end local function applyAnimate(character, humanoid) if humanoid.RigType == Enum.HumanoidRigType.R6 then setupR6Animate(character, humanoid) elseif humanoid.RigType == Enum.HumanoidRigType.R15 then setupR15Animate(character, humanoid) end end -- Core swap logic -- this is where the bug is actually fixed local function LoadAvatar(targetName) if not targetName or targetName == "" then return end -- Do not allow copying myself if string.lower(targetName) == string.lower(LocalPlayer.Name) then warn("[AvatarCopier] Không thể copy chính mình!") return end local ok, userId = pcall(function() return Players:GetUserIdFromNameAsync(targetName) end) -- Does not exist if not ok or not userId then warn("[AvatarCopier] Người dùng không tồn tại:", targetName) return end -- Check if banned / account deleted local okDesc, desc = pcall(function() return Players:GetHumanoidDescriptionFromUserId(userId) end) if not okDesc or not desc then warn("[AvatarCopier] Không thể copy (có thể bị ban hoặc account đã bị xóa):", targetName) return end local ok, userId = pcall(function() return Players:GetUserIdFromNameAsync(targetName) end) if not ok or not userId then warn("[AvatarCopier] Couldn't find user:", targetName) return end local ok2, character = pcall(function() return Players:CreateHumanoidModelFromUserId(userId) end) if not ok2 or not character then warn("[AvatarCopier] Couldn't build avatar for:", targetName) return end local humanoid = character:WaitForChild("Humanoid") -- Remove default animation local oldAnimate = character:FindFirstChild("Animate") if oldAnimate then oldAnimate:Destroy() end local oldChar = LocalPlayer.Character local position = CFrame.new(0, 5, 0) if oldChar and oldChar:FindFirstChild("HumanoidRootPart") then position = oldChar.HumanoidRootPart.CFrame end character.Name = LocalPlayer.Name character.Parent = workspace -- Set location now local root = character:WaitForChild("HumanoidRootPart") root.CFrame = position for _, v in ipairs(character:GetDescendants()) do if v:IsA("BasePart") then v.Anchored = false end end --Hide old character if oldChar and oldChar ~= character then pcall(function() for _, v in ipairs(oldChar:GetDescendants()) do if v:IsA("BasePart") then v.Anchored = true v.CanCollide = false v.Transparency = 1 elseif v:IsA("Decal") then v.Transparency = 1 end end local oldHumanoid = oldChar:FindFirstChildOfClass("Humanoid") if oldHumanoid then oldHumanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None end oldChar.Parent = nil end) end LocalPlayer.Character = character -- Force camera + position again after 1 frame task.defer(function() if character and character.Parent then local hrp = character:FindFirstChild("HumanoidRootPart") if hrp then hrp.CFrame = position end workspace.CurrentCamera.CameraSubject = humanoid workspace.CurrentCamera.CameraType = Enum.CameraType.Custom end end) -- Press again after 0.15s to prevent being pulled back. task.delay(0.15, function() if character and character.Parent then local hrp = character:FindFirstChild("HumanoidRootPart") if hrp then hrp.CFrame = position end workspace.CurrentCamera.CameraSubject = humanoid end end) applyAnimate(character, humanoid) currentTargetName = targetName end local isSwapping = false LocalPlayer.CharacterAdded:Connect(function(char) if currentTargetName and not isSwapping then isSwapping = true task.wait(0.3) LoadAvatar(currentTargetName) task.wait(0.5) isSwapping = false end end) -- Button hookups CopierPage_2.MouseButton1Click:Connect(function() CopierPage.Visible = true Ingame.Visible = false Premade.Visible = false end) IngamePage.MouseButton1Click:Connect(function() CopierPage.Visible = false Ingame.Visible = true Premade.Visible = false end) PremadePage.MouseButton1Click:Connect(function() CopierPage.Visible = false Ingame.Visible = false Premade.Visible = true end) Copy.MouseButton1Click:Connect(function() LoadAvatar(Username.Text) end) ProjectLigma.MouseButton1Click:Connect(function() LoadAvatar("ProjectLigma") end) UXI_302.MouseButton1Click:Connect(function() LoadAvatar("UXI_302") end) babyoutmooooooon2o22.MouseButton1Click:Connect(function() LoadAvatar("babyoutmooooooon2o22") end) Shedletsky.MouseButton1Click:Connect(function() LoadAvatar("Shedletsky") end) MrDoomBringer.MouseButton1Click:Connect(function() LoadAvatar("MrDoomBringer") end) johnnyschwehel1234.MouseButton1Click:Connect(function() LoadAvatar("johnnyschwehel1234") end)