-- ModuleScript GunClient (via decompile) local UserInputService_upv_1 = game:GetService("UserInputService") local RunService_upv_1 = game:GetService("RunService") local Players_upv_1 = game:GetService("Players") local TweenService_upv_1 = game:GetService("TweenService") local CollectionService_upv_1 = game:GetService("CollectionService") local GuiService_upv_1 = game:GetService("GuiService") local ReplicatedStorage_1 = game:GetService("ReplicatedStorage") local _ = game:GetService("InsertService") local v1 = game:GetService("ContentProvider") local Parent_1 = script.Parent local clock_upv_1 = os.clock local CurrentCamera_upv_1 = workspace.CurrentCamera local LocalPlayer_upv_1 = Players_upv_1.LocalPlayer local u1 = LocalPlayer_upv_1:GetMouse() local Modules_1 = Parent_1.Modules local Signal_upv_1 = require(Modules_1.Signal) local Spring_upv_1 = require(Modules_1.Spring) local Projectile_upv_1 = require(Modules_1.Projectile) local Trove_upv_1 = require(Modules_1.Trove) local VFX_upv_1 = require(Modules_1.VFX) local Device_upv_1 = require(Modules_1.Device) local Shared_upv_1 = require(Modules_1.Shared) local GunStyles_upv_1 = require(Modules_1.GunStyles) local AimAssistController_upv_1 = require(ReplicatedStorage_1.Modules.AimAssistController) local AimAssistEnum_upv_1 = require(ReplicatedStorage_1.Modules.AimAssistController.AimAssistEnum) local Coroutine_upv_1 = Shared_upv_1.Coroutine local Remotes_1 = Parent_1.Remotes local Fire_upv_1 = Remotes_1.Fire local Reload_upv_1 = Remotes_1.Reload local Ticked_upv_1 = Remotes_1.Ticked local Slide_upv_1 = Remotes_1.Slide local SwitchBeam_upv_1 = Remotes_1.SwitchBeam local Effect_upv_1 = Remotes_1.Effect local Update_upv_1 = Remotes_1.Update local Information_upv_1 = Remotes_1.Information local u2 = nil local u3 = false local u4 = false local u5 = Remotes_1:FindFirstChild("Position") if not (u5) then local next_1 = next for v2, value_1 in next_1, Remotes_1:GetChildren() do if string.match(value_1.Name, "^%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x$") then u5 = value_1 break end end end local u6 = -1 local u7 = Remotes_1.RequestCode:InvokeServer(true) local u8 = ReplicatedStorage_1:WaitForChild("Remotes"):WaitForChild("GetConfigInfo"):InvokeServer("AimAssist") local u9 = RaycastParams.new() u9.CollisionGroup = "Bullet" u9.FilterType = Enum.RaycastFilterType.Exclude u9.FilterDescendantsInstances = {LocalPlayer_upv_1.Character, workspace.Zones, workspace.Storage, workspace.Map.Background, CollectionService_upv_1:GetTagged("IgnoreBullets")} local u10 = RaycastParams.new() u10.CollisionGroup = "Bullet" u10.FilterType = Enum.RaycastFilterType.Exclude u10.FilterDescendantsInstances = {workspace.Zones, workspace.Storage, workspace.Map.Background, CollectionService_upv_1:GetTagged("IgnoreBullets")} u1.TargetFilter = workspace.Zones local u11 = Instance.new("BlurEffect") u11.Name = "GunBlur" u11.Size = 0 u11.Enabled = false u11.Parent = game.Lighting local tbl_upv_1 = {Equip = 0, Shoot = 0} local tbl_upv_2 = {} local tbl_upv_3 = {} for v3, value_2 in next, Parent_1.Effects:GetChildren() do tbl_upv_3[value_2.Name] = require(value_2) end local function GetValidId(a1) --[[ name: GetValidId line: 115 ]] if string.match(a1, "rbxassetid://") then return a1 end return "rbxassetid://" .. a1 end local function RandomChild(a1) --[[ name: RandomChild line: 122 ]] local v1 = a1:GetChildren() return v1[math.random(1, #v1)] end local function GetMouseHitPosition(a1, a2, a3) --[[ name: GetMouseHitPosition line: 127 upvalues: CurrentCamera_upv_1 (copy, index: 1) u9 (copy, index: 2) ]] local v2 = a2.AbsolutePosition + a2.AbsoluteSize / 2 local v3 = CurrentCamera_upv_1:ScreenPointToRay(v2.X, v2.Y) v2 = workspace:Raycast(v3.Origin, v3.Direction * 5000, u9) return (v2 and (v2.Position)) or (v3.Origin + v3.Direction * 5000) end local tbl_upv_4 = {} tbl_upv_4.__index = tbl_upv_4 function tbl_upv_4.new(a1, a2) --[[ name: new line: 175 upvalues: Shared_upv_1 (copy, index: 1) Trove_upv_1 (copy, index: 2) Signal_upv_1 (copy, index: 3) tbl_upv_4 (copy, index: 4) ]] if not (a1:GetAttribute("_Loaded")) then a1:GetAttributeChangedSignal("_Loaded"):Wait() end local v4 = a1:WaitForChild("Settings", 5) if not v4 then return nil end local v5 = require(v4) local v6 = a1:GetAttribute("Id") local u12 = Shared_upv_1.SetValues({}, a2) if u12 then u12.Instance = a1 u12.Handle = a1:WaitForChild("Handle", 5) u12.Id = v6 u12.Settings = v5 u12.IsEquipped = false u12.IsDestroyed = false u12._Random = Random.new(a1:GetAttribute("Seed")) u12.Trove = Trove_upv_1.new() u12.EquipTrove = Trove_upv_1.new() u12.Equipped = u12.Trove:Add(Signal_upv_1.new()) u12.Unequipped = u12.Trove:Add(Signal_upv_1.new()) setmetatable(u12, tbl_upv_4) u12.Trove:Add( a1:GetAttributeChangedSignal("Seed"):Connect( function() --[[ line: 212 upvalues: u12 (copy, index: 1) a1 (copy, index: 2) ]] u12._Random = Random.new(a1:GetAttribute("Seed")) end ) ) return u12 end return nil end function tbl_upv_4.Get(a1, a2) --[[ name: Get line: 219 ]] return a1.Instance:GetAttribute(a2) end function tbl_upv_4.Set(a1, a2, a3) --[[ name: Set line: 223 ]] return a1.Instance:SetAttribute(a2, a3) end function tbl_upv_4.FireBullet(a1, a2, a3) --[[ name: FireBullet line: 227 upvalues: Projectile_upv_1 (copy, index: 1) u10 (copy, index: 2) VFX_upv_1 (copy, index: 3) LocalPlayer_upv_1 (copy, index: 4) ]] local Settings_upv_1 = a1.Settings local u13 = Projectile_upv_1.new({Acceleration = Vector3.new(0, 0, 0), Origin = a2, Direction = a3, Speed = Settings_upv_1.BulletSpeed, RaycastParams = u10}) local u14 = VFX_upv_1:Tracer(u13.CFrame, a1.Handle, Settings_upv_1.AmmoType) u13.Updated = function() --[[ line: 239 upvalues: u13 (copy, index: 1) u14 (copy, index: 2) Settings_upv_1 (copy, index: 3) ]] local Distance_1 = u13.Distance local v7 = math.max(0.1, Distance_1 / 600) if u14 then u14.CFrame = u13.CFrame u14.Attachment0.CFrame = CFrame.new(-v7, 0, 0) u14.Attachment1.CFrame = CFrame.new(v7, 0, 0) end if Settings_upv_1.Range < Distance_1 then return u13:Destroy() end end u13.OnHit = function(a4, a5) --[[ line: 254 upvalues: u13 (copy, index: 1) VFX_upv_1 (copy, index: 2) Settings_upv_1 (copy, index: 3) LocalPlayer_upv_1 (copy, index: 4) a2 (copy, index: 5) a1 (copy, index: 6) ]] u13:Destroy() local Instance_1 = a5.Instance local v8 = Instance_1.Parent:FindFirstChildWhichIsA("Humanoid") if v8 then if LocalPlayer_upv_1.Character == v8.Parent then VFX_upv_1:MarkerHit(a2, LocalPlayer_upv_1, a1.Instance, Instance_1.Name) end else VFX_upv_1:GroundEffect(a5, Settings_upv_1.Effect) end end u13.Destroyed = function() --[[ line: 268 upvalues: u14 (copy, index: 1) ]] if not u14 then return end u14:Destroy() end end function tbl_upv_4.Fire(a1, a2, a3) --[[ name: Fire line: 275 upvalues: VFX_upv_1 (copy, index: 1) Shared_upv_1 (copy, index: 2) ]] local Handle_1 = a1.Handle if not Handle_1 or not Handle_1:FindFirstChild("FireSounds") then return end local _Random_1 = a1._Random local Settings_2 = a1.Settings local IsShotgun_1 = Settings_2.IsShotgun local v9 = (IsShotgun_1 and (Settings_2.BulletCount)) or 1 VFX_upv_1:Muzzle(Handle_1:FindFirstChild("GunMuzzlePoint"), a1.Instance.Name) VFX_upv_1:EjectShell(a1.Settings.AmmoType, Handle_1.FireSounds, a1.Instance and (a1.Instance.Name)) for _, value_3 in Handle_1.FireSounds:GetChildren() do if not (_G.GunVolume) then value_3:Play() continue end local v10 = value_3:GetAttribute("Volume") local v11 = v10 and (v10 * _G.GunVolume) if not (v10) then value_3:Play() continue end if v11 then value_3.Volume = v11 end value_3:Play() end local v12 = nil for _ = 1, v9 do if IsShotgun_1 then v12 = Shared_upv_1.RandomizeDirection(a2, a3, _Random_1, Settings_2) else v12 = a3 end a1:FireBullet(a2, v12) end end function tbl_upv_4.OnEquip(a1) --[[ name: OnEquip line: 314 upvalues: tbl_upv_2 (copy, index: 1) ]] if a1.Id then tbl_upv_2[a1.Id] = a1 a1.EquipTrove:Add( function() --[[ line: 317 upvalues: tbl_upv_2 (copy, index: 1) a1 (copy, index: 2) ]] if tbl_upv_2[a1.Id] ~= a1 then return end tbl_upv_2[a1.Id] = nil end ) end a1.Handle = a1.Handle or a1.Instance and a1.Instance:FindFirstChild("Handle") if _G.GunVolume and a1.Handle then for _, value_4 in a1.Handle:GetChildren() do if not (value_4:IsA("Sound")) then continue end local v14 = value_4:GetAttribute("Volume") if v14 then value_4.Volume = v14 * _G.GunVolume end end end if not a1.Instance or not a1.Handle then return end if _G.LowGFX or not _G.Effects then for _, value_5 in a1.Instance:QueryDescendants("ParticleEmitter [Enabled=true]") do value_5.Enabled = false end for _, value_6 in a1.Instance:QueryDescendants("Beam [Enabled=true]") do if value_6.Parent.Name ~= "BEAM" then value_6.Enabled = false end end end end local tbl_upv_5 = {} tbl_upv_5.__index = tbl_upv_5 function tbl_upv_5.new(a1) --[[ name: new line: 360 upvalues: Shared_upv_1 (copy, index: 1) LocalPlayer_upv_1 (copy, index: 2) u4 (ref, index: 3) Trove_upv_1 (copy, index: 4) Spring_upv_1 (copy, index: 5) Signal_upv_1 (copy, index: 6) AimAssistController_upv_1 (copy, index: 7) tbl_upv_5 (copy, index: 8) ]] if not (a1:GetAttribute("_Loaded")) then a1:GetAttributeChangedSignal("_Loaded"):Wait() end local v15 = a1:WaitForChild("Settings", 5) if not v15 then return nil end local v16 = require(v15) local v17 = a1:GetAttribute("Id") local u15 = Shared_upv_1.SetValues({}, LocalPlayer_upv_1) if not u15 then return nil end u15.Instance = a1 u15.Handle = a1:WaitForChild("Handle", 5) u15.Id = v17 u15.Settings = v16 u15.PendingSlide = false u15.LastFired = 0 u15.DeltaTime = (v16.FireRate / 60) ^ -1 u15.IsEquipped = false u15.IsDestroyed = false u15._Animations = {} u15._FireRequest = false u15._LastRequest = false u15._HoldState = false u15._ScopeState = false u4 = false u15._EquipTime = 0 u15._SlideTime = math.huge u15._dt = 0 u15._Random = Random.new(a1:GetAttribute("Seed")) u15.DualShot = 1 u15.Trove = Trove_upv_1.new() u15.EquipTrove = Trove_upv_1.new() u15.Spring_Recoil = Spring_upv_1.new(nil, 100, 5, 2) u15.Equipped = u15.Trove:Add(Signal_upv_1.new()) u15.Unequipped = u15.Trove:Add(Signal_upv_1.new()) u15.Beam = u15.Instance:FindFirstChild("BEAM", true) ~= nil u15.aimAssistController = AimAssistController_upv_1.new() local Animator_1 = u15.Humanoid:WaitForChild("Animator") v15 = Animator_1 local v19 = nil for key_1, value_7 in v16.Animations do local v20 = Instance.new("Animation") local Id_1 = value_7.Id if string.match(Id_1, "rbxassetid://") then v19 = Id_1 else v19 = "rbxassetid://" .. Id_1 end v20.AnimationId = v19 v20.Parent = u15.Handle v20.Name = key_1 v19 = v15:LoadAnimation(v20) u15._Animations[key_1] = {Instance = v20, Track = v19, Speed = value_7.Speed, Priority = value_7.Priority} u15.Trove:Add(v20) u15.Trove:Add(v19) end local Settings_3 = a1:FindFirstChild("Settings") if Settings_3 and Settings_3:FindFirstChild("ShootRun") then local v21 = Instance.new("Animation") v21.AnimationId = string.match(127163229087574, "rbxassetid://") and 127163229087574 or "rbxassetid://" .. 127163229087574 v21.Parent = u15.Handle v21.Name = "ShootRun" local v23 = v15:LoadAnimation(v21) u15._Animations[v21.Name] = {Speed = 5, Instance = v21, Track = v23, Priority = Enum.AnimationPriority.Action4} u15.Trove:Add(v21) u15.Trove:Add(v23) end setmetatable(u15, tbl_upv_5) u15:Set("Ammo_Client", u15:Get("Ammo_Server")) u15:Set("Jammed", false) u15:Set("Slided", false) u15.Trove:Add( a1:GetAttributeChangedSignal("Seed"):Connect( function() --[[ line: 452 upvalues: u15 (copy, index: 1) a1 (copy, index: 2) ]] u15._Random = Random.new(a1:GetAttribute("Seed")) end ) ) return u15 end function tbl_upv_5.Get(a1, a2) --[[ name: Get line: 459 ]] return a1.Instance:GetAttribute(a2) end function tbl_upv_5.Set(a1, a2, a3) --[[ name: Set line: 463 ]] return a1.Instance:SetAttribute(a2, a3) end function tbl_upv_5.PlayAnimation(a1, a2) --[[ name: PlayAnimation line: 467 ]] local v24 = a1._Animations[a2] if not v24 then return end if v24.Priority ~= nil then v24.Track.Priority = v24.Priority end v24.Track:Play(1 / v24.Speed) end function tbl_upv_5.StopAnimation(a1, a2) --[[ name: StopAnimation line: 477 ]] local v25 = a1._Animations[a2] v25.Track:Stop(1 / v25.Speed) end function tbl_upv_5.Update(a1, a2) --[[ name: Update line: 502 upvalues: clock_upv_1 (copy, index: 1) Device_upv_1 (copy, index: 2) CurrentCamera_upv_1 (copy, index: 3) LocalPlayer_upv_1 (copy, index: 4) GuiService_upv_1 (copy, index: 5) u1 (copy, index: 6) Ticked_upv_1 (copy, index: 7) ]] local v26 = clock_upv_1() local v27 = a1.Settings local _FireRequest_1 = a1._FireRequest local v28 = math.min(a2, 0.03333333333333333) local v29 = a1.Spring_Recoil:Update(v28 * (v27.RecoilSpeed * 0.9)) local v30 = a1._FireRequest ~= a1._LastRequest local v31 = _FireRequest_1 and (a1.DeltaTime <= v26 - a1.LastFired) if v26 - a1._EquipTime < v27.EquipTime then v31 = false end v31 = v27.IsAutomatic or v31 and v30 v27 = a1.Humanoid:GetAttribute("_RagdollState") if not (v27) then v27 = a1._HoldState if not (v27) then v27 = a1:Get("IsReloading") if not (v27) then v27 = true if not (a1:Get("Ammo_Client") <= 0) then v27 = a1:Get("IsJammed") or (not a1:Get("Slided") or (v26 - a1._SlideTime < 0.8)) end end end end if Device_upv_1:IsOnMobile() then local v32 = CurrentCamera_upv_1.ViewportSize / 2 local v33 if (CurrentCamera_upv_1) and CurrentCamera_upv_1.CameraType ~= Enum.CameraType.Scriptable then v33 = (CurrentCamera_upv_1.Focus.Position - CurrentCamera_upv_1.CFrame.Position).Magnitude <= 1 else v33 = false end if v33 or false or LocalPlayer_upv_1:GetAttribute("ShiftLock") then local ViewportSize_1 = CurrentCamera_upv_1.ViewportSize a1._Crosshair.Position = UDim2.fromOffset(ViewportSize_1.X / 2, (ViewportSize_1.Y / 2) - GuiService_upv_1:GetGuiInset().Y) else a1._Crosshair.Position = UDim2.fromOffset(v32.X, v32.Y + (-180 - ((CurrentCamera_upv_1.ViewportSize.Y - 720) * 0.2))) end else a1._Crosshair.Position = UDim2.fromOffset(u1.X, u1.Y) end a1._dt = a2 a1._LastRequest = _FireRequest_1 local v34 = v28 * 60 CurrentCamera_upv_1.CFrame = CurrentCamera_upv_1.CFrame * CFrame.Angles(math.rad(v29.Y * v34), math.rad(v29.X * v34), math.rad(v29.Z)) if not v31 then return end if v27 then if not v30 then return end Ticked_upv_1:FireServer() else a1:Fire(a1.Settings.IsMultiple or 1) end end local function OnHumanoidHit(a1) --[[ name: OnHumanoidHit line: 135 upvalues: TweenService_upv_1 (copy, index: 1) ]] local v35 = a1 and (a1.Parent and (a1.Parent:FindFirstChildWhichIsA("Humanoid"))) local v36 = v35 and (v35.Parent) if not v36 then return end if v36:FindFirstChild("OnboardingHighlight") then script.Parent.Parent.Parent.Remotes.Notify:FireServer("This Player is in a Tutorial!", 5) elseif _G.Effects ~= false and _G.HitMarkers ~= false then local u16 = Instance.new("Highlight") u16.OutlineTransparency = 0.8 u16.FillTransparency = 1 u16.Adornee = ((a1.Name == "HumanoidRootPart") and (v36.UpperTorso)) or a1 u16.Name = "HitEffect" u16.Parent = v35 local tbl_6 = {FillTransparency = 0.5} TweenService_upv_1:Create(u16, TweenInfo.new(0.1), tbl_6):Play() task.delay( 0.1, function() --[[ line: 160 upvalues: u16 (copy, index: 1) TweenService_upv_1 (copy, index: 2) ]] if u16 then local tbl_7 = {FillTransparency = 1} TweenService_upv_1:Create(u16, TweenInfo.new(0.1), tbl_7):Play() end end ) task.delay( 0.2, function() --[[ line: 166 upvalues: u16 (copy, index: 1) ]] if not u16 then return end u16:Destroy() end ) return end end function tbl_upv_5.FireBullet(a1, a2, a3) --[[ name: FireBullet line: 549 upvalues: Projectile_upv_1 (copy, index: 1) u9 (copy, index: 2) VFX_upv_1 (copy, index: 3) u2 (ref, index: 4) u5 (ref, index: 5) u7 (copy, index: 6) TweenService_upv_1 (copy, index: 7) OnHumanoidHit (copy, index: 8) Players_upv_1 (copy, index: 9) LocalPlayer_upv_1 (copy, index: 10) CurrentCamera_upv_1 (copy, index: 11) ]] local Settings_upv_4 = a1.Settings local u17 = Projectile_upv_1.new({Acceleration = Vector3.new(0, 0, 0), Origin = a2, Direction = a3, Speed = Settings_upv_4.BulletSpeed, RaycastParams = u9}) local u18 = VFX_upv_1:Tracer(u17.CFrame, a1.Handle, Settings_upv_4.AmmoType) u17.Updated = function() --[[ line: 560 upvalues: u17 (copy, index: 1) u18 (copy, index: 2) Settings_upv_4 (copy, index: 3) ]] local Distance_2 = u17.Distance local v37 = math.max(0.1, Distance_2 / 600) if u18 then u18.CFrame = u17.CFrame u18.Attachment0.CFrame = CFrame.new(-v37, 0, 0) u18.Attachment1.CFrame = CFrame.new(v37, 0, 0) end if Settings_upv_4.Range < Distance_2 then return u17:Destroy() end end u17.OnHit = function(a4, a5) --[[ line: 575 upvalues: Settings_upv_4 (copy, index: 1) a1 (copy, index: 2) u17 (copy, index: 3) u2 (ref, index: 4) u5 (ref, index: 5) u7 (copy, index: 6) TweenService_upv_1 (copy, index: 7) OnHumanoidHit (copy, index: 8) VFX_upv_1 (copy, index: 9) Players_upv_1 (copy, index: 10) LocalPlayer_upv_1 (copy, index: 11) ]] local v38 if Settings_upv_4.AmmoType == "Rocket" then local ExplosionRadius_1 = Settings_upv_4.ExplosionRadius if ExplosionRadius_1 then v38 = Settings_upv_4.ExplosionDamage else v38 = ExplosionRadius_1 end else v38 = false if a1.Instance.Name == "Raygun" then v38 = Settings_upv_4.ExplosionRadius v38 = Settings_upv_4.ExplosionRadius and Settings_upv_4.ExplosionDamage end end if u17 then u17:Destroy() end local v39 = a5.Instance local v40 = v39.Parent:FindFirstChildWhichIsA("Humanoid") local v41 = v39:FindFirstAncestorWhichIsA("Model") local v42 = v40 and (v40.Parent) if v40 and v42 then local v43 = nil if v38 then VFX_upv_1:GroundEffect(a5, Settings_upv_4.Effect) else local v44 = workspace:GetServerTimeNow() v43 = u2 local v45 if typeof(v43) == "string" then local v46 = 0 for n_1 = 1, #v43 do v46 = v46 + string.byte(u2, n_1) * n_1 end v45 = (v46 % 37) * 120 + 100 else v45 = 0 end u5:FireServer(u7, a1.Id, v39, u17.Direction, nil, u2, v44 - v45) task.spawn( function() --[[ line: 594 upvalues: TweenService_upv_1 (copy, index: 1) a1 (copy, index: 2) ]] local v47 = TweenInfo.new(0.15) local tbl_8 = {} tbl_8.ImageColor3 = Color3.fromRGB(255, 42, 46) TweenService_upv_1:Create(a1._Crosshair, v47, tbl_8):Play() task.wait(0.2) local v48 = TweenInfo.new(0.15) local tbl_9 = {} tbl_9.ImageColor3 = Color3.fromRGB(255, 255, 255) TweenService_upv_1:Create(a1._Crosshair, v48, tbl_9):Play() end ) OnHumanoidHit(v39) end else VFX_upv_1:GroundEffect(a5, Settings_upv_4.Effect) end if v41 and v41.Name == "Target" and v41.Parent.Name == "Targets" then local Damage_1 = Settings_upv_4.Damage VFX_upv_1:HitTarget(a5.Position, v41, ((Settings_upv_4.IsShotgun) and (Damage_1 / Settings_upv_4.BulletCount)) or Damage_1) end if not v38 then return end if u17 then local ExplosionRadius_2 = Settings_upv_4.ExplosionRadius v40 = Settings_upv_4.ExplosionDamage local v49 = nil local v50 = 0 local v51 = nil v39 = v49 local v52 = nil for _, value_8 in next, Players_upv_1:GetPlayers() do local Character_1 = value_8.Character v51 = Character_1 and (Character_1:FindFirstChildWhichIsA("Humanoid")) local v53 = Character_1 and (Character_1:FindFirstChild("HumanoidRootPart")) if not (Character_1) or not (Character_1) or not (v53) then continue end v51 = (v53.Position - u17).Magnitude if ExplosionRadius_2 < v51 then continue end local v54 = v51 / ExplosionRadius_2 v51 = v40 * math.clamp(math.exp(-v54 * 3) * 2.5, 0, 1) if v54 <= 0.2 then v51 = v40 end if value_8 == LocalPlayer_upv_1 then v39, v50 = Character_1, v51 continue end local v55 = workspace:GetServerTimeNow() local v56 = u2 if typeof(v56) ~= "string" then v52 = 0 u5:FireServer(u7, a1.Id, Character_1, u17.Direction, v51, u2, v55 - v52) continue end local v57 = 0 for n_2 = 1, #v56 do v57 = v57 + string.byte(u2, n_2) * n_2 end v52 = v57 % 37 * 120 + 100 u5:FireServer(u7, a1.Id, Character_1, u17.Direction, v51, u2, v55 - v52) end if v39 then local v58 = workspace:GetServerTimeNow() local v59 = u2 if typeof(v59) == "string" then local v60 = 0 for n_3 = 1, #v59 do v60 = v60 + string.byte(u2, n_3) * n_3 end v40 = (v60 % 37) * 120 + 100 else v40 = 0 end u5:FireServer(u7, a1.Id, v39, u17.Direction, v50, u2, v58 - v40) end end end u17.Destroyed = function() --[[ line: 666 upvalues: u18 (copy, index: 1) ]] if not u18 then return end u18:Destroy() end if a1.Instance.Name ~= "Flintlock" or (_G.Crouching) then return end if not (_G.Crawling) then local Character_2 = a1.Character if Character_2 then local v61 = Character_2.PrimaryPart or (Character_2:FindFirstChild("HumanoidRootPart")) if v61 then local v62 = Instance.new("BodyVelocity") v62.MaxForce = Vector3.new(1e+05, 1e+05, 1e+05) v62.Velocity = (-CurrentCamera_upv_1.CFrame.LookVector + Vector3.new(0, 0.30000001192092896, 0)).Unit * 200 v62.P = 1500 v62.Parent = v61 task.delay(0.3, v62.Destroy, v62) end end end end local tbl_upv_10 = {"Finger-Guns", "Dual-Uzis", "Dual-Beretta"} function tbl_upv_5.Fire(a1, a2) --[[ name: Fire line: 697 upvalues: clock_upv_1 (copy, index: 1) u9 (copy, index: 2) Device_upv_1 (copy, index: 3) tbl_upv_10 (copy, index: 4) CurrentCamera_upv_1 (copy, index: 5) u1 (copy, index: 6) Fire_upv_1 (copy, index: 7) u7 (copy, index: 8) VFX_upv_1 (copy, index: 9) TweenService_upv_1 (copy, index: 10) u11 (copy, index: 11) Shared_upv_1 (copy, index: 12) ]] local v63, v64 = nil, nil for _ = 1, a2 or 1 do if a1:Get("Ammo_Client") <= 0 then return end local u19 = clock_upv_1() if not (a1.Settings.EquipTime <= u19 - a1._EquipTime) or a1._HoldState then continue end if a1.Instance.Name == "Minigun" and a1.Humanoid.WalkSpeed >= 10 or a1.Character:GetAttribute("Critical") then return end local _Random_2 = a1._Random local Settings_upv_5 = a1.Settings local IsShotgun_2 = Settings_upv_5.IsShotgun local v65 = (IsShotgun_2 and (Settings_upv_5.BulletCount)) or 1 local u20 = Settings_upv_5.Recoil / 5.5 local u21 = 3 u21 = (Device_upv_1:IsOnMobile() and (u21 * 2)) or u21 if _G.Crouching then u20 = u20 * 0.75 u21 = u21 * 1.25 elseif _G.Crawling then u20 = u20 * 0.5 u21 = u21 * 1.5 end local v66 = ((workspace:GetAttribute("CanJam") == true) and (Settings_upv_5.JamChance)) or nil v64 = a1.RootPart local Handle_2 = a1.Handle if not Handle_2:FindFirstChild("MuzzleAttachment") then return end v63 = Handle_2.MuzzleAttachment local v67 = table.find(tbl_upv_10, a1.Instance.Name) if v67 and a1.DualShot == 2 then v63 = Handle_2.SecondMuzzleAttachment end local Position_1 = v63.WorldCFrame.Position local v68 = ((workspace:Raycast(v64.Position, Position_1 - v64.Position, u9)) and (v64.Position)) or Position_1 local v69 if Device_upv_1:IsOnMobile() then local v76 = a1._Crosshair local v77 = a1._Crosshair.AbsolutePosition + a1._Crosshair.AbsoluteSize / 2 v63 = CurrentCamera_upv_1:ScreenPointToRay((a1._Crosshair.AbsolutePosition + a1._Crosshair.AbsoluteSize / 2).X, (a1._Crosshair.AbsolutePosition + a1._Crosshair.AbsoluteSize / 2).Y) local v70 = workspace:Raycast(v63.Origin, v63.Direction * 5000, u9) v69 = (v70 and (v70.Position)) or (v63.Origin + v63.Direction * 5000) else v69 = u1.Hit.Position end v64 = (v69 - v68).Unit if v64.Magnitude < 0.001 then v64 = ((CurrentCamera_upv_1.CFrame.Position + CurrentCamera_upv_1.CFrame.LookVector * 5000) - v68).Unit end local v71 = math.random(30, 100) * u20 / 3 u20 = Vector3.new((math.random(-10, 10) * u20) / 2, v71, -math.random(5, 10)) a1.LastFired = u19 Fire_upv_1:FireServer(u7, v68, v64) if Handle_2.Parent.Settings:FindFirstChild("ShootRun") and a1.Humanoid.WalkSpeed >= 10 then if a1.Humanoid.MoveDirection.Magnitude == 0 then if table.find(tbl_upv_10, a1.Instance.Name) and a1.DualShot ~= 1 then VFX_upv_1:Muzzle(Handle_2:FindFirstChild("SecondGunMuzzlePoint"), a1.Instance.Name) a1:PlayAnimation("FireSecond") else VFX_upv_1:Muzzle(Handle_2:FindFirstChild("GunMuzzlePoint"), a1.Instance.Name) a1:PlayAnimation("Fire") end else VFX_upv_1:Muzzle(Handle_2:FindFirstChild("GunMuzzlePoint"), a1.Instance.Name) a1:PlayAnimation("ShootRun") end elseif table.find(tbl_upv_10, a1.Instance.Name) and a1.DualShot ~= 1 then VFX_upv_1:Muzzle(Handle_2:FindFirstChild("SecondGunMuzzlePoint"), a1.Instance.Name) a1:PlayAnimation("FireSecond") else VFX_upv_1:Muzzle(Handle_2:FindFirstChild("GunMuzzlePoint"), a1.Instance.Name) a1:PlayAnimation("Fire") end VFX_upv_1:EjectShell(a1.Settings.AmmoType, Handle_2.FireSounds, a1.Instance and (a1.Instance.Name)) a1:Set("Ammo_Client", a1:Get("Ammo_Client") - 1) if v66 then local v72 = math.random(1, v66 * 1.5) == 1 a1:Set("IsJammed", v72) end for v78, value_9 in Handle_2.FireSounds:GetChildren() do if not (_G.GunVolume) then value_9:Play() continue end local v73 = value_9:GetAttribute("Volume") v71 = v73 and (v73 * _G.GunVolume) if not (v73) then value_9:Play() continue end if v71 then value_9.Volume = v71 end value_9:Play() end a1.Spring_Recoil:Shove(u20) task.delay( 0.2, function() --[[ line: 803 upvalues: a1 (copy, index: 1) u20 (copy, index: 2) Settings_upv_5 (copy, index: 3) u21 (ref, index: 4) ]] if not a1.IsEquipped then return end a1.Spring_Recoil:Shove(-u20 - Vector3.new(0, -math.clamp(Settings_upv_5.Recoil, 0, 1) / u21, 0)) end ) if _G.Shadows and _G.Effects and not (_G.LowGFX) then local tbl_11 = {Enabled = true, Size = 10} TweenService_upv_1:Create(u11, TweenInfo.new(0.1), tbl_11):Play() task.delay( 0.1, function() --[[ line: 814 upvalues: a1 (copy, index: 1) u19 (copy, index: 2) TweenService_upv_1 (copy, index: 3) u11 (copy, index: 4) ]] if a1.LastFired ~= u19 then return end local tbl_12 = {Enabled = false, Size = 0} TweenService_upv_1:Create(u11, TweenInfo.new(0.1), tbl_12):Play() end ) end for v79 = 1, v65 do local v74 if IsShotgun_2 then v74 = Shared_upv_1.RandomizeDirection(v68, v64, _Random_2, Settings_upv_5) else v74 = v64 end a1:FireBullet(v68, v74) local v75 = table.find(tbl_upv_10, a1.Instance.Name) if v75 then a1.DualShot = ((a1.DualShot ~= 1) and 1) or 2 end end task.wait((60 / a1.Settings.FireRate) / 2) end end function tbl_upv_5.SwitchHold(a1) --[[ name: SwitchHold line: 842 ]] a1._HoldState = not a1._HoldState if a1._HoldState then a1:PlayAnimation("HoldDown") a1:StopAnimation("Idle") else a1:StopAnimation("HoldDown") a1:PlayAnimation("Idle") end end function tbl_upv_5.RestoreScopeCamera(a1) --[[ name: RestoreScopeCamera line: 854 upvalues: LocalPlayer_upv_1 (copy, index: 1) UserInputService_upv_1 (copy, index: 2) ]] LocalPlayer_upv_1.CameraMode = Enum.CameraMode.Classic local _ScopeZoom_1 = a1._ScopeZoom if not _ScopeZoom_1 then return end if _ScopeZoom_1 > 1 then if a1._Sensitivity then UserInputService_upv_1.MouseDeltaSensitivity = a1._Sensitivity end a1._ScopeZoom = nil local CameraMinZoomDistance_upv_1 = LocalPlayer_upv_1.CameraMinZoomDistance local CameraMaxZoomDistance_upv_1 = LocalPlayer_upv_1.CameraMaxZoomDistance LocalPlayer_upv_1.CameraMinZoomDistance = _ScopeZoom_1 LocalPlayer_upv_1.CameraMaxZoomDistance = _ScopeZoom_1 task.delay( 0.1, function() --[[ line: 871 upvalues: LocalPlayer_upv_1 (copy, index: 1) CameraMinZoomDistance_upv_1 (copy, index: 2) CameraMaxZoomDistance_upv_1 (copy, index: 3) ]] LocalPlayer_upv_1.CameraMinZoomDistance = CameraMinZoomDistance_upv_1 LocalPlayer_upv_1.CameraMaxZoomDistance = CameraMaxZoomDistance_upv_1 end ) end end function tbl_upv_5.ToggleScope(a1, a2) --[[ name: ToggleScope line: 878 upvalues: u4 (ref, index: 1) UserInputService_upv_1 (copy, index: 2) CurrentCamera_upv_1 (copy, index: 3) LocalPlayer_upv_1 (copy, index: 4) TweenService_upv_1 (copy, index: 5) ]] local ScopeGUI_1 = a2:FindFirstChild("ScopeGUI") local v76 = ScopeGUI_1 and (ScopeGUI_1:FindFirstChild("Scope")) if not v76 then return end a1._ScopeState = not a1._ScopeState u4 = a1._ScopeState if a1._ScopeState then a1._Sensitivity = UserInputService_upv_1.MouseDeltaSensitivity a1._ScopeZoom = (CurrentCamera_upv_1.CFrame.Position - CurrentCamera_upv_1.Focus.Position).Magnitude v76.Visible = true LocalPlayer_upv_1.CameraMode = Enum.CameraMode.LockFirstPerson UserInputService_upv_1.MouseDeltaSensitivity = a1._Sensitivity / 10 if a1._Crosshair then a1._Crosshair.Visible = false end local v77 = TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local tbl_13 = {} tbl_13.FieldOfView = a1.Settings.ScopeFOV or 15 TweenService_upv_1:Create(CurrentCamera_upv_1, v77, tbl_13):Play() else UserInputService_upv_1.MouseDeltaSensitivity = a1._Sensitivity or 1 a1._Sensitivity = nil v76.Visible = false a1:RestoreScopeCamera() if a1._Crosshair then a1._Crosshair.Visible = true end local v78 = TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local tbl_14 = {FieldOfView = 0} tbl_14.FieldOfView = (_G.FOV or 70) + (((_G.Running ~= true) and 0) or 5) TweenService_upv_1:Create(CurrentCamera_upv_1, v78, tbl_14):Play() end end function tbl_upv_5.SwitchBeam(a1) --[[ name: SwitchBeam line: 914 upvalues: u3 (ref, index: 1) SwitchBeam_upv_1 (copy, index: 2) ]] if u3 then return end u3 = true SwitchBeam_upv_1:FireServer() task.wait(0.5) u3 = false end function tbl_upv_5.Slide(a1) --[[ name: Slide line: 928 upvalues: clock_upv_1 (copy, index: 1) Slide_upv_1 (copy, index: 2) ]] local v79 = clock_upv_1() if not (a1.Settings.EquipTime <= v79 - a1._EquipTime) or (a1._HoldState) then return end if not (a1:Get("Slided")) or a1:Get("IsJammed") then a1._SlideTime = v79 Slide_upv_1:FireServer() a1:PlayAnimation("Slide") end a1:Set("Slided", true) a1:Set("IsJammed", false) end function tbl_upv_5.Reload(a1) --[[ name: Reload line: 941 upvalues: clock_upv_1 (copy, index: 1) LocalPlayer_upv_1 (copy, index: 2) Reload_upv_1 (copy, index: 3) ]] if clock_upv_1() - a1._EquipTime < a1.Settings.EquipTime then return end local Rocket_1 = true if a1:Get("IsReloading") or a1:Get("IsJammed") then Rocket_1 = false elseif a1:Get("Capacity") <= 0 then local v80 = LocalPlayer_upv_1.Backpack:FindFirstChild(a1.Settings.AmmoType .. " Ammo") Rocket_1 = (v80) or false end if not Rocket_1 then return end Reload_upv_1:FireServer(a1.Instance) a1:Set("IsReloading", true) task.delay( a1.Settings.ReloadTime + 0.5, function() --[[ line: 963 upvalues: a1 (copy, index: 1) ]] if not a1.Instance or not a1:Get("IsReloading") then return end a1:Set("IsReloading", false) end ) if not (a1.Settings.IsShotgun) or a1.Settings.IsAutomatic then a1:PlayAnimation("Reload") else task.spawn( function() --[[ line: 970 upvalues: a1 (copy, index: 1) ]] for _ = 1, a1.Settings.BulletCount do if a1.IsEquipped then a1:PlayAnimation("Reload") task.wait(a1.Settings.ReloadTime / a1.Settings.BulletCount) continue else break end end end ) end if a1.Settings.AmmoType == "Rocket" then Rocket_1 = a1.Instance.Model:FindFirstChild("Rocket") local v81 = Rocket_1 and (Rocket_1:IsA("BasePart") and (Rocket_1:FindFirstChild("Extra"))) if not Rocket_1 or not Rocket_1:IsA("BasePart") or not v81 then return end for _, value_10 in next, v81:GetDescendants() do if value_10:IsA("ParticleEmitter") or value_10:IsA("Beam") then value_10.Enabled = true continue end if value_10:IsA("BasePart") then value_10.Transparency = 0 end end end end function tbl_upv_5.AutoSlide(a1) --[[ name: AutoSlide line: 1004 ]] if not a1 or not _G.AutoSlide then return end local v82 = a1:Get("IsJammed") if a1:Get("Slided") and not (v82) or a1.PendingSlide then return end local Instance_upv_2 = a1.Instance local Character_upv_3 = a1.Character if not Instance_upv_2 then return end if Character_upv_3 and Instance_upv_2.Parent == Character_upv_3 then local EquipTime_1 = a1.Settings.EquipTime a1.PendingSlide = true task.delay( ((not v82) and EquipTime_1) or (EquipTime_1 / 1.5), function() --[[ line: 1037 upvalues: a1 (copy, index: 1) Instance_upv_2 (copy, index: 2) Character_upv_3 (copy, index: 3) ]] a1.PendingSlide = false if not Instance_upv_2 or not Instance_upv_2.Parent or not Character_upv_3 or Instance_upv_2.Parent ~= Character_upv_3 then return end a1:Slide() end ) end end local tbl_upv_15 = {} tbl_upv_15.FieldOfView = 5 tbl_upv_15.Friction = 0.5 tbl_upv_15.Tracking = 0.5 tbl_upv_15.Centering = 0.4 tbl_upv_15.MinRange = 35 tbl_upv_15.MaxRange = 200 tbl_upv_15.Enabled = true local tbl_upv_16 = {} tbl_upv_16.FieldOfView = 6 tbl_upv_16.Friction = 0.6 tbl_upv_16.Tracking = 0.6 tbl_upv_16.Centering = 0.5 tbl_upv_16.MinRange = 35 tbl_upv_16.MaxRange = 200 tbl_upv_16.Enabled = true function tbl_upv_5.OnEquip(a1) --[[ name: OnEquip line: 1067 upvalues: Device_upv_1 (copy, index: 1) u8 (copy, index: 2) tbl_upv_16 (copy, index: 3) tbl_upv_15 (copy, index: 4) CurrentCamera_upv_1 (copy, index: 5) AimAssistEnum_upv_1 (copy, index: 6) u9 (copy, index: 7) UserInputService_upv_1 (copy, index: 8) tbl_upv_1 (copy, index: 9) TweenService_upv_1 (copy, index: 10) GunStyles_upv_1 (copy, index: 11) LocalPlayer_upv_1 (copy, index: 12) clock_upv_1 (copy, index: 13) u6 (ref, index: 14) RunService_upv_1 (copy, index: 15) CollectionService_upv_1 (copy, index: 16) ]] local Instance_upv_3 = a1.Instance local JamKey_upv_1 = a1.Settings.JamKey local EquipTrove_1 = a1.EquipTrove local Scope_upv_1 = a1.Settings.Scope local u22 = script.GunGUI:Clone() local MobileButtons_upv_1 = u22.MobileButtons local Frame_1 = u22.Frame local Ammo_upv_1 = Frame_1.Frame.Ammo local Slide_upv_2 = Frame_1.Slide local Jam_upv_1 = Frame_1.Jam local v83 = Device_upv_1:IsOnConsole() local v84 = Device_upv_1:IsOnMobile() local v85 = Device_upv_1:IsOnPC() local v86 = Device_upv_1:IsOnBoth() local u23 = 0 local u24 = false if a1.aimAssistController then local _ if not (u8) or u8 == nil then local v87 = v84 and tbl_upv_16 or tbl_upv_15 _ = v87 elseif v84 then _ = u8.Mobile else _ = u8.Controller end a1.aimAssistController:setSubject(CurrentCamera_upv_1) a1.aimAssistController:setRange(_.MaxRange) a1.aimAssistController:setFieldOfView(_.FieldOfView) a1.aimAssistController:addTargetTag("Target") a1.aimAssistController:addPlayerTargets(true, true) a1.aimAssistController:setMethodStrength(AimAssistEnum_upv_1.AimAssistMethod.Friction, _.Friction) a1.aimAssistController:setMethodStrength(AimAssistEnum_upv_1.AimAssistMethod.Tracking, _.Tracking) a1.aimAssistController:setMethodStrength(AimAssistEnum_upv_1.AimAssistMethod.Centering, _.Centering) a1.aimAssistController:setEasingFunc( AimAssistEnum_upv_1.AimAssistEasingAttribute.Distance, function(a2) --[[ line: 1108 upvalues: _ (ref, index: 1) ]] if a2 < OnAmmoUpdate.MinRange then return 0 end return 1 end ) if (workspace:GetAttribute("AimAssist")) and _.Enabled ~= false then a1.aimAssistController:enable() else a1.aimAssistController:disable() end if v84 then a1.aimAssistController:setCursorDirectionGetter( function() --[[ line: 1123 upvalues: a1 (copy, index: 1) CurrentCamera_upv_1 (copy, index: 2) u9 (copy, index: 3) ]] local _Crosshair_1 = a1._Crosshair local v88 = _Crosshair_1.AbsolutePosition + _Crosshair_1.AbsoluteSize / 2 local v89 = CurrentCamera_upv_1:ScreenPointToRay(v88.X, v88.Y) v88 = workspace:Raycast(v89.Origin, v89.Direction * 5000, u9) return (((v88 and (v88.Position)) or (v89.Origin + v89.Direction * 5000)) - CurrentCamera_upv_1.CFrame.Position).Unit end ) end if v83 or v86 then EquipTrove_1:Connect( UserInputService_upv_1.InputChanged, function(a3) --[[ line: 1130 upvalues: a1 (copy, index: 1) ]] if a3.KeyCode ~= Enum.KeyCode.Thumbstick2 then return end a1.aimAssistController:updateGamepadEligibility(a3.KeyCode, a3.Position) end ) EquipTrove_1:Connect( UserInputService_upv_1.TouchStarted, function() --[[ line: 1136 upvalues: a1 (copy, index: 1) ]] a1.aimAssistController:updateTouchEligibility() end ) EquipTrove_1:Connect( UserInputService_upv_1.TouchMoved, function() --[[ line: 1140 upvalues: a1 (copy, index: 1) ]] a1.aimAssistController:updateTouchEligibility() end ) end end local function OnAmmoUpdate() --[[ name: OnAmmoUpdate line: 1146 upvalues: a1 (copy, index: 1) u24 (ref, index: 2) u23 (ref, index: 3) Ammo_upv_1 (copy, index: 4) Instance_upv_3 (copy, index: 5) tbl_upv_1 (copy, index: 6) u22 (copy, index: 7) TweenService_upv_1 (copy, index: 8) ]] local v90 = a1:Get("Ammo_Client") or 0 if not (u24) then u24 = true u23 = v90 end Ammo_upv_1.Text = v90 .. " / " .. (a1:Get("Capacity") or "0") local v91, v92 = nil, nil if a1.Settings.AmmoType == "Rocket" then v91 = Instance_upv_3.Model:FindFirstChild("Rocket") v92 = v91 and (v91:IsA("BasePart") and (v91:FindFirstChild("Extra"))) if v91 and v91:IsA("BasePart") then local v93 = ((v90 ~= 0) and 0) or 1 local v94 = v90 > 0 if v92 then for _, value_11 in next, v92:GetDescendants() do if value_11:IsA("ParticleEmitter") or value_11:IsA("Beam") then value_11.Enabled = v94 continue end if value_11:IsA("BasePart") then value_11.Transparency = v93 end end end end end if _G.Effects and v90 - u23 < 0 then tbl_upv_1.Shoot = tbl_upv_1.Shoot + 1 local Shoot_upv_1 = tbl_upv_1.Shoot local Ammo_upv_2 = u22.Frame.Frame.Ammo local v95 = TweenInfo.new(0.05, Enum.EasingStyle.Sine, Enum.EasingDirection.In) local tbl_17 = {} tbl_17.Rotation = math.random(5, 10) TweenService_upv_1:Create(Ammo_upv_2, v95, tbl_17):Play() task.delay( 0.05, function() --[[ line: 1191 upvalues: Shoot_upv_1 (copy, index: 1) tbl_upv_1 (copy, index: 2) u22 (copy, index: 3) Ammo_upv_2 (copy, index: 4) TweenService_upv_1 (copy, index: 5) ]] if Shoot_upv_1 ~= tbl_upv_1.Shoot or not u22 or not u22.Parent or not Ammo_upv_2 then return end if Ammo_upv_2.Parent then local tbl_18 = {Rotation = 0} TweenService_upv_1:Create(Ammo_upv_2, TweenInfo.new(0.75, Enum.EasingStyle.Elastic, Enum.EasingDirection.Out), tbl_18):Play() end end ) end u23 = v90 end OnAmmoUpdate() local function OnSlideUpdate() --[[ name: OnSlideUpdate line: 1207 upvalues: a1 (copy, index: 1) Jam_upv_1 (copy, index: 2) Slide_upv_2 (copy, index: 3) MobileButtons_upv_1 (copy, index: 4) ]] local v96 = a1:Get("IsJammed") Jam_upv_1.Visible = v96 Slide_upv_2.Visible = not a1:Get("Slided") local Unjam_1 = MobileButtons_upv_1.Unjam Unjam_1.Visible = a1:Get("IsJammed") or not a1:Get("Slided") MobileButtons_upv_1.Beam.Visible = a1.Beam and (not MobileButtons_upv_1.Unjam.Visible) if not v96 then return end script.Parent.Parent.Parent.Remotes.Notify:FireServer("Gun Jammed! Unjamming Gun.", 1.5) a1:AutoSlide() end OnSlideUpdate() a1:AutoSlide() a1:PlayAnimation("Idle") a1:PlayAnimation("Equip") GunStyles_upv_1.Equip(a1) local v98 = "973818318" local v99 = 2 local Data_1 = LocalPlayer_upv_1:FindFirstChild("Data") if Data_1 then local Settings_6 = LocalPlayer_upv_1.Data:FindFirstChild("Settings") local v100, v101 = nil, nil if Settings_6 then v100 = tonumber(tostring(LocalPlayer_upv_1.Data.Settings.Crosshair.Value):match("%d+")) if v100 and v100 > 1 then v98 = tostring(v100) end v101 = tonumber(LocalPlayer_upv_1.Data.Settings.CrosshairSize.Value) if v101 then local _ = math.clamp(v101, 0.1, 3) end end end if v98 ~= "973818318" then u22.Crosshair.Image = "rbxthumb://type=Asset&id=" .. tostring(v98) .. "&w=420&h=420" else u22.Crosshair.Image = "rbxassetid://973818318" end u22.Crosshair.UIScale.Scale = v99 u22.Crosshair.Visible = true u22.Crosshair.ImageTransparency = 0 a1._Crosshair = u22.Crosshair a1._EquipTime = clock_upv_1() UserInputService_upv_1.MouseIconEnabled = false MobileButtons_upv_1.Visible = v84 u22.Parent = LocalPlayer_upv_1.PlayerGui if _G.Effects then tbl_upv_1.Equip = tbl_upv_1.Equip + 1 local Frame_upv_2 = u22.Frame.Frame local Position_2 = Frame_upv_2.Position Frame_upv_2.Position = Position_2 + UDim2.fromScale(1, 0) Frame_upv_2.Rotation = 10 local tbl_19 = {} tbl_19.Position = Position_2 TweenService_upv_1:Create(u22.Frame.Frame, TweenInfo.new(0.5, Enum.EasingStyle.Sine), tbl_19):Play() local tbl_20 = {Rotation = 20} TweenService_upv_1:Create(u22.Frame.Frame, TweenInfo.new(0.25, Enum.EasingStyle.Sine), tbl_20):Play() task.delay( 0.25, function() --[[ line: 1282 upvalues: u22 (copy, index: 1) Frame_upv_2 (copy, index: 2) TweenService_upv_1 (copy, index: 3) ]] if not u22 or not u22.Parent or not Frame_upv_2 then return end if Frame_upv_2.Parent then local tbl_21 = {Rotation = 0} TweenService_upv_1:Create(u22.Frame.Frame, TweenInfo.new(1, Enum.EasingStyle.Elastic), tbl_21):Play() end end ) end if v84 then Slide_upv_2.Text = "SLIDE" Jam_upv_1.Text = "JAMMED" EquipTrove_1:Connect( MobileButtons_upv_1.FireButton.MouseButton1Down, function() --[[ line: 1296 upvalues: a1 (copy, index: 1) ]] a1._FireRequest = true end ) EquipTrove_1:Connect( MobileButtons_upv_1.FireButton.MouseButton1Up, function() --[[ line: 1299 upvalues: a1 (copy, index: 1) clock_upv_1 (copy, index: 2) u6 (ref, index: 3) ]] if a1.Settings.IsBinary then local v102 = a1.Humanoid:GetAttribute("_RagdollState") local v103, v104 = nil, nil if v102 then v103 = v102 else v104 = a1._HoldState local v105 = nil if v104 then v103 = v104 else v105 = a1:Get("IsReloading") if v105 then v103 = v105 else v103 = true if not (a1:Get("Ammo_Client") <= 0) then v103 = a1:Get("IsJammed") or (not a1:Get("Slided") or (clock_upv_1() - a1._SlideTime < 0.8)) end end end end if not (v103) then local v106 = clock_upv_1() if v106 - u6 <= (60 / a1.Settings.FireRate) * 0.95 or v106 - a1.LastFired < a1.DeltaTime * 0.23170731707317074 then return end a1:Fire() u6 = v106 end end a1._FireRequest = false end ) EquipTrove_1:Connect( MobileButtons_upv_1.ReloadButton.MouseButton1Click, function() --[[ line: 1321 upvalues: a1 (copy, index: 1) ]] a1:Reload() end ) EquipTrove_1:Connect( MobileButtons_upv_1.HoldDownButton.MouseButton1Click, function() --[[ line: 1324 upvalues: a1 (copy, index: 1) ]] a1:SwitchHold() end ) EquipTrove_1:Connect( MobileButtons_upv_1.Unjam.MouseButton1Click, function() --[[ line: 1327 upvalues: a1 (copy, index: 1) ]] a1:Slide() end ) EquipTrove_1:Connect( MobileButtons_upv_1.Beam.MouseButton1Click, function() --[[ line: 1330 upvalues: a1 (copy, index: 1) ]] a1:SwitchBeam() end ) MobileButtons_upv_1.Scope.Visible = Scope_upv_1 if Scope_upv_1 then EquipTrove_1:Connect( MobileButtons_upv_1.Scope.MouseButton1Click, function() --[[ line: 1336 upvalues: a1 (copy, index: 1) u22 (copy, index: 2) ]] a1:ToggleScope(u22) end ) end elseif not (v83) or v85 then if not (v85) or v83 then if v86 then Slide_upv_2.Text = string.format("PRESS %s TO SLIDE", JamKey_upv_1.Name) Jam_upv_1.Text = string.format("JAMMED - PRESS %s TO UNJAM", JamKey_upv_1.Name) EquipTrove_1:Connect( UserInputService_upv_1.InputBegan, function(a4, a5) --[[ line: 1448 upvalues: JamKey_upv_1 (copy, index: 1) a1 (copy, index: 2) Scope_upv_1 (copy, index: 3) u22 (copy, index: 4) ]] if not (a5) or a4.KeyCode == Enum.KeyCode.ButtonA then local KeyCode_1 = a4.KeyCode if KeyCode_1 == JamKey_upv_1 or KeyCode_1 == Enum.KeyCode.ButtonB then a1:Slide() elseif KeyCode_1 == Enum.KeyCode.X or KeyCode_1 == Enum.KeyCode.ButtonA then a1:SwitchBeam() elseif KeyCode_1 == Enum.KeyCode.R or KeyCode_1 == Enum.KeyCode.ButtonX then a1:Reload() elseif KeyCode_1 == Enum.KeyCode.G or KeyCode_1 == Enum.KeyCode.ButtonY then a1:SwitchHold() end if a4.UserInputType == Enum.UserInputType.MouseButton1 or a4.KeyCode == Enum.KeyCode.ButtonR2 then a1._FireRequest = true end if (a4.UserInputType == Enum.UserInputType.MouseButton2 or a4.KeyCode == Enum.KeyCode.ButtonL2) and (Scope_upv_1) and not a1._ScopeState then a1:ToggleScope(u22) end end end ) EquipTrove_1:Connect( UserInputService_upv_1.InputEnded, function(a6) --[[ line: 1470 upvalues: a1 (copy, index: 1) clock_upv_1 (copy, index: 2) u6 (ref, index: 3) Scope_upv_1 (copy, index: 4) u22 (copy, index: 5) ]] if a6.UserInputType ~= Enum.UserInputType.MouseButton1 and a6.KeyCode ~= Enum.KeyCode.ButtonR2 then if a6.UserInputType ~= Enum.UserInputType.MouseButton2 and a6.KeyCode ~= Enum.KeyCode.ButtonL2 or not (Scope_upv_1) or not (a1._ScopeState) then return end a1:ToggleScope(u22) return end if a1.Settings.IsBinary then local v107 = a1.Humanoid:GetAttribute("_RagdollState") local v108, v109 = nil, nil if v107 then v108 = v107 else v109 = a1._HoldState local v110 = nil if v109 then v108 = v109 else v110 = a1:Get("IsReloading") if v110 then v108 = v110 else v108 = true if not (a1:Get("Ammo_Client") <= 0) then v108 = a1:Get("IsJammed") or (not a1:Get("Slided") or (clock_upv_1() - a1._SlideTime < 0.8)) end end end end if not (v108) then local v111 = clock_upv_1() if v111 - u6 <= (60 / a1.Settings.FireRate) * 0.95 or v111 - a1.LastFired < a1.DeltaTime * 0.23170731707317074 then return end a1:Fire() u6 = v111 end end a1._FireRequest = false end ) end else Slide_upv_2.Text = string.format("PRESS %s TO SLIDE", JamKey_upv_1.Name) Jam_upv_1.Text = string.format("JAMMED - PRESS %s TO UNJAM", JamKey_upv_1.Name) EquipTrove_1:Connect( UserInputService_upv_1.InputBegan, function(a7, a8) --[[ line: 1393 upvalues: JamKey_upv_1 (copy, index: 1) a1 (copy, index: 2) Scope_upv_1 (copy, index: 3) u22 (copy, index: 4) ]] if not (a8) then local KeyCode_2 = a7.KeyCode if KeyCode_2 == JamKey_upv_1 then a1:Slide() elseif KeyCode_2 == Enum.KeyCode.X then a1:SwitchBeam() elseif KeyCode_2 == Enum.KeyCode.R then a1:Reload() elseif KeyCode_2 == Enum.KeyCode.G then a1:SwitchHold() end if a7.UserInputType == Enum.UserInputType.MouseButton1 then a1._FireRequest = true end if a7.UserInputType ~= Enum.UserInputType.MouseButton2 or not Scope_upv_1 or (a1._ScopeState) then return end a1:ToggleScope(u22) end end ) EquipTrove_1:Connect( UserInputService_upv_1.InputEnded, function(a9) --[[ line: 1417 upvalues: a1 (copy, index: 1) clock_upv_1 (copy, index: 2) u6 (ref, index: 3) Scope_upv_1 (copy, index: 4) u22 (copy, index: 5) ]] if a9.UserInputType == Enum.UserInputType.MouseButton1 then if a1.Settings.IsBinary then local v112 = a1.Humanoid:GetAttribute("_RagdollState") local v113, v114 = nil, nil if v112 then v113 = v112 else v114 = a1._HoldState local v115 = nil if v114 then v113 = v114 else v115 = a1:Get("IsReloading") if v115 then v113 = v115 else v113 = true if not (a1:Get("Ammo_Client") <= 0) then v113 = a1:Get("IsJammed") or (not a1:Get("Slided") or (clock_upv_1() - a1._SlideTime < 0.8)) end end end end if not (v113) then local v116 = clock_upv_1() if v116 - u6 <= (60 / a1.Settings.FireRate) * 0.95 or v116 - a1.LastFired < a1.DeltaTime * 0.23170731707317074 then return end a1:Fire() u6 = v116 end end a1._FireRequest = false elseif a9.UserInputType == Enum.UserInputType.MouseButton2 and Scope_upv_1 and a1._ScopeState then a1:ToggleScope(u22) end end ) end else Slide_upv_2.Text = "SLIDE" Jam_upv_1.Text = "JAMMED" EquipTrove_1:Connect( UserInputService_upv_1.InputBegan, function(a10, a11) --[[ line: 1343 upvalues: a1 (copy, index: 1) Scope_upv_1 (copy, index: 2) u22 (copy, index: 3) ]] if not (a11) or a10.KeyCode == Enum.KeyCode.ButtonA then local KeyCode_3 = a10.KeyCode if KeyCode_3 == Enum.KeyCode.ButtonR2 then a1._FireRequest = true elseif KeyCode_3 == Enum.KeyCode.ButtonB then a1:Slide() elseif KeyCode_3 == Enum.KeyCode.ButtonY then a1:SwitchHold() elseif KeyCode_3 == Enum.KeyCode.ButtonX then a1:Reload() elseif KeyCode_3 == Enum.KeyCode.ButtonA then a1:SwitchBeam() elseif KeyCode_3 == Enum.KeyCode.ButtonL2 and Scope_upv_1 and not a1._ScopeState then a1:ToggleScope(u22) end end end ) EquipTrove_1:Connect( UserInputService_upv_1.InputEnded, function(a12) --[[ line: 1363 upvalues: a1 (copy, index: 1) clock_upv_1 (copy, index: 2) u6 (ref, index: 3) Scope_upv_1 (copy, index: 4) u22 (copy, index: 5) ]] if a12.KeyCode == Enum.KeyCode.ButtonR2 then if a1.Settings.IsBinary then local v117 = a1.Humanoid:GetAttribute("_RagdollState") local v118, v119 = nil, nil if v117 then v118 = v117 else v119 = a1._HoldState local v120 = nil if v119 then v118 = v119 else v120 = a1:Get("IsReloading") if v120 then v118 = v120 else v118 = true if not (a1:Get("Ammo_Client") <= 0) then v118 = a1:Get("IsJammed") or (not a1:Get("Slided") or (clock_upv_1() - a1._SlideTime < 0.8)) end end end end if not (v118) then local v121 = clock_upv_1() if v121 - u6 <= (60 / a1.Settings.FireRate) * 0.95 or v121 - a1.LastFired < a1.DeltaTime * 0.23170731707317074 then return end a1:Fire() u6 = v121 end end a1._FireRequest = false elseif a12.KeyCode == Enum.KeyCode.ButtonL2 and Scope_upv_1 and a1._ScopeState then a1:ToggleScope(u22) end end ) end EquipTrove_1:Add(u22) EquipTrove_1:Connect(Instance_upv_3:GetAttributeChangedSignal("Ammo_Client"), OnAmmoUpdate) EquipTrove_1:Connect(Instance_upv_3:GetAttributeChangedSignal("IsJammed"), OnSlideUpdate) EquipTrove_1:Connect(Instance_upv_3:GetAttributeChangedSignal("Slided"), OnSlideUpdate) a1:Set("Ammo_Client", a1:Get("Ammo_Server")) EquipTrove_1:Connect( Instance_upv_3:GetAttributeChangedSignal("Capacity"), function() --[[ line: 1505 upvalues: a1 (copy, index: 1) ]] a1:Set("Ammo_Client", a1:Get("Ammo_Server")) end ) RunService_upv_1:BindToRenderStep( "GunFramework", Enum.RenderPriority.Camera.Value + 1, function(a13) --[[ line: 1509 upvalues: a1 (copy, index: 1) ]] a1:Update(a13) end ) EquipTrove_1:Add( function() --[[ line: 1513 upvalues: RunService_upv_1 (copy, index: 1) a1 (copy, index: 2) UserInputService_upv_1 (copy, index: 3) CurrentCamera_upv_1 (copy, index: 4) ]] RunService_upv_1:UnbindFromRenderStep("GunFramework") for key_2, _ in a1._Animations do a1:StopAnimation(key_2) end UserInputService_upv_1.MouseIconEnabled = true UserInputService_upv_1.MouseBehavior = Enum.MouseBehavior.Default if not a1.Settings.Scope then return end CurrentCamera_upv_1.FieldOfView = (_G.FOV or 70) + (((_G.Running ~= true) and 0) or 5) a1:RestoreScopeCamera() end ) a1:Set("IsReloading", false) if _G.GunVolume then for _, value_12 in a1.Handle:GetChildren() do if not (value_12:IsA("Sound")) then continue end local v122 = value_12:GetAttribute("Volume") if v122 then value_12.Volume = v122 * _G.GunVolume end end end u9.FilterDescendantsInstances = {LocalPlayer_upv_1.Character, workspace.Zones, workspace.Storage, workspace.Map.Background, CollectionService_upv_1:GetTagged("IgnoreBullets")} if _G.LowGFX or not _G.Effects then for _, value_13 in a1.Instance:QueryDescendants("ParticleEmitter [Enabled=true]") do value_13.Enabled = false end for _, value_14 in a1.Instance:QueryDescendants("Beam [Enabled=true]") do if value_14.Parent.Name ~= "BEAM" then value_14.Enabled = false end end end end function tbl_upv_5.OnUnequip(a1) --[[ name: OnUnequip line: 1563 upvalues: GunStyles_upv_1 (copy, index: 1) u4 (ref, index: 2) ]] GunStyles_upv_1.Unequip(a1) a1._FireRequest = false a1._LastRequest = false a1._HoldState = false a1._ScopeState = false u4 = false a1:Set("IsJammed", false) a1.Spring_Recoil:ResetState() if not a1.aimAssistController then return end a1.aimAssistController:setCursorDirectionGetter(nil) a1.aimAssistController:disable() end local tbl_22 = {} function tbl_22.Init() --[[ name: Init line: 1579 upvalues: Update_upv_1 (copy, index: 1) u2 (ref, index: 2) u9 (copy, index: 3) LocalPlayer_upv_1 (copy, index: 4) CollectionService_upv_1 (copy, index: 5) u10 (copy, index: 6) Shared_upv_1 (copy, index: 7) tbl_upv_5 (copy, index: 8) tbl_upv_4 (copy, index: 9) Coroutine_upv_1 (copy, index: 10) Fire_upv_1 (copy, index: 11) tbl_upv_2 (copy, index: 12) Effect_upv_1 (copy, index: 13) u4 (ref, index: 14) tbl_upv_3 (copy, index: 15) Information_upv_1 (copy, index: 16) GunStyles_upv_1 (copy, index: 17) ]] Update_upv_1.OnClientEvent:Connect( function(a1, a2, a3) --[[ line: 1580 upvalues: u2 (ref, index: 1) u9 (copy, index: 2) LocalPlayer_upv_1 (copy, index: 3) CollectionService_upv_1 (copy, index: 4) u10 (copy, index: 5) ]] if a1 ~= "Update" then if a1 ~= "Token" then return end u2 = a2 u9.FilterDescendantsInstances = {LocalPlayer_upv_1.Character, workspace.Zones, workspace.Storage, workspace.Map.Background, CollectionService_upv_1:GetTagged("IgnoreBullets")} u10.FilterDescendantsInstances = {workspace.Zones, workspace.Storage, workspace.Map.Background, CollectionService_upv_1:GetTagged("IgnoreBullets")} elseif a2 and tonumber(a3) then a2:SetAttribute("Ammo_Client", a3) end end ) local CollectionService_2 = game:GetService("CollectionService") local tbl_upv_23 = {} local function OnGunAdded(a4) --[[ name: OnGunAdded line: 1619 upvalues: tbl_upv_23 (copy, index: 1) Shared_upv_1 (copy, index: 2) LocalPlayer_upv_1 (copy, index: 3) tbl_upv_5 (copy, index: 4) tbl_upv_4 (copy, index: 5) Coroutine_upv_1 (copy, index: 6) ]] local v123 = tbl_upv_23[a4] if v123 then tbl_upv_23[a4] = nil v123.Connection:Disconnect() v123.Destroy() end local u25 = nil local u26 = nil local u27 = 0 local tbl_upv_24 = {} local function DestroyCurrent_1() --[[ name: DestroyCurrent line: 1627 upvalues: u27 (ref, index: 1) u26 (ref, index: 2) ]] u27 = u27 + 1 if not u26 then return end u26.IsEquipped = false u26.IsDestroyed = true u26.EquipTrove:Destroy(true) u26.Trove:Destroy(true) if u26.aimAssistController then u26.aimAssistController:destroy() end u26 = nil end local function OnParentChanged_1() --[[ name: OnParentChanged line: 1638 upvalues: tbl_upv_23 (copy, index: 1) a4 (copy, index: 2) tbl_upv_24 (copy, index: 3) Shared_upv_1 (copy, index: 4) u25 (ref, index: 5) u27 (ref, index: 6) u26 (ref, index: 7) LocalPlayer_upv_1 (copy, index: 8) tbl_upv_5 (copy, index: 9) tbl_upv_4 (copy, index: 10) ]] if tbl_upv_23[a4] ~= tbl_upv_24 then return end local v124 = Shared_upv_1.GetPlayerFromTool(a4) if v124 then if v124 == u25 then return end u25 = v124 u27 = u27 + 1 local v125 if u26 then u26.IsEquipped = false v125.IsDestroyed = true v125.EquipTrove:Destroy(true) v125.Trove:Destroy(true) if v125.aimAssistController then v125.aimAssistController:destroy() end u26 = nil end local v126 if v124 ~= LocalPlayer_upv_1 then v126 = tbl_upv_4 else v126 = tbl_upv_5 or tbl_upv_4 end local v127 = v126.new(a4, v124) if u27 == u27 then if v127 then u26 = v127 Shared_upv_1.Client_BindEvents(v127) else u25 = nil end elseif v127 then v127.IsEquipped = false v127.IsDestroyed = true v127.EquipTrove:Destroy(true) v127.Trove:Destroy(true) if v127.aimAssistController then v127.aimAssistController:destroy() end end else u25 = nil if not (a4.Parent) then u27 = u27 + 1 if not u26 then return end local v128 = u26 v128.IsEquipped = false v128.IsDestroyed = true v128.EquipTrove:Destroy(true) v128.Trove:Destroy(true) if v128.aimAssistController then v128.aimAssistController:destroy() end u26 = nil end end end tbl_upv_24.Connection = a4:GetPropertyChangedSignal("Parent"):Connect(OnParentChanged_1) tbl_upv_24.Destroy = function() --[[ line: 1681 upvalues: u25 (ref, index: 1) u27 (ref, index: 2) u26 (ref, index: 3) ]] u25 = nil u27 = u27 + 1 if not u26 then return end u26.IsEquipped = false u26.IsDestroyed = true u26.EquipTrove:Destroy(true) u26.Trove:Destroy(true) if u26.aimAssistController then u26.aimAssistController:destroy() end u26 = nil end tbl_upv_23[a4] = tbl_upv_24 Coroutine_upv_1(OnParentChanged_1) end for _, value_15 in CollectionService_2:GetTagged("Gun") do Coroutine_upv_1(OnGunAdded, value_15) end CollectionService_2:GetInstanceAddedSignal("Gun"):Connect(OnGunAdded) local function OnGunRemoved(a5) --[[ name: OnGunRemoved line: 1608 upvalues: tbl_upv_23 (copy, index: 1) ]] local v129 = tbl_upv_23[a5] if not v129 then return end tbl_upv_23[a5] = nil v129.Connection:Disconnect() v129.Destroy() end CollectionService_2:GetInstanceRemovedSignal("Gun"):Connect(OnGunRemoved) Fire_upv_1.OnClientEvent:Connect( function(a6, a7, a8) --[[ line: 1697 upvalues: tbl_upv_2 (copy, index: 1) ]] local v130 = tbl_upv_2[a6] if not v130 or (v130.IsDestroyed) or not v130.IsEquipped then return end v130:Fire(a7, a8) end ) Effect_upv_1.OnClientEvent:Connect( function(a9) --[[ line: 1706 upvalues: u4 (ref, index: 1) tbl_upv_3 (copy, index: 2) ]] if u4 then return end if tbl_upv_3[a9] then tbl_upv_3[a9]:Play() end end ) Information_upv_1.OnClientEvent:Connect( function(a10, a11, a12) --[[ line: 1716 upvalues: GunStyles_upv_1 (copy, index: 1) ]] GunStyles_upv_1.Kill(a12, a11) end ) end return tbl_22