Advertisement
fireband12

Untitled

Apr 10th, 2015
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.17 KB | None | 0 0
  1. local Services = setmetatable({}, { __index = function(Self, Request) return game:getService(Request) or nil end })
  2. local Player = Services.Players.LocalPlayer
  3. local Mouse = Player:GetMouse()
  4. local Backpack = Player.Backpack
  5. local Character = Player.Character
  6. local PlayerGui = Player.PlayerGui
  7. local Camera = Workspace.CurrentCamera
  8. local RunService = Services.RunService
  9. local Head = Character:findFirstChild("Head")
  10. local Torso = Character:findFirstChild("Torso")
  11. local RootPart = Character:findFirstChild("HumanoidRootPart")
  12. local RightArm = Character:findFirstChild("Right Arm")
  13. local LeftArm = Character:findFirstChild("Left Arm")
  14. local RightLeg = Character:findFirstChild("Right Leg")
  15. local LeftLeg = Character:findFirstChild("Left Leg")
  16. local Humanoid = Character:findFirstChild("Humanoid")
  17. local Neck = Torso:findFirstChild("Neck")
  18. local RootJoint = RootPart:findFirstChild("RootJoint")
  19. local RightSH = Torso:findFirstChild("Right Shoulder")
  20. local LeftSH = Torso:findFirstChild("Left Shoulder")
  21. local RightHip = Torso:findFirstChild("Right Hip")
  22. local LeftHip = Torso:findFirstChild("Left Hip")
  23. local it = Instance.new
  24. local vt = Vector3.new
  25. local bc = BrickColor.new
  26. local c3 = Color3.new
  27. local UD2 = UDim2.new
  28. local cf = CFrame.new
  29. local euler = CFrame.fromEulerAnglesXYZ
  30. local angles = CFrame.Angles
  31. local bc = BrickColor.new
  32. local c3 = Color3.new
  33. local deg = math.deg
  34. local inf = math.huge
  35. local rad = math.rad
  36. local pi = math.pi
  37. local random = math.random
  38.  
  39.  
  40. Lerp = function(a,b,c)
  41. return a+(b-a)*c
  42. end
  43.  
  44. function ctlerp(c1,c2,al)
  45. local com1 = {c1:components()}
  46. local com2 = {c2:components()}
  47. for i,v in pairs(com1) do
  48. com1[i] = lerp(v,com2[i],al)
  49. end
  50. return CFrame.new(unpack(com1))
  51. end
  52.  
  53. do
  54. local function QuaternionFromCFrame(cf)
  55. local mx, my, mz, m00, m01, m02, m10, m11, m12, m20, m21, m22 = cf:components()
  56. local trace = m00 + m11 + m22
  57. if trace > 0 then
  58. local s = math.sqrt(1 + trace)
  59. local recip = 0.5/s
  60. return (m21-m12)*recip, (m02-m20)*recip, (m10-m01)*recip, s*0.5
  61. else
  62. local i = 0
  63. if m11 > m00 then
  64. i = 1
  65. end
  66. if m22 > (i == 0 and m00 or m11) then
  67. i = 2
  68. end
  69. if i == 0 then
  70. local s = math.sqrt(m00-m11-m22+1)
  71. local recip = 0.5/s
  72. return 0.5*s, (m10+m01)*recip, (m20+m02)*recip, (m21-m12)*recip
  73. elseif i == 1 then
  74. local s = math.sqrt(m11-m22-m00+1)
  75. local recip = 0.5/s
  76. return (m01+m10)*recip, 0.5*s, (m21+m12)*recip, (m02-m20)*recip
  77. elseif i == 2 then
  78. local s = math.sqrt(m22-m00-m11+1)
  79. local recip = 0.5/s return (m02+m20)*recip, (m12+m21)*recip, 0.5*s, (m10-m01)*recip
  80. end
  81. end
  82. end
  83. local function QuaternionToCFrame(px, py, pz, x, y, z, w)
  84. local xs, ys, zs = x + x, y + y, z + z
  85. local wx, wy, wz = w*xs, w*ys, w*zs
  86. local xx = x*xs
  87. local xy = x*ys
  88. local xz = x*zs
  89. local yy = y*ys
  90. local yz = y*zs
  91. local zz = z*zs
  92. 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))
  93. end
  94. local function QuaternionSlerp(a, b, t)
  95. local cosTheta = a[1]*b[1] + a[2]*b[2] + a[3]*b[3] + a[4]*b[4]
  96. local startInterp, finishInterp;
  97. if cosTheta >= 0.0001 then
  98. if (1 - cosTheta) > 0.0001 then
  99. local theta = math.acos(cosTheta)
  100. local invSinTheta = 1/math.sin(theta)
  101. startInterp = math.sin((1-t)*theta)*invSinTheta
  102. finishInterp = math.sin(t*theta)*invSinTheta
  103. else
  104. startInterp = 1-t
  105. finishInterp = t
  106. end
  107. else
  108. if (1+cosTheta) > 0.0001 then
  109. local theta = math.acos(-cosTheta)
  110. local invSinTheta = 1/math.sin(theta)
  111. startInterp = math.sin((t-1)*theta)*invSinTheta
  112. finishInterp = math.sin(t*theta)*invSinTheta
  113. else
  114. startInterp = t-1
  115. finishInterp = t
  116. end
  117. end
  118. 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
  119. end
  120. function clerp(a,b,t)
  121. local qa = {QuaternionFromCFrame(a)}
  122. local qb = {QuaternionFromCFrame(b)}
  123. local ax, ay, az = a.x, a.y, a.z
  124. local bx, by, bz = b.x, b.y, b.z
  125. local _t = 1-t
  126. return QuaternionToCFrame(_t*ax + t*bx, _t*ay + t*by, _t*az + t*bz,QuaternionSlerp(qa, qb, t))
  127. end
  128.  
  129. end
  130.  
  131. --//Storage-//
  132. local Equipped = false
  133. --//End-//
  134.  
  135. local part = it("Part", Character)
  136.  
  137. part.Anchored = false
  138. part.FormFactor = "Custom"
  139. part.Size = Vector3.new(3.5,0.5,0.5)
  140. local rw = it("Weld", Character)
  141. rw.Part0 = Torso
  142. rw.Part1 = part
  143. rw.C0 = CFrame.new(0,0,0.5) * CFrame.Angles(0,0,math.rad(70))
  144.  
  145. function EquipWep()
  146. if not Equipped then
  147. Equipped = true
  148. RightSH.Part0 = nil
  149. local Joint1 = Instance.new('Snap', Character)
  150. Joint1.Part0 = RightArm
  151. Joint1.Part1 = Torso
  152. Joint1.C0 = cf(-1.5,0,0)
  153. for i = 0 , 1 , 0.1 do
  154. wait()
  155. Joint1.C0 = clerp(Joint1.C0,cf(-1.5,0.5,0)*angles(math.rad(180),0,0),.4)
  156. end
  157. end
  158. end
  159.  
  160. Mouse.KeyDown:connect(function(key)
  161. if key == "e" then
  162. EquipWep()
  163. end
  164. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement