-- 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 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 u2 = nil local u3 = false local u4 = false local u5 = Remotes_1:FindFirstChild("Position") if not (u5) then for v2, value_1 in next, 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 = {} for v3, value_2 in next, Parent_1.Effects:GetChildren() do tbl_upv_2[value_2.Name] = require(value_2) end local function GetValidId(a1) --[[ name: GetValidId line: 96 ]] if string.match(a1, "rbxassetid://") then return a1 end return "rbxassetid://" .. a1 end local function RandomChild(a1) --[[ name: RandomChild line: 103 ]] local v1 = a1:GetChildren() return v1[math.random(1, #v1)] end local function v3(a1, a2, a3) --[[ name: GetMouseHitPosition line: 117 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) local v4 = workspace:Raycast(v3.Origin, v3.Direction * 5000, u9) return (v4 and (v4.Position)) or (v3.Origin + v3.Direction * 5000) end local tbl_upv_3 = {} tbl_upv_3.__index = tbl_upv_3 function tbl_upv_3.new(a1, a2) --[[ name: new line: 165 upvalues: Shared_upv_1 (copy, index: 1) Trove_upv_1 (copy, index: 2) Signal_upv_1 (copy, index: 3) tbl_upv_3 (copy, index: 4) ]] if not (a1:GetAttribute("_Loaded")) then a1:GetAttributeChangedSignal("_Loaded"):Wait() end local v5 = a1:WaitForChild("Settings", 5) if not v5 then return nil end local v6 = require(v5) local v7 = a1:GetAttribute("Id") local u12 = Shared_upv_1.SetValues({}, a2) u12.Instance = a1 u12.Handle = a1:WaitForChild("Handle", 5) u12.Id = v7 u12.Settings = v6 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_3) Shared_upv_1.Client_BindEvents(u12) u12.Trove:Add( a1:GetAttributeChangedSignal("Seed"):Connect( function() --[[ line: 199 upvalues: u12 (copy, index: 1) a1 (copy, index: 2) ]] u12._Random = Random.new(a1:GetAttribute("Seed")) end ) ) return u12 end function tbl_upv_3.Get(a1, a2) --[[ name: Get line: 206 ]] return a1.Instance:GetAttribute(a2) end function tbl_upv_3.Set(a1, a2, a3) --[[ name: Set line: 210 ]] return a1.Instance:SetAttribute(a2, a3) end function tbl_upv_3.FireBullet(a1, a2, a3) --[[ name: FireBullet line: 214 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: 226 upvalues: u13 (copy, index: 1) u14 (copy, index: 2) Settings_upv_1 (copy, index: 3) ]] local Distance_1 = u13.Distance local v8 = math.max(0.1, Distance_1 / 600) if u14 then u14.CFrame = u13.CFrame u14.Attachment0.CFrame = CFrame.new(-v8, 0, 0) u14.Attachment1.CFrame = CFrame.new(v8, 0, 0) end if Settings_upv_1.Range < Distance_1 then return u13:Destroy() end end u13.OnHit = function(a4, a5) --[[ line: 241 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 v9 = Instance_1.Parent:FindFirstChildWhichIsA("Humanoid") if v9 then if LocalPlayer_upv_1.Character == v9.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: 255 upvalues: u14 (copy, index: 1) ]] if not u14 then return end u14:Destroy() end end function tbl_upv_3.Fire(a1, a2, a3) --[[ name: Fire line: 262 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 v10 = (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 v11 = value_3:GetAttribute("Volume") local v12 = v11 and (v11 * _G.GunVolume) if not (v11) then value_3:Play() continue end if v12 then value_3.Volume = v12 end value_3:Play() end local v13 = nil for _ = 1, v10 do if IsShotgun_1 then v13 = Shared_upv_1.RandomizeDirection(a2, a3, _Random_1, Settings_2) else v13 = a3 end a1:FireBullet(a2, v13) end end local function OnId(a1, a2, a3) --[[ name: OnId line: 108 ]] return a1.OnClientEvent:Connect( function(a4, ...) --[[ line: 109 upvalues: a2 (copy, index: 1) a3 (copy, index: 2) ]] if a4 ~= a2 then return end a3(...) end ) end function tbl_upv_3.OnEquip(a1) --[[ name: OnEquip line: 301 upvalues: OnId (copy, index: 1) Fire_upv_1 (copy, index: 2) ]] a1.EquipTrove:Add( OnId( Fire_upv_1, a1.Id, function(...) --[[ line: 302 upvalues: a1 (copy, index: 1) ]] a1:Fire(...) 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 v15 = value_4:GetAttribute("Volume") if v15 then value_4.Volume = v15 * _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_4 = {} tbl_upv_4.__index = tbl_upv_4 function tbl_upv_4.new(a1) --[[ name: new line: 342 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_4 (copy, index: 8) ]] if not (a1:GetAttribute("_Loaded")) then a1:GetAttributeChangedSignal("_Loaded"):Wait() end local v16 = a1:WaitForChild("Settings", 5) if not v16 then return nil end local v17 = require(v16) local v18 = a1:GetAttribute("Id") local u15 = Shared_upv_1.SetValues({}, LocalPlayer_upv_1) u15.Instance = a1 u15.Handle = a1:WaitForChild("Handle", 5) u15.Id = v18 u15.Settings = v17 u15.PendingSlide = false u15.LastFired = 0 u15.DeltaTime = (v17.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") local v20 = nil for key_1, value_7 in v17.Animations do local v21 = Instance.new("Animation") local Id_1 = value_7.Id if string.match(Id_1, "rbxassetid://") then v20 = Id_1 else v20 = "rbxassetid://" .. Id_1 end v21.AnimationId = v20 v21.Parent = u15.Handle v21.Name = key_1 v20 = Animator_1:LoadAnimation(v21) u15._Animations[key_1] = {Instance = v21, Track = v20, Speed = value_7.Speed, Priority = value_7.Priority} u15.Trove:Add(v21) u15.Trove:Add(v20) end local Settings_3 = a1:FindFirstChild("Settings") if Settings_3 and Settings_3:FindFirstChild("ShootRun") then local v22 = Instance.new("Animation") v22.AnimationId = string.match(127163229087574, "rbxassetid://") and 127163229087574 or "rbxassetid://" .. 127163229087574 v22.Parent = u15.Handle v22.Name = "ShootRun" local v24 = Animator_1:LoadAnimation(v22) u15._Animations[v22.Name] = {Speed = 5, Instance = v22, Track = v24, Priority = Enum.AnimationPriority.Action4} u15.Trove:Add(v22) u15.Trove:Add(v24) end setmetatable(u15, tbl_upv_4) Shared_upv_1.Client_BindEvents(u15) 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: 431 upvalues: u15 (copy, index: 1) a1 (copy, index: 2) ]] u15._Random = Random.new(a1:GetAttribute("Seed")) end ) ) return u15 end function tbl_upv_4.Get(a1, a2) --[[ name: Get line: 438 ]] return a1.Instance:GetAttribute(a2) end function tbl_upv_4.Set(a1, a2, a3) --[[ name: Set line: 442 ]] return a1.Instance:SetAttribute(a2, a3) end function tbl_upv_4.PlayAnimation(a1, a2) --[[ name: PlayAnimation line: 446 ]] local v25 = a1._Animations[a2] if not v25 then return end if v25.Priority ~= nil then v25.Track.Priority = v25.Priority end v25.Track:Play(1 / v25.Speed) end function tbl_upv_4.StopAnimation(a1, a2) --[[ name: StopAnimation line: 456 ]] local v26 = a1._Animations[a2] v26.Track:Stop(1 / v26.Speed) end function tbl_upv_4.Update(a1, a2) --[[ name: Update line: 481 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 v27 = clock_upv_1() local Settings_4 = a1.Settings local _ = a1.Instance:GetAttribute("CanFire") local _FireRequest_1 = a1._FireRequest local v28 = math.min(a2, 0.03333333333333333) local v29 = a1.Spring_Recoil:Update(v28 * (Settings_4.RecoilSpeed * 0.9)) local v30 = a1._FireRequest ~= a1._LastRequest local v31 = _FireRequest_1 and (a1.DeltaTime <= v27 - a1.LastFired) if v27 - a1._EquipTime < Settings_4.EquipTime then v31 = false end v31 = Settings_4.IsAutomatic or v31 and v30 local v32 = a1.Humanoid:GetAttribute("_RagdollState") if not (v32) then v32 = a1._HoldState if not v32 then v32 = a1:Get("IsReloading") if not v32 then v32 = true if not (a1:Get("Ammo_Client") <= 0) then v32 = a1:Get("IsJammed") or (not a1:Get("Slided") or (v27 - a1._SlideTime < 0.8)) end end end end if Device_upv_1:IsOnMobile() then local v33 = CurrentCamera_upv_1.ViewportSize / 2 local v34 if (CurrentCamera_upv_1) and CurrentCamera_upv_1.CameraType ~= Enum.CameraType.Scriptable then v34 = (CurrentCamera_upv_1.Focus.Position - CurrentCamera_upv_1.CFrame.Position).Magnitude <= 1 else v34 = false end if v34 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(v33.X, v33.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 v35 = v28 * 60 CurrentCamera_upv_1.CFrame = CurrentCamera_upv_1.CFrame * CFrame.Angles(math.rad(v29.Y * v35), math.rad(v29.X * v35), math.rad(v29.Z)) if not v31 then return end if v32 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: 125 upvalues: TweenService_upv_1 (copy, index: 1) ]] local v36 = a1 and (a1.Parent and (a1.Parent:FindFirstChildWhichIsA("Humanoid"))) local v37 = v36 and (v36.Parent) if not v37 then return end if v37: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 (v37.UpperTorso)) or a1 u16.Name = "HitEffect" u16.Parent = v36 local tbl_5 = {FillTransparency = 0.5} TweenService_upv_1:Create(u16, TweenInfo.new(0.1), tbl_5):Play() task.delay( 0.1, function() --[[ line: 150 upvalues: u16 (copy, index: 1) TweenService_upv_1 (copy, index: 2) ]] if u16 then local tbl_6 = {FillTransparency = 1} TweenService_upv_1:Create(u16, TweenInfo.new(0.1), tbl_6):Play() end end ) task.delay( 0.2, function() --[[ line: 156 upvalues: u16 (copy, index: 1) ]] if not u16 then return end u16:Destroy() end ) return end end function tbl_upv_4.FireBullet(a1, a2, a3) --[[ name: FireBullet line: 529 upvalues: Projectile_upv_1 (copy, index: 1) u9 (copy, index: 2) VFX_upv_1 (copy, index: 3) u5 (ref, index: 4) u7 (copy, index: 5) u2 (ref, index: 6) TweenService_upv_1 (copy, index: 7) OnHumanoidHit (copy, index: 8) Players_upv_1 (copy, index: 9) CurrentCamera_upv_1 (copy, index: 10) ]] local Settings_upv_5 = a1.Settings local u17 = Projectile_upv_1.new({Acceleration = Vector3.new(0, 0, 0), Origin = a2, Direction = a3, Speed = Settings_upv_5.BulletSpeed, RaycastParams = u9}) local u18 = VFX_upv_1:Tracer(u17.CFrame, a1.Handle, Settings_upv_5.AmmoType) u17.Updated = function() --[[ line: 540 upvalues: u17 (copy, index: 1) u18 (copy, index: 2) Settings_upv_5 (copy, index: 3) ]] local Distance_2 = u17.Distance local v38 = math.max(0.1, Distance_2 / 600) if u18 then u18.CFrame = u17.CFrame u18.Attachment0.CFrame = CFrame.new(-v38, 0, 0) u18.Attachment1.CFrame = CFrame.new(v38, 0, 0) end if Settings_upv_5.Range < Distance_2 then return u17:Destroy() end end u17.OnHit = function(a4, a5) --[[ line: 555 upvalues: Settings_upv_5 (copy, index: 1) a1 (copy, index: 2) u17 (copy, index: 3) u5 (ref, index: 4) u7 (copy, index: 5) u2 (ref, index: 6) TweenService_upv_1 (copy, index: 7) OnHumanoidHit (copy, index: 8) VFX_upv_1 (copy, index: 9) Players_upv_1 (copy, index: 10) ]] local v39 if Settings_upv_5.AmmoType == "Rocket" then local ExplosionRadius_1 = Settings_upv_5.ExplosionRadius if ExplosionRadius_1 then v39 = Settings_upv_5.ExplosionDamage else v39 = ExplosionRadius_1 end else v39 = false if a1.Instance.Name == "Raygun" then v39 = Settings_upv_5.ExplosionRadius v39 = Settings_upv_5.ExplosionRadius and Settings_upv_5.ExplosionDamage end end if u17 then u17:Destroy() end local Instance_2 = a5.Instance local v40 = Instance_2.Parent:FindFirstChildWhichIsA("Humanoid") local v41 = Instance_2:FindFirstAncestorWhichIsA("Model") local v42 = v40 and (v40.Parent) if v40 and v42 then if v39 then VFX_upv_1:GroundEffect(a5, Settings_upv_5.Effect) else u5:FireServer(u7, a1.Id, Instance_2, u17.Direction, nil, u2, workspace:GetServerTimeNow()) task.spawn( function() --[[ line: 570 upvalues: TweenService_upv_1 (copy, index: 1) a1 (copy, index: 2) ]] local v43 = TweenInfo.new(0.15) local tbl_7 = {} tbl_7.ImageColor3 = Color3.fromRGB(255, 42, 46) TweenService_upv_1:Create(a1._Crosshair, v43, tbl_7):Play() task.wait(0.2) local v44 = TweenInfo.new(0.15) local tbl_8 = {} tbl_8.ImageColor3 = Color3.fromRGB(255, 255, 255) TweenService_upv_1:Create(a1._Crosshair, v44, tbl_8):Play() end ) OnHumanoidHit(Instance_2) end else VFX_upv_1:GroundEffect(a5, Settings_upv_5.Effect) end if v41 and v41.Name == "Target" and v41.Parent.Name == "Targets" then local Damage_1 = Settings_upv_5.Damage VFX_upv_1:HitTarget(a5.Position, v41, ((Settings_upv_5.IsShotgun) and (Damage_1 / Settings_upv_5.BulletCount)) or Damage_1) end if not v39 then return end if u17 then local ExplosionRadius_2 = Settings_upv_5.ExplosionRadius local ExplosionDamage_1 = Settings_upv_5.ExplosionDamage local v45 = nil for _, value_8 in ipairs(Players_upv_1:GetPlayers()) do local Character_1 = value_8.Character local v48 = Character_1 and (Character_1:FindFirstChildWhichIsA("Humanoid")) local v46 = Character_1 and (Character_1:FindFirstChild("HumanoidRootPart")) if not (Character_1) or not (Character_1) or not (v46) then continue end local Magnitude_1 = (v46.Position - u17).Magnitude if not (Magnitude_1 <= ExplosionRadius_2) then continue end local v47 = Magnitude_1 / ExplosionRadius_2 v45 = ExplosionDamage_1 * math.clamp(math.exp(-v47 * 3) * 2.5, 0, 1) if v47 <= 0.2 then v45 = ExplosionDamage_1 end u5:FireServer(u7, a1.Id, Character_1, u17.Direction, v45, u2, workspace:GetServerTimeNow()) end end end u17.Destroyed = function() --[[ line: 624 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 v48 = Character_2.PrimaryPart or (Character_2:FindFirstChild("HumanoidRootPart")) if v48 then local v49 = Instance.new("BodyVelocity") v49.MaxForce = Vector3.new(1e+05, 1e+05, 1e+05) v49.Velocity = (-CurrentCamera_upv_1.CFrame.LookVector + Vector3.new(0, 0.30000001192092896, 0)).Unit * 200 v49.P = 1500 v49.Parent = v48 task.delay(0.3, v49.Destroy, v49) end end end end local tbl_upv_9 = {"Finger-Guns", "Dual Micro Uzis", "Dual-Beretta"} function tbl_upv_4.Fire(a1, a2) --[[ name: Fire line: 655 upvalues: clock_upv_1 (copy, index: 1) u9 (copy, index: 2) Device_upv_1 (copy, index: 3) tbl_upv_9 (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 v50, v51, v52 = nil, 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_6 = a1.Settings local IsShotgun_2 = Settings_upv_6.IsShotgun local v53 = (IsShotgun_2 and (Settings_upv_6.BulletCount)) or 1 local v54 = Settings_upv_6.Recoil / 5.5 local u20 = 3 u20 = (Device_upv_1:IsOnMobile() and (u20 * 2)) or u20 if _G.Crouching then v54 = v54 * 0.75 u20 = u20 * 1.25 elseif _G.Crawling then v54 = v54 * 0.5 u20 = u20 * 1.5 end local v55 = ((workspace:GetAttribute("CanJam") == true) and (Settings_upv_6.JamChance)) or nil local RootPart_1 = a1.RootPart local Handle_2 = a1.Handle if not Handle_2:FindFirstChild("MuzzleAttachment") then return end v50 = Handle_2.MuzzleAttachment local v56 = table.find(tbl_upv_9, a1.Instance.Name) if v56 and a1.DualShot == 2 then v50 = Handle_2.SecondMuzzleAttachment end local Position_1 = v50.WorldCFrame.Position local v57 = ((workspace:Raycast(RootPart_1.Position, Position_1 - RootPart_1.Position, u9)) and (RootPart_1.Position)) or Position_1 if Device_upv_1:IsOnMobile() then local v66 = a1._Crosshair local v67 = a1._Crosshair.AbsolutePosition + a1._Crosshair.AbsoluteSize / 2 local v58 = CurrentCamera_upv_1:ScreenPointToRay((a1._Crosshair.AbsolutePosition + a1._Crosshair.AbsoluteSize / 2).X, (a1._Crosshair.AbsolutePosition + a1._Crosshair.AbsoluteSize / 2).Y) local v59 = workspace:Raycast(v58.Origin, v58.Direction * 5000, u9) v51 = (v59 and (v59.Position)) or (v58.Origin + v58.Direction * 5000) else v51 = u1.Hit.Position end v52 = (v51 - v57).Unit if v52.Magnitude < 0.001 then v52 = ((CurrentCamera_upv_1.CFrame.Position + CurrentCamera_upv_1.CFrame.LookVector * 5000) - v57).Unit end local v60 = math.random(30, 100) * v54 / 3 local u21 = Vector3.new((math.random(-10, 10) * v54) / 2, v60, -math.random(5, 10)) a1.LastFired = u19 Fire_upv_1:FireServer(u7, v57, v52) 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_9, 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_9, 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 v55 then local v61 = math.random(1, v55 * 1.5) == 1 a1:Set("IsJammed", v61) end for v68, value_9 in Handle_2.FireSounds:GetChildren() do if not (_G.GunVolume) then value_9:Play() continue end local v62 = value_9:GetAttribute("Volume") local v63 = v62 and (v62 * _G.GunVolume) if not (v62) then value_9:Play() continue end if v63 then value_9.Volume = v63 end value_9:Play() end a1.Spring_Recoil:Shove(u21) task.delay( 0.2, function() --[[ line: 761 upvalues: a1 (copy, index: 1) u21 (copy, index: 2) Settings_upv_6 (copy, index: 3) u20 (ref, index: 4) ]] if not a1.IsEquipped then return end a1.Spring_Recoil:Shove(-u21 - Vector3.new(0, -math.clamp(Settings_upv_6.Recoil, 0, 1) / u20, 0)) end ) if _G.Shadows and _G.Effects and not (_G.LowGFX) then local tbl_10 = {Enabled = true, Size = 10} TweenService_upv_1:Create(u11, TweenInfo.new(0.1), tbl_10):Play() task.delay( 0.1, function() --[[ line: 772 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_11 = {Enabled = false, Size = 0} TweenService_upv_1:Create(u11, TweenInfo.new(0.1), tbl_11):Play() end ) end for v69 = 1, v53 do local v64 if IsShotgun_2 then v64 = Shared_upv_1.RandomizeDirection(v57, v52, _Random_2, Settings_upv_6) else v64 = v52 end a1:FireBullet(v57, v64) local v65 = table.find(tbl_upv_9, a1.Instance.Name) if v65 then a1.DualShot = ((a1.DualShot ~= 1) and 1) or 2 end end task.wait((60 / a1.Settings.FireRate) / 2) end end function tbl_upv_4.SwitchHold(a1) --[[ name: SwitchHold line: 800 ]] 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_4.RestoreScopeCamera(a1) --[[ name: RestoreScopeCamera line: 812 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: 829 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_4.ToggleScope(a1, a2) --[[ name: ToggleScope line: 836 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 v66 = ScopeGUI_1 and (ScopeGUI_1:FindFirstChild("Scope")) if not v66 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 v66.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 v67 = TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local tbl_12 = {} tbl_12.FieldOfView = a1.Settings.ScopeFOV or 15 TweenService_upv_1:Create(CurrentCamera_upv_1, v67, tbl_12):Play() else UserInputService_upv_1.MouseDeltaSensitivity = a1._Sensitivity or 1 a1._Sensitivity = nil v66.Visible = false a1:RestoreScopeCamera() if a1._Crosshair then a1._Crosshair.Visible = true end local v68 = TweenInfo.new(0.25, Enum.EasingStyle.Quad, Enum.EasingDirection.Out) local tbl_13 = {FieldOfView = 0} tbl_13.FieldOfView = (_G.FOV or 70) + (((_G.Running ~= true) and 0) or 5) TweenService_upv_1:Create(CurrentCamera_upv_1, v68, tbl_13):Play() end end function tbl_upv_4.SwitchBeam(a1) --[[ name: SwitchBeam line: 872 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_4.Slide(a1) --[[ name: Slide line: 886 upvalues: clock_upv_1 (copy, index: 1) Slide_upv_1 (copy, index: 2) ]] local v69 = clock_upv_1() if not (a1.Settings.EquipTime <= v69 - a1._EquipTime) or (a1._HoldState) then return end if not (a1:Get("Slided")) or a1:Get("IsJammed") then a1._SlideTime = v69 Slide_upv_1:FireServer() a1:PlayAnimation("Slide") end a1:Set("Slided", true) a1:Set("IsJammed", false) end function tbl_upv_4.Reload(a1) --[[ name: Reload line: 899 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 v70 = true if a1:Get("IsReloading") or a1:Get("IsJammed") then v70 = false elseif a1:Get("Capacity") <= 0 then local v71 = LocalPlayer_upv_1.Backpack:FindFirstChild(a1.Settings.AmmoType .. " Ammo") v70 = (v71) or false end if not v70 then return end Reload_upv_1:FireServer(a1.Instance) a1:Set("IsReloading", true) task.delay( a1.Settings.ReloadTime + 0.5, function() --[[ line: 921 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: 928 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 local Rocket_1 = a1.Instance.Model:FindFirstChild("Rocket") if not Rocket_1 or not Rocket_1:IsA("BasePart") then return end Rocket_1.Transparency = 0 end end function tbl_upv_4.AutoSlide(a1) --[[ name: AutoSlide line: 951 ]] if not a1 or not _G.AutoSlide then return end local v72 = a1:Get("IsJammed") if a1:Get("Slided") and not (v72) or a1.PendingSlide then return end local Instance_upv_3 = a1.Instance local Character_upv_3 = a1.Character if not Instance_upv_3 then return end if Character_upv_3 and Instance_upv_3.Parent == Character_upv_3 then local EquipTime_1 = a1.Settings.EquipTime a1.PendingSlide = true task.delay( ((not v72) and EquipTime_1) or (EquipTime_1 / 1.5), function() --[[ line: 984 upvalues: a1 (copy, index: 1) Instance_upv_3 (copy, index: 2) Character_upv_3 (copy, index: 3) ]] a1.PendingSlide = false if not Instance_upv_3 or not Instance_upv_3.Parent or not Character_upv_3 or Instance_upv_3.Parent ~= Character_upv_3 then return end a1:Slide() end ) end end local tbl_upv_14 = {} tbl_upv_14.FieldOfView = 5 tbl_upv_14.Friction = 0.5 tbl_upv_14.Tracking = 0.5 tbl_upv_14.Centering = 0.4 tbl_upv_14.MinRange = 35 tbl_upv_14.MaxRange = 200 tbl_upv_14.Enabled = true local tbl_upv_15 = {} tbl_upv_15.FieldOfView = 6 tbl_upv_15.Friction = 0.6 tbl_upv_15.Tracking = 0.6 tbl_upv_15.Centering = 0.5 tbl_upv_15.MinRange = 35 tbl_upv_15.MaxRange = 200 tbl_upv_15.Enabled = true function tbl_upv_4.OnEquip(a1) --[[ name: OnEquip line: 1014 upvalues: Device_upv_1 (copy, index: 1) u8 (copy, index: 2) tbl_upv_15 (copy, index: 3) tbl_upv_14 (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) LocalPlayer_upv_1 (copy, index: 11) clock_upv_1 (copy, index: 12) u6 (ref, index: 13) RunService_upv_1 (copy, index: 14) CollectionService_upv_1 (copy, index: 15) ]] local Instance_upv_4 = 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 v73 = Device_upv_1:IsOnConsole() local v74 = Device_upv_1:IsOnMobile() local v75 = Device_upv_1:IsOnPC() local v76 = Device_upv_1:IsOnBoth() local u23 = 0 local u24 = false if a1.aimAssistController then local _ if not (u8) or u8 == nil then local v77 = v74 and tbl_upv_15 or tbl_upv_14 _ = v77 elseif v74 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, false) 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: 1055 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 v74 then a1.aimAssistController:setCursorDirectionGetter( function() --[[ line: 1070 upvalues: a1 (copy, index: 1) CurrentCamera_upv_1 (copy, index: 2) u9 (copy, index: 3) ]] local _Crosshair_1 = a1._Crosshair local v78 = _Crosshair_1.AbsolutePosition + _Crosshair_1.AbsoluteSize / 2 local v79 = CurrentCamera_upv_1:ScreenPointToRay(v78.X, v78.Y) local v80 = workspace:Raycast(v79.Origin, v79.Direction * 5000, u9) return (((v80 and (v80.Position)) or (v79.Origin + v79.Direction * 5000)) - CurrentCamera_upv_1.CFrame.Position).Unit end ) end if v73 or v76 then EquipTrove_1:Connect( UserInputService_upv_1.InputChanged, function(a3) --[[ line: 1077 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: 1083 upvalues: a1 (copy, index: 1) ]] a1.aimAssistController:updateTouchEligibility() end ) EquipTrove_1:Connect( UserInputService_upv_1.TouchMoved, function() --[[ line: 1087 upvalues: a1 (copy, index: 1) ]] a1.aimAssistController:updateTouchEligibility() end ) end end local function OnAmmoUpdate() --[[ name: OnAmmoUpdate line: 1093 upvalues: a1 (copy, index: 1) u24 (ref, index: 2) u23 (ref, index: 3) Ammo_upv_1 (copy, index: 4) Instance_upv_4 (copy, index: 5) tbl_upv_1 (copy, index: 6) u22 (copy, index: 7) TweenService_upv_1 (copy, index: 8) ]] local v81 = a1:Get("Ammo_Client") or 0 if not (u24) then u24 = true u23 = v81 end Ammo_upv_1.Text = v81 .. " / " .. (a1:Get("Capacity") or "0") local v82 = nil if a1.Settings.AmmoType == "Rocket" then v82 = Instance_upv_4.Model:FindFirstChild("Rocket") if v82 and v82:IsA("BasePart") then v82.Transparency = ((v81 ~= 0) and 0) or 1 end end if _G.Effects and v81 - 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 v83 = TweenInfo.new(0.05, Enum.EasingStyle.Sine, Enum.EasingDirection.In) local tbl_16 = {} tbl_16.Rotation = math.random(5, 10) TweenService_upv_1:Create(Ammo_upv_2, v83, tbl_16):Play() task.delay( 0.05, function() --[[ line: 1124 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_17 = {Rotation = 0} TweenService_upv_1:Create(Ammo_upv_2, TweenInfo.new(0.75, Enum.EasingStyle.Elastic, Enum.EasingDirection.Out), tbl_17):Play() end end ) end u23 = v81 end OnAmmoUpdate() local function OnSlideUpdate() --[[ name: OnSlideUpdate line: 1140 upvalues: a1 (copy, index: 1) Jam_upv_1 (copy, index: 2) Slide_upv_2 (copy, index: 3) MobileButtons_upv_1 (copy, index: 4) ]] local v84 = a1:Get("IsJammed") Jam_upv_1.Visible = v84 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 v84 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") local v86 = "973818318" local v87 = 2 local Data_1 = LocalPlayer_upv_1:FindFirstChild("Data") if Data_1 then local Settings_7 = LocalPlayer_upv_1.Data:FindFirstChild("Settings") local v88, v89 = nil, nil if Settings_7 then v88 = tonumber(tostring(LocalPlayer_upv_1.Data.Settings.Crosshair.Value):match("%d+")) if v88 and v88 > 1 then v86 = tostring(v88) end v89 = tonumber(LocalPlayer_upv_1.Data.Settings.CrosshairSize.Value) if v89 then v87 = math.clamp(v89, 0.1, 3) end end end if v86 ~= "973818318" then u22.Crosshair.Image = "rbxthumb://type=Asset&id=" .. tostring(v86) .. "&w=420&h=420" else u22.Crosshair.Image = "rbxassetid://973818318" end u22.Crosshair.UIScale.Scale = v87 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 = v74 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_18 = {} tbl_18.Position = Position_2 TweenService_upv_1:Create(u22.Frame.Frame, TweenInfo.new(0.5, Enum.EasingStyle.Sine), tbl_18):Play() local tbl_19 = {Rotation = 20} TweenService_upv_1:Create(u22.Frame.Frame, TweenInfo.new(0.25, Enum.EasingStyle.Sine), tbl_19):Play() task.delay( 0.25, function() --[[ line: 1214 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_20 = {Rotation = 0} TweenService_upv_1:Create(u22.Frame.Frame, TweenInfo.new(1, Enum.EasingStyle.Elastic), tbl_20):Play() end end ) end if v74 then Slide_upv_2.Text = "SLIDE" Jam_upv_1.Text = "JAMMED" EquipTrove_1:Connect( MobileButtons_upv_1.FireButton.MouseButton1Down, function() --[[ line: 1228 upvalues: a1 (copy, index: 1) ]] a1._FireRequest = true end ) EquipTrove_1:Connect( MobileButtons_upv_1.FireButton.MouseButton1Up, function() --[[ line: 1231 upvalues: a1 (copy, index: 1) clock_upv_1 (copy, index: 2) u6 (ref, index: 3) ]] if a1.Settings.IsBinary then local v90 = a1.Humanoid:GetAttribute("_RagdollState") local v91, v92 = nil, nil if v90 then v91 = v90 else v92 = a1._HoldState local v93 = nil if v92 then v91 = v92 else v93 = a1:Get("IsReloading") if v93 then v91 = v93 else v91 = true if not (a1:Get("Ammo_Client") <= 0) then v91 = a1:Get("IsJammed") or (not a1:Get("Slided") or (clock_upv_1() - a1._SlideTime < 0.8)) end end end end if not (v91) then local v94 = clock_upv_1() if v94 - u6 <= (60 / a1.Settings.FireRate) * 0.95 or v94 - a1.LastFired < a1.DeltaTime * 0.23170731707317074 then return end a1:Fire() u6 = v94 end end a1._FireRequest = false end ) EquipTrove_1:Connect( MobileButtons_upv_1.ReloadButton.MouseButton1Click, function() --[[ line: 1253 upvalues: a1 (copy, index: 1) ]] a1:Reload() end ) EquipTrove_1:Connect( MobileButtons_upv_1.HoldDownButton.MouseButton1Click, function() --[[ line: 1256 upvalues: a1 (copy, index: 1) ]] a1:SwitchHold() end ) EquipTrove_1:Connect( MobileButtons_upv_1.Unjam.MouseButton1Click, function() --[[ line: 1259 upvalues: a1 (copy, index: 1) ]] a1:Slide() end ) EquipTrove_1:Connect( MobileButtons_upv_1.Beam.MouseButton1Click, function() --[[ line: 1262 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: 1268 upvalues: a1 (copy, index: 1) u22 (copy, index: 2) ]] a1:ToggleScope(u22) end ) end elseif not (v73) or v75 then if not (v75) or v73 then if v76 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: 1380 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: 1402 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 v95 = a1.Humanoid:GetAttribute("_RagdollState") local v96, v97 = nil, nil if v95 then v96 = v95 else v97 = a1._HoldState local v98 = nil if v97 then v96 = v97 else v98 = a1:Get("IsReloading") if v98 then v96 = v98 else v96 = true if not (a1:Get("Ammo_Client") <= 0) then v96 = a1:Get("IsJammed") or (not a1:Get("Slided") or (clock_upv_1() - a1._SlideTime < 0.8)) end end end end if not (v96) then local v99 = clock_upv_1() if v99 - u6 <= (60 / a1.Settings.FireRate) * 0.95 or v99 - a1.LastFired < a1.DeltaTime * 0.23170731707317074 then return end a1:Fire() u6 = v99 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: 1325 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: 1349 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 v100 = a1.Humanoid:GetAttribute("_RagdollState") local v101, v102 = nil, nil if v100 then v101 = v100 else v102 = a1._HoldState local v103 = nil if v102 then v101 = v102 else v103 = a1:Get("IsReloading") if v103 then v101 = v103 else v101 = true if not (a1:Get("Ammo_Client") <= 0) then v101 = a1:Get("IsJammed") or (not a1:Get("Slided") or (clock_upv_1() - a1._SlideTime < 0.8)) end end end end if not (v101) then local v104 = clock_upv_1() if v104 - u6 <= (60 / a1.Settings.FireRate) * 0.95 or v104 - a1.LastFired < a1.DeltaTime * 0.23170731707317074 then return end a1:Fire() u6 = v104 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: 1275 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: 1295 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 v105 = a1.Humanoid:GetAttribute("_RagdollState") local v106, v107 = nil, nil if v105 then v106 = v105 else v107 = a1._HoldState local v108 = nil if v107 then v106 = v107 else v108 = a1:Get("IsReloading") if v108 then v106 = v108 else v106 = true if not (a1:Get("Ammo_Client") <= 0) then v106 = a1:Get("IsJammed") or (not a1:Get("Slided") or (clock_upv_1() - a1._SlideTime < 0.8)) end end end end if not (v106) then local v109 = clock_upv_1() if v109 - u6 <= (60 / a1.Settings.FireRate) * 0.95 or v109 - a1.LastFired < a1.DeltaTime * 0.23170731707317074 then return end a1:Fire() u6 = v109 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_4:GetAttributeChangedSignal("Ammo_Client"), OnAmmoUpdate) EquipTrove_1:Connect(Instance_upv_4:GetAttributeChangedSignal("IsJammed"), OnSlideUpdate) EquipTrove_1:Connect(Instance_upv_4:GetAttributeChangedSignal("Slided"), OnSlideUpdate) a1:Set("Ammo_Client", a1:Get("Ammo_Server")) EquipTrove_1:Connect( Instance_upv_4:GetAttributeChangedSignal("Capacity"), function() --[[ line: 1437 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: 1441 upvalues: a1 (copy, index: 1) ]] a1:Update(a13) end ) EquipTrove_1:Add( function() --[[ line: 1445 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_10 in a1.Handle:GetChildren() do if not (value_10:IsA("Sound")) then continue end local v110 = value_10:GetAttribute("Volume") if v110 then value_10.Volume = v110 * _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_11 in a1.Instance:QueryDescendants("ParticleEmitter [Enabled=true]") do value_11.Enabled = false end for _, value_12 in a1.Instance:QueryDescendants("Beam [Enabled=true]") do if value_12.Parent.Name ~= "BEAM" then value_12.Enabled = false end end end end function tbl_upv_4.OnUnequip(a1) --[[ name: OnUnequip line: 1495 upvalues: u4 (ref, index: 1) ]] 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_21 = {} function tbl_21.Init() --[[ name: Init line: 1510 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_4 (copy, index: 8) tbl_upv_3 (copy, index: 9) Coroutine_upv_1 (copy, index: 10) Effect_upv_1 (copy, index: 11) u4 (ref, index: 12) tbl_upv_2 (copy, index: 13) ]] Update_upv_1.OnClientEvent:Connect( function(a1, a2, a3) --[[ line: 1511 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 function OnGunAdded(a4) --[[ name: OnGunAdded line: 1526 upvalues: Shared_upv_1 (copy, index: 1) LocalPlayer_upv_1 (copy, index: 2) tbl_upv_4 (copy, index: 3) tbl_upv_3 (copy, index: 4) Coroutine_upv_1 (copy, index: 5) ]] local u25 = nil local u26 = nil local function DestroyCurrent_1() --[[ name: DestroyCurrent line: 1530 upvalues: u26 (ref, index: 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: 1547 upvalues: Shared_upv_1 (copy, index: 1) a4 (copy, index: 2) u25 (ref, index: 3) u26 (ref, index: 4) LocalPlayer_upv_1 (copy, index: 5) tbl_upv_4 (copy, index: 6) tbl_upv_3 (copy, index: 7) ]] local v111 = Shared_upv_1.GetPlayerFromTool(a4) if v111 then if v111 ~= u25 then u25 = v111 if u26 then 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 v112 if v111 ~= LocalPlayer_upv_1 then v112 = tbl_upv_3 else v112 = tbl_upv_4 or tbl_upv_3 end u26 = v112.new(a4, v111) end else u25 = nil if not (a4.Parent) and u26 then 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 end end Coroutine_upv_1(OnParentChanged_1) a4:GetPropertyChangedSignal("Parent"):Connect(OnParentChanged_1) end for _, value_13 in CollectionService_2:GetTagged("Gun") do Coroutine_upv_1(OnGunAdded, value_13) end CollectionService_2:GetInstanceAddedSignal("Gun"):Connect(OnGunAdded) Effect_upv_1.OnClientEvent:Connect( function(a5) --[[ line: 1576 upvalues: u4 (ref, index: 1) tbl_upv_2 (copy, index: 2) ]] if u4 then return end if tbl_upv_2[a5] then tbl_upv_2[a5]:Play() end end ) end return tbl_21