-- NO-FAIL UNIVERSAL PROPORTIONAL SIZE HUB local Players = game:GetService("Players") local CoreGui = game:GetService("CoreGui") local UserInputService = game:GetService("UserInputService") local Player = Players.LocalPlayer -- Clean up existing UI if present if CoreGui:FindFirstChild("UniversalSizeHubFixed") then CoreGui.UniversalSizeHubFixed:Destroy() end -- 1. BUILD NATIVE UI local ScreenGui = Instance.new("ScreenGui", CoreGui:FindFirstChild("RobloxGui") or CoreGui) ScreenGui.Name = "UniversalSizeHubFixed" ScreenGui.ResetOnSpawn = false local MainFrame = Instance.new("Frame", ScreenGui) MainFrame.Size = UDim2.new(0, 220, 0, 150) MainFrame.Position = UDim2.new(0.3, 0, 0.3, 0) MainFrame.BackgroundColor3 = Color3.fromRGB(28, 28, 30) Instance.new("UICorner", MainFrame).CornerRadius = UDim.new(0, 8) MainFrame.Active = true MainFrame.Draggable = true local Title = Instance.new("TextLabel", MainFrame) Title.Size = UDim2.new(1, 0, 0, 35) Title.Text = "Universal Size Hub (Fixed)" Title.TextColor3 = Color3.fromRGB(255, 255, 255) Title.BackgroundTransparency = 1 local SizeInput = Instance.new("TextBox", MainFrame) SizeInput.Size = UDim2.new(0, 196, 0, 36) SizeInput.Position = UDim2.new(0, 12, 0, 45) SizeInput.PlaceholderText = "Multiplier (-Inf to Inf)" SizeInput.BackgroundColor3 = Color3.fromRGB(44, 44, 46) SizeInput.TextColor3 = Color3.fromRGB(48, 209, 88) SizeInput.Text = "1" local ApplyButton = Instance.new("TextButton", MainFrame) ApplyButton.Size = UDim2.new(0, 196, 0, 36) ApplyButton.Position = UDim2.new(0, 12, 0, 95) ApplyButton.Text = "Resize & Connect" ApplyButton.BackgroundColor3 = Color3.fromRGB(0, 122, 255) ApplyButton.TextColor3 = Color3.fromRGB(255, 255, 255) Instance.new("UICorner", ApplyButton).CornerRadius = UDim.new(0, 6) -- Track baseline joints to keep structural integrity intact local baselineC0 = {} local baselineC1 = {} -- 2. JOINT RE-ALIGNMENT ENGINE local function applyConnectedSize(multiplier) local char = Player.Character if not char then return end local humanoid = char:FindFirstChildOfClass("Humanoid") if not humanoid then return end -- Turn off standard automatic scaling so it doesn't fight our script humanoid.AutomaticScalingEnabled = false -- Step A: Scale the actual physical parts for _, part in ipairs(char:GetChildren()) do if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then -- Use internal values to check original size if Roblox supports it local origSizeObj = part:FindFirstChild("OriginalSize") local baseSize = origSizeObj and origSizeObj.Value or part.Size part.Size = baseSize * multiplier end end -- Step B: Recalculate and connect all limb joints securely for _, part in ipairs(char:GetChildren()) do if part:IsA("BasePart") then for _, joint in ipairs(part:GetChildren()) do if joint:IsA("Motor6D") then -- Cache original bone anchors so we don't permanently break the avatar layout if not baselineC0[joint] then baselineC0[joint] = joint.C0 end if not baselineC1[joint] then baselineC1[joint] = joint.C1 end -- Rescale joint offsets proportionally so parts stay touching joint.C0 = baselineC0[joint] * CFrame.new(baselineC0[joint].Position * (multiplier - 1)) joint.C1 = baselineC1[joint] * CFrame.new(baselineC1[joint].Position * (multiplier - 1)) end end end end end ApplyButton.MouseButton1Click:Connect(function() local val = tonumber(SizeInput.Text) if val then applyConnectedSize(val) end end)