Advertisement
meninodapacocaII

Untitled

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