
KeylessUniversal

--[[
===========================================
Roblox Heads and Accessories Management Script
===========================================
Current Issue:
- Heads do not hide properly when executing hide commands
Required Development:
1. Fix the hiding system
2. Add new features as needed
3. Handle any errors or exceptions
How to Contribute:
- You can modify any part of the code
- Improve the algorithms used
- Fix existing errors
Original Developer: AZ SCRIPT
Start Date: 2025/12/4
Note: This is an open-source project.
===========================================
]]
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local Player = Players.LocalPlayer
if Player.PlayerGui:FindFirstChild("PerfectViewer") then
Player.PlayerGui["PerfectViewer"]:Destroy()
end
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "PerfectViewer"
ScreenGui.ResetOnSpawn = false
ScreenGui.Parent = Player:WaitForChild("PlayerGui")
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
local ActivePopups = {}
local Config = {
AutoRotate = true,
RotSpeed = 0.01,
CamHeight = -0.5,
Scales = {
Head = 1, Torso = 1, Arms = 1, Legs = 1, Accessories = 1
},
CurrentSelectedPart = "Head",
Hidden = {Head=false, Torso=false, Arms=false, Legs=false, Acc=false},
Transparency = 0,
IsForceField = false,
EffectColor = Color3.fromRGB(100, 255, 100),
SolidColorEnabled = false,
SolidColor = Color3.fromRGB(255, 255, 255)
}
local MainFrame = Instance.new("ImageLabel")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(0, 220, 0, 300)
MainFrame.Position = UDim2.new(0, 20, 0.5, -150)
MainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
MainFrame.BorderSizePixel = 0
MainFrame.Active = true
MainFrame.Parent = ScreenGui
local MainCorner = Instance.new("UICorner") MainCorner.CornerRadius = UDim.new(0, 12) MainCorner.Parent = MainFrame
local MainStroke = Instance.new("UIStroke") MainStroke.Color = Color3.fromRGB(80, 80, 80) MainStroke.Thickness = 2 MainStroke.Parent = MainFrame
local Viewport = Instance.new("ViewportFrame")
Viewport.Size = UDim2.new(1, -10, 1, -50)
Viewport.Position = UDim2.new(0, 5, 0, 40)
Viewport.BackgroundTransparency = 0
Viewport.BackgroundColor3 = Color3.fromRGB(35, 35, 35)
Viewport.Parent = MainFrame
Instance.new("UICorner", Viewport).CornerRadius = UDim.new(0, 8)
local WorldModel = Instance.new("WorldModel") WorldModel.Parent = Viewport
local Camera = Instance.new("Camera") Viewport.CurrentCamera = Camera Camera.Parent = Viewport
local ToggleBtn = Instance.new("TextButton")
ToggleBtn.Name = "ToggleBtn"
ToggleBtn.Size = UDim2.new(0, 30, 0, 30)
ToggleBtn.Position = UDim2.new(1, -35, 0, 5)
ToggleBtn.BackgroundTransparency = 1
ToggleBtn.Text = "⚙️"
ToggleBtn.TextSize = 24
ToggleBtn.TextColor3 = Color3.new(1,1,1)
ToggleBtn.Parent = MainFrame
local SettingsFrame = Instance.new("ScrollingFrame")
SettingsFrame.Name = "SettingsFrame"
SettingsFrame.Position = UDim2.new(0, 250, 0.5, -150)
SettingsFrame.Size = UDim2.new(0, 220, 0, 300)
SettingsFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
SettingsFrame.Visible = false
SettingsFrame.ScrollBarThickness = 3
SettingsFrame.ScrollBarImageColor3 = Color3.fromRGB(100, 100, 100)
SettingsFrame.BorderSizePixel = 0
SettingsFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y
SettingsFrame.CanvasSize = UDim2.new(0,0,0,0)
SettingsFrame.Parent = ScreenGui
local SetCorner = Instance.new("UICorner") SetCorner.CornerRadius = UDim.new(0, 12) SetCorner.Parent = SettingsFrame
local SetStroke = Instance.new("UIStroke") SetStroke.Color = Color3.fromRGB(80, 80, 80) SetStroke.Thickness = 2 SetStroke.Parent = SettingsFrame
local ListLayout = Instance.new("UIListLayout")
ListLayout.Parent = SettingsFrame
ListLayout.SortOrder = Enum.SortOrder.LayoutOrder
ListLayout.Padding = UDim.new(0, 10)
ListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
local Padding = Instance.new("UIPadding")
Padding.Parent = SettingsFrame
Padding.PaddingTop = UDim.new(0, 15)
Padding.PaddingBottom = UDim.new(0, 15)
ToggleBtn.MouseButton1Click:Connect(function()
SettingsFrame.Visible = not SettingsFrame.Visible
ToggleBtn.Text = SettingsFrame.Visible and "✖" or "⚙️"
ToggleBtn.TextColor3 = SettingsFrame.Visible and Color3.fromRGB(255, 80, 80) or Color3.fromRGB(255, 255, 255)
if not SettingsFrame.Visible then
for _, data in pairs(ActivePopups) do
data.Popup.Visible = false
end
end
end)
local function CreateColorPicker(name, defaultColor, callback, order)
local Container = Instance.new("Frame")
Container.Size = UDim2.new(0.9, 0, 0, 30)
Container.BackgroundTransparency = 1
Container.LayoutOrder = order or 0
Container.Parent = SettingsFrame
local Label = Instance.new("TextLabel")
Label.Size = UDim2.new(0.7, 0, 1, 0)
Label.BackgroundTransparency = 1
Label.Text = name
Label.TextColor3 = Color3.new(0.9, 0.9, 0.9)
Label.TextXAlignment = Enum.TextXAlignment.Left
Label.TextSize = 12
Label.Parent = Container
local ColorPreviewBtn = Instance.new("TextButton")
ColorPreviewBtn.Size = UDim2.new(0, 25, 0, 25)
ColorPreviewBtn.Position = UDim2.new(1, -30, 0, 2)
ColorPreviewBtn.BackgroundColor3 = defaultColor
ColorPreviewBtn.Text = ""
ColorPreviewBtn.Parent = Container
Instance.new("UICorner", ColorPreviewBtn).CornerRadius = UDim.new(0, 6)
local PreviewStroke = Instance.new("UIStroke") PreviewStroke.Color = Color3.new(1,1,1) PreviewStroke.Thickness = 1 PreviewStroke.Parent = ColorPreviewBtn
local PickerPopup = Instance.new("Frame")
PickerPopup.Name = "ColorPopup"
PickerPopup.Size = UDim2.new(0, 150, 0, 160)
PickerPopup.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
PickerPopup.Visible = false
PickerPopup.ZIndex = 100
PickerPopup.Parent = ScreenGui
Instance.new("UICorner", PickerPopup).CornerRadius = UDim.new(0, 8)
local PopStroke = Instance.new("UIStroke") PopStroke.Color = Color3.fromRGB(80,80,80) PopStroke.Thickness = 1 PopStroke.Parent = PickerPopup
table.insert(ActivePopups, {Popup = PickerPopup, Button = ColorPreviewBtn})
local h, s, v = Color3.toHSV(defaultColor)
local SVBox = Instance.new("ImageButton")
SVBox.Size = UDim2.new(1, -20, 0, 100)
SVBox.Position = UDim2.new(0, 10, 0, 10)
SVBox.BackgroundColor3 = Color3.fromHSV(h, 1, 1)
SVBox.AutoButtonColor = false
SVBox.Image = ""
SVBox.ZIndex = 101
SVBox.Parent = PickerPopup
local SatLayer = Instance.new("Frame")
SatLayer.Size = UDim2.new(1,0,1,0)
SatLayer.BackgroundColor3 = Color3.new(1,1,1)
SatLayer.BorderSizePixel = 0
SatLayer.ZIndex = 102
SatLayer.Parent = SVBox
local SatGrad = Instance.new("UIGradient")
SatGrad.Transparency = NumberSequence.new{NumberSequenceKeypoint.new(0, 0), NumberSequenceKeypoint.new(1, 1)}
SatGrad.Parent = SatLayer
local ValLayer = Instance.new("Frame")
ValLayer.Size = UDim2.new(1,0,1,0)
ValLayer.BackgroundColor3 = Color3.new(0,0,0)
ValLayer.BorderSizePixel = 0
ValLayer.ZIndex = 103
ValLayer.Parent = SVBox
local ValGrad = Instance.new("UIGradient")
ValGrad.Rotation = 90
ValGrad.Transparency = NumberSequence.new{NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(1, 0)}
ValGrad.Parent = ValLayer
local SVCursor = Instance.new("Frame")
SVCursor.Size = UDim2.new(0, 10, 0, 10)
SVCursor.AnchorPoint = Vector2.new(0.5, 0.5)
SVCursor.BackgroundColor3 = Color3.new(1,1,1)
SVCursor.ZIndex = 104
SVCursor.Parent = SVBox
Instance.new("UICorner", SVCursor).CornerRadius = UDim.new(1,0)
Instance.new("UIStroke", SVCursor).Thickness = 2
local HueBar = Instance.new("ImageButton")
HueBar.Size = UDim2.new(1, -20, 0, 20)
HueBar.Position = UDim2.new(0, 10, 0, 120)
HueBar.BackgroundColor3 = Color3.new(1,1,1)
HueBar.AutoButtonColor = false
HueBar.Image = ""
HueBar.ZIndex = 101
HueBar.Parent = PickerPopup
Instance.new("UICorner", HueBar).CornerRadius = UDim.new(0, 4)
local HueGrad = Instance.new("UIGradient")
HueGrad.Color = ColorSequence.new{
ColorSequenceKeypoint.new(0, Color3.new(1,0,0)), ColorSequenceKeypoint.new(0.167, Color3.new(1,1,0)),
ColorSequenceKeypoint.new(0.333, Color3.new(0,1,0)), ColorSequenceKeypoint.new(0.5, Color3.new(0,1,1)),
ColorSequenceKeypoint.new(0.667, Color3.new(0,0,1)), ColorSequenceKeypoint.new(0.833, Color3.new(1,0,1)),
ColorSequenceKeypoint.new(1, Color3.new(1,0,0))
}
HueGrad.Parent = HueBar
local HueCursor = Instance.new("Frame")
HueCursor.Size = UDim2.new(0, 6, 1, 4)
HueCursor.Position = UDim2.new(h, 0, 0.5, 0)
HueCursor.AnchorPoint = Vector2.new(0.5, 0.5)
HueCursor.BackgroundColor3 = Color3.new(1,1,1)
HueCursor.BorderSizePixel = 0
HueCursor.ZIndex = 105
HueCursor.Parent = HueBar
local function UpdateColor()
local finalColor = Color3.fromHSV(h, s, v)
ColorPreviewBtn.BackgroundColor3 = finalColor
SVBox.BackgroundColor3 = Color3.fromHSV(h, 1, 1)
SVCursor.BackgroundColor3 = finalColor
HueCursor.Position = UDim2.new(h, 0, 0.5, 0)
SVCursor.Position = UDim2.new(s, 0, 1 - v, 0)
callback(finalColor)
end
local hueDragging = false
HueBar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then hueDragging = true end
end)
local svDragging = false
SVBox.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then svDragging = true end
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
hueDragging = false
svDragging = false
end
end)
UserInputService.InputChanged:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
if hueDragging then
local relX = math.clamp((input.Position.X - HueBar.AbsolutePosition.X) / HueBar.AbsoluteSize.X, 0, 1)
h = relX
UpdateColor()
elseif svDragging then
local relX = math.clamp((input.Position.X - SVBox.AbsolutePosition.X) / SVBox.AbsoluteSize.X, 0, 1)
local relY = math.clamp((input.Position.Y - SVBox.AbsolutePosition.Y) / SVBox.AbsoluteSize.Y, 0, 1)
s = relX
v = 1 - relY
UpdateColor()
end
end
end)
ColorPreviewBtn.MouseButton1Click:Connect(function()
for _, data in pairs(ActivePopups) do
if data.Popup ~= PickerPopup then
data.Popup.Visible = false
end
end
if not PickerPopup.Visible then
local btnAbsPos = ColorPreviewBtn.AbsolutePosition
PickerPopup.Position = UDim2.new(0, btnAbsPos.X + 35, 0, btnAbsPos.Y - 50)
end
PickerPopup.Visible = not PickerPopup.Visible
end)
UpdateColor()
end
UserInputService.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
local clickPos = input.Position
for _, data in pairs(ActivePopups) do
if data.Popup.Visible then
local function IsInFrame(frame)
local absPos = frame.AbsolutePosition
local absSize = frame.AbsoluteSize
return clickPos.X >= absPos.X and clickPos.X <= absPos.X + absSize.X
and clickPos.Y >= absPos.Y and clickPos.Y <= absPos.Y + absSize.Y
end
if not IsInFrame(data.Popup) and not IsInFrame(data.Button) then
data.Popup.Visible = false
end
end
end
end
end)
local function CreateHeader(text, order)
local L = Instance.new("TextLabel")
L.Size = UDim2.new(0.9, 0, 0, 20)
L.BackgroundTransparency = 1
L.Text = text
L.TextColor3 = Color3.fromRGB(255, 170, 0)
L.Font = Enum.Font.GothamBold
L.TextSize = 13
L.LayoutOrder = order or 0
L.Parent = SettingsFrame
end
local function CreateSlider(name, min, max, default, callback, updateRef, order)
local F = Instance.new("Frame") F.Size = UDim2.new(0.9, 0, 0, 40) F.BackgroundTransparency = 1 F.LayoutOrder = order or 0 F.Parent = SettingsFrame
local L = Instance.new("TextLabel") L.Size = UDim2.new(1, 0, 0, 15) L.BackgroundTransparency = 1 L.Text = name L.TextColor3 = Color3.new(0.9,0.9,0.9) L.TextXAlignment = Enum.TextXAlignment.Left L.TextSize = 11 L.Parent = F
local Bar = Instance.new("Frame") Bar.Size = UDim2.new(1, 0, 0, 6) Bar.Position = UDim2.new(0, 0, 0.6, 0) Bar.BackgroundColor3 = Color3.fromRGB(50,50,50) Bar.BorderSizePixel = 0 Bar.Parent = F
Instance.new("UICorner", Bar).CornerRadius = UDim.new(1,0)
local Fill = Instance.new("Frame") Fill.Size = UDim2.new(0,0,1,0) Fill.BackgroundColor3 = Color3.fromRGB(0, 170, 255) Fill.BorderSizePixel = 0 Fill.Parent = Bar
Instance.new("UICorner", Fill).CornerRadius = UDim.new(1,0)
local Knob = Instance.new("TextButton") Knob.Size = UDim2.new(0,14,0,14) Knob.AnchorPoint = Vector2.new(0.5,0.5) Knob.BackgroundColor3 = Color3.new(1,1,1) Knob.Text="" Knob.Parent=Bar
Instance.new("UICorner", Knob).CornerRadius = UDim.new(1,0)
local function UpdateVisuals(ratio) Knob.Position = UDim2.new(math.clamp(ratio, 0, 1), 0, 0.5, 0) Fill.Size = UDim2.new(ratio, 0, 1, 0) end
local function UpdateFromVal(val) local ratio = (val - min) / (max - min) UpdateVisuals(ratio) end
UpdateFromVal(default)
if updateRef then updateRef.Update = UpdateFromVal end
local dragging = false
Knob.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then dragging = true end end)
UserInputService.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then dragging = false end end)
UserInputService.InputChanged:Connect(function(i)
if dragging and (i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType == Enum.UserInputType.Touch) then
local mX = i.Position.X
local rel = math.clamp((mX - Bar.AbsolutePosition.X) / Bar.AbsoluteSize.X, 0, 1)
UpdateVisuals(rel)
callback(min + (rel * (max - min)))
end
end)
end
local function CreateToggle(text, default, callback, order)
local B = Instance.new("TextButton") B.Size = UDim2.new(0.9, 0, 0, 25) B.BackgroundColor3 = default and Color3.fromRGB(0,180,0) or Color3.fromRGB(40,40,40) B.Text = text B.TextColor3 = Color3.new(1,1,1) B.TextSize = 11 B.LayoutOrder = order or 0 B.Parent = SettingsFrame
Instance.new("UICorner", B).CornerRadius = UDim.new(0,6)
B.MouseButton1Click:Connect(function() local newVal = callback() B.BackgroundColor3 = newVal and Color3.fromRGB(0,180,0) or Color3.fromRGB(40,40,40) end)
end
CreateHeader("Background", 1)
CreateColorPicker("BG Color", Color3.fromRGB(35, 35, 35), function(col) Viewport.BackgroundColor3 = col end, 2)
CreateHeader("Resize Parts", 5)
local PartSelectFrame = Instance.new("Frame")
PartSelectFrame.Size = UDim2.new(0.9, 0, 0, 25)
PartSelectFrame.BackgroundTransparency = 1
PartSelectFrame.LayoutOrder = 6
PartSelectFrame.Parent = SettingsFrame
local UIList = Instance.new("UIListLayout") UIList.Parent = PartSelectFrame UIList.FillDirection = Enum.FillDirection.Horizontal UIList.Padding = UDim.new(0,2)
local PartsBtns = {}
local PartRef = {}
local function SelectPart(pName)
Config.CurrentSelectedPart = pName
for name, btn in pairs(PartsBtns) do
btn.BackgroundColor3 = (name == pName) and Color3.fromRGB(0, 140, 255) or Color3.fromRGB(50,50,50)
end
if PartRef.Update then PartRef.Update(Config.Scales[pName]) end
end
for _, pName in pairs({"Head", "Torso", "Arms", "Legs", "Accessories"}) do
local b = Instance.new("TextButton")
b.Name = pName
b.Size = UDim2.new(0.19, 0, 1, 0)
b.Text = (pName == "Accessories") and "Acc" or pName
b.TextSize = 9
b.TextColor3 = Color3.new(1,1,1)
b.BackgroundColor3 = Color3.fromRGB(50,50,50)
b.Parent = PartSelectFrame
Instance.new("UICorner", b).Parent = b
b.MouseButton1Click:Connect(function() SelectPart(pName) end)
PartsBtns[pName] = b
end
SelectPart("Head")
CreateSlider("Multiplier", 0.5, 3, 1, function(v)
Config.Scales[Config.CurrentSelectedPart] = v
end, PartRef, 7)
CreateHeader("Appearance", 8)
CreateToggle("Paint All (Solid Color)", false, function() Config.SolidColorEnabled = not Config.SolidColorEnabled return Config.SolidColorEnabled end, 9)
CreateColorPicker("Paint Color", Color3.fromRGB(255, 255, 255), function(col) Config.SolidColor = col end, 10)
CreateToggle("ForceField Effect", false, function() Config.IsForceField = not Config.IsForceField return Config.IsForceField end, 13)
CreateColorPicker("Effect Color", Color3.fromRGB(100, 255, 100), function(col) Config.EffectColor = col end, 14)
CreateSlider("Transparency", 0, 1, 0, function(v) Config.Transparency = v end, nil, 15)
CreateHeader("Hide Parts", 16)
local HideFrame = Instance.new("Frame")
HideFrame.Size = UDim2.new(0.9,0,0,85)
HideFrame.BackgroundTransparency=1
HideFrame.LayoutOrder = 17
HideFrame.Parent=SettingsFrame
local HGrid = Instance.new("UIGridLayout") HGrid.Parent=HideFrame HGrid.CellSize=UDim2.new(0.48,0,0,25) HGrid.CellPadding=UDim2.new(0,5,0,5)
local function MiniTog(txt, fn)
local b=Instance.new("TextButton") b.Text=txt b.BackgroundColor3=Color3.fromRGB(40,40,40) b.TextColor3=Color3.new(1,1,1) b.TextSize=10 b.Parent=HideFrame
Instance.new("UICorner",b).CornerRadius=UDim.new(0,4)
b.MouseButton1Click:Connect(function() local s=fn() b.BackgroundColor3=s and Color3.fromRGB(150,0,0) or Color3.fromRGB(40,40,40) end)
end
MiniTog("Hide Head", function() Config.Hidden.Head = not Config.Hidden.Head return Config.Hidden.Head end)
MiniTog("Hide Body", function() Config.Hidden.Torso = not Config.Hidden.Torso return Config.Hidden.Torso end)
MiniTog("Hide Arms", function() Config.Hidden.Arms = not Config.Hidden.Arms return Config.Hidden.Arms end)
MiniTog("Hide Legs", function() Config.Hidden.Legs = not Config.Hidden.Legs return Config.Hidden.Legs end)
MiniTog("Hide Acc.", function() Config.Hidden.Acc = not Config.Hidden.Acc return Config.Hidden.Acc end)
CreateHeader("Camera & Rotate", 18)
CreateToggle("Auto Rotate", true, function() Config.AutoRotate = not Config.AutoRotate return Config.AutoRotate end, 19)
CreateSlider("Rot Speed", 0, 0.1, 0.01, function(v) Config.RotSpeed = v end, nil, 20)
CreateSlider("Cam Height", -3, 3, -0.5, function(v) Config.CamHeight = v end, nil, 21)
local CloneCharacter = nil
local RealCharacter = nil
local CurrentRotX, CurrentRotY = 0, 0
local ZoomDistance = 6
local function SetupCharacter()
WorldModel:ClearAllChildren()
RealCharacter = Player.Character or Player.CharacterAdded:Wait()
if not RealCharacter:FindFirstChild("HumanoidRootPart") then
task.wait(0.1)
if not RealCharacter:FindFirstChild("HumanoidRootPart") then return end
end
RealCharacter.Archivable = true
CloneCharacter = RealCharacter:Clone()
for _, part in pairs(CloneCharacter:GetDescendants()) do
if part:IsA("BasePart") then
part.Anchored = true
part.CanCollide = false
end
if part:IsA("Script") or part:IsA("LocalScript") or part:IsA("Sound") then part:Destroy() end
end
CloneCharacter:SetPrimaryPartCFrame(CFrame.new(0,0,0))
local Light = Instance.new("PointLight")
Light.Brightness = 2 Light.Range = 15
if CloneCharacter:FindFirstChild("HumanoidRootPart") then Light.Parent = CloneCharacter.HumanoidRootPart end
CloneCharacter.Parent = WorldModel
end
task.wait(0.5) SetupCharacter()
Player.CharacterAdded:Connect(function(newChar)
RealCharacter = newChar
task.wait(1)
SetupCharacter()
end)
local isInteracting = false
RunService.RenderStepped:Connect(function()
if not CloneCharacter or not CloneCharacter.Parent or not RealCharacter or not RealCharacter.Parent then return end
local RealRoot = RealCharacter:FindFirstChild("HumanoidRootPart")
local CloneRoot = CloneCharacter:FindFirstChild("HumanoidRootPart")
if not RealRoot or not CloneRoot then return end
CloneRoot.CFrame = CFrame.new(0, 0, 0)
local activePaint = Config.SolidColorEnabled
local activeEffect = Config.IsForceField
for _, realPart in pairs(RealCharacter:GetDescendants()) do
if realPart:IsA("BasePart") anNo comments yet for this script.



