Here is the script. For the function welding.Holster, I want the arms to be positioned closer to the body, so that the gun barrel is a lot closer to the left leg. Currently it is way too far out.
This is what it currently looks like when in the sprinting position: 1 2 3
How would I edit the welding to do this?
wait(0.2)
local plr = game.Players.LocalPlayer
repeat wait() until plr.Character
local char = plr.Character
local tool = script.Parent
local crouching,sprinting = false,false
local welding = {}
local cframe, cframeXYZ, vector = CFrame.new, CFrame.fromEulerAnglesXYZ, Vector3.new
local create = assert(LoadLibrary("RbxUtility")).Create
welding.Weld = create("Weld"){}
local leftCrouchWeld, rightCrouchWeld = create("Weld"){}, create("Weld"){}
local arms = {
Left = cframe(0.9,0.8,0.5) * cframeXYZ(math.rad(280),math.rad(40),math.rad(-2)),
Right = cframe(-1,0.1,0.35) * cframeXYZ(math.rad(-90),math.rad(-15),math.rad(0)),
}
function welding.SetArms(bool)
local torso = char:FindFirstChild("Torso")
local leftS, rightS = torso:FindFirstChild("Left Shoulder"), torso:FindFirstChild("Right Shoulder")
local left, right = char:FindFirstChild("Left Arm"), char:FindFirstChild("Right Arm")
if bool then
leftS.Part1, rightS.Part1 = nil, nil
leftWeld = welding.Weld:Clone()
leftWeld.Name = "Weld1"; leftWeld.Part0 = torso; leftWeld.Part1 = left; leftWeld.C1 = arms.Left; leftWeld.Parent = torso
rightWeld = welding.Weld:Clone()
rightWeld.Name = "Weld2"; rightWeld.Part0 = torso; rightWeld.Part1 = right; rightWeld.C1 = arms.Right; rightWeld.Parent = torso
FakeLeftArm, FakeRightArm = left:Clone(), right:Clone()
FakeLeftArm:ClearAllChildren()
FakeLeftArm.Name = "FakeLeftArm"
FakeLeftArm.FormFactor = "Custom"
FakeLeftArm.Size = Vector3.new(0.9, 1.75, 0.9)
FakeLeftArm.Transparency = 0.6
FakeLeftArm.Parent = tool
local flaWeld = welding.Weld:Clone()
flaWeld.Parent = FakeLeftArm; flaWeld.Part0 = left; flaWeld.Part1 = FakeLeftArm
FakeRightArm.Name = "FakeRightArm"
FakeRightArm:ClearAllChildren()
FakeRightArm.FormFactor = "Custom"
FakeRightArm.Size = Vector3.new(0.9, 1.75, 0.9)
FakeRightArm.Transparency = 0.6
FakeRightArm.Parent = tool
local fraWeld = welding.Weld:Clone()
fraWeld.Parent = FakeRightArm; fraWeld.Part0 = right; fraWeld.Part1 = FakeRightArm
else
sprinting = false
char.Humanoid.WalkSpeed = 16
leftS.Part1, rightS.Part1 = left, right
if leftWeld and rightWeld then
leftWeld:Destroy()
rightWeld:Destroy()
end
if FakeLeftArm and FakeRightArm then
FakeLeftArm:Destroy()
FakeRightArm:Destroy()
end
end
end
function welding.Default(...)
if char and char:FindFirstChild("Torso") and char.Torso:FindFirstChild("Weld1") and char.Torso:FindFirstChild("Weld2") then
local Left = char.Torso:FindFirstChild("Weld1")
local Right = char.Torso:FindFirstChild("Weld2")
Left.C1 = arms.Left
Right.C1 = arms.Right
char.Humanoid.WalkSpeed = 16
end
end
function welding.Holster(...)
local left = char.Torso:FindFirstChild("Weld1")
local right = char.Torso:FindFirstChild("Weld2")
right.C1 = right.C1 * CFrame.Angles(math.pi/6, -math.pi/6, 0) * CFrame.new(-0.5, 0.1, 0)
left.C1 = left.C1 * CFrame.Angles(math.pi/6, 0, 0) * CFrame.new(0.5, -0.5, -0.5)
end
function welding.Crouch(bool)
if bool then
if char:FindFirstChild('Left Leg') and char:findFirstChild('Right Leg') and char:findFirstChild('HumanoidRootPart') and char.HumanoidRootPart:findFirstChild('RootJoint') and char.Torso and char.Torso:findFirstChild('Left Hip') and char.Torso:findFirstChild('Right Hip') then
char.Torso['Right Hip'].Part1 = nil
char.Torso['Left Hip'].Part1 = nil
char.HumanoidRootPart.RootJoint.C1 = CFrame.new(0,1,0)*CFrame.Angles(math.rad(90),math.rad(180),0)
leftCrouchWeld.Part0 = char.Torso leftCrouchWeld.Parent = char.Torso leftCrouchWeld.Part1 = char['Left Leg']
rightCrouchWeld.Part0 = char.Torso rightCrouchWeld.Parent = char.Torso rightCrouchWeld.Part1 = char['Right Leg']
leftCrouchWeld.C1 = CFrame.new(.5,.5,1.5)*CFrame.Angles(math.rad(90),0,0)
rightCrouchWeld.C1 = CFrame.new(-.55,1.3,.5)*CFrame.Angles(math.rad(-15),0,0)
end
else
if char:findFirstChild('Left Leg') and char:findFirstChild('Right Leg') and char:findFirstChild('HumanoidRootPart') and char.HumanoidRootPart:findFirstChild('RootJoint') and char.Torso and char.Torso:findFirstChild('Left Hip') and char.Torso:findFirstChild('Right Hip') then
char.Torso['Right Hip'].Part1 = char['Right Leg']
char.Torso['Left Hip'].Part1 = char['Left Leg']
char.HumanoidRootPart.RootJoint.C1 = CFrame.new(0,0,0)*CFrame.Angles(math.rad(90),math.rad(180),0)
leftCrouchWeld.Parent = nil rightCrouchWeld.Parent = nil
end
end
end
script.Parent.Equipped:connect(function()
wait()
welding.SetArms(true)
repeat wait() until _G.Values
_G.Values.Sprinting = false
sprinting = false
if plr.PlayerGui:FindFirstChild('GunGUI') then
plr.PlayerGui.GunGUI.BackImage.Image = 'rbxassetid://121162024'
end
end)
script.Parent.Unequipped:connect(function()
wait()
welding.SetArms(false)
if crouching then
crouching = false
char.Humanoid.WalkSpeed = 16
_G.Values.Sprinting = false
welding.Crouch(false)
end
end)
_G.FDown = function()
if sprinting then
sprinting = false
char.Humanoid.WalkSpeed = 16
_G.Values.Sprinting = false
welding.Default()
else
sprinting = true
crouching = false
char.Humanoid.WalkSpeed = 22
_G.Values.Sprinting = true
welding.Holster()
welding.Crouch(false)
end
end
_G.CDown = function()
if crouching then
crouching = false
char.Humanoid.WalkSpeed = 16
_G.Values.Sprinting = false
welding.Crouch(false)
else
sprinting = false
crouching = true
char.Humanoid.WalkSpeed = 10
welding.Default()
_G.Values.Sprinting = false
welding.Crouch(true)
end
end
_G.Mouse2Down = function(mouse)
if sprinting then
sprinting = false
char.Humanoid.WalkSpeed = 16
_G.Values.Sprinting = false
_G.MouseTrue()
welding.Default()
_G.Mouse1Down(mouse)
end
end
