|
The cool stuff is the CreateWeld function and the ResizeCharacter function, the rest was just for testing. Now you can give this to noobs who come here begging.
[Note: This is a terrible way to do it!]
Bugs:
-I don't recommend you re-enable animations lol.
-If you don't let your character fully load first, your joints are a bit too angled.
-It doesn't support sizes of lower than about < 0.4 studs because of ROBLOX's 0.2 stud limit. I might come up with a fix for it later.
Code:
local Player = game.Players:WaitForChild("Player")
local function CreateWeld(Part0, Part1, C0, C1, Name, Parent, Type)
local Weld = Instance.new((Type or "Motor6D"), (Parent or Part0))
Weld.Name = Name
Weld.Part0 = Part0
Weld.Part1 = Part1
Weld.C0 = C0
Weld.C1 = C1
end
local function ResizeCharacter(Player, Character, Scale)
local Hats = {}
Character.Animate.Disabled = true
for Key, Value in next, Character.Humanoid:GetPlayingAnimationTracks() do
Value:Stop()
end
for Key, Value in next, Character:GetChildren() do
if Value:IsA("BasePart") then
Value.FormFactor = Enum.FormFactor.Custom
Value.Size = (Value.Size * Scale)
elseif Value:IsA("Hat") then
local Handle = Value.Handle
Handle.Size = (Handle.Size * Scale)
Handle.Mesh.Scale = (Handle.Mesh.Scale * Scale)
Hats[#Hats + 1] = Value
end
end
local Torso = Character.Torso
local Head = Character.Head
local HumanoidRootPart = Character.HumanoidRootPart
CreateWeld(Torso, Head, Torso.CFrame:inverse(), (Torso.CFrame * CFrame.new(0, (Head.Size.Y + (Torso.Size.Y / 4)), 0)):inverse(), "Neck", nil, "ManualWeld")
CreateWeld(Torso, HumanoidRootPart, Torso.CFrame:inverse(), Torso.CFrame:inverse(), "RootJoint", HumanoidRootPart)
CreateWeld(Torso, Character["Right Arm"], Torso.CFrame:inverse(), (Torso.CFrame * CFrame.new(((Torso.Size.X / 4) + Character["Right Arm"].Size.X), 0, 0)):inverse(), "Right Shoulder")
CreateWeld(Torso, Character["Left Arm"], Torso.CFrame:inverse(), (Torso.CFrame * CFrame.new(-((Torso.Size.X / 4) + Character["Left Arm"].Size.X), 0, 0)):inverse(), "Left Shoulder")
CreateWeld(Torso, Character["Right Leg"], Torso.CFrame:inverse(), (Torso.CFrame * CFrame.new((Character["Right Leg"].Size.X / 2), -((Torso.Size.Y / 4) + (Character["Right Leg"].Size.Y / 1.25)), 0)):inverse(), "Right Hip")
CreateWeld(Torso, Character["Left Leg"], Torso.CFrame:inverse(), (Torso.CFrame * CFrame.new(-(Character["Left Leg"].Size.X / 2), -((Torso.Size.Y / 4) + (Character["Left Leg"].Size.Y / 1.25)), 0)):inverse(), "Left Hip")
for Key, Value in next, Hats do
CreateWeld(Head, Value.Handle, Head.CFrame:inverse(), (Head.CFrame * CFrame.new(0, ((Head.Size.Y / 4) + (Value.Handle.Size.Y / 6)), 0)):inverse(), "HatWeld")
end
end
Player.Chatted:connect(function(Message)
if (Message:sub(1, 6):lower() == "scale/") then
local Scale = tonumber(Message:sub(7))
if Scale and Player.Character then
ResizeCharacter(Player, Player.Character, Scale)
end
end
end)
When I looked up "Ninjas" in Thesaurus.com, it said "Ninja's can't be found" Well played Ninjas, well played. |