I’ve been searching forever and can’t find a scaling script for R6 rigs.
I always find something close to it, but there’s always some underlining issue. For example hats not working, or the rig being stuck together, or certain part of the rig not scaling correctly and causing parts to be at weird angles.
The closest I got scaled the player, but it messed up on 2 random parts of the rig. If I could just get some help on how to actually scale the player that’d be great. Everything on dev forum that I could find is either half broken or doesn’t work at all. (At least what I could find.) And when I tried it myself it just entirely broke down.
Like I’ve said I’ve seen almost every post on R6 Scaling here and none work to what I need. And/or work somewhat and when I try to fix the other half that dosen’t work, it never turns out correct.
The script posted in the previous dev forum post is a bit outdated without the accessory scaling here is the newer version:
Newer code
-- Written by hunxrepair
-- 2020/10/09
-- Your avatar size * Percent
-- Change it to 2 to double avatar size, or make it 0.5 to halve avatar size
local Percent = 10
script.Parent.Trigger.Touched:Connect(function(Hit)
local Player = game.Players:GetPlayerFromCharacter(Hit.Parent)
if Player == nil then return end
if Player.Character:FindFirstChild("GrowthApplied") then return end
local GrowthApplied = Instance.new("BoolValue")
GrowthApplied.Name = "GrowthApplied"
GrowthApplied.Parent = Player.Character
local Humanoid = Player.Character.Humanoid
if Humanoid.RigType == Enum.HumanoidRigType.R6 then
local Motors = {}
table.insert(Motors, Player.Character.HumanoidRootPart.RootJoint)
for i,Motor in pairs(Player.Character.Torso:GetChildren()) do
if Motor:IsA("Motor6D") == false then continue end
table.insert(Motors, Motor)
end
for i,v in pairs(Motors) do
v.C0 = CFrame.new((v.C0.Position * Percent)) * (v.C0 - v.C0.Position)
v.C1 = CFrame.new((v.C1.Position * Percent)) * (v.C1 - v.C1.Position)
end
for i,Part in pairs(Player.Character:GetChildren()) do
if Part:IsA("BasePart") == false then continue end
Part.Size = Part.Size * Percent
end
for i,Accessory in pairs(Player.Character:GetChildren()) do
if Accessory:IsA("Accessory") == false then continue end
Accessory.Handle.AccessoryWeld.C0 = CFrame.new((Accessory.Handle.AccessoryWeld.C0.Position * Percent)) * (Accessory.Handle.AccessoryWeld.C0 - Accessory.Handle.AccessoryWeld.C0.Position)
Accessory.Handle.AccessoryWeld.C1 = CFrame.new((Accessory.Handle.AccessoryWeld.C1.Position * Percent)) * (Accessory.Handle.AccessoryWeld.C1 - Accessory.Handle.AccessoryWeld.C1.Position)
Accessory.Handle.Mesh.Scale *= Percent
end
elseif Humanoid.RigType == Enum.HumanoidRigType.R15 then
local HD = Humanoid:GetAppliedDescription()
HD.DepthScale *= Percent
HD.HeadScale *= Percent
HD.HeightScale *= Percent
HD.ProportionScale *= Percent
HD.WidthScale *= Percent
Humanoid:ApplyDescription(HD)
end
end)
The only issues that are blatant from what I tested would be the Humanoid movement physics that gets messed up due to the added mass and the floor detection, Consequently, you can even double jump. I have no idea how to fix this at the moment perhaps a mass reducer or custom floor detection but the rest seems to work fine.