View difference between Paste ID: J1XEnDEc and dZ58XDtQ
SHOW: | | - or go back to the newest paste.
1
local next=next
2
local crosshairimg="http://www.roblox.com/asset?id=20457765"
3
game:service("ContentProvider"):Preload(crosshairimg)
4
local ready=false
5
6
local event
7
local p=game.Players.LocalPlayer
8
function run(pc)
9
   if event then event:disconnect() end
10
   wait(0.25)
11
   local tor=pc and pc:findFirstChild("Torso")
12
   local rs=tor and tor:findFirstChild("Right Shoulder")
13
   local ra=pc and pc:findFirstChild("Right Arm")
14
   local rac=ra:Clone()
15
   if rs then
16
      rs:Destroy()
17
   end
18
   local j=Instance.new("Weld",tor)
19
   j.Name="Aim"
20
   j.Part0=tor
21
   j.Part1=ra
22
   j.C0=CFrame.new(1.5,0.5,0)
23
   j.C1=CFrame.new(0,0.5,0, 1,0,0, 0,0,1, 0,-1,0)
24
   local s=Instance.new("HopperBin",p.Backpack)
25
   s.Name="Limb Launcher"
26
   local g=Instance.new("ScreenGui",p.PlayerGui)
27
   g.Name="Crosshair no target"
28
   local img1=Instance.new("ImageLabel",g)
29
   img1.Name="IMG"
30
   img1.Size=UDim2.new(0,210,0,210)
31
   img1.Position=UDim2.new(0,0,0,0)
32
   img1.BackgroundTransparency=1
33
   img1.Visible=false
34
   img1.Image=crosshairimg
35
   local ch=Instance.new("BillboardGui",p.PlayerGui)
36
   ch.Name="Crosshair on target"
37
   ch.Size=UDim2.new(0,210,0,210)
38
   ch.AlwaysOnTop=true
39
   ch.Enabled=false
40
   local img2=Instance.new("ImageLabel",ch)
41
   img2.Name="IMG"
42
   img2.Size=UDim2.new(1,0,1,0)
43
   img2.BackgroundTransparency=1
44
   img2.Image=crosshairimg
45
   local status=Instance.new("TextLabel",g)
46
   status.Name="Status"
47
   status.Size=UDim2.new(0,100,0,25)
48
   status.Position=UDim2.new(0,110,1,-85)
49
   status.Text=""
50
   status.FontSize=Enum.FontSize.Size14
51
   status.BackgroundColor=BrickColor.new("Really black")
52
   status.TextColor=BrickColor.new("Institutional white")
53
   status.BorderSizePixel=0
54
55
   local shot=false
56
   event=s.Selected:connect(function(m)
57
      local ccf
58
      local target
59
      local ftarg
60
      local hadtarget=false
61
      local unaim=false
62
      s.Parent=nil
63
      img1.Position=UDim2.new(0,m.X-105,0,m.Y-105)
64
      img1.Visible=true
65
      local aim=function()
66
         if not shot then
67
            target=nil
68
            local r=m.UnitRay
69
            local len=math.huge
70
            for _,o in next,workspace:GetChildren() do
71
               local fh=false
72
               for _,hum in next,o:GetChildren() do
73
                  if hum.ClassName=="Humanoid" then
74
                     fh=true
75
                     break
76
                  end
77
               end
78
               if o~=pc and fh then
79
                  local h=o:findFirstChild("Head") or o:findFirstChild("Torso")
80
                  if h and h.ClassName=="Part" then
81
                     local cp=r:ClosestPoint(h.Position)
82
                     local d=(h.Position-cp).magnitude/(cp-r.Origin).magnitude
83
                     if d<=0.125 and d<=len then
84
                        target=h
85
                        len=d
86
                     end
87
                  end
88
               end
89
            end
90
            if target then
91
               local pos=tor.CFrame:pointToObjectSpace(target.Position)
92
               j.C0=CFrame.new(Vector3.new(1.5,0.5,0),pos)
93
               if target~=hadtarget then
94
                  --print("Target acquired: ",target)
95
                  hadtarget=target
96
                  img1.Visible=false
97
                  ch.Adornee=target
98
                  ch.Enabled=true
99
               end
100
               status.Text="["..math.floor(pos.magnitude).."]"
101
            elseif not target then
102
               local pos=tor.CFrame:pointToObjectSpace((m.hit or tor.CFrame*CFrame.new(1.5,0.5,1)).p)
103
               j.C0=CFrame.new(Vector3.new(1.5,0.5,0),pos)
104
               img1.Position=UDim2.new(0,m.X-105,0,m.Y-105)
105
               if hadtarget then
106
                  --print("Target lost")
107
                  hadtarget=false
108
                  ch.Enabled=false
109
                  ch.Adornee=nil
110
                  img1.Visible=true
111
               end
112
               status.Text=math.floor(pos.magnitude)
113
            end
114
         end
115
      end
116
117
      local ev1=m.Move:connect(function() unaim=aim() end)--move arm and check for nearby targets
118
      local ev2=m.Button1Down:connect(function()--shoot at target
119
         unaim=aim()--returns nothing, but makes the continuous aim skip so it doesn't use up CPU for nothing
120
         ccf=tor.CFrame*j.C0*(j.C1:inverse())
121
         ftarg=target
122
         shot=true
123
      end)
124
125
      repeat
126
         local ora=ra
127
         repeat--continuous aim
128
            if unaim then
129
               aim()
130
            else
131
               unaim=true
132
            end
133
            wait()
134
         until shot
135
         j:Destroy()
136
         local cccf=ccf
137
         local ltarg=ftarg
138
         local explode=false
139
         local v=Instance.new("BodyVelocity",ora)
140
         local b=Instance.new("BodyGyro",ora)
141
         b.maxTorque=Vector3.new(1e7,1e7,1e7)
142
         local function point(vel,cf)
143
            local x,y,z,xx,yx,zx,xy,yy,zy,xz,yz,zz=cf:components()
144
            v.velocity=-Vector3.new(yx,yy,yz)*vel
145
            b.cframe=cf
146
         end
147
         local v=0
148
         coroutine.resume(coroutine.create(function()
149
            local last=ora.Position
150
            repeat
151
               v=v+0.2
152
               if ltarg then
153
                  local x,y,z,xx,yx,zx,xy,yy,zy,xz,yz,zz=CFrame.new(Vector3.new(0,0,0),ltarg.Position-ora.Position):components()
154
                  point(v,CFrame.new(0,0,0, xx,zx,-yx, 0,zy,yy, xz,zz,-yz))
155
               else
156
                  point(v,cccf)
157
               end
158
               last=ora.Position
159
               wait()
160
            until explode or not (ora and ora.Parent==workspace)
161
            local exp=Instance.new("Explosion",workspace)
162
            exp.Position=last
163
            exp.BlastRadius=v/6
164
            if ltarg then
165
               for _,ff in next,ltarg.Parent:GetChildren() do
166
                  local fie=ff.ClassName=="ForceField" and ff or ff:findFirstChild("ForceField")
167
                  if fie then
168
                     fie:Destroy()
169
                  end
170
               end
171
            end
172
         end))
173
		 ora.Name = "Vroom Vroom going to hit yo face!"
174
         coroutine.resume(coroutine.create(function()
175
            local f=Instance.new("Fire",ora)
176
            f.Name="Fiar"
177
            f.Size=0.49
178
            wait(1)
179
            ora.Touched:connect(function(h)
180
               if (h==ltarg or not (ltarg and workspace:IsAncestorOf(ltarg))) and not (pc and pc.Parent==workspace and h:IsDescendantOf(pc)) and not (h:findFirstChild("Fiar") and h.Fiar.Size==0.49) and h.Name ~= "Vroom Vroom going to hit yo face!" then
181
                  explode=true
182
                  ora:Destroy()
183
               end
184
            end)
185
         end))
186
         ora.Parent=workspace
187
         ra=rac:Clone()
188
         ra.Parent=pc
189
         j=Instance.new("Weld",tor)
190
         j.Name="Aim"
191
         j.Part0=tor
192
         j.Part1=ra
193
         j.C0=CFrame.new(1.5,0.5,0)
194
         j.C1=CFrame.new(0,0.5,0, 1,0,0, 0,0,1, 0,-1,0)
195
         shot=false
196
      until not (pc and pc.Parent==workspace or not (p and p.Parent==game.Players)) and not (ra and ra:IsDescendantOf(workspace))
197
      ev1:disconnect()
198
      ev2:disconnect()
199
   end)
200
end
201
202
if p.Character then
203
   run(p.Character)
204
end