Advertisement
swerve_noob_swerve1

gun

Nov 23rd, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --https://github.com/Mokiros/roblox-FE-compatibility
  2. if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
  3. local Player,Mouse,mouse,UserInputService,ContextActionService = owner
  4. local RealPlayer = Player
  5. do print("FE Compatibility code by Mokiros")local a=RealPlayer;script.Parent=a.Character;local b=Instance.new("RemoteEvent")b.Name="UserInput_Event"local function c()local d={_fakeEvent=true,Functions={},Connect=function(self,e)table.insert(self.Functions,e)end}d.connect=d.Connect;return d end;local f={Target=nil,Hit=CFrame.new(),KeyUp=c(),KeyDown=c(),Button1Up=c(),Button1Down=c(),Button2Up=c(),Button2Down=c()}local g={InputBegan=c(),InputEnded=c()}local CAS={Actions={},BindAction=function(self,h,i,j,...)CAS.Actions[h]=i and{Name=h,Function=i,Keys={...}}or nil end}CAS.UnbindAction=CAS.BindAction;local function k(self,l,...)local d=f[l]if d and d._fakeEvent then for m,e in pairs(d.Functions)do e(...)end end end;f.TrigEvent=k;g.TrigEvent=k;b.OnServerEvent:Connect(function(n,o)if n~=a then return end;f.Target=o.Target;f.Hit=o.Hit;if not o.isMouse then local p=o.UserInputState==Enum.UserInputState.Begin;if o.UserInputType==Enum.UserInputType.MouseButton1 then return f:TrigEvent(p and"Button1Down"or"Button1Up")end;if o.UserInputType==Enum.UserInputType.MouseButton2 then return f:TrigEvent(p and"Button2Down"or"Button2Up")end;for m,d in pairs(CAS.Actions)do for m,q in pairs(d.Keys)do if q==o.KeyCode then d.Function(d.Name,o.UserInputState,o)end end end;f:TrigEvent(p and"KeyDown"or"KeyUp",o.KeyCode.Name:lower())g:TrigEvent(p and"InputBegan"or"InputEnded",o,false)end end)b.Parent=NLS([==[local a=game:GetService("Players").LocalPlayer;local b=script:WaitForChild("UserInput_Event")local c=a:GetMouse()local d=game:GetService("UserInputService")local e=function(f,g)if g then return end;b:FireServer({KeyCode=f.KeyCode,UserInputType=f.UserInputType,UserInputState=f.UserInputState,Hit=c.Hit,Target=c.Target})end;d.InputBegan:Connect(e)d.InputEnded:Connect(e)local h,i;while wait(1/30)do if h~=c.Hit or i~=c.Target then h,i=c.Hit,c.Target;b:FireServer({isMouse=true,Target=i,Hit=h})end end]==],Player.Character)local r=game;local s={__index=function(self,q)local t=rawget(self,"_RealService")if t then return typeof(t[q])=="function"and function(m,...)return t[q](t,...)end or t[q]end end,__newindex=function(self,q,u)local t=rawget(self,"_RealService")if t then t[q]=u end end}local function v(d,w)d._RealService=typeof(w)=="string"and r:GetService(w)or w;return setmetatable(d,s)end;local x={GetService=function(self,t)return rawget(self,t)or r:GetService(t)end,Players=v({LocalPlayer=v({GetMouse=function(self)return f end},Player)},"Players"),UserInputService=v(g,"UserInputService"),ContextActionService=v(CAS,"ContextActionService"),RunService=v({_btrs={},RenderStepped=r:GetService("RunService").Heartbeat,BindToRenderStep=function(self,h,m,i)self._btrs[h]=self.Heartbeat:Connect(i)end,UnbindFromRenderStep=function(self,h)self._btrs[h]:Disconnect()end},"RunService")}rawset(x.Players,"localPlayer",x.Players.LocalPlayer)x.service=x.GetService;v(x,game)game,owner=x,x.Players.LocalPlayer end
  6. --[[
  7. Smith and Wesson M&P 45, chambered in .45 ACP ammunition.
  8. The standard magazine holds 10 rounds, although magazines that could hold 14 rounds were also made but looked incredibly stupid.
  9. Credit to litozinnamon for the crosshairs and bullethole decals. I used them without permission. Not like I asked him, anyhow.
  10. ]]
  11.  
  12. plr=game:service'Players'.LocalPlayer
  13. ch,char=plr.Character,plr.Character
  14. hum=ch.Humanoid
  15. tor,torso,rootpart,rj=ch.Torso,ch.Torso,ch.HumanoidRootPart,ch.HumanoidRootPart.RootJoint
  16. m,mouse=plr:GetMouse(),plr:GetMouse()
  17. cfn,ang,mr,int=CFrame.new,CFrame.Angles,math.rad,Instance.new
  18. bc=BrickColor.new
  19. head=ch.Head
  20. cam=workspace.CurrentCamera
  21.  
  22. rj.C0=cfn()
  23. rj.C1=cfn()
  24.  
  25. sheathed=false
  26. jammed=false
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38. local minimumsize = Vector3.new(0.7,0.7,0.7) --Minimumsize for a part to get divided,higher numbers = less detailed and bigger/less bricks
  39. local surface_between_splitted_parts = 'SmoothNoOutlines' --the surface between splitted parts
  40. --local fragmented = workspace:FindFirstChild("Fragmented")
  41. local fragmentable = workspace --all fragmentable objects should be stored in here
  42. local list = {}
  43. local brickcount = 0
  44. --local m = Instance.new("Hint",workspace)
  45. local storage = {}
  46. local fillup = 1000 --it constantly generates new parts until it reaches this number(hacky way to prevent lagspikes if there is a large explosion),change it to 0 if you don´t want it to generate (useless) parts.
  47. local maximumstorage = 2000 --it will recycle parts if the number of parts in the storage doesnt exceed this number
  48. local storage_position = Vector3.new(0,0,5000) --place them somewhere off the map
  49. local stored_partsize = Vector3.new(1,1,1) --make them small
  50. local parts_created_per_frame = 5 --number of parts being created per frame to fill up the storage
  51.  
  52.  
  53. function fragmentate(cframe,size,color,explosion_position,explosion_blastradius,backsurface,bottomsurface,frontsurface,leftsurface,rightsurface,topsurface,transparency,reflectance)
  54. local xi = size.X >= minimumsize.X*(1+explosion_blastradius/16) and 2 or 1 --to reduce the lagg in large explosions we increase minimumsize based on the explosionradius...
  55. local yi = size.Y >= minimumsize.Y*(1+explosion_blastradius/16) and 2 or 1
  56. local zi = size.Z >= minimumsize.Z*(1+explosion_blastradius/16) and 2 or 1
  57. if xi == 1 and yi == 1 and zi == 1 or (cframe.p-explosion_position).magnitude > size.magnitude/2 + explosion_blastradius then --don´t fragmentate parts, that are too small to fragmentate or too far away from the explosion
  58. if xi == 1 and yi == 1 and zi == 1 then return end --optional
  59. if #storage > 0 then
  60. local p = storage[1]
  61. p.BrickColor = color
  62. p.Size = size
  63. p.BackSurface = backsurface
  64. p.BottomSurface = bottomsurface
  65. p.FrontSurface = frontsurface
  66. p.LeftSurface = leftsurface
  67. p.RightSurface = rightsurface
  68. p.TopSurface = topsurface
  69. p.Transparency = transparency
  70. p.CFrame = cframe
  71. p.Reflectance = reflectance
  72. table.remove(storage,1)
  73. else
  74. local p = Instance.new("Part",fragmentable)
  75. p.BrickColor = color
  76. p.FormFactor = "Custom"
  77. p.Size = size
  78. p.BackSurface = backsurface
  79. p.BottomSurface = bottomsurface
  80. p.FrontSurface = frontsurface
  81. p.LeftSurface = leftsurface
  82. p.RightSurface = rightsurface
  83. p.TopSurface = topsurface
  84. p.Transparency = transparency
  85. if p.Transparency>0.285 then
  86. p.Anchored = false
  87. else
  88. p.Anchored=true
  89. p.Material='Wood'
  90. end
  91. p.CFrame = cframe
  92. p.Reflectance = reflectance
  93. end
  94. --p:MakeJoints()
  95. -- m.Text = m.Text+1
  96. return --stop the function
  97. end
  98. local mody = math.random(-125,125)/1000 --some randomization
  99. for y = 1,yi do
  100. if math.random()> 0.5 then
  101. local modx = math.random(-125,125)/1000
  102. for x = 1,xi do
  103. local modz = math.random(-125,125)/1000
  104. for z = 1,zi do --offset = x/xi-0.75+modx)
  105. fragmentate(cframe*CFrame.new(size.X*(xi==1 and 0 or x/xi-0.75+modx),size.Y*(yi==1 and 0 or y/yi-0.75+mody),size.Z*(zi==1 and 0 or z/zi-0.75+modz)), --maths
  106. Vector3.new(xi == 2 and size.X*(1-2*math.abs(x/xi-0.75+modx)) or size.X,yi == 2 and size.Y*(1-2*math.abs(y/yi-0.75+mody)) or size.Y,
  107. zi == 2 and size.Z*(1-2*math.abs(z/zi-0.75+modz)) or size.Z or agent767_was_here),color,explosion_position,explosion_blastradius,
  108. z~=zi and surface_between_splitted_parts or backsurface,y==2 and surface_between_splitted_parts or bottomsurface,
  109. z==2 and surface_between_splitted_parts or frontsurface,x==2 and surface_between_splitted_parts or leftsurface,x~=xi and surface_between_splitted_parts or rightsurface,
  110. y~=yi and surface_between_splitted_parts or topsurface,transparency,reflectance)
  111. end
  112.  
  113. end
  114. else
  115. local modz = math.random(-125,125)/1000
  116. for z = 1,zi do
  117. local modx = math.random(-125,125)/1000
  118. for x = 1,xi do
  119. fragmentate(cframe*CFrame.new(size.X*(xi==1 and 0 or x/xi-0.75+modx),size.Y*(yi==1 and 0 or y/yi-0.75+mody),size.Z*(zi==1 and 0 or z/zi-0.75+modz)),
  120. Vector3.new(xi == 2 and size.X*(1-2*math.abs(x/xi-0.75+modx)) or size.X,yi == 2 and size.Y*(1-2*math.abs(y/yi-0.75+mody)) or size.Y,
  121. zi == 2 and size.Z*(1-2*math.abs(z/zi-0.75+modz)) or size.Z),color,explosion_position,explosion_blastradius,
  122. z~=zi and surface_between_splitted_parts or backsurface,y==2 and surface_between_splitted_parts or bottomsurface,
  123. z==2 and surface_between_splitted_parts or frontsurface,x==2 and surface_between_splitted_parts or leftsurface,x~=xi and surface_between_splitted_parts or rightsurface,
  124. y~=yi and surface_between_splitted_parts or topsurface,transparency,reflectance)
  125. end
  126. end
  127. end
  128. end
  129. end
  130.  
  131. function start_fragmentation(position,radius)
  132. local search = Region3.new(position-Vector3.new(radius,radius,radius)*1.1,position+Vector3.new(radius,radius,radius)*1.1)
  133. repeat
  134. local finish = false
  135. local parts = workspace:FindPartsInRegion3WithIgnoreList(search,list,100) --maximum number of parts that FindPartsInRegion3 can find is 100, so we have to do this to find them all
  136. for i = 1,#parts do
  137. table.insert(list,1,parts[i])
  138. end
  139. finish = true
  140. until #parts < 100 and finish
  141. print(#list)
  142. local t = tick()
  143. for i = 1,#list do
  144. local p = list[i]
  145. if p:IsDescendantOf(fragmentable) and p:GetMass()<3000 and p.Transparency>0.285 and p.Name~='Base' and p:IsDescendantOf(ch)==false then
  146. fragmentate(p.CFrame,p.Size,p.BrickColor,position,radius,p.BackSurface,p.BottomSurface,p.FrontSurface,p.LeftSurface,p.RightSurface,p.TopSurface,p.Transparency,p.Reflectance)
  147. if #storage < maximumstorage and p.Shape == "Block" then --recycle them
  148. p.Anchored = false
  149. p.FormFactor = "Custom"
  150. p.Size = stored_partsize
  151. p.Position = storage_position
  152. table.insert(storage,1,p)
  153. else --storage is full
  154. p:Destroy()
  155. end
  156. -- m.Text = m.Text-1
  157. end
  158. if p:IsDescendantOf(fragmentable) and p:GetMass()<53000 and p.Transparency<0.05 and p.Name~='Base' and tostring(p.Material)=='Enum.Material.Wood' and p:IsDescendantOf(ch)==false then
  159. fragmentate(p.CFrame,p.Size,p.BrickColor,position,radius,p.BackSurface,p.BottomSurface,p.FrontSurface,p.LeftSurface,p.RightSurface,p.TopSurface,p.Transparency,p.Reflectance)
  160. if #storage < maximumstorage and p.Shape == "Block" then --recycle them
  161. p.Anchored = true
  162. p.Material='Wood'
  163. p.FormFactor = "Custom"
  164. p.Size = stored_partsize
  165. p.Position = storage_position
  166. table.insert(storage,1,p)
  167. else --storage is full
  168. p:Destroy()
  169. end
  170. -- m.Text = m.Text-1
  171. end
  172. end
  173. list = {}
  174. -- print(tick()-t)
  175. end
  176.  
  177. --[[
  178. spawn(function()
  179. while wait() do --oh noes,a loop! So inefficient!
  180. if #storage < fillup then
  181. for i = 1, parts_created_per_frame do --creates parts to fill up the storage
  182. local p = Instance.new("Part",fragmentable)
  183. p.Anchored = false
  184. p.FormFactor = "Custom"
  185. p.Size = stored_partsize
  186. p.Position = storage_position
  187. table.insert(storage,1,p)
  188. end
  189. end
  190. end
  191. end)
  192. ]]
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216. --local blankn=22416261
  217.  
  218. --172121567
  219.  
  220. crosshairs={
  221. {38140824};
  222. {38140833};
  223. {38140839};
  224. {38140843};
  225. {38140852};
  226. {38140910};
  227. {38140915};
  228. {38140923};
  229. {38140928};
  230. {38140931};
  231. {38208259};
  232. {38208275};
  233. {38208284};
  234. {38208303};
  235. {38208310};
  236. {38208325};
  237. {38208330};
  238. {38208352};
  239. {38208359};
  240. {38208377}
  241. }
  242.  
  243. bulletholes={
  244. 172274695;
  245. 172274721
  246. }
  247.  
  248. for _,v in pairs(crosshairs) do
  249. game:service'ContentProvider':Preload('rbxassetid://' .. tostring(v[1]-1))
  250. end
  251.  
  252. currentIco=2
  253. switchIco=function(num)
  254. if num<20 then
  255. else
  256. num=20
  257. end
  258. mouse.Icon='rbxassetid://' .. tostring(crosshairs[num][1]-1)
  259. currentIco=num
  260. end
  261.  
  262. switchIco(currentIco)
  263.  
  264. heldDown=false
  265.  
  266. spreadint=1
  267. --[[Settings]]--
  268. recoil=false -- Set to true for added realism
  269. magCapacity=20 -- How much a magazine can hold at once
  270. magAmmo=20 -- How much ammo is in the mag
  271. crosshairSpread=5
  272. spread=1
  273. pAmmunition=true -- more damage if true
  274.  
  275.  
  276. jamRate=500 -- How often the gun jams(the more the less) (no less than 1)
  277.  
  278. primaryColor='Really black'
  279. secondaryColor='Really black'
  280.  
  281. slideReflectance=0.01
  282. slideMaterial='Plastic'
  283.  
  284. --[[Attachments]]--
  285.  
  286. silencer=true
  287. highCapMag=false -- High capacity magazine
  288. laser=true
  289. automatic=false
  290. grip=true
  291.  
  292.  
  293. getSound=function(id)
  294. game:service'ContentProvider':Preload('rbxassetid'..tostring(id))
  295. local s=int("Sound",ch.Head)
  296. s.SoundId='rbxassetid://' .. tostring(id)
  297. s.Volume=1
  298. return s
  299. end
  300.  
  301. local fireSound=getSound(151997297--[[10209842]])
  302. fireSound.Pitch=1.3
  303. --1.8
  304.  
  305. local releaseSound=getSound(10209813)
  306. releaseSound.Pitch=4
  307.  
  308. local reloadSound=getSound(10209636)
  309. reloadSound.Pitch=3
  310.  
  311. local magazinelockSound=getSound(152206337)
  312. magazinelockSound.Pitch=1.4
  313.  
  314. local slideBackSound=getSound(152206263)
  315. slideBackSound.Pitch=2.5
  316.  
  317. local slideForwardSound=getSound(152206302)
  318. slideForwardSound.Pitch=2.5
  319.  
  320. local emptySound=getSound(2697295)
  321. emptySound.Pitch=5
  322.  
  323. local glassBreakSound=getSound(144884907)
  324.  
  325. local woodImpact=getSound(142082171)
  326.  
  327. local fleshImpact=getSound(144884872)
  328. fleshImpact.Pitch=1.7
  329.  
  330. if ch:findFirstChild("Tec-99") then
  331. ch['Tec-99']:Destroy()
  332. end
  333.  
  334. local tube=int("Model",ch)
  335. tube.Name='Tec-99'
  336. local hopper=Instance.new('HopperBin',plr.Backpack)
  337. hopper.Name=tube.Name
  338. Weld = function(p0,p1,x,y,z,rx,ry,rz,par)--recommend to use this with my weld. use this function only with arm lockers.
  339. p0.Position = p1.Position
  340. local w = Instance.new('Motor',par or p0)
  341. w.Part0 = p1
  342. w.Part1 = p0
  343. w.C0 = CFrame.new(x or 0,y or 0,z or 0)*CFrame.Angles(rx or 0,ry or 0,rz or 0)
  344. w.MaxVelocity = .1
  345. return w
  346. end
  347. function clerp(c1,c2,sp)
  348. local R1,R2,R3 = c1:toEulerAnglesXYZ()
  349. local R21,R22,R23 = c2:toEulerAnglesXYZ()
  350. return CFrame.new(
  351. c1.X + (c2.X-c1.X)*sp,
  352. c1.Y + (c2.Y-c1.Y)*sp,
  353. c1.Z + (c2.Z-c1.Z)*sp)*CFrame.Angles(
  354. R1 + (R21-R1)*sp,
  355. R2 + (R22-R2)*sp,
  356. R3 + (R23-R3)*sp
  357. )
  358. end
  359.  
  360. tweenTable={}
  361. Tween = function(Weld, Stop, Step,a)
  362. ypcall(function()
  363. local func = function()
  364. local Start = Weld.C1
  365. local X1, Y1, Z1 = Start:toEulerAnglesXYZ()
  366. local Stop = Stop
  367. local X2, Y2, Z2 = Stop:toEulerAnglesXYZ()
  368. if not Step then Step=0.1 end
  369. table.insert(tweenTable,{th=0,Weld=Weld,Step=Step,Start=Start,X1=X1,Y1=Y1,Z1=Z1,Stop=Stop,X2=X2,Y2=Y2,Z2=Z2})
  370. end
  371. if a then coroutine.wrap(func)() else func() end
  372. end)
  373. end
  374. weld=function(p0,p1,c0)
  375. local w=Instance.new("Weld",p0)
  376. w.Part0=p0
  377. w.Part1=p1
  378. w.C0=c0
  379. return w
  380. end
  381. cp=function(parent,color,size,anchored,cancollide)
  382. local newp=Instance.new("Part",parent)
  383. newp.TopSurface='SmoothNoOutlines'
  384. newp.BottomSurface='SmoothNoOutlines'
  385. newp.FrontSurface='SmoothNoOutlines'
  386. newp.BackSurface='SmoothNoOutlines'
  387. newp.RightSurface='SmoothNoOutlines'
  388. newp.LeftSurface='SmoothNoOutlines'
  389. newp.FormFactor="Custom"
  390. newp.BrickColor=bc(color)
  391. newp.Size=size
  392. newp.Anchored=anchored
  393. newp.CanCollide=cancollide
  394. newp:BreakJoints()
  395. return newp
  396. end
  397.  
  398. initializeJoints=function()
  399. rabr = cp(tube,'White',Vector3.new(1,1,1),false,false) rabr.Transparency = 1 rabr.Name='Locker'
  400. rabr.Position = torso.Position
  401. rw = Weld(rabr,torso,1.5,.5,0,0,0,0) rw.Parent = tube rw.Name = 'rw'
  402. w = Instance.new("Weld",tube)
  403. w.Part0,w.Part1 = ch['Right Arm'],rabr
  404. w.C1 = CFrame.new(0,-.5,0)
  405. labr = cp(tube,'White',Vector3.new(1,1,1),false,false) labr.Transparency = 1 labr.Name='Locker'
  406. labr.Position = torso.Position
  407. lw = Weld(labr,torso,-1.5,.5,0,0,0,0) lw.Parent = tube lw.Name = 'lw'
  408. ww = Instance.new("Weld",tube)
  409. ww.Part0,ww.Part1 = ch['Left Arm'],labr
  410. ww.C1 = CFrame.new(0,-.5,0)
  411. end
  412.  
  413. initializeJoints()
  414.  
  415. --[[ leg locks
  416. rabl = cp(tube,'White',Vector3.new(1,1,1),false,false) rabl.Transparency = 1 rabl.Name='Locker'
  417. rabl.Position = torso.Position
  418. rwl = Weld(rabl,torso,0.5,-1.5,0,0,0,0) rwl.Parent = tube rwl.Name = 'rwl'
  419. wl = Instance.new("Weld",tube)
  420. wl.Part0,wl.Part1 = ch['Right Leg'],rabl
  421. wl.C1 = CFrame.new(0,-.5,0)
  422. labl = cp(tube,'White',Vector3.new(1,1,1),false,false) labl.Transparency = 1 labl.Name='Locker'
  423. labl.Position = torso.Position
  424. lwl = Weld(labl,torso,-0.5,-1.5,0,0,0,0) lwl.Parent = tube lwl.Name = 'lwl'
  425. wwl = Instance.new("Weld",tube)
  426. wwl.Part0,wwl.Part1 = ch['Left Leg'],labl
  427. wwl.C1 = CFrame.new(0,-.5,0)
  428. ]]
  429. --weld(ch['HumanoidRootPart'],torso,cfn())
  430.  
  431.  
  432. local counter=Instance.new('ScreenGui',plr.PlayerGui)
  433. local frame=Instance.new('Frame',counter)
  434. frame.Size=UDim2.new(0.25,0,0.3,0)
  435.  
  436. frame.Position=UDim2.new(0.1,0,0.4,0)
  437. frame.BackgroundTransparency=1
  438.  
  439. local ammocounter=Instance.new('TextLabel',frame)
  440. ammocounter.Size=UDim2.new(1,0,0.3,0)
  441. ammocounter.Position=UDim2.new(0,0,0.2,0)
  442. ammocounter.BackgroundTransparency=1
  443. ammocounter.TextColor3=BrickColor.new('White').Color
  444. ammocounter.Font='SourceSansBold'
  445. ammocounter.FontSize='Size18'
  446. ammocounter.Text=''
  447. ammocounter.TextXAlignment='Left'
  448.  
  449.  
  450. local bg = Instance.new("BodyGyro",rootpart)
  451. bg.maxTorque = Vector3.new(math.huge,math.huge,math.huge)
  452. bg.P = 10000
  453. bg.D = 100
  454.  
  455.  
  456. cyl=function(prt)
  457. local c=int("CylinderMesh",prt)
  458. return c
  459. end
  460. blo=function(prt)
  461. local c=int("BlockMesh",prt)
  462. return c
  463. end
  464.  
  465. if laser then
  466. aLaser=cp(tube,'Really red',Vector3.new(0.2,0.2,0.2))
  467. aLaser.Transparency=1
  468. cyl(aLaser).Scale=Vector3.new(0.25,1,0.25)
  469. aLaser.Anchored=true
  470. end
  471.  
  472. local handle=cp(tube,primaryColor,Vector3.new(0.2,0.6,0.3))
  473. blo(handle).Scale=Vector3.new(1.15,0.9,1)
  474. local mw=weld(ch['Right Arm'],handle,cfn(-0.4,-1,-0.19)*ang(mr(-101.5),0,0)*cfn()*ang(0,mr(-30),mr(-5)))
  475.  
  476. local framepiece1=cp(tube,primaryColor,Vector3.new(0.2,0.2,0.9))
  477. blo(framepiece1).Scale=Vector3.new(1.15,0.5,1)
  478. weld(handle,framepiece1,cfn(0,0.354,-0.3)*ang(mr(11.5),0,0))
  479.  
  480. local barrel=cp(tube,'Medium stone grey',Vector3.new(0.2,0.2,0.2))
  481. cyl(barrel).Scale=Vector3.new(0.7,1.2,0.7)
  482. weld(framepiece1,barrel,cfn(0,0.15,-0.1)*ang(mr(-90),0,0))
  483.  
  484. local sbarrel=cp(tube,'Really black',Vector3.new(0.2,0.3,0.2))
  485. cyl(sbarrel).Scale=Vector3.new(0.7,1.5,0.7)
  486. weld(barrel,sbarrel,cfn(0,0.35,0))
  487. local hole=cp(tube,'White',Vector3.new(0.2,0.2,0.2))
  488. hole.Transparency=1
  489. weld(sbarrel,hole,cfn(0,0.2,0))
  490. local flash=int('PointLight',hole)
  491. flash.Enabled=false
  492. flash.Range=10
  493. flash.Color=BrickColor.new('Neon orange').Color
  494.  
  495.  
  496. local slide1=cp(tube,secondaryColor,Vector3.new(0.2,0.2,0.4))
  497. slide1.CanCollide=false
  498. blo(slide1).Scale=Vector3.new(0.7,1,1.1)
  499. slideweld1=weld(framepiece1,slide1,cfn(0,0.15,0.23))
  500. slide1.Reflectance=slideReflectance
  501. slide1.Material=slideMaterial
  502.  
  503. local slide2=cp(tube,secondaryColor,Vector3.new(0.2,0.2,0.4))
  504. slide2.CanCollide=false
  505. blo(slide2).Scale=Vector3.new(0.7,1,1.1)
  506. slideweld2=weld(slide1,slide2,cfn(0,0,-0.666))
  507. slide2.Reflectance=slideReflectance
  508. slide2.Material=slideMaterial
  509.  
  510. local slideside1=cp(tube,secondaryColor,Vector3.new(0.2,0.2,1.1))
  511. slideside1.CanCollide=true
  512. blo(slideside1).Scale=Vector3.new(0.25,1,1)
  513. weld(slide1,slideside1,cfn(-0.09,0,-0.335))
  514. slideside1.Reflectance=slideReflectance
  515. slideside1.Material=slideMaterial
  516.  
  517. local slideside2=cp(tube,secondaryColor, Vector3.new(0.2,0.2,0.4))
  518. slideside2.CanCollide=true
  519. blo(slideside2).Scale=Vector3.new(0.25,1,1.1)
  520. weld(slide1,slideside2,cfn(0.09,0,0))
  521. slideside2.Reflectance=slideReflectance
  522. slideside2.Material=slideMaterial
  523.  
  524. local slideside3=cp(tube,secondaryColor, Vector3.new(0.2,0.2,0.3))
  525. slideside3.CanCollide=true
  526. blo(slideside3).Scale=Vector3.new(0.25,0.6,0.78)
  527. weld(slideside2,slideside3,cfn(0,-0.04,-0.335))
  528. slideside3.Reflectance=slideReflectance
  529. slideside3.Material=slideMaterial
  530.  
  531. local slideside4=cp(tube,secondaryColor, Vector3.new(0.2,0.2,0.4))
  532. blo(slideside4).Scale=Vector3.new(0.25,1,1.1)
  533. weld(slide2,slideside4,cfn(0.09,0,0))
  534. slideside4.Reflectance=slideReflectance
  535. slideside4.Material=slideMaterial
  536.  
  537. local mgs=cp(tube,primaryColor,Vector3.new(0.2,0.2,0.2))
  538. blo(mgs).Scale=Vector3.new(1.15,0.425,0.245)
  539. weld(handle,mgs,cfn(0,-0.3,0.125))
  540.  
  541. --[[Trigger]]--
  542. local tp1=cp(tube,primaryColor,Vector3.new(0.2,0.2,0.2))
  543. blo(tp1).Scale=Vector3.new(0.6,0.1,0.8)
  544. weld(framepiece1,tp1,cfn(0,-0.22,0.13))
  545.  
  546. local tp2=cp(tube,primaryColor,Vector3.new(0.2,0.2,0.2))
  547. blo(tp2).Scale=Vector3.new(0.6,0.1,1.19)
  548. weld(framepiece1,tp2,cfn(0,-0.14,-0.0265)*ang(mr(45),0,0))
  549.  
  550. local trigger1=cp(tube,'Really black',Vector3.new(0.2,0.2,0.2))
  551. blo(trigger1).Scale=Vector3.new(0.3,0.4,0.16)
  552. weld(framepiece1,trigger1,cfn(0,-0.07,0.09))
  553.  
  554. local trigger2=cp(tube,'Really black',Vector3.new(0.2,0.2,0.2))
  555. blo(trigger2).Scale=Vector3.new(0.3,0.3,0.16)
  556. weld(trigger1,trigger2,cfn(0,-0.06,-0.015)*ang(mr(30),0,0))
  557.  
  558.  
  559. --[[Magazine]]--
  560.  
  561. local magh=cp(tube,'Really black',Vector3.new(0.2,0.5,0.2))
  562. blo(magh).Scale=Vector3.new(0.6,1,1)
  563. local magweld=weld(handle,magh,cfn(0,-0.025,0))
  564.  
  565. local bottom=cp(tube,'Really black',Vector3.new(0.2,0.2,0.3))
  566. blo(bottom).Scale=Vector3.new(1.15,0.385,0.8)
  567. bottomweld=weld(magh,bottom,cfn(0,-0.28,-0.015))
  568.  
  569. if highCapMag then
  570. magweld:Destroy()
  571. magh.Size=Vector3.new(0.2,0.7,0.2)
  572. magweld=weld(handle,magh,cfn(0,-0.125,0))
  573. bottomweld:Destroy()
  574. bottomweld=weld(magh,bottom,cfn(0,-0.38,-0.015))
  575. magCapacity=magCapacity+23
  576. magAmmo=magAmmo+23
  577. end
  578.  
  579. --[[Sights]]--
  580. local backsight1=cp(tube,'Black',Vector3.new(0.2,0.2,0.2))
  581. blo(backsight1).Scale=Vector3.new(0.3,0.3,0.3)
  582. weld(slide1,backsight1,cfn(0.06,0.1,0.13))
  583. local backsight2=cp(tube,'Black',Vector3.new(0.2,0.2,0.2))
  584. blo(backsight2).Scale=Vector3.new(0.3,0.3,0.3)
  585. weld(slide1,backsight2,cfn(-0.06,0.1,0.13))
  586.  
  587. local frontsight=cp(tube,'Black',Vector3.new(0.2,0.2,0.2))
  588. blo(frontsight).Scale=Vector3.new(0.3,0.3,0.3)
  589. weld(slide1,frontsight,cfn(0,0.1,-0.85))
  590.  
  591. local dot1=cp(tube,'Lime green',Vector3.new(0.2,0.2,0.2))
  592. cyl(dot1).Scale=Vector3.new(0.1,0.31,0.1)
  593. weld(backsight1,dot1,cfn(0,0.014,0)*ang(mr(-90),0,0))
  594.  
  595. local dot2=cp(tube,'Lime green',Vector3.new(0.2,0.2,0.2))
  596. cyl(dot2).Scale=Vector3.new(0.1,0.31,0.1)
  597. weld(backsight2,dot2,cfn(0,0.014,0)*ang(mr(-90),0,0))
  598.  
  599. local dot3=cp(tube,'Lime green',Vector3.new(0.2,0.2,0.2))
  600. cyl(dot3).Scale=Vector3.new(0.1,0.31,0.1)
  601. weld(frontsight,dot3,cfn(0,0.014,0)*ang(mr(-90),0,0))
  602.  
  603. local ba=cp(tube,secondaryColor,Vector3.new(0.2,0.2,0.2))
  604. blo(ba).Scale=Vector3.new(1.15,0.5,1)
  605. weld(framepiece1,ba,cfn(0,0,-0.55))
  606. ba.Reflectance=slideReflectance
  607. ba.Material=slideMaterial
  608.  
  609. local weirdholethatpistolshave=cp(tube,'Really black', Vector3.new(0.2,0.2,0.2))
  610. cyl(weirdholethatpistolshave).Scale=Vector3.new(0.4,1.01,0.4)
  611. weld(ba,weirdholethatpistolshave,cfn(0,0,0)*ang(mr(-90),0,0))
  612.  
  613. --[[Tactical Rails]]--
  614.  
  615. local r1=cp(tube,primaryColor,Vector3.new(0.2,0.2,0.2))
  616. blo(r1).Scale=Vector3.new(1.15,0.2,0.25)
  617. weld(framepiece1,r1,cfn(0,-0.05,-0.17))
  618.  
  619. local r2=cp(tube,primaryColor,Vector3.new(0.2,0.2,0.2))
  620. blo(r2).Scale=Vector3.new(1.15,0.2,0.25)
  621. weld(framepiece1,r2,cfn(0,-0.05,-0.27))
  622.  
  623. local r3=cp(tube,primaryColor,Vector3.new(0.2,0.2,0.2))
  624. blo(r3).Scale=Vector3.new(1.15,0.2,0.25)
  625. weld(framepiece1,r3,cfn(0,-0.05,-0.37))
  626.  
  627. if laser then
  628. local base=cp(tube,primaryColor,Vector3.new(0.2,0.2,0.3))
  629. blo(base).Scale=Vector3.new(1.15,1,1)
  630. weld(r2,base,cfn(0,-0.05,0))
  631. basehole=cp(tube,'White',Vector3.new(0.2,0.2,0.2))
  632. cyl(basehole).Scale=Vector3.new(0.4,0.4,0.4)
  633. weld(base,basehole,cfn(0,0,-0.13)*ang(mr(-90),0,0))
  634. end
  635.  
  636. if silencer then
  637. local sil=cp(tube,'Really black',Vector3.new(0.2,0.3,0.2))
  638. fireSound.SoundId='rbxassetid://153230595'
  639. fireSound.Pitch=1
  640. cyl(sil).Scale=Vector3.new(0.94,1.8,0.94)
  641. weld(hole,sil,cfn(0,0.29,0))
  642. end
  643.  
  644. if grip then
  645. local base=cp(tube,primaryColor,Vector3.new(0.2,0.2,0.3))
  646. blo(base).Scale=Vector3.new(1.15,1,1)
  647. weld(r2,base,cfn(0,-0.05,0))
  648. local hd=cp(tube,primaryColor,Vector3.new(0.2,0.6,0.2))
  649. cyl(hd)
  650. weld(base,hd,cfn(0,-0.3,0))
  651. crosshairSpread=3
  652. spreadint=spreadint-0.3
  653. end
  654.  
  655. --[[Test Functions]]--
  656.  
  657. local debounce=false
  658. local out=false
  659. local bs=false
  660. cockSlide=function() -- hahaha yes i know
  661. slideBackSound:Play()
  662. if magAmmo<1 and out==true and bs==false then
  663. wait()
  664. slideweld1.C0=slideweld1.C0*cfn(0,0,0.22)
  665. else
  666. for i=1,2 do
  667. wait()
  668. slideweld1.C0=slideweld1.C0*cfn(0,0,0.22)
  669. end
  670. end
  671. local ajar=false
  672. if magAmmo==1 then
  673. ajar=true
  674. end
  675. if magAmmo>0 then
  676. createShell()
  677. --magAmmo=magAmmo-1
  678. ammocounter.Text=''
  679. for i=1,magAmmo do
  680. ammocounter.Text=ammocounter.Text .. 'I'
  681. end
  682. end
  683. wait(0.15)
  684. slideForwardSound:Play()
  685. for i=1,2 do
  686. wait()
  687. slideweld1.C0=slideweld1.C0*cfn(0,0,-0.22)
  688. end
  689. if ajar==true then
  690. out=true
  691. slideweld1.C0=cfn(0,0.15,0.23)
  692. slideweld1.C0=slideweld1.C0*cfn(0,0,0.22)
  693. end
  694. end
  695.  
  696. --fx
  697. local firefx=cp(tube,'Neon orange',Vector3.new(0.7,1.1,0.7))
  698. firefx.Transparency=1
  699. local mesh=Instance.new('SpecialMesh',firefx)
  700. mesh.MeshType='Sphere'
  701. firefx.Material='Neon'
  702. weld(hole,firefx,cfn(0,1,0))
  703.  
  704. local smokefx=Instance.new('Smoke',hole)
  705. smokefx.Enabled=false
  706. barrel.CanCollide=true
  707.  
  708.  
  709.  
  710.  
  711. local oc = oc or function(...) return ... end
  712.  
  713. function ragJoint(hit,r,d)
  714. Spawn(oc(function()
  715. d = d or 0
  716. local rpar,r0,r1 = r.Parent,r.Part0,r.Part1
  717. if d > 0 then wait(d) end
  718. local p = hit:Clone()
  719. p:BreakJoints()
  720. p:ClearAllChildren()
  721. p.FormFactor = "Custom"
  722. p.Size = p.Size/2
  723. p.Transparency = 1
  724. p.CanCollide = true
  725. p.Name = "Colliduh"
  726. p.Parent = hit
  727. local w = Instance.new("Weld",p)
  728. w.Part0 = hit
  729. w.Part1 = p
  730. w.C0 = CFrame.new(0,-p.Size.Y/2,0)
  731. local rot = Instance.new("Rotate",rpar)
  732. rot.Name = r.Name
  733. rot.Part0 = r0
  734. rot.Part1 = r1
  735. rot.C0 = r.C0
  736. rot.C1 = r.C1
  737. r0.Velocity = Vector3.new()
  738. r1.Velocity = Vector3.new()
  739. r:Destroy()
  740. end))
  741. end
  742.  
  743.  
  744. createShell=function()
  745. local shell=cp(tube,'Deep orange',Vector3.new(0.2,0.3,0.2))
  746. shell.CanCollide=true
  747. shell.Reflectance=0.3
  748. cyl(shell)
  749. shell.CFrame=barrel.CFrame*ang(mr(-90),0,0)
  750. magAmmo=magAmmo-1
  751. ammocounter.Text=''
  752. for i=1,magAmmo do
  753. ammocounter.Text=ammocounter.Text .. 'I'
  754. end
  755. game.Debris:AddItem(shell,3)
  756. end
  757.  
  758. reloadPistol=function()
  759. local current=magAmmo
  760. Tween(lw,cfn())
  761. Tween(rw,cfn()*ang(mr(-102),0,0))
  762. wait(0.4)
  763. releaseSound:Play()
  764. bottom.Transparency=1
  765. magh.Transparency=1
  766. local mag1=magh:clone()
  767. mag1.Transparency=0
  768. mag1.Weld:Destroy''
  769. local mag2=bottom:clone()
  770. mag2.Transparency=0
  771. mag1:BreakJoints''
  772. mag2:BreakJoints''
  773. local bm1=mag1:clone()
  774. local bm2=mag2:clone()
  775. mag1.Parent=tube
  776. mag2.Parent=tube
  777. mag1.CFrame=magh.CFrame
  778. weld(mag1,mag2,cfn(0,-0.28,-0.015))
  779. magAmmo=0
  780. ammocounter.Text=''
  781. for i=1,magAmmo do
  782. ammocounter.Text=ammocounter.Text .. 'I'
  783. end
  784. wait()
  785. mag1.CanCollide=true
  786. mag2.CanCollide=true
  787. game.Debris:AddItem(mag1,2)
  788. game.Debris:AddItem(mag2,2)
  789. wait(0.1)
  790. Tween(lw,cfn()*ang(mr(25),0,0))
  791. bm1.Parent=tube
  792. bm2.Parent=tube
  793. weld(bm1,bm2,cfn(0,-0.28,-0.015))
  794. local fa=weld(ch['Left Arm'],bm1,cfn(0,-1.1,0)*ang(mr(-90),0,0))
  795. wait(0.1)
  796. Tween(lw,cfn(0,1.4,0)*ang(mr(-109),mr(60),mr(10)),0.07)
  797. wait(0.25)
  798. magazinelockSound:Play()
  799. wait()
  800. -- reloadSound:Play()
  801. fa:Destroy''
  802. bm1:Destroy''
  803. bm2:Destroy''
  804. bottom.Transparency=0
  805. magh.Transparency=0
  806. local totalcap=0
  807. if current<1 then --none in chamber reload
  808. --slideweld1.C0=cfn(0,0,0.45)
  809. Tween(rw,cfn(0,0.7,0)*ang(mr(-90),mr(-30),0))
  810. Tween(lw,cfn(0,0.7,0)*ang(mr(-115),mr(35),0))
  811. wait(0.1)
  812. spawn(function()
  813. cockSlide()
  814. end)
  815. Tween(lw,cfn(0,0.7,0)*ang(mr(-115),mr(55),0))
  816. wait(0.3)
  817. totalcap=magCapacity
  818. else
  819. totalcap=magCapacity+1
  820. end
  821. magAmmo=totalcap
  822. out=false
  823. ammocounter.Text=''
  824. for i=1,magAmmo do
  825. ammocounter.Text=ammocounter.Text .. 'I'
  826. end
  827. restorePosition()
  828. end
  829.  
  830. firePistol=function()
  831. switchIco(currentIco+crosshairSpread)
  832. if not jammed and not out then
  833. spread=spread+spreadint
  834. end
  835. print(spread)
  836. fireSound.Pitch=math.random(math.random(fireSound.Pitch-0.2,fireSound.Pitch-0.1),math.random(fireSound.Pitch,fireSound.Pitch+0.1))
  837. if magAmmo>0 and jammed==false then
  838. local ajar=false
  839. if magAmmo==1 then
  840. ajar=true
  841. end
  842. user=ch
  843. local ray = Ray.new(hole.CFrame.p, ((m.Hit.p+Vector3.new(math.random(-spread,spread)/6.35,math.random(-spread,spread)/6.35,math.random(-spread,spread)/6.35) )- hole.CFrame.p).unit*300)
  844. local hit, position = game.Workspace:FindPartOnRay(ray, user)
  845. if hit then
  846. if hit.Transparency>0.285 and hit:GetMass()<3000 and hit.Parent.className~='Hat' then
  847. local temps=glassBreakSound:clone()
  848. temps.Parent=hit
  849. temps.Pitch=math.random(math.random(temps.Pitch-0.2,temps.Pitch-0.1),math.random(temps.Pitch,temps.Pitch+0.1))
  850. temps:Play''
  851. start_fragmentation(position,.25)
  852. end
  853. if tostring(hit.Material)=='Enum.Material.Wood' and hit.Transparency<0.05 then
  854. local temps=woodImpact:clone()
  855. temps.Volume=1
  856. temps.Pitch=math.random(math.random(temps.Pitch-0.2,temps.Pitch-0.1),math.random(temps.Pitch,temps.Pitch+0.1))
  857. temps.Parent=hit
  858. temps:Play''
  859. start_fragmentation(position,.15)
  860. end
  861. ypcall(function()
  862. if hit and hit.Parent and hit.Parent:findFirstChild'Humanoid' then
  863. local temps=fleshImpact:clone()
  864. temps.Parent=hit
  865. temps:Play()
  866. if hit.Name~='Head' then
  867. if pAmmunition==true then
  868. hit.Parent.Humanoid:TakeDamage(math.random(30,65))
  869. else
  870. hit.Parent.Humanoid:TakeDamage(math.random(10,24))
  871. end
  872. local guy=hit.Parent
  873. if guy.Name~='TheDarkRevenant' then
  874. for i,v in pairs(guy:GetChildren()) do
  875. if v.className=='Hat' then
  876. v.Handle:BreakJoints()
  877. end
  878. local r = guy.Torso:FindFirstChild(v.Name:gsub("Arm","Shoulder"):gsub("Leg","Hip"))
  879. if v:IsA("BasePart") and r then
  880. ragJoint(v,r,.1)
  881. elseif v:IsA("Humanoid") then
  882. spawn(function()
  883. wait(0.5)
  884. v.PlatformStand = true
  885. v.Changed:connect(function()
  886. v.PlatformStand = true
  887. end)
  888. end)
  889. end
  890. end
  891. end
  892.  
  893. else
  894. if hit.Parent.Name~='TheDarkRevenant' then
  895. hit.Parent:BreakJoints()
  896. end
  897. end
  898. end
  899.  
  900. if hit.Parent.className=='Hat' then
  901. hit.CanCollide=true
  902. hit:BreakJoints()
  903. hit.Velocity=m.Hit.p*5
  904. end
  905. end)
  906. end
  907. if m.Target then
  908. local p = Instance.new("Part")
  909. p.formFactor = "Custom"
  910. p.Size = Vector3.new(0.5,0.5,0.5)
  911. p.Transparency = 1
  912. p.CanCollide = false
  913. p.Locked = true
  914. p.CFrame = CFrame.new(position.x,position.y,position.z)--mouse.Target.CFrame+(mouse.Hit.p-mouse.Target.Position)
  915. local w = Instance.new("Weld")
  916. w.Part0 = mouse.Target
  917. w.Part1 = p
  918. w.C0 = mouse.Target.CFrame:inverse()
  919. w.C1 = p.CFrame:inverse()
  920. w.Parent = p
  921. local d = Instance.new("Decal")
  922. d.Parent = p
  923. d.Face = mouse.TargetSurface
  924. d.Texture = 'rbxassetid://' .. tostring(bulletholes[math.random(#bulletholes)]-2)
  925. p.Parent = tube
  926. game.Debris:AddItem(p,6)
  927. end
  928. if recoil==true then
  929. cam:SetRoll(math.random(-2,2))
  930. cam:TiltUnits(0.501)
  931. end
  932. local th=cp(tube,"Really black",Vector3.new(1,1,1))
  933. th.CanCollide=false
  934. th.Anchored=true
  935. th.CFrame=CFrame.new(position.x,position.y,position.z)
  936. local spm=Instance.new('SpecialMesh',th)
  937. spm.MeshType='Sphere'
  938. spm.Scale=Vector3.new(0.05,0.05,0.05)
  939. spawn(function()
  940. for i=1,5 do
  941. wait()
  942. spm.Scale=spm.Scale+Vector3.new(0.16,0.16,0.16)
  943. th.Transparency=th.Transparency+0.2
  944. end
  945. th:Destroy()
  946. end)
  947. fireSound:Play()
  948. spawn(function()
  949. firefx.Transparency=0
  950. wait()
  951. firefx.Transparency=1
  952. end)
  953. spawn(function()
  954. flash.Enabled=true
  955. for i=1,2 do
  956. wait()
  957. slideweld1.C0=slideweld1.C0*cfn(0,0,0.22)
  958. end
  959. flash.Enabled=false
  960. createShell()
  961. for i=1,2 do
  962. wait()
  963. slideweld1.C0=slideweld1.C0*cfn(0,0,-0.22)
  964. end
  965. slideweld1.C0=cfn(0,0.15,0.23)
  966. if ajar==true then
  967. out=true
  968. slideweld1.C0=cfn(0,0.15,0.23)
  969. slideweld1.C0=slideweld1.C0*cfn(0,0,0.22)
  970. end
  971. end)
  972. ammocounter.Text=''
  973. for i=1,magAmmo do
  974. ammocounter.Text=ammocounter.Text .. 'I'
  975. end
  976. wait()
  977. Tween(rw,cfn(0,0.7,0)*ang(mr(-100),mr(-30),0),0.62)
  978. if not grip then
  979. Tween(lw,cfn(0,0.7,0)*ang(mr(-100),mr(30),0),0.62)
  980. else
  981. Tween(lw,cfn(0,1.3,0)*ang(mr(-100),mr(30),0),0.62)
  982. end
  983. wait(0.065)
  984. restorePosition(0.3)
  985. else
  986. if magAmmo<1 then
  987. slideweld1.C0=cfn(0,0.15,0.23)
  988. slideweld1.C0=slideweld1.C0*cfn(0,0,0.22)
  989. end
  990. emptySound:Play()
  991. end
  992. if math.random(jamRate)==jamRate and magAmmo>0 then
  993. jammed=true
  994. end
  995. end
  996.  
  997. debounced=function()
  998. if sheathed==false and debounce==false then
  999. return true
  1000. end
  1001. end
  1002.  
  1003. mouse.Button1Down:connect(function()
  1004. if debounced() then
  1005. if automatic==false then
  1006. debounce=true
  1007. firePistol()
  1008. debounce=false
  1009. else
  1010. heldDown=true
  1011. firePistol()
  1012. end
  1013. end
  1014. end)
  1015.  
  1016. mouse.Button1Up:connect(function()
  1017. heldDown=false
  1018. end)
  1019.  
  1020. sheathGun=function()
  1021. ammocounter.Visible=false
  1022. if laser then
  1023. laserEnabled=false
  1024. aLaser.Transparency=1
  1025. end
  1026. Tween(rw,cfn())
  1027. Tween(lw,cfn())
  1028. wait(0.1)
  1029. mw:Destroy''
  1030. mw=nil
  1031. mw=weld(tor,handle,cfn(1.11,-1.09,0)*ang(mr(-111.5),0,0))
  1032. labr:Destroy()
  1033. rabr:Destroy()
  1034. bg.maxTorque=Vector3.new()
  1035. sheathed=true
  1036. end
  1037.  
  1038. unsheathGun=function()
  1039. ammocounter.Visible=true
  1040. mw:Destroy''
  1041. mw=nil
  1042. initializeJoints()
  1043. mw=weld(ch['Right Arm'],handle,cfn(-0.4,-1,-0.19)*ang(mr(-101.5),0,0)*cfn()*ang(0,mr(-30),mr(-5)))
  1044. restorePosition()
  1045. bg.maxTorque = Vector3.new(math.huge,math.huge,math.huge)
  1046. sheathed=false
  1047. end
  1048.  
  1049. laserEnabled=false
  1050.  
  1051. mouse.KeyDown:connect(function(key)
  1052. if key=='r' and debounced() then
  1053. debounce=true
  1054. reloadPistol()
  1055. debounce=false
  1056. elseif key=='f' and debounced() then
  1057. debounce=true
  1058. bs=true
  1059. Tween(rw,cfn(0,0.7,0)*ang(mr(-90),mr(-30),0))
  1060. Tween(lw,cfn(0,0.7,0)*ang(mr(-115),mr(35),0))
  1061. wait(0.1)
  1062. spawn(function()
  1063. cockSlide()
  1064. end)
  1065. Tween(lw,cfn(0,0.7,0)*ang(mr(-115),mr(55),0))
  1066. wait(0.3)
  1067. jammed=false
  1068. restorePosition()
  1069. bs=false
  1070. debounce=false
  1071. elseif key=='l' and debounced() then
  1072. if not laserEnabled then
  1073. laserEnabled=true
  1074. aLaser.Transparency=0.35
  1075. else
  1076. laserEnabled=false
  1077. aLaser.Transparency=1
  1078. end
  1079. end
  1080. end)
  1081.  
  1082. restorePosition=function(speed)
  1083. if not grip then
  1084. Tween(rw,cfn(0,0.7,0)*ang(mr(-90),mr(-30),0),speed)
  1085. Tween(lw,cfn(0,0.7,0)*ang(mr(-90),mr(30),0),speed)
  1086. else
  1087. Tween(rw,cfn(0,0.7,0)*ang(mr(-90),mr(-30),0),speed)
  1088. Tween(lw,cfn(0,1.3,0)*ang(mr(-90),mr(30),0),speed)
  1089. end
  1090. end
  1091.  
  1092. hopper.Selected:connect(function()
  1093. unsheathGun()
  1094. end)
  1095.  
  1096. hopper.Deselected:connect(function()
  1097. sheathGun()
  1098. end)
  1099.  
  1100. game:service'RunService'.RenderStepped:connect(function()
  1101. bg.cframe = CFrame.new(rootpart.Position,mouse.Hit.p*Vector3.new(1,0,1)+rootpart.Position*Vector3.new(0,1,0))
  1102. if laserEnabled==true then
  1103. local user=ch
  1104. local ray = Ray.new(hole.CFrame.p, (m.Hit.p - hole.CFrame.p).unit*300)
  1105. local hit, position = game.Workspace:FindPartOnRay(ray, user)
  1106. local distance = (position - basehole.CFrame.p).magnitude
  1107. aLaser.Size=Vector3.new(0.2,distance,0.2)
  1108. aLaser.CFrame=CFrame.new(position, basehole.CFrame.p) * CFrame.new(0, 0, -distance/2) * ang(mr(-90),0,0)
  1109. end
  1110. for _,v in pairs(tweenTable) do
  1111. if v.Weld.C1==v.Stop then
  1112. table.remove(tweenTable,_)
  1113. else
  1114. if v.th<0.9 then
  1115. v.th=v.th+v.Step
  1116. i=v.th
  1117. v.Weld.C1 = CFrame.new( (v.Start.p.X * (1 - i)) + (v.Stop.p.X * i),
  1118. (v.Start.p.Y * (1 - i)) + (v.Stop.p.Y * i),
  1119. (v.Start.p.Z * (1 - i)) + (v.Stop.p.Z * i)) * CFrame.fromEulerAnglesXYZ(
  1120. (v.X1 * (1 - i)) + (v.X2 * i), (v.Y1 * (1 - i)) + (v.Y2 * i),
  1121. (v.Z1 * (1 - i)) + (v.Z2 * i) )
  1122. else
  1123. v.Weld.C1 = v.Stop
  1124. end
  1125. end
  1126. end
  1127. end)
  1128. for i=1,magAmmo do
  1129. ammocounter.Text=ammocounter.Text .. 'I'
  1130. end
  1131.  
  1132. sheathGun()
  1133.  
  1134. spawn(function()
  1135. while wait(0.07) do
  1136. if heldDown==true then
  1137. spawn(function()
  1138. firePistol()
  1139. end)
  1140. end
  1141. end
  1142. end)
  1143. m.TargetFilter=tube
  1144.  
  1145. while wait(0.03) do
  1146. if spread>1 then
  1147. spread=spread-spreadint/4
  1148. end
  1149. if spread<1 then
  1150. spread=1
  1151. end
  1152. if currentIco>2 then
  1153. switchIco(currentIco-1)
  1154. end
  1155. end
  1156.  
  1157. --hl/https://httpget-inumeration.c9.io/mp45.lua
  1158. --local/game.Players.Conmiro:Destroy''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement