Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Services = setmetatable({}, { __index = function(Self, Request) return game:getService(Request) or nil end })
- local Player = Services.Players.LocalPlayer
- local Mouse = Player:GetMouse()
- local Backpack = Player.Backpack
- local Character = Player.Character
- local PlayerGui = Player.PlayerGui
- local Camera = Workspace.CurrentCamera
- local RunService = Services.RunService
- local Head = Character:findFirstChild("Head")
- local Torso = Character:findFirstChild("Torso")
- local RootPart = Character:findFirstChild("HumanoidRootPart")
- local RightArm = Character:findFirstChild("Right Arm")
- local LeftArm = Character:findFirstChild("Left Arm")
- local RightLeg = Character:findFirstChild("Right Leg")
- local LeftLeg = Character:findFirstChild("Left Leg")
- local Humanoid = Character:findFirstChild("Humanoid")
- local Neck = Torso:findFirstChild("Neck")
- local RootJoint = RootPart:findFirstChild("RootJoint")
- local RightSH = Torso:findFirstChild("Right Shoulder")
- local LeftSH = Torso:findFirstChild("Left Shoulder")
- local RightHip = Torso:findFirstChild("Right Hip")
- local LeftHip = Torso:findFirstChild("Left Hip")
- local it = Instance.new
- local vt = Vector3.new
- local bc = BrickColor.new
- local c3 = Color3.new
- local UD2 = UDim2.new
- local cf = CFrame.new
- local euler = CFrame.fromEulerAnglesXYZ
- local angles = CFrame.Angles
- local bc = BrickColor.new
- local c3 = Color3.new
- local deg = math.deg
- local inf = math.huge
- local rad = math.rad
- local pi = math.pi
- local random = math.random
- Lerp = function(a,b,c)
- return a+(b-a)*c
- end
- function ctlerp(c1,c2,al)
- local com1 = {c1:components()}
- local com2 = {c2:components()}
- for i,v in pairs(com1) do
- com1[i] = lerp(v,com2[i],al)
- end
- return CFrame.new(unpack(com1))
- end
- do
- local function QuaternionFromCFrame(cf)
- local mx, my, mz, m00, m01, m02, m10, m11, m12, m20, m21, m22 = cf:components()
- local trace = m00 + m11 + m22
- if trace > 0 then
- local s = math.sqrt(1 + trace)
- local recip = 0.5/s
- return (m21-m12)*recip, (m02-m20)*recip, (m10-m01)*recip, s*0.5
- else
- local i = 0
- if m11 > m00 then
- i = 1
- end
- if m22 > (i == 0 and m00 or m11) then
- i = 2
- end
- if i == 0 then
- local s = math.sqrt(m00-m11-m22+1)
- local recip = 0.5/s
- return 0.5*s, (m10+m01)*recip, (m20+m02)*recip, (m21-m12)*recip
- elseif i == 1 then
- local s = math.sqrt(m11-m22-m00+1)
- local recip = 0.5/s
- return (m01+m10)*recip, 0.5*s, (m21+m12)*recip, (m02-m20)*recip
- elseif i == 2 then
- local s = math.sqrt(m22-m00-m11+1)
- local recip = 0.5/s return (m02+m20)*recip, (m12+m21)*recip, 0.5*s, (m10-m01)*recip
- end
- end
- end
- local function QuaternionToCFrame(px, py, pz, x, y, z, w)
- local xs, ys, zs = x + x, y + y, z + z
- local wx, wy, wz = w*xs, w*ys, w*zs
- local xx = x*xs
- local xy = x*ys
- local xz = x*zs
- local yy = y*ys
- local yz = y*zs
- local zz = z*zs
- return CFrame.new(px, py, pz,1-(yy+zz), xy - wz, xz + wy,xy + wz, 1-(xx+zz), yz - wx, xz - wy, yz + wx, 1-(xx+yy))
- end
- local function QuaternionSlerp(a, b, t)
- local cosTheta = a[1]*b[1] + a[2]*b[2] + a[3]*b[3] + a[4]*b[4]
- local startInterp, finishInterp;
- if cosTheta >= 0.0001 then
- if (1 - cosTheta) > 0.0001 then
- local theta = math.acos(cosTheta)
- local invSinTheta = 1/math.sin(theta)
- startInterp = math.sin((1-t)*theta)*invSinTheta
- finishInterp = math.sin(t*theta)*invSinTheta
- else
- startInterp = 1-t
- finishInterp = t
- end
- else
- if (1+cosTheta) > 0.0001 then
- local theta = math.acos(-cosTheta)
- local invSinTheta = 1/math.sin(theta)
- startInterp = math.sin((t-1)*theta)*invSinTheta
- finishInterp = math.sin(t*theta)*invSinTheta
- else
- startInterp = t-1
- finishInterp = t
- end
- end
- return a[1]*startInterp + b[1]*finishInterp, a[2]*startInterp + b[2]*finishInterp, a[3]*startInterp + b[3]*finishInterp, a[4]*startInterp + b[4]*finishInterp
- end
- function clerp(a,b,t)
- local qa = {QuaternionFromCFrame(a)}
- local qb = {QuaternionFromCFrame(b)}
- local ax, ay, az = a.x, a.y, a.z
- local bx, by, bz = b.x, b.y, b.z
- local _t = 1-t
- return QuaternionToCFrame(_t*ax + t*bx, _t*ay + t*by, _t*az + t*bz,QuaternionSlerp(qa, qb, t))
- end
- end
- --//Storage-//
- local Equipped = false
- --//End-//
- local part = it("Part", Character)
- part.Anchored = false
- part.FormFactor = "Custom"
- part.Size = Vector3.new(3.5,0.5,0.5)
- local rw = it("Weld", Character)
- rw.Part0 = Torso
- rw.Part1 = part
- rw.C0 = CFrame.new(0,0,0.5) * CFrame.Angles(0,0,math.rad(70))
- function EquipWep()
- if not Equipped then
- Equipped = true
- RightSH.Part0 = nil
- local Joint1 = Instance.new('Snap', Character)
- Joint1.Part0 = RightArm
- Joint1.Part1 = Torso
- Joint1.C0 = cf(-1.5,0,0)
- for i = 0 , 1 , 0.1 do
- wait()
- Joint1.C0 = clerp(Joint1.C0,cf(-1.5,0.5,0)*angles(math.rad(180),0,0),.4)
- end
- end
- end
- Mouse.KeyDown:connect(function(key)
- if key == "e" then
- EquipWep()
- end
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement