if not game:IsLoaded() then game.Loaded:Wait() end ----- pcall(function() setfflag("AdornShadingAPI", "true") end) task.wait(2) local Players = game:GetService("Players") if not Players.LocalPlayer then Players:GetPropertyChangedSignal("LocalPlayer"):Wait() end local LP = Players.LocalPlayer local Mouse = LP:GetMouse() local function HookVFX() local RS = game:GetService("ReplicatedStorage") local VFXLibPos = RS:FindFirstChild("Components") and RS.Components:FindFirstChild("Common") and RS.Components.Common:FindFirstChild("VFXLibary") if not VFXLibPos then VFXLibPos = RS:FindFirstChild("Components") and RS.Components:FindFirstChild("Common") and RS.Components.Common:FindFirstChild("VFXLibrary") end if VFXLibPos then local success, lib = pcall(require, VFXLibPos) if success and lib and lib.CreateTracer then local oldCreateTracer = lib.CreateTracer lib.CreateTracer = function(self, ...) local args = {...} local s, err = pcall(function() oldCreateTracer(self, unpack(args)) end) end end end end -- task.spawn(HookVFX) local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local Workspace = game:GetService("Workspace") local Camera = workspace.CurrentCamera local IsMobile = UserInputService.TouchEnabled local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local BacktrackHistory = {} _G.LoadStage = 0 local Window = nil local Library = nil local Network = nil local Packet_UpdateLookAngle = nil local Packet_ShootWeapon = nil local Packet_UpdateState = nil local _isProcessing = false _G.Config = { Esp = false, EspBoxes = false, EspNames = false, EspHealthBar = false, EspDistance = false, EspTracers = false, EspHeadDot = false, EspWeapon = false, BoxColor = Color3.fromRGB(255, 255, 255), NameColor = Color3.fromRGB(255, 255, 255), HealthBarColor = Color3.fromRGB(0, 255, 0), DistColor = Color3.fromRGB(255, 255, 255), TracerColor = Color3.fromRGB(255, 255, 255), HeadDotColor = Color3.fromRGB(255, 0, 0), WeaponColor = Color3.fromRGB(255, 255, 255), EnemyColor = Color3.fromRGB(150, 200, 60), TeammateColor = Color3.fromRGB(60, 150, 200), EspTeamMode = "Enemies", UseTeamCheck = false, SilentAim = false, NoSpread = false, ShowTracers = false, PlayHitSound = false, ShowHitLogs = false, ShowPenetration = false, FovRadius = 100, ShowFov = false, AimPart = "Head", HeadOnly = false, ShowHitmark = false, NoRecoilVisual = true, NoRecoilReal = true, CustomFov = 90, EnableFov = false, WorldSkyboxEnabled = false, WorldSkybox = "Standard", WorldTimeEnabled = false, WorldClockTime = 12, WorldBrightEnabled = false, WorldBrightness = 2, WorldAmbient = Color3.fromRGB(127, 127, 127), WorldOutdoorAmbient = Color3.fromRGB(127, 127, 127), Bhop = false, BhopSpeed = 18, NoFallDamage = false, NoFlash = false, NoSmoke = false, ColoredSmoke = false, CustomParticles = false, ParticleColor = Color3.fromRGB(170, 0, 255), KillEffect = false, KillEffectMode = "Rocket", MinDamage = 10, MinDamageOverride = 50, MinDamageOverrideActive = false, KillEffectDuration = 3, SmokeColor = Color3.fromRGB(255, 0, 0), GrenadeZoneESP = false, GrenadeZoneColor = Color3.fromRGB(255, 0, 0), AutoFire = false, MinHitChance = 50, WallBang = false, WallDepth = 1.0, AutoWallDepth = false, ShowWallbangIndicator = false, BacktrackTime = 0.33, AntiAim = false, AntiAimPitchMode = "Down", AntiAimBackwards = false, FollowBackwardsAA = false, AntiAimYaw = 0, FakeDuck = false, FakeDuckKey = nil, ThirdPerson = false, ThirdPersonDist = 10, GrenadeTracers = false, GrenadeESP = false, AutoStop = false, AutoPeek = false, IsPeeking = false, AutoPeekReturning = false, AutoPeekKey = nil, SilentAimKey = nil, AutoFireKey = nil, WallBangKey = nil, GuiToggleKey = nil, NoScopeOverlay = false, CustomScopeFov = false, ScopeFovValue = 40, ShowSpread = false, AutoScope = false, SpreadColor = Color3.fromRGB(0, 255, 0), TargetMode = "Near Crosshair", AimHitboxes = {"Head", "HumanoidRootPart", "Torso"}, Multipoint = false, QuickStopOptions = {"Early"}, HistoryPreset = "Low", Weather = "None", BacktrackChams = false, BacktrackChamsColor = Color3.fromRGB(80, 0, 255), BacktrackChamsStyle = "Glow", BacktrackChamsTransparency = 0.5, BulletTracers = false, TracerDuration = 2, SelfBacktrack = false, RemoveScope = false, ShowImpactBox = false, ShowImpacts = true, ImpactColor = Color3.fromRGB(255, 0, 0), ImpactTransparency = 0.5, BulletTracerColor = Color3.fromRGB(0, 100, 255), EspOffscreenArrows = false, EspChams = false, ChamHiddenColor = Color3.fromRGB(255, 0, 0), EspSoulParticles = false, EspOnShotChams = false, EspChinaHat = false, EspSelfChinaHat = false, EspChinaHatRainbow = false, HitmarkColor = Color3.fromRGB(255, 255, 255), HitmarkDuration = 0.5, LegitAim = false, LegitSmooth = 10, LegitFov = 100, LegitBone = "Head", LegitKey = nil, LegitDrawFov = false, LegitAutoScope = false, LegitAutoStop = false } _G.LocalShots = {} local function SpawnHitmarker(position) if not _G.Config.ShowHitmark then return end local hitpart = Instance.new("Part", workspace) hitpart.Transparency = 1 hitpart.CanCollide = false hitpart.CanQuery = false hitpart.Size = Vector3.new(0.01,0.01,0.01) hitpart.Anchored = true hitpart.Position = position hitpart.Name = "BloxStrikeHitmarker" local hit = Instance.new("BillboardGui") hit.Name = "hit" hit.AlwaysOnTop = true hit.Parent = hitpart hit.Size = UDim2.new(0, 50, 0, 50) hit.Adornee = hitpart local hit_img = Instance.new("ImageLabel") hit_img.Name = "hit_img" hit_img.Image = "http://www.roblox.com/asset/?id=10922361372" hit_img.BackgroundTransparency = 1 hit_img.Size = UDim2.new(0, 23, 0, 23) hit_img.Visible = true hit_img.ImageColor3 = _G.Config.HitmarkColor or Color3.new(1,1,1) hit_img.Rotation = 45 hit_img.AnchorPoint = Vector2.new(0.5, 0.5) hit_img.Position = UDim2.new(0.5, 0, 0.5, 0) hit_img.Parent = hit task.spawn(function() local duration = _G.Config.HitmarkDuration or 0.5 local ts = game:GetService("TweenService") local tweninfo = TweenInfo.new(duration, Enum.EasingStyle.Sine) local tweninfo2 = TweenInfo.new(duration, Enum.EasingStyle.Linear) ts:Create(hit_img, tweninfo, {ImageTransparency = 1}):Play() ts:Create(hit_img, tweninfo2, {Rotation = 180}):Play() task.wait(duration) if hit_img then hit_img:Destroy() end if hit then hit:Destroy() end if hitpart then hitpart:Destroy() end end) end local CameraController = nil local OldWeaponKick = nil local function isEnemy(p) if not p or not p.Character then return false end if not _G.Config.UseTeamCheck then return true end if p == LP then return _G.Config.SelfBacktrack end local LPTeamFolder = LP.Character and LP.Character.Parent local PlayerTeamFolder = p.Character.Parent if LP.Team and p.Team then return LP.Team ~= p.Team elseif LPTeamFolder and PlayerTeamFolder and LPTeamFolder.Name ~= "Players" then return LPTeamFolder ~= PlayerTeamFolder end return true end local function SafeNum(val, default) if type(val) == "number" and val == val then return val end return default end local function UpdateRecoil() if not CameraController then local success, cc = pcall(function() return require(game.ReplicatedStorage.Controllers.CameraController) end) if success and cc then CameraController = cc OldWeaponKick = cc.weaponKick OldSetRecoil = cc.setWeaponRecoil end end if CameraController then if _G.Config.NoRecoilVisual then CameraController.weaponKick = function() end else if OldWeaponKick then CameraController.weaponKick = OldWeaponKick end end if _G.Config.NoRecoilReal then CameraController.setWeaponRecoil = function() end else if OldSetRecoil then CameraController.setWeaponRecoil = OldSetRecoil end end end end UpdateRecoil() local function playHitSound() if not _G.Config.PlayHitSound then return end local s = Instance.new("Sound") s.SoundId = "rbxassetid://1255040462" s.Volume = 1 s.PlayOnRemove = true s.Parent = Workspace s:Destroy() end local function CreateHitMarker() if not _G.Config.ShowHitmark then return end local gui = LP.PlayerGui:FindFirstChild("BloxStrikeHitMarker") if not gui then gui = Instance.new("ScreenGui") gui.Name = "BloxStrikeHitMarker" gui.Parent = LP.PlayerGui gui.ResetOnSpawn = false end local img = Instance.new("ImageLabel") img.BackgroundTransparency = 1 img.Image = "rbxassetid://131362846" img.Size = UDim2.new(0, 30, 0, 30) img.Position = UDim2.new(0.5, 0, 0.5, 0) img.AnchorPoint = Vector2.new(0.5, 0.5) img.ImageColor3 = Color3.fromRGB(255, 255, 255) img.Parent = gui game:GetService("TweenService"):Create(img, TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), { Size = UDim2.new(0, 15, 0, 15), ImageTransparency = 1 }):Play() task.delay(0.3, function() img:Destroy() end) end local function VisualizeShrapnel(pos) if not _G.Config.GrenadeTracers then return end local lines = {} local numLines = 16 local length = 12 for i = 1, numLines do local line = Drawing.new("Line") line.Visible = true line.Color = _G.Config.GrenadeZoneColor or Color3.fromRGB(255, 100, 0) line.Thickness = 2 line.Transparency = 1 local x = math.random() * 2 - 1 local y = math.random() * 2 - 1 local z = math.random() * 2 - 1 local dir = Vector3.new(x, y, z).Unit table.insert(lines, {obj = line, dir = dir}) end task.spawn(function() local t = 0 local duration = 0.8 local startTick = tick() local connection connection = RunService.RenderStepped:Connect(function() t = tick() - startTick if t > duration then connection:Disconnect() for _, item in ipairs(lines) do item.obj:Remove() end return end local alpha = math.clamp(t / duration, 0, 1) local expansion = (1 - (1 - alpha) * (1 - alpha)) * length for _, item in ipairs(lines) do local line = item.obj local dir = item.dir local worldStart = pos + (dir * (expansion * 0.2)) local worldEnd = pos + (dir * expansion) local screenStart, onScreen1 = Camera:WorldToViewportPoint(worldStart) local screenEnd, onScreen2 = Camera:WorldToViewportPoint(worldEnd) if onScreen1 or onScreen2 then line.Visible = true line.From = Vector2.new(screenStart.X, screenStart.Y) line.To = Vector2.new(screenEnd.X, screenEnd.Y) line.Transparency = 1 - alpha else line.Visible = false end end end) end) end local function AttachGrenadeESP(child) if not child then return end local name = child.Name local isSmoke = name:find("VoxelSmoke") local isFire = name:find("VoxelFire") if isSmoke or isFire then task.wait() if not child or not child.Parent then return end local showZone = (isFire and _G.Config.MolotovZoneESP) or (isSmoke and _G.Config.SmokeZoneESP) if showZone then local function AdornVoxel(part) if part:IsA("BasePart") and not part:FindFirstChild("BS_ZoneBox") then local box = Instance.new("BoxHandleAdornment") box.Name = "BS_ZoneBox" box.Adornee = part box.Size = part.Size box.Color3 = _G.Config.GrenadeZoneColor box.Transparency = 0.6 box.AlwaysOnTop = true box.ZIndex = 0 box.Parent = part end end for _, v in ipairs(child:GetChildren()) do AdornVoxel(v) end child.ChildAdded:Connect(AdornVoxel) end if isSmoke and _G.Config.ColoredSmoke then for _, v in ipairs(child:GetDescendants()) do if v:IsA("BasePart") then v.Color = _G.Config.SmokeColor v.Material = Enum.Material.Neon elseif v:IsA("ParticleEmitter") then v.Color = ColorSequence.new(_G.Config.SmokeColor) end end elseif isSmoke and _G.Config.NoSmoke then child:Destroy() end return end if not _G.Config.GrenadeESP and not _G.Config.GrenadeTracers then return end local lowName = name:lower() local isUUID = name:match("^%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$") local matchesUUID = isUUID and (not isSmoke and not isFire) local isNameMatch = lowName:find("grenade") or lowName:find("flashbang") or lowName:find("molotov") or lowName:find("projectile") if matchesUUID or isNameMatch then if not child or not child.Parent then return end local part = child if not part:IsA("BasePart") then part = child:FindFirstChildWhichIsA("BasePart") end if part then if _G.Config.GrenadeESP then local box = Instance.new("BoxHandleAdornment") box.Name = "GrenadeBox" box.Adornee = part box.Size = part.Size + Vector3.new(0.2, 0.2, 0.2) box.Color3 = Color3.fromRGB(255, 60, 0) box.Transparency = 0.3 box.AlwaysOnTop = true box.ZIndex = 5 box.Parent = part local bg = Instance.new("BillboardGui") bg.Name = "GrenadeLabel" bg.Adornee = part bg.Size = UDim2.new(0,100,0,50) bg.StudsOffset = Vector3.new(0, 1, 0) bg.AlwaysOnTop = true bg.Parent = part local text = Instance.new("TextLabel") text.BackgroundTransparency = 1 text.Size = UDim2.new(1,0,1,0) text.Text = "GRENADE" text.TextColor3 = Color3.fromRGB(255, 0, 0) text.TextStrokeTransparency = 0 text.Parent = bg local att0 = Instance.new("Attachment", part) local att1 = Instance.new("Attachment", part) att0.Position = Vector3.new(0, 0.05, 0) att1.Position = Vector3.new(0, -0.05, 0) local trail = Instance.new("Trail") trail.Name = "GrenadeTrail" trail.Attachment0 = att0 trail.Attachment1 = att1 trail.Color = ColorSequence.new(Color3.fromRGB(255, 60, 0)) trail.Lifetime = 2 trail.MinLength = 0 trail.FaceCamera = true trail.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0), NumberSequenceKeypoint.new(0.8, 0), NumberSequenceKeypoint.new(1, 1) }) trail.Parent = part end task.spawn(function() local lastPos = part.Position while part and part.Parent do lastPos = part.Position task.wait() end if lastPos then VisualizeShrapnel(lastPos) end end) end end end local function AttachImpactESP(child) if not _G.Config.ShowImpacts then return end if not child then return end if child.Name == "HitMarker" or child.Name == "HitPart" then task.wait() if not child or not child.Parent then return end local isLocal = false local now = tick() for i = #_G.LocalShots, 1, -1 do local shot = _G.LocalShots[i] if now - shot.Time > 1.0 then table.remove(_G.LocalShots, i) elseif (child.Position - shot.Position).Magnitude < 5.0 then isLocal = true end end if isLocal and child:IsA("BasePart") then local box = Instance.new("BoxHandleAdornment") box.Name = "ImpactBox" box.Adornee = child box.Size = child.Size + Vector3.new(0.05, 0.05, 0.05) box.Color3 = _G.Config.ImpactColor box.Transparency = _G.Config.ImpactTransparency box.AlwaysOnTop = true box.ZIndex = 5 box.Parent = child end end end local DebrisConnections = {} local function MonitorDebris(folder) if DebrisConnections[folder] then return end DebrisConnections[folder] = true folder.ChildAdded:Connect(function(c) AttachGrenadeESP(c) AttachImpactESP(c) end) for _, child in ipairs(folder:GetChildren()) do AttachGrenadeESP(child) AttachImpactESP(child) end end local debrisFolder = workspace:FindFirstChild("Debris") if debrisFolder then MonitorDebris(debrisFolder) end workspace.ChildAdded:Connect(function(child) if child.Name == "Debris" then MonitorDebris(child) else AttachGrenadeESP(child) AttachImpactESP(child) end end) task.spawn(function() for i, child in ipairs(workspace:GetChildren()) do if i % 100 == 0 then task.wait() end AttachGrenadeESP(child) AttachImpactESP(child) end end) task.spawn(function() local scannedCount = 0 local RS = game:GetService("ReplicatedStorage") local function CheckModule(module) scannedCount = scannedCount + 1 if not module or not module:IsA("ModuleScript") then return false end local name = module.Name:lower() -- Only require potential network/game modules. Improve this list if needed. if not (name:find("network") or name:find("game") or name:find("controller") or name:find("system")) then return false end if name:match("test") or name:match("spec") or name == "bytenet" or name == "promise" or name == "trove" then return false end local s, r = pcall(require, module) if s and type(r) == "table" then local success, isNetwork = pcall(function() return r.Character and r.Inventory and r.Inventory.ShootWeapon end) if success and isNetwork then Packet_ShootWeapon = r.Inventory.ShootWeapon Network = r Packet_UpdateState = Network.Character and Network.Character.UpdateCrouchState if Packet_UpdateState and Packet_UpdateState.Send then local oldSend oldSend = hookfunction(Packet_UpdateState.Send, function(...) local args = {...} if _G.Config.FakeDuck then args[1] = true print("[BloxStrike] Fake Duck: Sending Crouch=true") return oldSend(unpack(args)) end return oldSend(...) end) end if Network.VFX and Network.VFX.FlashPlayer then if Network.VFX.FlashPlayer.Listen then Network.VFX.FlashPlayer.Listen(function(...) if _G.Config.NoFlash then end end) end end if Network.Character and Network.Character.FallDamage then if Network.Character.FallDamage.Send then local oldSend oldSend = hookfunction(Network.Character.FallDamage.Send, function(...) if _G.Config.NoFallDamage then return end return oldSend(...) end) end end -- task.spawn(function() -- game:GetService("StarterGui"):SetCore("SendNotification", { -- Title = "BloxStrike", -- Text = "Network Found & Hooked", -- Duration = 5 -- }) -- end) return true end end return false end local function SmartScan(folder) if not folder then return false end for _, v in ipairs(folder:GetChildren()) do if CheckModule(v) then return true end end return false end -- Priority check known folders if SmartScan(RS:FindFirstChild("Systems")) then return end if SmartScan(RS:FindFirstChild("Controllers")) then return end -- Fallback: Scan likely folders only local foldersToCheck = {"Shared", "Common", "Definitions", "Packets", "Game"} for _, name in ipairs(foldersToCheck) do local folder = RS:FindFirstChild(name) if folder then for i, v in ipairs(folder:GetDescendants()) do if i % 100 == 0 then task.wait() end -- Slower scan is safer if CheckModule(v) then return end end end end end) task.spawn(function() if getrawmetatable and setreadonly then local mt = getrawmetatable(game) local oldNewIndex = mt.__newindex setreadonly(mt, false) mt.__newindex = newcclosure(function(self, key, value) if self == LP then if _G.Config.ThirdPerson then if key == "CameraMode" then return oldNewIndex(self, key, Enum.CameraMode.Classic) elseif key == "CameraMaxZoomDistance" then return oldNewIndex(self, key, _G.Config.ThirdPersonDist) elseif key == "CameraMinZoomDistance" then return oldNewIndex(self, key, _G.Config.ThirdPersonDist) end end end return oldNewIndex(self, key, value) end) setreadonly(mt, true) end end) if makefolder and writefile and isfile and isfolder then pcall(function() if not isfolder("HihiHub") then makefolder("HihiHub") end if not isfolder("HihiHub/configs") then makefolder("HihiHub/configs") end end) end UpdateRecoil() local skyboxtable = { ["Standard"] = { SkyboxBk = "http://www.roblox.com/asset/?id=91458024", SkyboxDn = "http://www.roblox.com/asset/?id=91457980", SkyboxFt = "http://www.roblox.com/asset/?id=91458024", SkyboxLf = "http://www.roblox.com/asset/?id=91458024", SkyboxRt = "http://www.roblox.com/asset/?id=91458024", SkyboxUp = "http://www.roblox.com/asset/?id=91458002" }, ["Minecraft"] = { SkyboxBk = "rbxassetid://8735166756", SkyboxDn = "http://www.roblox.com/asset/?id=8735166707", SkyboxFt = "http://www.roblox.com/asset/?id=8735231668", SkyboxLf = "http://www.roblox.com/asset/?id=8735166755", SkyboxRt = "http://www.roblox.com/asset/?id=8735166751", SkyboxUp = "http://www.roblox.com/asset/?id=8735166729" }, ["Spongebob"] = { SkyboxBk = "rbxassetid://277099484", SkyboxDn = "rbxassetid://277099500", SkyboxFt = "rbxassetid://277099554", SkyboxLf = "rbxassetid://277099531", SkyboxRt = "rbxassetid://277099589", SkyboxUp = "rbxassetid://277101591" }, ["Deep Space"] = { SkyboxBk = "rbxassetid://159248188", SkyboxDn = "rbxassetid://159248183", SkyboxFt = "rbxassetid://159248187", SkyboxLf = "rbxassetid://159248173", SkyboxRt = "rbxassetid://159248192", SkyboxUp = "rbxassetid://159248176" }, ["Clouded Sky"] = { SkyboxBk = "rbxassetid://252760981", SkyboxDn = "rbxassetid://252763035", SkyboxFt = "rbxassetid://252761439", SkyboxLf = "rbxassetid://252760980", SkyboxRt = "rbxassetid://252760986", SkyboxUp = "rbxassetid://252762652" }, ["Retro"] = { SkyboxBk = "rbxasset://sky/null_plainsky512_bk.jpg", SkyboxDn = "rbxasset://sky/null_plainsky512_dn.jpg", SkyboxFt = "rbxasset://sky/null_plainsky512_ft.jpg", SkyboxLf = "rbxasset://sky/null_plainsky512_lf.jpg", SkyboxRt = "rbxasset://sky/null_plainsky512_rt.jpg", SkyboxUp = "rbxasset://sky/null_plainsky512_up.jpg" }, ["City"] = { SkyboxBk = "rbxassetid://9134792889", SkyboxDn = "rbxassetid://9134791975", SkyboxFt = "rbxassetid://9134793457", SkyboxLf = "rbxassetid://9134791234", SkyboxRt = "rbxassetid://9134790419", SkyboxUp = "rbxassetid://9134791633" }, ["Purple Nebula"] = { SkyboxBk = "rbxassetid://15983968922", SkyboxDn = "rbxassetid://15983966825", SkyboxFt = "rbxassetid://15983965025", SkyboxLf = "rbxassetid://15983967420", SkyboxRt = "rbxassetid://15983966246", SkyboxUp = "rbxassetid://15983964246" } } local function UpdateSkybox(name) local data = skyboxtable[name] if not data then return end local L = game:GetService("Lighting") for _, v in pairs(L:GetChildren()) do if v:IsA("Atmosphere") or v:IsA("Clouds") then v:Destroy() end end local sky = L:FindFirstChild("BloxStrike_Sky") if not sky then for _, v in pairs(L:GetChildren()) do if v:IsA("Sky") then v:Destroy() end end sky = Instance.new("Sky") sky.Name = "BloxStrike_Sky" sky.Parent = L end sky.SkyboxBk = data.SkyboxBk sky.SkyboxDn = data.SkyboxDn sky.SkyboxFt = data.SkyboxFt sky.SkyboxLf = data.SkyboxLf sky.SkyboxRt = data.SkyboxRt sky.SkyboxUp = data.SkyboxUp sky.SunTextureId = "" sky.MoonTextureId = "" sky.StarCount = 0 end local WeatherPart = nil local GroundPart = nil local CurrentWeatherType = "None" local function UpdateWeather(wType) _G.Config.Weather = wType CurrentWeatherType = wType if WeatherPart then WeatherPart:Destroy() WeatherPart = nil end if GroundPart then GroundPart:Destroy() GroundPart = nil end if wType == "None" then return end WeatherPart = Instance.new("Part") WeatherPart.Name = "BloxStrike_Weather_Sky" WeatherPart.Size = Vector3.new(100, 1, 100) WeatherPart.Transparency = 1 WeatherPart.Anchored = true WeatherPart.CanCollide = false WeatherPart.Parent = workspace.CurrentCamera local SkyEmitter = Instance.new("ParticleEmitter") SkyEmitter.Parent = WeatherPart SkyEmitter.EmissionDirection = Enum.NormalId.Bottom GroundPart = Instance.new("Part") GroundPart.Name = "BloxStrike_Weather_Ground" GroundPart.Size = Vector3.new(50, 1, 50) GroundPart.Transparency = 1 GroundPart.Anchored = true GroundPart.CanCollide = false GroundPart.Parent = workspace.CurrentCamera local GroundEmitter = nil if wType == "Rain" then SkyEmitter.Texture = "rbxassetid://0" SkyEmitter.Rate = 2000 SkyEmitter.Color = ColorSequence.new(Color3.fromRGB(200, 200, 255)) SkyEmitter.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0.5), NumberSequenceKeypoint.new(1, 1) }) SkyEmitter.Size = NumberSequence.new(0.1, 0) SkyEmitter.Lifetime = NumberRange.new(1, 1.5) SkyEmitter.Speed = NumberRange.new(100, 150) SkyEmitter.SpreadAngle = Vector2.new(0, 0) SkyEmitter.Orientation = Enum.ParticleOrientation.VelocityParallel SkyEmitter.Acceleration = Vector3.new(0, -50, 0) GroundEmitter = Instance.new("ParticleEmitter") GroundEmitter.Parent = GroundPart GroundEmitter.Texture = "rbxassetid://2015509923" GroundEmitter.Orientation = Enum.ParticleOrientation.VelocityPerpendicular GroundEmitter.Rate = 300 GroundEmitter.Color = ColorSequence.new(Color3.fromRGB(255, 255, 255)) GroundEmitter.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0.2), NumberSequenceKeypoint.new(1, 1) }) GroundEmitter.Size = NumberSequence.new(1, 2) GroundEmitter.Lifetime = NumberRange.new(0.2, 0.3) GroundEmitter.Speed = NumberRange.new(0, 0) elseif wType == "Snow" then SkyEmitter.Texture = "rbxassetid://241396659" SkyEmitter.Rate = 300 SkyEmitter.Color = ColorSequence.new(Color3.fromRGB(255, 255, 255)) SkyEmitter.Size = NumberSequence.new(0.5, 0.2) SkyEmitter.Speed = NumberRange.new(10, 25) SkyEmitter.Lifetime = NumberRange.new(3, 5) SkyEmitter.Acceleration = Vector3.new(0, -5, 0) SkyEmitter.Rotation = NumberRange.new(0, 360) SkyEmitter.RotSpeed = NumberRange.new(-50, 50) elseif wType == "Hell Fire" then SkyEmitter.Texture = "rbxassetid://242205518" SkyEmitter.Rate = 400 SkyEmitter.Color = ColorSequence.new(Color3.fromRGB(255, 100, 0), Color3.fromRGB(150, 0, 0)) SkyEmitter.Size = NumberSequence.new(2, 4) SkyEmitter.Speed = NumberRange.new(40, 60) SkyEmitter.Lifetime = NumberRange.new(2, 3) SkyEmitter.Acceleration = Vector3.new(0, -10, 0) SkyEmitter.RotSpeed = NumberRange.new(50, 100) end end local function UpdateWeather(wType) if WeatherPart then WeatherPart:Destroy() WeatherPart = nil end if GroundPart then GroundPart:Destroy() GroundPart = nil end for _, v in pairs(workspace:GetChildren()) do if v.Name == "BloxStrike_RainDrop" then v:Destroy() end end _G.WeatherState = {Balls = {}, LastBall = tick(), Type = wType} if wType == "None" then return end WeatherPart = Instance.new("Part") WeatherPart.Name = "BloxStrike_Weather_Sky" WeatherPart.Size = Vector3.new(100, 1, 100) WeatherPart.Transparency = 1 WeatherPart.Anchored = true WeatherPart.CanCollide = false WeatherPart.Parent = workspace.CurrentCamera local SkyEmitter = Instance.new("ParticleEmitter") SkyEmitter.Parent = WeatherPart SkyEmitter.EmissionDirection = Enum.NormalId.Bottom SkyEmitter.Enabled = true GroundPart = Instance.new("Part") GroundPart.Name = "BloxStrike_Weather_Ground" GroundPart.Size = Vector3.new(50, 1, 50) GroundPart.Transparency = 1 GroundPart.Anchored = true GroundPart.CanCollide = false GroundPart.Parent = workspace.CurrentCamera local GroundEmitter = Instance.new("ParticleEmitter") GroundEmitter.Parent = GroundPart GroundEmitter.Enabled = false if wType == "Rain" then SkyEmitter.Texture = "rbxassetid://241868005" SkyEmitter.Rate = 10000 SkyEmitter.Color = ColorSequence.new(Color3.fromRGB(255, 255, 255)) SkyEmitter.LightEmission = 0.2 SkyEmitter.Transparency = NumberSequence.new(0) SkyEmitter.Size = NumberSequence.new(3, 6) SkyEmitter.Lifetime = NumberRange.new(2, 2.5) SkyEmitter.Speed = NumberRange.new(80, 100) SkyEmitter.SpreadAngle = Vector2.new(0, 0) SkyEmitter.Acceleration = Vector3.new(0, -50, 0) SkyEmitter.Orientation = Enum.ParticleOrientation.FacingCamera local sound = Instance.new("Sound", WeatherPart) sound.SoundId = "rbxassetid://3786250088" sound.Volume = 9 sound.Looped = true sound.Playing = true elseif wType == "Snow" then SkyEmitter.Texture = "rbxassetid://99851851" SkyEmitter.Rate = 200 SkyEmitter.Color = ColorSequence.new(Color3.fromRGB(255, 255, 255)) SkyEmitter.Size = NumberSequence.new(0.25, 0.35) SkyEmitter.Speed = NumberRange.new(30, 30) SkyEmitter.Lifetime = NumberRange.new(5, 10) SkyEmitter.Acceleration = Vector3.new(0, 0, 0) SkyEmitter.SpreadAngle = Vector2.new(50, 50) SkyEmitter.LightEmission = 0.5 SkyEmitter.Rotation = NumberRange.new(0, 0) SkyEmitter.RotSpeed = NumberRange.new(0, 0) elseif wType == "Hell Fire" then SkyEmitter.Texture = "rbxassetid://242205518" SkyEmitter.Rate = 400 SkyEmitter.Color = ColorSequence.new(Color3.fromRGB(255, 100, 0), Color3.fromRGB(150, 0, 0)) SkyEmitter.Size = NumberSequence.new(2, 4) SkyEmitter.Speed = NumberRange.new(40, 60) SkyEmitter.Lifetime = NumberRange.new(2, 3) SkyEmitter.Acceleration = Vector3.new(0, -10, 0) SkyEmitter.RotSpeed = NumberRange.new(50, 100) end end local rayParamsCover = RaycastParams.new() local upVec = Vector3.new(0, 100, 0) RunService.RenderStepped:Connect(function() if not workspace.CurrentCamera then return end local CamCF = workspace.CurrentCamera.CFrame if WeatherPart then WeatherPart.CFrame = CamCF * CFrame.new(0, 30, 0) end local underCover = false if LP.Character and LP.Character:FindFirstChild("Head") then rayParamsCover.FilterDescendantsInstances = {LP.Character, WeatherPart, GroundPart, workspace.CurrentCamera} local headPos = LP.Character.Head.Position local res = workspace:Raycast(headPos, upVec, rayParamsCover) if res and res.Instance.Transparency < 1 then underCover = true end end if WeatherPart and WeatherPart:FindFirstChild("ParticleEmitter") then WeatherPart.ParticleEmitter.Enabled = not underCover end if _G.WeatherState and _G.WeatherState.Type == "Rain" and not underCover then if tick() - (_G.WeatherState.LastBall or 0) >= math.random() * 0.05 then _G.WeatherState.LastBall = tick() local dist = math.random(5, 25) local offset = Vector3.new(math.random(-15, 15), math.random(-5, 5), -dist) local spawnPos = CamCF:PointToWorldSpace(offset) local rayParams = RaycastParams.new() rayParams.FilterType = Enum.RaycastFilterType.Exclude local ignoreList = {WeatherPart, GroundPart, workspace.CurrentCamera, LP.Character} rayParams.FilterDescendantsInstances = ignoreList local res = workspace:Raycast(spawnPos, Vector3.new(0, -60, 0), rayParams) if res then local splashPart = Instance.new("Part") splashPart.Name = "BS_Splash" splashPart.Transparency = 1 splashPart.CanCollide = false splashPart.Anchored = true splashPart.Size = Vector3.new(0.1, 0.1, 0.1) splashPart.Position = res.Position + Vector3.new(0, 0.2, 0) splashPart.Parent = workspace.CurrentCamera local splash = Instance.new("ParticleEmitter") splash.Parent = splashPart splash.Texture = "rbxassetid://241576804" splash.Size = NumberSequence.new(0.05, 0.1) splash.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0.4), NumberSequenceKeypoint.new(1, 1) }) splash.Lifetime = NumberRange.new(0.2, 0.35) splash.Rate = 0 splash.Speed = NumberRange.new(3, 5) splash.Drag = 15 splash.Acceleration = Vector3.new(0, -20, 0) splash.Rotation = NumberRange.new(0, 360) splash.Orientation = Enum.ParticleOrientation.FacingCamera splash.LightEmission = 0.1 splash:Emit(1) game:GetService("Debris"):AddItem(splashPart, 1) end end end end) local DefaultLighting = { Ambient = game:GetService("Lighting").Ambient, OutdoorAmbient = game:GetService("Lighting").OutdoorAmbient, Brightness = game:GetService("Lighting").Brightness, ClockTime = game:GetService("Lighting").ClockTime, FogEnd = game:GetService("Lighting").FogEnd, FogStart = game:GetService("Lighting").FogStart, GlobalShadows = game:GetService("Lighting").GlobalShadows } local function UpdateLighting() local L = game:GetService("Lighting") if _G.Config.WorldTimeEnabled then L.ClockTime = _G.Config.WorldClockTime else L.ClockTime = DefaultLighting.ClockTime end if _G.Config.WorldBrightEnabled then L.Brightness = _G.Config.WorldBrightness else L.Brightness = DefaultLighting.Brightness end if _G.Config.WorldColorEnabled then L.Ambient = _G.Config.WorldAmbient L.OutdoorAmbient = _G.Config.WorldOutdoorAmbient else L.Ambient = DefaultLighting.Ambient L.OutdoorAmbient = DefaultLighting.OutdoorAmbient end if _G.Config.WorldSkyboxEnabled or _G.Config.WorldTimeEnabled or _G.Config.WorldColorEnabled then L.FogEnd = 9e9 L.FogStart = 9e9 L.GlobalShadows = false else L.FogEnd = DefaultLighting.FogEnd L.FogStart = DefaultLighting.FogStart L.GlobalShadows = DefaultLighting.GlobalShadows end end local function SafeNum(val, default) if type(val) == "number" and val == val then return val end return default or 0 end if not tonumber(_G.Config.MinDamage) or _G.Config.MinDamage ~= _G.Config.MinDamage then _G.Config.MinDamage = 101 end if not tonumber(_G.Config.MinDamageOverride) or _G.Config.MinDamageOverride ~= _G.Config.MinDamageOverride then _G.Config.MinDamageOverride = 10 end local Library = loadstring(game:HttpGet("https://raw.githubusercontent.com/ewenja/HihiHub.gui-new/refs/heads/main/leake_gui_fix_KeyCode.Z_v4.lua"))() local Window = Library:Window({ Name = "HihiHub", SubName = "BETA", Logo = "120959262762131" }) local KeybindList = Library:KeybindList("Keybinds") if Library.KeyList and Library.KeyList.Add then local _OriginalAdd = Library.KeyList.Add Library.KeyList.Add = function(self, Name, Key) local Item = _OriginalAdd(self, Name, Key) if Item and Item.Set then local _OriginalSet = Item.Set Item.Set = function(s, n, v) if v == "[None]" or v == "None" or v == "[Unknown]" or v == "Unknown" or v == "" then if Item.Instance then Item.Instance.Visible = false end if Item.SetVisible then Item:SetVisible(false) end else if Item.Instance then Item.Instance.Visible = true end if Item.SetVisible then Item:SetVisible(true) end _OriginalSet(s, n, v) end end end return Item end end Window:Category("Legit") local LegitPage = Window:Page({Name = "Legit Aimbot", Icon = "108839695397679", Columns = 2}) local LegitAimSection = LegitPage:Section({Name = "Aimbot", Description = "Assists & Triggerbot", Icon = "108839695397679", Side = 1}) local LegitAimToggle = LegitAimSection:Toggle({Name = "Legit Aimbot", Flag = "BS_LegitAim", Default = _G.Config.LegitAim, Callback = function(v) _G.Config.LegitAim = v end}) LegitAimSection:Keybind({Name = "Aimbot Key", Flag = "LegitKey", Default = Enum.UserInputType.None, Callback = function() LegitAimToggle:Set(not _G.Config.LegitAim) end}) LegitAimSection:Slider({Name = "Smoothing", Flag = "LegitSmooth", Min = 1, Max = 30, Default = SafeNum(_G.Config.LegitSmooth, 10), Decimals = 1, Suffix = "", Callback = function(v) _G.Config.LegitSmooth = v end}) LegitAimSection:Slider({Name = "Legit FOV", Flag = "LegitFov", Min = 10, Max = 400, Default = SafeNum(_G.Config.LegitFov, 100), Decimals = 1, Suffix = "px", Callback = function(v) _G.Config.LegitFov = v end}) LegitAimSection:Toggle({Name = "Draw Legit FOV", Flag = "BS_LegitDrawFov", Default = _G.Config.LegitDrawFov, Callback = function(v) _G.Config.LegitDrawFov = v end}) LegitAimSection:Toggle({Name = "Wall Check", Flag = "BS_LegitWallCheck", Default = _G.Config.LegitWallCheck, Callback = function(v) _G.Config.LegitWallCheck = v end}) LegitAimSection:Toggle({Name = "Auto Wallbang", Flag = "BS_LegitAutoWallbang", Default = _G.Config.LegitAutoWallbang, Callback = function(v) _G.Config.LegitAutoWallbang = v end}) LegitAimSection:Dropdown({Name = "Aim Bone", Flag = "LegitBone", Default = {_G.Config.LegitBone}, Items = {"Head", "Neck", "UpperTorso", "HumanoidRootPart"}, Multi = false, Callback = function(v) _G.Config.LegitBone = v end}) LegitAimSection:Toggle({Name = "Auto Fire (Triggerbot)", Flag = "BS_AutoFire", Default = _G.Config.AutoFire, Callback = function(v) _G.Config.AutoFire = v end}) LegitAimSection:Keybind({Name = "Triggerbot Key", Flag = "AutoFireKey", Default = Enum.UserInputType.None, Callback = function() AutoFireToggle:Set(not _G.Config.AutoFire) end}) LegitAimSection:Toggle({Name = "Quick Scope", Flag = "BS_AutoScope", Default = _G.Config.AutoScope, Callback = function(v) _G.Config.AutoScope = v end}) LegitAimSection:Toggle({Name = "Legit Auto Scope (Triggerbot)", Flag = "BS_LegitAutoScope", Default = _G.Config.LegitAutoScope, Callback = function(v) _G.Config.LegitAutoScope = v end}) LegitAimSection:Toggle({Name = "Legit Auto Stop", Flag = "BS_LegitAutoStop", Default = _G.Config.LegitAutoStop, Callback = function(v) _G.Config.LegitAutoStop = v end}) LegitAimSection:Toggle({Name = "Multipoint", Flag = "BS_Multipoint", Default = _G.Config.Multipoint, Callback = function(v) _G.Config.Multipoint = v end}) Window:Category("Rage") local RagePage = Window:Page({Name = "Rage Aimbot", Icon = "108839695397679", Columns = 2}) local RageAimSection = RagePage:Section({Name = "Aimbot", Description = "Silent Aim & Exploits", Icon = "108839695397679", Side = 1}) local SilentAimToggle = RageAimSection:Toggle({Name = "Silent Aim", Flag = "BS_SilentAim", Default = _G.Config.SilentAim, Callback = function(v) _G.Config.SilentAim = v end}) RageAimSection:Keybind({Name = "Silent Aim Key", Flag = "SilentAimKey", Default = Enum.UserInputType.None, Callback = function() SilentAimToggle:Set(not _G.Config.SilentAim) end}) RageAimSection:Dropdown({Name = "Target Mode", Flag = "TargetMode", Default = {_G.Config.TargetMode}, Items = {"Highest Damage", "Near Crosshair"}, Multi = false, Callback = function(v) _G.Config.TargetMode = v end}) RageAimSection:Dropdown({Name = "Hitboxes", Flag = "AimHitboxes", Default = _G.Config.AimHitboxes, Items = {"Head", "UpperTorso", "LowerTorso", "HumanoidRootPart", "RightUpperArm", "LeftUpperArm", "RightUpperLeg", "LeftUpperLeg"}, Multi = true, Callback = function(v) _G.Config.AimHitboxes = v end}) RageAimSection:Toggle({Name = "Wall Bang", Flag = "BS_WallBang", Default = _G.Config.WallBang, Callback = function(v) _G.Config.WallBang = v end}) RageAimSection:Keybind({Name = "Wall Bang Key", Flag = "WallBangKey", Default = Enum.UserInputType.None, Callback = function() WallBangToggle:Set(not _G.Config.WallBang) end}) RageAimSection:Toggle({Name = "Wallbang Indicator", Flag = "BS_ShowWallbangIndicator", Default = _G.Config.ShowWallbangIndicator, Callback = function(v) _G.Config.ShowWallbangIndicator = v end}) RageAimSection:Toggle({Name = "Auto Fire", Flag = "BS_AutoFire", Default = _G.Config.AutoFire, Callback = function(v) _G.Config.AutoFire = v end}) RageAimSection:Slider({Name = "Silent Aim FOV", Flag = "FovRadius", Min = 10, Max = 800, Default = SafeNum(_G.Config.FovRadius, 100), Decimals = 1, Suffix = "px", Callback = function(v) _G.Config.FovRadius = v end}) RageAimSection:Toggle({Name = "Show FOV Circle", Flag = "BS_ShowFov", Default = _G.Config.ShowFov, Callback = function(v) _G.Config.ShowFov = v end}) local defaultMinDamage = 10 if type(_G.Config.MinDamage) == "number" and _G.Config.MinDamage == _G.Config.MinDamage then defaultMinDamage = _G.Config.MinDamage end local defaultOverride = 50 if type(_G.Config.MinDamageOverride) == "number" and _G.Config.MinDamageOverride == _G.Config.MinDamageOverride then defaultOverride = _G.Config.MinDamageOverride end RageAimSection:Slider({Name = "Min Damage", Flag = "MinDamage_V5", Min = 0, Max = 120, Default = defaultMinDamage, Decimals = 1, Suffix = "hp", Callback = function(v) _G.Config.MinDamage = v end}) RageAimSection:Slider({Name = "Override Damage", Flag = "MinDamageOverride_V5", Min = 0, Max = 120, Default = defaultOverride, Decimals = 1, Suffix = "hp", Callback = function(v) _G.Config.MinDamageOverride = v end}) RageAimSection:Keybind({Name = "Override Key", Flag = "MinDamageOverrideKey", Default = Enum.UserInputType.None, Callback = function() _G.Config.MinDamageOverrideActive = not _G.Config.MinDamageOverrideActive if Library and Library.Notify then Library:Notify({Title = "Damage Override", Content = _G.Config.MinDamageOverrideActive and "Active (" .. tostring(_G.Config.MinDamageOverride) .. ")" or "Inactive", Duration = 1}) end end}) RageAimSection:Slider({Name = "Min Hit Chance", Flag = "MinHitChance_V2", Min = 0, Max = 100, Default = SafeNum(_G.Config.MinHitChance, 50), Decimals = 1, Suffix = "%", Callback = function(v) _G.Config.MinHitChance = v end}) local AntiAimSection = RagePage:Section({Name = "Anti-Aim", Description = "Spinbot & Angles", Icon = "108839695397679", Side = 2}) local AntiAimToggle = AntiAimSection:Toggle({Name = "Anti-Aim", Flag = "BS_AntiAim", Default = _G.Config.AntiAim, Callback = function(v) _G.Config.AntiAim = v end}) AntiAimSection:Keybind({Name = "Anti-Aim Key", Flag = "AntiAimKey", Default = Enum.UserInputType.None, Callback = function() AntiAimToggle:Set(not _G.Config.AntiAim) end}) AntiAimSection:Dropdown({Name = "Pitch Mode", Flag = "AntiAimPitchMode", Default = {_G.Config.AntiAimPitchMode}, Items = {"Down", "Up"}, Multi = false, Callback = function(v) _G.Config.AntiAimPitchMode = v end}) AntiAimSection:Toggle({Name = "Backwards AA", Flag = "AntiAimBackwards", Default = _G.Config.AntiAimBackwards, Callback = function(v) _G.Config.AntiAimBackwards = v end}) AntiAimSection:Toggle({Name = "Follow Backwards AA", Flag = "FollowBackwardsAA", Default = _G.Config.FollowBackwardsAA, Callback = function(v) _G.Config.FollowBackwardsAA = v end}) local AllDirectionsToggle = AntiAimSection:Toggle({Name = "360 Mode (Rage)", Flag = "BS_AllDirections", Default = _G.Config.AllDirections, Callback = function(v) _G.Config.AllDirections = v end}) AntiAimSection:Keybind({Name = "360 Mode Key", Flag = "Mode360Key", Default = Enum.UserInputType.None, Callback = function() AllDirectionsToggle:Set(not _G.Config.AllDirections) end}) local BacktrackSection = RagePage:Section({Name = "Backtrack", Description = "History Manipulation", Icon = "108839695397679", Side = 2}) BacktrackSection:Dropdown({Name = "History Amount", Flag = "HistoryPreset", Default = {_G.Config.HistoryPreset}, Items = {"Low", "Medium", "High", "Maximum"}, Multi = false, Callback = function(v) _G.Config.HistoryPreset = v; if v == "Low" then _G.Config.BacktrackTime = 0.1 elseif v == "Medium" then _G.Config.BacktrackTime = 0.2 elseif v == "High" then _G.Config.BacktrackTime = 0.5 elseif v == "Maximum" then _G.Config.BacktrackTime = 1.0 end end}) BacktrackSection:Toggle({Name = "History Visuals", Flag = "BS_BacktrackChams", Default = _G.Config.BacktrackChams, Callback = function(v) _G.Config.BacktrackChams = v end}):Settings(250):Label("Color"):Colorpicker({Name = "Color", Flag = "BacktrackChamsColor", Default = _G.Config.BacktrackChamsColor, Callback = function(v) _G.Config.BacktrackChamsColor = v end}) BacktrackSection:Dropdown({Name = "Visual Style", Flag = "BacktrackChamsStyle", Default = {_G.Config.BacktrackChamsStyle}, Items = {"Shaded", "Solid", "Glow", "Glow Outline", "Hyper Glow", "Iridescent", "Water Flow"}, Multi = false, Callback = function(v) _G.Config.BacktrackChamsStyle = v end}) BacktrackSection:Toggle({Name = "Self Backtrack", Flag = "SelfBacktrack", Default = _G.Config.SelfBacktrack, Callback = function(v) _G.Config.SelfBacktrack = v end}) Window:Category("Visuals") local VisualsPage = Window:Page({Name = "Visuals & ESP", Icon = "100050851789190", Columns = 2}) local EspSection = VisualsPage:Section({Name = "ESP", Description = "Wallhack Settings", Icon = "100050851789190", Side = 1}) local EspToggle = EspSection:Toggle({Name = "Enable ESP", Flag = "BS_Esp", Default = _G.Config.Esp, Callback = function(Value) _G.Config.Esp = Value end}) EspSection:Keybind({Name = "ESP Key", Flag = "EspKey", Default = Enum.UserInputType.None, Callback = function(Value) EspToggle:Set(not _G.Config.Esp) end}) EspSection:Toggle({Name = "Boxes", Flag = "BS_EspBoxes", Default = _G.Config.EspBoxes, Callback = function(v) _G.Config.EspBoxes = v end}):Settings(250):Label("Box Color"):Colorpicker({Name = "Color", Flag = "BoxColor", Default = _G.Config.BoxColor, Callback = function(v) _G.Config.BoxColor = v end}) EspSection:Toggle({Name = "Names", Flag = "BS_EspNames", Default = _G.Config.EspNames, Callback = function(v) _G.Config.EspNames = v end}):Settings(250):Label("Name Color"):Colorpicker({Name = "Color", Flag = "NameColor", Default = _G.Config.NameColor, Callback = function(v) _G.Config.NameColor = v end}) EspSection:Toggle({Name = "Health Bar", Flag = "BS_EspHealthBar", Default = _G.Config.EspHealthBar, Callback = function(v) _G.Config.EspHealthBar = v end}):Settings(250):Label("Health Bar Color"):Colorpicker({Name = "Color", Flag = "HealthBarColor", Default = _G.Config.HealthBarColor, Callback = function(v) _G.Config.HealthBarColor = v end}) EspSection:Toggle({Name = "Distance", Flag = "BS_EspDistance", Default = _G.Config.EspDistance, Callback = function(v) _G.Config.EspDistance = v end}):Settings(250):Label("Distance Color"):Colorpicker({Name = "Color", Flag = "DistColor", Default = _G.Config.DistColor, Callback = function(v) _G.Config.DistColor = v end}) EspSection:Toggle({Name = "Head Dot", Flag = "BS_EspHeadDot", Default = _G.Config.EspHeadDot, Callback = function(v) _G.Config.EspHeadDot = v end}):Settings(250):Label("Head Dot Color"):Colorpicker({Name = "Color", Flag = "HeadDotColor", Default = _G.Config.HeadDotColor, Callback = function(v) _G.Config.HeadDotColor = v end}) EspSection:Toggle({Name = "Weapon", Flag = "BS_EspWeapon", Default = _G.Config.EspWeapon, Callback = function(v) _G.Config.EspWeapon = v end}):Settings(250):Label("Weapon Color"):Colorpicker({Name = "Color", Flag = "WeaponColor", Default = _G.Config.WeaponColor, Callback = function(v) _G.Config.WeaponColor = v end}) EspSection:Toggle({Name = "Inventory", Flag = "BS_EspInventory", Default = _G.Config.EspInventory, Callback = function(v) _G.Config.EspInventory = v end}) local ChamsSection = VisualsPage:Section({Name = "Chams & Effects & Team", Description = "Advanced Visuals", Icon = "100050851789190", Side = 1}) ChamsSection:Toggle({Name = "Offscreen Arrows", Flag = "BS_EspOffscreenArrows", Default = _G.Config.EspOffscreenArrows, Callback = function(v) _G.Config.EspOffscreenArrows = v end}) ChamsSection:Toggle({Name = "Chams (Bypass)", Flag = "BS_EspChams", Default = _G.Config.EspChams, Callback = function(v) _G.Config.EspChams = v end}):Settings(250):Label("AlwaysOnTop"):Colorpicker({Name = "Hidden Color", Flag = "ChamHiddenColor", Default = Color3.fromRGB(255, 0, 0), Callback = function(v) _G.Config.ChamHiddenColor = v end}) ChamsSection:Toggle({Name = "Soul Particles", Flag = "BS_EspSoulParticles", Default = _G.Config.EspSoulParticles, Callback = function(v) _G.Config.EspSoulParticles = v end}) ChamsSection:Toggle({Name = "On Shot Effect", Flag = "BS_EspOnShotChams", Default = _G.Config.EspOnShotChams, Callback = function(v) _G.Config.EspOnShotChams = v end}) ChamsSection:Toggle({Name = "Bullet Impacts", Flag = "BS_ShowImpacts", Default = _G.Config.ShowImpacts, Callback = function(v) _G.Config.ShowImpacts = v end}) ChamsSection:Toggle({Name = "China Hat", Flag = "BS_EspChinaHat", Default = _G.Config.EspChinaHat, Callback = function(v) _G.Config.EspChinaHat = v end}) ChamsSection:Toggle({Name = "Self China Hat", Flag = "BS_EspSelfChinaHat", Default = _G.Config.EspSelfChinaHat, Callback = function(v) _G.Config.EspSelfChinaHat = v end}) ChamsSection:Toggle({Name = "Rainbow Hat", Flag = "BS_EspChinaHatRainbow", Default = _G.Config.EspChinaHatRainbow, Callback = function(v) _G.Config.EspChinaHatRainbow = v end}) local TeamSection = VisualsPage:Section({Name = "Team Settings", Description = "Colors & Management", Icon = "100050851789190", Side = 2}) TeamSection:Dropdown({Name = "Team Mode", Flag = "EspTeamMode", Default = {_G.Config.EspTeamMode}, Items = {"Enemies", "Teammates", "All"}, Multi = false, Callback = function(v) _G.Config.EspTeamMode = v end}) TeamSection:Toggle({Name = "Team Check", Flag = "BS_UseTeamCheck", Default = _G.Config.UseTeamCheck, Callback = function(v) _G.Config.UseTeamCheck = v end}) TeamSection:Label("Colors"):Colorpicker({Name = "Enemy Color", Flag = "EnemyColor", Default = _G.Config.EnemyColor, Callback = function(v) _G.Config.EnemyColor = v end}) TeamSection:Label("Teammate Color"):Colorpicker({Name = "Teammate Color", Flag = "TeammateColor", Default = _G.Config.TeammateColor, Callback = function(v) _G.Config.TeammateColor = v end}) local WeaponAndWorldPage = Window:Page({Name = "World & Combat", Icon = "100050851789190", Columns = 2}) local WorldSection = WeaponAndWorldPage:Section({Name = "World", Description = "Skybox & Lighting", Icon = "123944728972740", Side = 1}) local skyNames = {} if skyboxtable then for k, v in pairs(skyboxtable) do table.insert(skyNames, k) end table.sort(skyNames) end WorldSection:Toggle({Name = "Enable Skybox", Flag = "BS_WorldSkyboxEnabled", Default = _G.Config.WorldSkyboxEnabled, Callback = function(v) _G.Config.WorldSkyboxEnabled = v; if v then UpdateSkybox(_G.Config.WorldSkybox) end end}) WorldSection:Dropdown({Name = "Skybox Preset", Flag = "WorldSkybox", Default = {_G.Config.WorldSkybox}, Items = skyNames, Multi = false, Callback = function(v) _G.Config.WorldSkybox = v; if _G.Config.WorldSkyboxEnabled then UpdateSkybox(v) end end}) WorldSection:Dropdown({Name = "Weather", Flag = "WeatherType", Default = {"None"}, Items = {"None", "Rain", "Snow", "Hell Fire"}, Multi = false, Callback = function(v) UpdateWeather(v) end}) WorldSection:Toggle({Name = "Enable Time", Flag = "BS_WorldTimeEnabled", Default = _G.Config.WorldTimeEnabled, Callback = function(v) _G.Config.WorldTimeEnabled = v; UpdateLighting() end}) WorldSection:Slider({Name = "Clock Time", Flag = "WorldClockTime", Min = 0, Max = 24, Default = SafeNum(_G.Config.WorldClockTime, 12), Decimals = 1, Suffix = "h", Callback = function(v) _G.Config.WorldClockTime = v; UpdateLighting() end}) WorldSection:Toggle({Name = "Enable Brightness", Flag = "BS_WorldBrightEnabled", Default = _G.Config.WorldBrightEnabled, Callback = function(v) _G.Config.WorldBrightEnabled = v; UpdateLighting() end}) WorldSection:Slider({Name = "Brightness", Flag = "WorldBrightness", Min = 0, Max = 10, Default = SafeNum(_G.Config.WorldBrightness, 2), Decimals = 1, Suffix = "x", Callback = function(v) _G.Config.WorldBrightness = v; UpdateLighting() end}) WorldSection:Toggle({Name = "Enable Colors", Flag = "BS_WorldColorEnabled", Default = _G.Config.WorldColorEnabled, Callback = function(v) _G.Config.WorldColorEnabled = v; UpdateLighting() end}) WorldSection:Label("Ambient Color"):Colorpicker({Name = "Ambient", Flag = "WorldAmbient", Default = _G.Config.WorldAmbient, Callback = function(v) _G.Config.WorldAmbient = v; UpdateLighting() end}) WorldSection:Label("Outdoor Color"):Colorpicker({Name = "Outdoor", Flag = "WorldOutdoorAmbient", Default = _G.Config.WorldOutdoorAmbient, Callback = function(v) _G.Config.WorldOutdoorAmbient = v; UpdateLighting() end}) local CombatVisualsSection = WeaponAndWorldPage:Section({Name = "Combat Visuals", Description = "Impacts & Tracers", Icon = "103180437044643", Side = 2}) CombatVisualsSection:Toggle({Name = "Bullet Tracers", Flag = "BS_ShowTracers", Default = _G.Config.ShowTracers, Callback = function(v) _G.Config.ShowTracers = v end}):Settings(250):Label("Tracer Color"):Colorpicker({Name = "Color", Flag = "BulletTracerColor", Default = _G.Config.BulletTracerColor, Callback = function(v) _G.Config.BulletTracerColor = v end}) CombatVisualsSection:Slider({Name = "Tracer Time", Flag = "TracerDuration", Min = 1, Max = 10, Default = _G.Config.TracerDuration, Decimals = 1, Suffix = "s", Callback = function(v) _G.Config.TracerDuration = v end}) CombatVisualsSection:Toggle({Name = "Hit Marker", Flag = "BS_ShowHitmark", Default = _G.Config.ShowHitmark, Callback = function(v) _G.Config.ShowHitmark = v end}):Settings(250):Label("Color"):Colorpicker({Name = "Hit Color", Flag = "HitmarkColor", Default = _G.Config.HitmarkColor, Callback = function(v) _G.Config.HitmarkColor = v end}) CombatVisualsSection:Slider({Name = "Hit Marker Time", Flag = "HitmarkDuration", Min = 0.1, Max = 5, Default = _G.Config.HitmarkDuration, Decimals = 1, Suffix = "s", Callback = function(v) _G.Config.HitmarkDuration = v end}) CombatVisualsSection:Toggle({Name = "Hit Sound", Flag = "BS_PlayHitSound", Default = _G.Config.PlayHitSound, Callback = function(v) _G.Config.PlayHitSound = v end}) CombatVisualsSection:Toggle({Name = "Hit Logs (Console)", Flag = "BS_ShowHitLogs", Default = _G.Config.ShowHitLogs, Callback = function(v) _G.Config.ShowHitLogs = v end}) CombatVisualsSection:Toggle({Name = "Show Penetration", Flag = "BS_ShowPenetration", Default = _G.Config.ShowPenetration, Callback = function(v) _G.Config.ShowPenetration = v end}) CombatVisualsSection:Toggle({Name = "Show Real Spread", Flag = "BS_ShowSpread", Default = _G.Config.ShowSpread, Callback = function(v) _G.Config.ShowSpread = v end}):Settings(250):Label("Spread Color"):Colorpicker({Name = "Color", Flag = "SpreadColor", Default = _G.Config.SpreadColor, Callback = function(v) _G.Config.SpreadColor = v end}) local EffectsSection = WeaponAndWorldPage:Section({Name = "Effects", Description = "Kill & Particles", Icon = "100050851789190", Side = 1}) EffectsSection:Toggle({Name = "Kill Effects", Flag = "BS_KillEffect", Default = _G.Config.KillEffect, Callback = function(v) _G.Config.KillEffect = v end}) EffectsSection:Dropdown({Name = "Effect Mode", Flag = "KillEffectMode", Default = {_G.Config.KillEffectMode}, Items = {"Rocket", "Lightning", "Nuke", "Black Hole", "Disintegrate", "Ascension", "Digital"}, Multi = false, Callback = function(v) _G.Config.KillEffectMode = v end}) EffectsSection:Slider({Name = "Duration", Flag = "KillEffectDuration", Min = 1, Max = 10, Default = SafeNum(_G.Config.KillEffectDuration, 3), Decimals = 1, Suffix = "s", Callback = function(v) _G.Config.KillEffectDuration = v end}) EffectsSection:Toggle({Name = "Custom Particles", Flag = "BS_CustomParticles", Default = _G.Config.CustomParticles, Callback = function(v) _G.Config.CustomParticles = v end}) EffectsSection:Label("Particle Color"):Colorpicker({Name = "Color", Flag = "ParticleColor", Default = _G.Config.ParticleColor, Callback = function(v) _G.Config.ParticleColor = v end}) local TacticalSection = WeaponAndWorldPage:Section({Name = "Tactical", Description = "Grenades & C4", Icon = "100050851789190", Side = 2}) TacticalSection:Toggle({Name = "Molotov Zones", Flag = "BS_MolotovZoneESP", Default = _G.Config.MolotovZoneESP, Callback = function(v) _G.Config.MolotovZoneESP = v end}):Settings(250):Label("Zone Color"):Colorpicker({Name = "Color", Flag = "GrenadeZoneColor", Default = _G.Config.GrenadeZoneColor, Callback = function(v) _G.Config.GrenadeZoneColor = v end}) TacticalSection:Toggle({Name = "Smoke Zones", Flag = "BS_SmokeZoneESP", Default = _G.Config.SmokeZoneESP, Callback = function(v) _G.Config.SmokeZoneESP = v end}) TacticalSection:Toggle({Name = "Grenade Warning", Flag = "BS_GrenadeESP", Default = _G.Config.GrenadeESP, Callback = function(v) _G.Config.GrenadeESP = v end}) TacticalSection:Toggle({Name = "Grenade Shrapnel", Flag = "BS_GrenadeTracers", Default = _G.Config.GrenadeTracers, Callback = function(v) _G.Config.GrenadeTracers = v end}) TacticalSection:Toggle({Name = "Grenade ESP", Flag = "BS_GrenadeESP", Default = _G.Config.GrenadeESP, Callback = function(v) _G.Config.GrenadeESP = v end}) TacticalSection:Toggle({Name = "Grenade Tracers", Flag = "BS_GrenadeTracers", Default = _G.Config.GrenadeTracers, Callback = function(v) _G.Config.GrenadeTracers = v end}) Window:Category("Misc") local MiscPage = Window:Page({Name = "Misc", Icon = "134236649319095", Columns = 2}) local MovementSection = MiscPage:Section({Name = "Movement", Description = "Bhop & Peeking", Icon = "103180437044643", Side = 1}) local BhopToggle = MovementSection:Toggle({Name = "Bunny Hop", Flag = "BS_Bhop", Default = _G.Config.Bhop, Callback = function(v) _G.Config.Bhop = v end}) MovementSection:Keybind({Name = "Bhop Key", Flag = "BhopKey", Default = Enum.UserInputType.None, Callback = function() BhopToggle:Set(not _G.Config.Bhop) end}) MovementSection:Slider({Name = "Bhop Speed", Flag = "BhopSpeed", Min = 1, Max = 30, Default = SafeNum(_G.Config.BhopSpeed, 18), Decimals = 1, Suffix = "spd", Callback = function(v) _G.Config.BhopSpeed = v end}) MovementSection:Toggle({Name = "No Fall Damage", Flag = "BS_NoFallDamage", Default = _G.Config.NoFallDamage, Callback = function(v) _G.Config.NoFallDamage = v end}) local QuickStopToggle = MovementSection:Toggle({Name = "Quick Stop", Flag = "BS_AutoStop", Default = _G.Config.AutoStop, Callback = function(v) _G.Config.AutoStop = v end}) MovementSection:Keybind({Name = "Quick Stop Key", Flag = "AutoStopKey", Default = Enum.UserInputType.None, Callback = function() QuickStopToggle:Set(not _G.Config.AutoStop) end}) MovementSection:Dropdown({Name = "Stop Options", Flag = "QuickStopOptions", Default = _G.Config.QuickStopOptions, Items = {"Early", "In Air", "Duck", "Move Between Shots", "On Land"}, Multi = true, Callback = function(v) _G.Config.QuickStopOptions = v end}) local AutoPeekToggle = MovementSection:Toggle({Name = "Auto Peek", Flag = "BS_AutoPeek", Default = _G.Config.AutoPeek, Callback = function(v) _G.Config.AutoPeek = v end}) MovementSection:Keybind({Name = "Auto Peek Key", Flag = "AutoPeekKey", Default = Enum.UserInputType.None, Callback = function() AutoPeekToggle:Set(not _G.Config.AutoPeek) end}) local FakeDuckToggle = MovementSection:Toggle({Name = "Fake Duck", Flag = "BS_FakeDuck", Default = _G.Config.FakeDuck, Callback = function(v) _G.Config.FakeDuck = v end}) MovementSection:Keybind({Name = "Fake Duck Key", Flag = "FakeDuckKey", Default = Enum.UserInputType.None, Callback = function() FakeDuckToggle:Set(not _G.Config.FakeDuck) end}) local CameraSection = MiscPage:Section({Name = "Camera & View", Description = "View Options", Icon = "103180437044643", Side = 2}) local ThirdPersonToggle = CameraSection:Toggle({ Name = "Third Person", Flag = "ThirdPerson", Default = _G.Config.ThirdPerson, Callback = function(Value) _G.Config.ThirdPerson = Value if Value then LP.CameraMode = Enum.CameraMode.Classic LP.CameraMaxZoomDistance = _G.Config.ThirdPersonDist LP.CameraMinZoomDistance = _G.Config.ThirdPersonDist else LP.CameraMode = Enum.CameraMode.LockFirstPerson LP.CameraMaxZoomDistance = 0.5 LP.CameraMinZoomDistance = 0.5 end end }) CameraSection:Keybind({Name = "Third Person Key", Flag = "ThirdPersonKey", Default = Enum.UserInputType.None, Callback = function() ThirdPersonToggle:Set(not _G.Config.ThirdPerson) end}) CameraSection:Slider({Name = "Distance", Flag = "ThirdPersonDist", Min = 5, Max = 50, Default = SafeNum(_G.Config.ThirdPersonDist, 10), Decimals = 1, Suffix = "studs", Callback = function(Value) _G.Config.ThirdPersonDist = Value if _G.Config.ThirdPerson then LP.CameraMaxZoomDistance = Value LP.CameraMinZoomDistance = Value end end}) local CustomFovToggle = CameraSection:Toggle({Name = "Custom FOV (Base)", Flag = "BS_EnableFov", Default = _G.Config.EnableFov, Callback = function(v) _G.Config.EnableFov = v end}) CameraSection:Keybind({Name = "Custom FOV Key", Flag = "CustomFovKey", Default = Enum.UserInputType.None, Callback = function() CustomFovToggle:Set(not _G.Config.EnableFov) end}) CameraSection:Slider({Name = "FOV Amount", Flag = "CustomFovValue", Min = 30, Max = 150, Default = SafeNum(_G.Config.CustomFovValue, 100), Decimals = 0, Suffix = "ç°ž", Callback = function(v) _G.Config.CustomFovValue = v end}) CameraSection:Toggle({Name = "Custom Scope FOV", Flag = "BS_CustomScopeFov", Default = _G.Config.CustomScopeFov, Callback = function(v) _G.Config.CustomScopeFov = v end}) CameraSection:Slider({Name = "Scope FOV", Flag = "ScopeFovValue_V2", Min = 10, Max = 100, Default = SafeNum(_G.Config.ScopeFovValue, 40), Decimals = 1, Suffix = "deg", Callback = function(v) _G.Config.ScopeFovValue = v end}) CameraSection:Toggle({Name = "Remove Scope", Flag = "BS_RemoveScope", Default = _G.Config.RemoveScope, Callback = function(v) _G.Config.RemoveScope = v end}) CameraSection:Toggle({Name = "Show FOV Circle", Flag = "BS_ShowFov", Default = _G.Config.ShowFov, Callback = function(v) _G.Config.ShowFov = v end}) CameraSection:Slider({Name = "FOV Radius", Flag = "FovRadius", Min = 10, Max = 800, Default = SafeNum(_G.Config.FovRadius, 100), Decimals = 1, Suffix = "px", Callback = function(v) _G.Config.FovRadius = v end}) local RemovalsSection = MiscPage:Section({Name = "Removals", Description = "No Flash/Smoke", Icon = "123944728972740", Side = 2}) local NoFlashToggle = RemovalsSection:Toggle({Name = "No Flash", Flag = "BS_NoFlash", Default = _G.Config.NoFlash, Callback = function(v) _G.Config.NoFlash = v end}) RemovalsSection:Keybind({Name = "No Flash Key", Flag = "NoFlashKey", Default = Enum.UserInputType.None, Callback = function() NoFlashToggle:Set(not _G.Config.NoFlash) end}) local NoSmokeToggle = RemovalsSection:Toggle({Name = "No Smoke", Flag = "BS_NoSmoke", Default = _G.Config.NoSmoke, Callback = function(v) _G.Config.NoSmoke = v end}) RemovalsSection:Keybind({Name = "No Smoke Key", Flag = "NoSmokeKey", Default = Enum.UserInputType.None, Callback = function() NoSmokeToggle:Set(not _G.Config.NoSmoke) end}) RemovalsSection:Toggle({Name = "Colored Smoke", Flag = "BS_ColoredSmoke", Default = _G.Config.ColoredSmoke, Callback = function(v) _G.Config.ColoredSmoke = v end}):Settings(250):Label("Smoke Color"):Colorpicker({Name = "Color", Flag = "SmokeColor", Default = _G.Config.SmokeColor, Callback = function(v) _G.Config.SmokeColor = v end}) RemovalsSection:Toggle({Name = "No Recoil (Visual)", Flag = "BS_NoRecoilVisual", Default = _G.Config.NoRecoilVisual, Callback = function(v) _G.Config.NoRecoilVisual = v; UpdateRecoil() end}) RemovalsSection:Toggle({Name = "No Recoil (Real)", Flag = "BS_NoRecoilReal", Default = _G.Config.NoRecoilReal, Callback = function(v) _G.Config.NoRecoilReal = v; UpdateRecoil() end}) RemovalsSection:Toggle({Name = "No Spread", Flag = "BS_NoSpread", Default = _G.Config.NoSpread, Callback = function(v) _G.Config.NoSpread = v end}) Window:Category("Config") local SettingsPage = Window:Page({Name = "Configuration", Icon = "108839695397679", Columns = 2}) local ConfigSection = SettingsPage:Section({Name = "Config Manager", Description = "Save/Load Settings", Icon = "108839695397679", Side = 1}) local ConfigName = "Legit" local SelectedConfig = nil local function GetConfigList() local list = {} if isfolder and isfolder("HihiHub/configs") then if listfiles then for _, file in ipairs(listfiles("HihiHub/configs")) do if file:match("%.json$") then local name = file:match("[^\\/]+$"):gsub("%.json$", "") table.insert(list, name) end end end end return list end local ConfigList = GetConfigList() local ConfigDropdown = ConfigSection:Dropdown({ Name = "Select Config", Flag = "ConfigSelect", List = ConfigList, Default = ConfigList[1], Callback = function(val) SelectedConfig = val ConfigName = val end }) ConfigSection:Textbox({ Name = "New Config Name", Flag = "ConfigNameInput", Default = "", Placeholder = "Type name to save...", Callback = function(text) ConfigName = text end }) ConfigSection:Button({ Name = "Refresh List", Callback = function() local newList = GetConfigList() ConfigDropdown:Refresh(newList) if #newList > 0 then ConfigDropdown:Set(newList[1]) end end }) ConfigSection:Button({ Name = "Save Config", Callback = function() if not writefile then return end if not isfolder("HihiHub/configs") then makefolder("HihiHub/configs") end local nameToSave = ConfigName if not nameToSave or nameToSave == "" then nameToSave = SelectedConfig or "default" end local SaveData = {} for k, v in pairs(_G.Config) do if Library.Flags and Library.Flags[k] then v = Library.Flags[k] elseif Library.Flags and Library.Flags["BS_"..k] then v = Library.Flags["BS_"..k] end if typeof(v) == "EnumItem" then SaveData[k] = {__ENUM = tostring(v)} elseif typeof(v) == "Color3" then SaveData[k] = {R=v.R, G=v.G, B=v.B} else SaveData[k] = v end end local json = game:GetService("HttpService"):JSONEncode(SaveData) writefile("HihiHub/configs/" .. nameToSave .. ".json", json) local newList = GetConfigList() ConfigDropdown:Refresh(newList) if Library and Library.Notify then Library:Notify({Title = "Config Saved", Content = "Saved " .. nameToSave .. ".json", Duration = 3}) end end }) ConfigSection:Button({ Name = "Load Config", Callback = function() if not readfile or not isfile then return end if not SelectedConfig then if Library.Notify then Library:Notify({Title = "Error", Content = "No config selected!", Duration = 3}) end return end local path = "HihiHub/configs/" .. SelectedConfig .. ".json" if isfile(path) then local content = readfile(path) local data = game:GetService("HttpService"):JSONDecode(content) if data then for k, v in pairs(data) do if type(v) == "table" and v.__ENUM then local enumStr = v.__ENUM local enumTypeStr = enumStr:match("Enum%.([^%.]+)") local enumItemStr = enumStr:match("Enum%.[^%.]+%.(.+)") if enumTypeStr and enumItemStr then local enumType = Enum[enumTypeStr] if enumType then pcall(function() v = enumType[enumItemStr] end) end end elseif type(v) == "table" and v.R and v.G and v.B then v = Color3.new(v.R, v.G, v.B) end _G.Config[k] = v local flagsToCheck = {k, "BS_"..k} for _, flag in ipairs(flagsToCheck) do if Library.SetFlags and Library.SetFlags[flag] then pcall(function() if typeof(v) == "EnumItem" then Library.SetFlags[flag]({Key = tostring(v), Mode = "Toggle"}) else Library.SetFlags[flag](v) end end) end end end if Library and Library.Notify then Library:Notify({Title = "Config Loaded", Content = "Loaded " .. SelectedConfig, Duration = 3}) end end else if Library and Library.Notify then Library:Notify({Title = "Load Failed", Content = "File not found!", Duration = 3}) end end end }) local UISettings = SettingsPage:Section({Name = "UI Settings", Description = "Keybinds & Theme", Icon = "103180437044643", Side = 2}) UISettings:Keybind({ Name = "Menu Toggle", Flag = "GuiToggleKey", Default = Enum.KeyCode.RightControl, Callback = function(Value) local newState = not Window.IsOpen Window:SetOpen(newState) if _G.SyncPreviewVisibility then _G.SyncPreviewVisibility(newState) end end }) Window:Init() _G.LoadStage = 2 local MaterialLimits = { [Enum.Material.Asphalt] = 0.25, [Enum.Material.Basalt] = 0.25, [Enum.Material.Brick] = 0.25, [Enum.Material.Cobblestone] = 0.25, [Enum.Material.Concrete] = 0.25, [Enum.Material.CrackedLava] = 0.25, [Enum.Material.DiamondPlate] = 0.25, [Enum.Material.Foil] = 0.25, [Enum.Material.Glacier] = 0.25, [Enum.Material.Granite] = 0.25, [Enum.Material.Grass] = 0.25, [Enum.Material.Ground] = 0.25, [Enum.Material.Ice] = 0.25, [Enum.Material.LeafyGrass] = 0.25, [Enum.Material.Limestone] = 0.25, [Enum.Material.Marble] = 0.25, [Enum.Material.Metal] = 0.25, [Enum.Material.Mud] = 0.25, [Enum.Material.Pavement] = 0.25, [Enum.Material.Rock] = 0.25, [Enum.Material.Salt] = 0.25, [Enum.Material.Sand] = 0.25, [Enum.Material.Sandstone] = 0.25, [Enum.Material.Slate] = 0.25, [Enum.Material.Snow] = 0.25, [Enum.Material.ForceField] = 0.25, [Enum.Material.Neon] = 0.25, [Enum.Material.CorrodedMetal] = 0.25, [Enum.Material.Pebble] = 0.25, [Enum.Material.CeramicTiles] = 0.25, [Enum.Material.Plaster] = 0.25, [Enum.Material.Plastic] = 7, [Enum.Material.SmoothPlastic] = 7, [Enum.Material.Wood] = 7, [Enum.Material.WoodPlanks] = 7, [Enum.Material.Cardboard] = 7, [Enum.Material.Glass] = 100, [Enum.Material.Fabric] = 100 } local LegitFovCircle = Drawing.new("Circle") LegitFovCircle.Thickness = 1 LegitFovCircle.Transparency = 1 LegitFovCircle.Color = Color3.fromRGB(0, 255, 0) LegitFovCircle.Filled = false LegitFovCircle.Visible = false local function isVisibleForAimbot(targetChar) if not targetChar or not LP.Character then return false end local origin = LP.Character:FindFirstChild("Head") if not origin then origin = LP.Character:FindFirstChild("HumanoidRootPart") end if not origin then return false end local targetHead = targetChar:FindFirstChild(_G.Config.LegitBone or "Head") if not targetHead then return false end local originPos = origin.Position local targetPos = targetHead.Position local direction = (targetPos - originPos) local distance = direction.Magnitude if distance == 0 then return true end local rayParams = RaycastParams.new() rayParams.FilterDescendantsInstances = {LP.Character, Camera, workspace.CurrentCamera} if workspace:FindFirstChild("BacktrackChams") then local t = rayParams.FilterDescendantsInstances table.insert(t, workspace.BacktrackChams) rayParams.FilterDescendantsInstances = t end rayParams.FilterType = Enum.RaycastFilterType.Exclude rayParams.IgnoreWater = true local result = workspace:Raycast(originPos, direction, rayParams) return result == nil or result.Instance:IsDescendantOf(targetChar) or result.Distance >= distance - 1 end RunService.RenderStepped:Connect(function() if _G.Config.LegitDrawFov and _G.Config.LegitAim then LegitFovCircle.Visible = true LegitFovCircle.Radius = _G.Config.LegitFov or 100 LegitFovCircle.Position = UserInputService:GetMouseLocation() else LegitFovCircle.Visible = false end if _G.Config.LegitAim then local target = nil local dist = _G.Config.LegitFov or 100 if UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton2) or UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) then for _, p in pairs(Players:GetPlayers()) do if p ~= LP and isEnemy(p) and p.Character and p.Character:FindFirstChild(_G.Config.LegitBone or "Head") and p.Character:FindFirstChild("Humanoid") and p.Character.Humanoid.Health > 0 then if _G.Config.LegitWallCheck then local vis = isVisibleForAimbot(p.Character) if not vis and _G.Config.LegitAutoWallbang then local weaponPen = 2.5 if CurrentWeaponData and CurrentWeaponData.Penetration then weaponPen = CurrentWeaponData.Penetration end local bone = p.Character[_G.Config.LegitBone or "Head"] if bone and IsHitPossible and IsHitPossible(p.Character, LP.Character.Head.Position, weaponPen, bone.Position) then vis = true end end isTargetVisible = vis end if isTargetVisible then local bone = p.Character[_G.Config.LegitBone or "Head"] local pos, vis = Camera:WorldToViewportPoint(bone.Position) if vis then local mag = (Vector2.new(pos.X, pos.Y) - UserInputService:GetMouseLocation()).Magnitude if mag < dist then dist = mag target = p end end end end end if target and target.Character then local bone = target.Character:FindFirstChild(_G.Config.LegitBone or "Head") if bone then local tPos = Camera:WorldToViewportPoint(bone.Position) local mPos = UserInputService:GetMouseLocation() local baseSmooth = math.max(_G.Config.LegitSmooth or 10, 1) if mousemoverel then local targetX = tPos.X - mPos.X local targetY = tPos.Y - mPos.Y local baseSmooth = math.max(_G.Config.LegitSmooth or 10, 1) local dist = math.sqrt(targetX^2 + targetY^2) local dynamicFactor = 1 if dist > 100 then dynamicFactor = 0.5 elseif dist < 30 then dynamicFactor = 1.5 end local finalSmooth = baseSmooth * dynamicFactor local jitterX = math.random(-10, 10) / 10 local jitterY = math.random(-10, 10) / 10 local moveX = (targetX / finalSmooth) + jitterX local moveY = (targetY / finalSmooth) + jitterY mousemoverel(moveX, moveY) else local currentCF = Camera.CFrame local targetPos = bone.Position local limit = (_G.Config.LegitSmooth or 10) local goalCF = CFrame.new(currentCF.Position, targetPos) Camera.CFrame = currentCF:Lerp(goalCF, 1 / limit) end end end end end end) UserInputService.InputBegan:Connect(function(input, gpe) if gpe then return end if input.UserInputType == Enum.UserInputType.MouseButton1 then if _G.Config.AutoScope and CurrentWeaponName and LP.Character then local isScoped = (LP:GetAttribute("ScopeIncrement") or 0) > 0 if not isScoped then task.spawn(function() local vim = game:GetService("VirtualInputManager") vim:SendMouseButtonEvent(0, 0, 1, true, game, 1) task.wait(math.random(0.15, 0.2)) vim:SendMouseButtonEvent(0, 0, 0, true, game, 1) task.wait() vim:SendMouseButtonEvent(0, 0, 0, false, game, 1) task.wait(math.random(0.1, 0.15)) vim:SendMouseButtonEvent(0, 0, 1, false, game, 1) end) end end end end) local MaterialVariantLimits = { ["IndoorWall"] = 0.25, ["Sandy Brick"] = 0.25 } local AdvancedVisuals = { Highlights = {}, Particles = {}, Arrows = {} } local function CreateArrow() local arrow = Drawing.new("Triangle") arrow.Thickness = 1 arrow.Filled = true arrow.Color = Color3.fromRGB(255, 50, 50) arrow.Visible = false arrow.ZIndex = 2 return arrow end local function EnsureHighlight(char, color, style) if not char then return nil end local hl = char:FindFirstChild("BloxStrikeHighlight") if not hl then hl = Instance.new("Highlight") hl.Name = "BloxStrikeHighlight" hl.FillTransparency = 0.5 hl.OutlineTransparency = 1 hl.Parent = char end hl.FillColor = color hl.OutlineColor = color if style == "Hidden" then hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop else hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop end return hl end local function CleanupDebris() local debris = workspace:FindFirstChild("Debris") if debris then debris.ChildAdded:Connect(function(child) task.delay(0.1, function() if child:IsA("Model") then local hl = child:FindFirstChild("BloxStrikeHighlight") if hl then hl:Destroy() end end end) end) end end task.spawn(CleanupDebris) local function EnsureParticles(root) if not root then return end local emitter = root:FindFirstChild("SoulParticles") if not emitter then emitter = Instance.new("ParticleEmitter") emitter.Name = "SoulParticles" emitter.Parent = root emitter.Texture = "rbxassetid://244221604" emitter.Lifetime = NumberRange.new(0.5, 1) emitter.Rate = 5 emitter.Speed = NumberRange.new(2, 4) emitter.SpreadAngle = Vector2.new(360, 360) emitter.Color = ColorSequence.new(Color3.fromRGB(150, 100, 255)) emitter.LightEmission = 1 emitter.Transparency = NumberSequence.new({NumberSequenceKeypoint.new(0, 0.5), NumberSequenceKeypoint.new(1, 1)}) emitter.Enabled = true end return emitter end RunService.RenderStepped:Connect(function() if not _G.LoadStage or _G.LoadStage < 1 then return end local EnableArrows = _G.Config.EspOffscreenArrows local EnableChams = _G.Config.EspChams local EnableParticles = _G.Config.EspSoulParticles local center = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2) for _, p in pairs(Players:GetPlayers()) do local is_enemy = isEnemy(p) local keepSelf = (p == LP and _G.Config.EspSelfChinaHat) local keepEnemy = (is_enemy) if (not keepEnemy and not keepSelf and _G.Config.EspTeamMode == "Enemies") or (not _G.Config.Esp and not keepSelf) then local char = p.Character if char then local hl = char:FindFirstChild("BloxStrikeHighlight") if hl then hl:Destroy() end local root = char:FindFirstChild("HumanoidRootPart") if root and root:FindFirstChild("SoulParticles") then root.SoulParticles:Destroy() end local head = char:FindFirstChild("Head") if head and head:FindFirstChild("ChinaHat") then head.ChinaHat:Destroy() end end if AdvancedVisuals.Arrows[p] then AdvancedVisuals.Arrows[p].Visible = false end continue end local char = p.Character if char and char:FindFirstChild("HumanoidRootPart") and char:FindFirstChild("Humanoid") and char.Humanoid.Health > 0 then local root = char.HumanoidRootPart local screenPos, onScreen = Camera:WorldToViewportPoint(root.Position) if not AdvancedVisuals.Arrows[p] then AdvancedVisuals.Arrows[p] = CreateArrow() end local arrow = AdvancedVisuals.Arrows[p] if EnableArrows and is_enemy and p ~= LP then if onScreen then arrow.Visible = false else arrow.Visible = true local relative = (root.Position - Camera.CFrame.Position) local forward = Camera.CFrame.LookVector local side = Camera.CFrame.RightVector local up = Camera.CFrame.UpVector local relX = relative:Dot(side) local relY = relative:Dot(up) local relZ = relative:Dot(forward) local angle = math.atan2(relY, relX) local size = 15 local arrowPos = center + Vector2.new(math.cos(angle) * (center.X - 50), math.sin(angle) * (center.Y - 50)) local tip = arrowPos local backLeft = arrowPos + Vector2.new(math.cos(angle + 2.5) * size, math.sin(angle + 2.5) * size) local backRight = arrowPos + Vector2.new(math.cos(angle - 2.5) * size, math.sin(angle - 2.5) * size) arrow.PointA = tip arrow.PointB = backLeft arrow.PointC = backRight arrow.Color = _G.Config.EnemyColor or Color3.fromRGB(255, 0, 0) end else arrow.Visible = false end if EnableChams and is_enemy and p ~= LP then local ray = Ray.new(Camera.CFrame.Position, (root.Position - Camera.CFrame.Position).Unit * 500) local hit, pos = workspace:FindPartOnRayWithIgnoreList(ray, {LP.Character, Camera, char}) local isVisible = (not hit or hit:IsDescendantOf(char)) local color = isVisible and Color3.fromRGB(0, 255, 0) or Color3.fromRGB(255, 0, 0) if not isVisible then color = Color3.fromRGB(255, 0, 0) else color = Color3.fromRGB(0, 255, 0) end EnsureHighlight(char, color, "Visible") else local hl = char:FindFirstChild("BloxStrikeHighlight") if hl then hl:Destroy() end end if EnableParticles and is_enemy and p ~= LP then EnsureParticles(root) else if root:FindFirstChild("SoulParticles") then root.SoulParticles:Destroy() end end local showHat = false local hatColor = _G.Config.EnemyColor or Color3.fromRGB(255, 0, 0) if p == LP then if _G.Config.EspSelfChinaHat then showHat = true hatColor = _G.Config.TeammateColor or Color3.fromRGB(0, 255, 0) end elseif is_enemy then if _G.Config.EspChinaHat then showHat = true hatColor = _G.Config.EnemyColor or Color3.fromRGB(255, 0, 0) end end if showHat and _G.Config.EspChinaHatRainbow then local t = tick() hatColor = Color3.fromHSV((t % 2) / 2, 1, 1) end if showHat then local head = char:FindFirstChild("Head") if head then local m = head:FindFirstChild("ChinaHat") if not m then m = Instance.new("Part") m.Name = "ChinaHat" m.Size = Vector3.new(3, 1, 3) m.Anchored = true m.CanCollide = false m.CanQuery = false m.Transparency = 0.5 m.Material = Enum.Material.ForceField m.Parent = head local mesh = Instance.new("SpecialMesh") mesh.MeshType = Enum.MeshType.FileMesh mesh.MeshId = "http://www.roblox.com/asset/?id=1033714" mesh.Scale = Vector3.new(2, 2, 2) mesh.Parent = m end m.Color = hatColor local spinSpeed = 2 local rotation = (tick() * spinSpeed) % (math.pi * 2) m.CFrame = head.CFrame * CFrame.new(0, 1.2, 0) * CFrame.Angles(0, rotation, 0) end else local head = char:FindFirstChild("Head") if head and head:FindFirstChild("ChinaHat") then head.ChinaHat:Destroy() end end else if AdvancedVisuals.Arrows[p] then AdvancedVisuals.Arrows[p].Visible = false end if char then local hl = char:FindFirstChild("BloxStrikeHighlight") if hl then hl:Destroy() end if char:FindFirstChild("HumanoidRootPart") then local root = char.HumanoidRootPart if root:FindFirstChild("SoulParticles") then root.SoulParticles:Destroy() end end local head = char:FindFirstChild("Head") if head and head:FindFirstChild("ChinaHat") then head.ChinaHat:Destroy() end end end end end) local InventoryController task.spawn(function() local s, r = pcall(function() return require(game:GetService("ReplicatedStorage").Controllers.InventoryController) end) if s and r then InventoryController = r end end) local function GetPenetrationStats(origin, direction, maxPen, ignoreList, targetRoot) local params = RaycastParams.new() params.FilterType = Enum.RaycastFilterType.Exclude params.CollisionGroup = "Bullet" local filter = ignoreList or {LP.Character, Camera} params.FilterDescendantsInstances = filter local currentOrigin = origin local currentDir = direction local accMat = {} local accVar = {} local stats = { TotalThickness = 0, MaterialStats = {}, Success = false, FailReason = "Max Steps", EndPos = Vector3.zero } local backParams = RaycastParams.new() backParams.FilterType = Enum.RaycastFilterType.Include backParams.CollisionGroup = "Bullet" for i = 1, 100 do if not currentOrigin or not currentDir then break end local result = Workspace:Raycast(currentOrigin, currentDir * 1000, params) if not result then if not targetRoot then stats.Success = true stats.EndPos = currentOrigin + (currentDir * 1000) else stats.FailReason = "Void (Missed)" end break end if not result.Instance or not result.Instance.Parent then stats.FailReason = "Destroyed Instance" break end if targetRoot and result.Instance:IsDescendantOf(targetRoot) then stats.Success = true stats.EndPos = result.Position stats.FailReason = "Hit" return stats end table.insert(filter, result.Instance) params.FilterDescendantsInstances = filter local enterPos = result.Position local fakeEnd = enterPos + (currentDir * 1000) backParams.FilterDescendantsInstances = {result.Instance} local backRes = Workspace:Raycast(fakeEnd, enterPos - fakeEnd, backParams) local thickness = 0.5 local limit = 0.25 local matName = result.Instance.Material.Name if not backRes then thickness = 5 stats.FailReason = "Infinite/Block" else thickness = (enterPos - backRes.Position).Magnitude local variant = backRes.Instance.MaterialVariant if variant ~= "" and MaterialVariantLimits[variant] then matName = variant limit = MaterialVariantLimits[variant] accVar[variant] = (accVar[variant] or 0) + thickness if accVar[variant] > limit + maxPen then stats.FailReason = string.format("Var: %s (%.1f > %.1f)", variant, accVar[variant], limit + maxPen) stats.MaterialStats = {Type = "Variant", Name = variant, Thickness = accVar[variant], Limit = limit + maxPen} return stats end else local mat = backRes.Material matName = mat.Name limit = MaterialLimits[mat] or 0.25 accMat[mat] = (accMat[mat] or 0) + thickness if accMat[mat] > limit + maxPen then stats.FailReason = string.format("%s (%.1f / %.1f)", matName, accMat[mat], limit + maxPen) stats.MaterialStats = {Type = "Material", Name = matName, Thickness = accMat[mat], Limit = limit + maxPen} return stats end end currentOrigin = backRes.Position end stats.TotalThickness = stats.TotalThickness + thickness end return stats end local function IsHitPossible(targetInstance, origin, maxPen, explicitPos) if not targetInstance then return false end local targetRoot local targetPart if targetInstance:IsA("Model") then targetRoot = targetInstance targetPart = targetRoot:FindFirstChild(_G.Config.AimPart or "Head") or targetRoot:FindFirstChild("Head") elseif targetInstance:IsA("BasePart") then targetRoot = targetInstance.Parent targetPart = targetInstance end if not targetPart or not targetRoot then return false end local targetPos = explicitPos or targetPart.Position local dir = (targetPos - origin).Unit local stats = GetPenetrationStats(origin, dir, maxPen, {LP.Character, Camera}, targetRoot) local minDmgToCheck = _G.Config.MinDamage or 0 if _G.Config.MinDamageOverrideActive and _G.Config.MinDamageOverride then minDmgToCheck = _G.Config.MinDamageOverride end if stats.Success and (minDmgToCheck > 0) then local baseDmg = 30 if CurrentWeaponData and CurrentWeaponData.Damage then baseDmg = CurrentWeaponData.Damage elseif CurrentWeaponData and CurrentWeaponData.BaseDamage then baseDmg = CurrentWeaponData.BaseDamage end local factor = 1 - (stats.TotalThickness / maxPen) if factor < 0 then factor = 0 end local estDmg = baseDmg * factor if estDmg < minDmgToCheck then stats.Success = false stats.FailReason = string.format("Min Dmg (%.0f < %d)", estDmg, minDmgToCheck) end end return stats.Success, stats.FailReason, stats.TotalThickness end local Drawing = Drawing or require(script.Parent.Drawing) if not Drawing and getgenv and getgenv().Drawing then Drawing = getgenv().Drawing end local fovCircle = Drawing.new("Circle") fovCircle.Thickness = 1 fovCircle.Transparency = 1 fovCircle.Color = Color3.fromRGB(255, 255, 255) fovCircle.Filled = false fovCircle.Visible = (type(_G.Config.ShowFov) == "boolean" and _G.Config.ShowFov or false) local spreadCircle = Drawing.new("Circle") spreadCircle.Thickness = 1.5 spreadCircle.Transparency = 1 spreadCircle.Color = Color3.fromRGB(0, 255, 0) spreadCircle.Filled = false spreadCircle.Visible = false local wbBox = Drawing.new("Square") wbBox.Visible = false wbBox.Color = Color3.fromRGB(255, 0, 0) wbBox.Thickness = 2 wbBox.Filled = true wbBox.Transparency = 0.5 wbBox.Size = Vector2.new(20, 20) local wbText = Drawing.new("Text") wbText.Visible = false wbText.Color = Color3.fromRGB(255, 255, 255) wbText.Size = 18 wbText.Center = true wbText.Outline = true local function spawn_tracer_beam(origin, target_pos) if not _G.Config.ShowTracers then return end local Workspace = game:GetService("Workspace") local p0 = Instance.new("Part") p0.Size = Vector3.new(0.05, 0.05, 0.05) p0.Position = origin p0.Anchored = true p0.CanCollide = false p0.Transparency = 1 p0.Parent = Workspace local p1 = Instance.new("Part") p1.Size = Vector3.new(0.05, 0.05, 0.05) p1.Position = target_pos p1.Anchored = true p1.CanCollide = false p1.Transparency = 1 p1.Parent = Workspace local a0 = Instance.new("Attachment", p0) local a1 = Instance.new("Attachment", p1) local beam = Instance.new("Beam") beam.Attachment0 = a0 beam.Attachment1 = a1 beam.FaceCamera = true beam.Width0 = 0.1 beam.Width1 = 0.1 beam.Color = ColorSequence.new(_G.Config.BulletTracerColor or Color3.fromRGB(0, 100, 255)) beam.Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 0), NumberSequenceKeypoint.new(1, 1) }) beam.TextureSpeed = 0 beam.Parent = Workspace task.delay(1, function() if p0 then p0:Destroy() end if p1 then p1:Destroy() end if beam then beam:Destroy() end end) end local function calculateHitChance(startPos, targetPos, targetCharacter, spreadAmount, raycastParams) if spreadAmount <= 0 then return 100 end local hits = 0 local samples = 20 for i = 1, samples do local angle = math.random() * math.pi * 2 local radius = math.random() * spreadAmount * 0.1 local offset = Vector3.new(math.cos(angle) * radius, math.sin(angle) * radius, 0) local dir = (targetPos - startPos).Unit local perturbedDir = (dir + Vector3.new(math.random()-0.5, math.random()-0.5, math.random()-0.5) * (spreadAmount/100)).Unit local res = Workspace:Raycast(startPos, perturbedDir * 1000, raycastParams) if res and res.Instance:IsDescendantOf(targetCharacter) then hits = hits + 1 end end return (hits / samples) * 100 end local function GetScanPoints(part, partName) local points = {part.Position} if _G.Config.Multipoint then local s = _G.Config.MultipointScale or 0.6 local cf = part.CFrame local size = part.Size * 0.5 * s if partName == "Head" then table.insert(points, cf * Vector3.new(size.X, 0, 0)) table.insert(points, cf * Vector3.new(-size.X, 0, 0)) elseif partName == "HumanoidRootPart" or partName == "UpperTorso" then table.insert(points, cf * Vector3.new(size.X, 0, 0)) table.insert(points, cf * Vector3.new(-size.X, 0, 0)) end end return points end local function spawn_tracer_beam(from, to) local dist = (to - from).Magnitude local laser = Instance.new("Part") laser.Name = "Tracer" laser.Anchored = true laser.CanCollide = false laser.Shape = Enum.PartType.Block laser.Size = Vector3.new(0.1, 0.1, dist) laser.Color = _G.Config.BulletTracerColor or Color3.fromRGB(255, 255, 255) laser.CFrame = CFrame.new(from, to) * CFrame.new(0, 0, -dist / 2) laser.Material = Enum.Material.Neon laser.Parent = workspace local duration = _G.Config.TracerDuration or 1 game:GetService("Debris"):AddItem(laser, duration) end local function isEnemy(p) if p == LP or not LP.Character or not p.Character then return false end if not _G.Config.UseTeamCheck then return true end local LPTeamFolder = LP.Character.Parent local PlayerTeamFolder = p.Character.Parent local inSameTeam = false if LPTeamFolder and PlayerTeamFolder and LPTeamFolder == PlayerTeamFolder then if LPTeamFolder ~= workspace then inSameTeam = true end end if not inSameTeam and LP.Team and p.Team and LP.Team == p.Team then inSameTeam = true end return not inSameTeam end local function UpdateAATarget() if not _G.Config.AntiAim then if _G.AA_Target then _G.AA_Target = nil end return end pcall(function() local current = _G.AA_Target local bestCandidate = nil local bestScore = math.huge local origin = Camera.CFrame.Position local lookVec = Camera.CFrame.LookVector for _, p in pairs(Players:GetPlayers()) do if p ~= LP and p.Parent and p.Character and p.Character.Parent and p.Character:FindFirstChild("HumanoidRootPart") and p.Character:FindFirstChild("Humanoid") and p.Character.Humanoid.Health > 0 then if isEnemy(p) then local root = p.Character.HumanoidRootPart local diff = (root.Position - origin) if diff.Magnitude > 0.1 then local dir = diff.Unit local dot = lookVec:Dot(dir) local score = 1 - dot if score < bestScore then bestScore = score bestCandidate = p end end end end end _G.AA_Target = bestCandidate end) end local function getClosestTarget() if not LP.Character then return nil, nil end local closestPlayer = nil local bestScore = math.huge local targetAimPart = nil local targetAimPoint = nil local mouseLocation = UserInputService:GetMouseLocation() local origin = Camera.CFrame.Position if _G.Config.ThirdPerson and LP.Character and LP.Character:FindFirstChild("Head") then origin = LP.Character.Head.Position end local hitParams = RaycastParams.new() hitParams.FilterDescendantsInstances = {LP.Character, Camera} hitParams.FilterType = Enum.RaycastFilterType.Exclude hitParams.CollisionGroup = "Bullet" local function checkHitStatus(targetPos, targetHrp) local dir = targetPos - origin local res = Workspace:Raycast(origin, dir, hitParams) if res and res.Instance:IsDescendantOf(targetHrp.Parent) then return 2 elseif _G.Config.WallBang and (CurrentWeaponData == nil or CurrentWeaponData.CanWallbang ~= false) then local weaponPen = (CurrentWeaponData and CurrentWeaponData.Penetration) or 2.5 if IsHitPossible(targetHrp.Parent, origin, weaponPen, targetPos) then return 1 end end return 0 end local candidates = {} for _, player in pairs(Players:GetPlayers()) do if player ~= LP and player.Character and player.Character:FindFirstChild("Humanoid") and player.Character.Humanoid.Health > 0 and player.Character.PrimaryPart then if isEnemy(player) then table.insert(candidates, player) end end end if _G.Config.TargetMode == "Highest Damage" then table.sort(candidates, function(a,b) return a.Character.Humanoid.Health < b.Character.Humanoid.Health end) elseif _G.Config.TargetMode == "Near Crosshair" and not _G.Config.AllDirections then table.sort(candidates, function(a,b) local pA = Camera:WorldToViewportPoint(a.Character.PrimaryPart.Position) local pB = Camera:WorldToViewportPoint(b.Character.PrimaryPart.Position) local dA = (Vector2.new(pA.X, pA.Y) - mouseLocation).Magnitude local dB = (Vector2.new(pB.X, pB.Y) - mouseLocation).Magnitude return dA < dB end) else table.sort(candidates, function(a,b) return (a.Character.PrimaryPart.Position - origin).Magnitude < (b.Character.PrimaryPart.Position - origin).Magnitude end) end local scanLimit = 6 if #candidates < scanLimit then scanLimit = #candidates end for i = 1, scanLimit do local player = candidates[i] local char = player.Character if not char then continue end local potentialParts = _G.Config.AimHitboxes or {"Head"} if _G.Config.Multipoint then potentialParts = { "Head", "UpperTorso", "LowerTorso", "HumanoidRootPart", "LeftHand", "RightHand", "LeftLowerLeg", "RightLowerLeg" } end if #potentialParts == 0 then potentialParts = {"Head"} end for _, pName in ipairs(potentialParts) do local targetPart = char:FindFirstChild(pName) if targetPart then local pointsToCheck = GetScanPoints(targetPart, pName) for _, point in ipairs(pointsToCheck) do local dist = (point - origin).Magnitude local screenPoint, onScreen = Camera:WorldToViewportPoint(point) local score = math.huge local isValid = false if _G.Config.AllDirections then local hitType = checkHitStatus(point, targetPart) if hitType > 0 then score = dist isValid = true end elseif _G.Config.TargetMode == "Near Crosshair" then if onScreen then local screenDist = (Vector2.new(mouseLocation.X, mouseLocation.Y) - Vector2.new(screenPoint.X, screenPoint.Y)).Magnitude if screenDist <= _G.Config.FovRadius then score = screenDist if checkHitStatus(point, targetPart) > 0 then isValid = true end end end else if onScreen then local screenDist = (Vector2.new(mouseLocation.X, mouseLocation.Y) - Vector2.new(screenPoint.X, screenPoint.Y)).Magnitude if screenDist <= _G.Config.FovRadius then score = screenDist if checkHitStatus(point, targetPart) > 0 then isValid = true end end end end if isValid and score < bestScore then bestScore = score closestPlayer = player targetAimPart = targetPart targetAimPoint = point end end end end if _G.Config.Backtrack and workspace:FindFirstChild("BacktrackChams") then local ghostName = "Ghost_" .. player.Name local ghost = workspace.BacktrackChams:FindFirstChild(ghostName) if ghost then local ghostParams = RaycastParams.new() ghostParams.FilterDescendantsInstances = {LP.Character, Camera, ghost, player.Character} ghostParams.FilterType = Enum.RaycastFilterType.Exclude ghostParams.CollisionGroup = "Bullet" local function checkGhostVis(pt) local dir = pt - origin local res = Workspace:Raycast(origin, dir, ghostParams) return res == nil end for _, pName in ipairs(potentialParts) do local targetPart = ghost:FindFirstChild(pName) if targetPart then local pointsToCheck = GetScanPoints(targetPart, pName) for _, point in ipairs(pointsToCheck) do local screendist_score = math.huge local isValidBT = false local dist = (point - origin).Magnitude local screendist_score = math.huge local isValidBT = false local screenPoint, onScreen = Camera:WorldToViewportPoint(point) if _G.Config.AllDirections then if checkGhostVis(point) then screendist_score = dist isValidBT = true end elseif _G.Config.TargetMode == "Near Crosshair" then if onScreen then local screenDist = (Vector2.new(mouseLocation.X, mouseLocation.Y) - Vector2.new(screenPoint.X, screenPoint.Y)).Magnitude if screenDist <= _G.Config.FovRadius then screendist_score = screenDist if checkGhostVis(point) then isValidBT = true end end end else if onScreen then local screenDist = (Vector2.new(mouseLocation.X, mouseLocation.Y) - Vector2.new(screenPoint.X, screenPoint.Y)).Magnitude if screenDist <= _G.Config.FovRadius then screendist_score = screenDist if checkGhostVis(point) then isValidBT = true end end end end if isValidBT and screendist_score < bestScore then bestScore = screendist_score closestPlayer = player targetAimPart = player.Character:FindFirstChild(pName) or player.Character.PrimaryPart targetAimPoint = point end end end end end end end if targetAimPoint and targetAimPart then return closestPlayer, targetAimPart, targetAimPoint end return nil, nil, nil end local function GetWallbangHits(targetPart, startPos, direction) local hits = {} local world = workspace local distToTarget = (targetPart.Position - startPos).Magnitude local rayDir = direction * (distToTarget + 5) local params = RaycastParams.new() params.FilterType = Enum.RaycastFilterType.Exclude params.FilterDescendantsInstances = {LP.Character, workspace.CurrentCamera} if workspace:FindFirstChild("BacktrackChams") then local t = params.FilterDescendantsInstances table.insert(t, workspace.BacktrackChams) params.FilterDescendantsInstances = t end local resultEntry = world:Raycast(startPos, rayDir, params) if resultEntry and resultEntry.Instance and resultEntry.Instance:IsDescendantOf(targetPart.Parent) then return nil end if resultEntry then table.insert(hits, { Instance = resultEntry.Instance, Position = resultEntry.Position, Normal = resultEntry.Normal, Material = resultEntry.Material.Name, Distance = resultEntry.Distance, Exit = false }) local backDir = (startPos - targetPart.Position).Unit * distToTarget params.FilterDescendantsInstances = {LP.Character, targetPart.Parent, workspace.CurrentCamera} local resultExit = world:Raycast(targetPart.Position, backDir, params) if resultExit and resultExit.Instance then local distFromTarget = resultExit.Distance local totalDist = (startPos - targetPart.Position).Magnitude local exitDistFromStart = totalDist - distFromTarget table.insert(hits, { Instance = resultExit.Instance, Position = resultExit.Position, Normal = resultExit.Normal, Material = resultExit.Material.Name, Distance = exitDistFromStart, Exit = true }) else if _G.Config.AutoWallDepth then local depth = _G.Config.WallDepth or 1 local fakeExitPos = resultEntry.Position + (direction * depth) table.insert(hits, { Instance = resultEntry.Instance, Position = fakeExitPos, Normal = -resultEntry.Normal, Material = resultEntry.Material.Name, Distance = resultEntry.Distance + depth, Exit = true }) end end table.insert(hits, { Instance = targetPart, Position = targetPart.Position, Normal = Vector3.new(0, 1, 0), Material = targetPart.Material.Name, Distance = distToTarget, Exit = false }) return hits end return nil end local fovCircle = Drawing.new("Circle") fovCircle.Thickness = 1 fovCircle.Transparency = 1 fovCircle.Color = Color3.fromRGB(255, 255, 255) fovCircle.Filled = false fovCircle.Visible = false RunService.RenderStepped:Connect(function() local mouse_pos = game:GetService("UserInputService"):GetMouseLocation() fovCircle.Position = mouse_pos fovCircle.Radius = _G.Config.FovRadius or 100 fovCircle.Visible = _G.Config.ShowFov and (_G.Config.SilentAim or _G.Config.EnableFov) fovCircle.Color = _G.Config.FovColor or Color3.fromRGB(255, 255, 255) end) local function draw_tracer(origin, target_pos) local beam = Instance.new("Beam") local att0 = Instance.new("Attachment") local att1 = Instance.new("Attachment") local part0 = Instance.new("Part", workspace) part0.Size = Vector3.new(0.01, 0.01, 0.01) part0.Position = origin part0.Anchored = true part0.Transparency = 1 part0.CanCollide = false local part1 = Instance.new("Part", workspace) part1.Size = Vector3.new(0.01, 0.01, 0.01) part1.Position = target_pos part1.Anchored = true part1.Transparency = 1 part1.CanCollide = false att0.Parent = part0 att1.Parent = part1 beam.Attachment0 = att0 beam.Attachment1 = att1 beam.Parent = workspace beam.Texture = "http://www.roblox.com/asset/?id=446111271" beam.TextureSpeed = 4 beam.Width0 = 0.15 beam.Width1 = 0.15 beam.LightEmission = 1 beam.LightInfluence = 0 beam.Color = ColorSequence.new(Color3.fromRGB(80, 200, 255)) beam.Transparency = NumberSequence.new(0) task.delay(_G.Config.TracerDuration or 1.5, function() beam:Destroy() part0:Destroy() part1:Destroy() end) end local function draw_impact_box(pos) local box = Instance.new("Part") box.Size = Vector3.new(0.5, 0.5, 0.5) box.Position = pos box.Anchored = true box.CanCollide = false box.Transparency = 0.6 box.Material = Enum.Material.Neon box.Color = Color3.fromRGB(80, 200, 255) box.Shape = Enum.PartType.Block box.Parent = workspace local sb = Instance.new("SelectionBox") sb.Adornee = box sb.Color3 = Color3.fromRGB(150, 230, 255) sb.LineThickness = 0.05 sb.Transparency = 0.3 sb.Parent = box task.delay(3, function() box:Destroy() end) end local HitLogSystem = {} local LogGui = Instance.new("ScreenGui") LogGui.Name = "BloxStrike_Logs" LogGui.ResetOnSpawn = false local PlayerGui = game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui") LogGui.Parent = PlayerGui local LogList = Instance.new("Frame") LogList.Name = "Container" LogList.Parent = LogGui LogList.Size = UDim2.new(0, 400, 0, 300) LogList.Position = UDim2.new(0.5, -200, 0.5, 60) LogList.BackgroundTransparency = 1 LogList.BorderSizePixel = 2 LogList.BorderColor3 = Color3.fromRGB(255, 255, 255) LogList.Active = true LogList.Draggable = true local LogListCorner = Instance.new("UICorner") LogListCorner.CornerRadius = UDim.new(0, 8) LogListCorner.Parent = LogList local LogListStroke = Instance.new("UIStroke") LogListStroke.Color = Color3.fromRGB(80, 80, 80) LogListStroke.Thickness = 1.5 LogListStroke.Transparency = 1 LogListStroke.Parent = LogList local ActualLogs = Instance.new("Frame") ActualLogs.Name = "ActualLogs" ActualLogs.Parent = LogList ActualLogs.Size = UDim2.new(1, 0, 1, 0) ActualLogs.BackgroundTransparency = 1 local UIList = Instance.new("UIListLayout") UIList.Parent = ActualLogs UIList.SortOrder = Enum.SortOrder.LayoutOrder UIList.Padding = UDim.new(0, 5) local LogPreviewBar = Instance.new("Frame") LogPreviewBar.Name = "PreviewBar" LogPreviewBar.Parent = LogList LogPreviewBar.AnchorPoint = Vector2.new(0.5, 0) LogPreviewBar.Position = UDim2.new(0.5, 0, 0, 0) LogPreviewBar.Size = UDim2.new(0, 280, 0, 24) LogPreviewBar.BackgroundColor3 = Color3.fromRGB(20, 20, 20) LogPreviewBar.BackgroundTransparency = 1 LogPreviewBar.BorderSizePixel = 0 LogPreviewBar.Visible = false local PreviewCorner = Instance.new("UICorner") PreviewCorner.CornerRadius = UDim.new(0, 4) PreviewCorner.Parent = LogPreviewBar local PreviewStroke = Instance.new("UIStroke") PreviewStroke.Color = Color3.fromRGB(100, 100, 100) PreviewStroke.Thickness = 1 PreviewStroke.Transparency = 1 PreviewStroke.Parent = LogPreviewBar local PreviewIcon = Instance.new("ImageLabel") PreviewIcon.Parent = LogPreviewBar PreviewIcon.BackgroundTransparency = 1 PreviewIcon.Size = UDim2.new(0, 16, 0, 16) PreviewIcon.Position = UDim2.new(0, 5, 0.5, -8) PreviewIcon.Image = "rbxassetid://3944680095" PreviewIcon.ImageColor3 = Color3.fromRGB(255, 100, 100) PreviewIcon.ImageTransparency = 1 local PreviewText = Instance.new("TextLabel") PreviewText.Parent = LogPreviewBar PreviewText.BackgroundTransparency = 1 PreviewText.Size = UDim2.new(1, -35, 1, 0) PreviewText.Position = UDim2.new(0, 28, 0, 0) PreviewText.Font = Enum.Font.GothamMedium PreviewText.TextSize = 12 PreviewText.Text = "Hit Log Area [Drag to Move]" PreviewText.TextColor3 = Color3.fromRGB(255, 255, 255) PreviewText.TextXAlignment = Enum.TextXAlignment.Left PreviewText.RichText = true PreviewText.TextTransparency = 1 task.spawn(function() while true do task.wait(0.2) if Window then local isOpen = (Window.Instance and Window.Instance.Visible) or Window.IsOpen if isOpen then LogList.Active = true LogPreviewBar.Visible = true LogPreviewBar.BackgroundTransparency = 0.3 PreviewStroke.Transparency = 0 PreviewText.TextTransparency = 0 PreviewIcon.ImageTransparency = 0 else LogList.Active = false LogPreviewBar.Visible = false LogPreviewBar.BackgroundTransparency = 1 PreviewStroke.Transparency = 1 PreviewText.TextTransparency = 1 PreviewIcon.ImageTransparency = 1 end end end end) function HitLogSystem.Add(hitPart, targetName) local logData = {} local frame = Instance.new("Frame") frame.BackgroundTransparency = 0.3 frame.BackgroundColor3 = Color3.fromRGB(20, 20, 20) frame.BorderSizePixel = 0 frame.AutomaticSize = Enum.AutomaticSize.X frame.Size = UDim2.new(0, 0, 0, 24) frame.Parent = LogList:FindFirstChild("ActualLogs") or LogList local stroke = Instance.new("UIStroke") stroke.Parent = frame stroke.Color = Color3.fromRGB(60, 60, 60) stroke.Thickness = 1 local corner = Instance.new("UICorner") corner.Parent = frame corner.CornerRadius = UDim.new(0, 4) local icon = Instance.new("ImageLabel") icon.Parent = frame icon.Size = UDim2.new(0, 16, 0, 16) icon.Position = UDim2.new(0, 5, 0.5, -8) icon.BackgroundTransparency = 1 icon.Image = "rbxassetid://3944680095" icon.ImageColor3 = Color3.fromRGB(255, 100, 100) local label = Instance.new("TextLabel") label.Parent = frame label.AutomaticSize = Enum.AutomaticSize.X label.Size = UDim2.new(0, 0, 1, 0) label.Position = UDim2.new(0, 28, 0, 0) label.BackgroundTransparency = 1 label.Font = Enum.Font.GothamMedium label.TextSize = 14 label.TextColor3 = Color3.fromRGB(255, 255, 255) label.TextXAlignment = Enum.TextXAlignment.Left label.RichText = true local pad = Instance.new("UIPadding") pad.Parent = frame pad.PaddingRight = UDim.new(0, 10) label.Text = string.format("Hit %s in the %s [?]", targetName, hitPart) frame.BackgroundTransparency = 1 label.TextTransparency = 1 icon.ImageTransparency = 1 stroke.Transparency = 1 game:GetService("TweenService"):Create(frame, TweenInfo.new(0.3), {BackgroundTransparency=0.3}):Play() game:GetService("TweenService"):Create(stroke, TweenInfo.new(0.3), {Transparency=0}):Play() game:GetService("TweenService"):Create(label, TweenInfo.new(0.3), {TextTransparency=0}):Play() game:GetService("TweenService"):Create(icon, TweenInfo.new(0.3), {ImageTransparency=0}):Play() local handle = {} function handle:Update(damage, isHeadshot, remainingHP) if not label then return end local colorName = "#FF80FF" local colorDmg = "#55FF55" if isHeadshot then colorDmg = "#FF0000" end local statusText = string.format("(%d health left)", remainingHP) if remainingHP <= 0 then statusText = "DIE" end label.Text = string.format("Hit %s in the %s for %d damage %s", colorName, targetName, hitPart, colorDmg, damage, statusText) task.delay(3.5, function() if not frame then return end game:GetService("TweenService"):Create(frame, TweenInfo.new(0.5), {BackgroundTransparency=1}):Play() game:GetService("TweenService"):Create(stroke, TweenInfo.new(0.5), {Transparency=1}):Play() game:GetService("TweenService"):Create(label, TweenInfo.new(0.5), {TextTransparency=1}):Play() game:GetService("TweenService"):Create(icon, TweenInfo.new(0.5), {ImageTransparency=1}):Play() task.wait(0.5) if frame then frame:Destroy() end end) end function handle:Destroy() if frame then frame:Destroy() end end return handle end local function SpawnDamageText(pos, damage) local dmgVal = math.floor(damage + 0.5) if dmgVal < 1 then return end local p = Instance.new("Part", workspace) p.Position = pos p.Anchored = true p.Transparency = 1 p.CanCollide = false p.Size = Vector3.new(0.1,0.1,0.1) p.Name = "DmgPopup" game:GetService("Debris"):AddItem(p, 3.5) local bb = Instance.new("BillboardGui") bb.Size = UDim2.new(0, 50, 0, 50) bb.StudsOffset = Vector3.new(0, 2, 0) bb.AlwaysOnTop = true bb.Adornee = p local plg = game:GetService("Players").LocalPlayer:FindFirstChild("PlayerGui") if plg then bb.Parent = plg end local txt = Instance.new("TextLabel", bb) txt.Text = tostring(dmgVal) txt.TextColor3 = Color3.fromRGB(100, 255, 100) txt.TextStrokeTransparency = 0 txt.BackgroundTransparency = 1 txt.Size = UDim2.new(1,0,1,0) txt.Font = Enum.Font.GothamBold txt.TextSize = 24 local ts = game:GetService("TweenService") ts:Create(bb, TweenInfo.new(3, Enum.EasingStyle.Exponential), {StudsOffset = Vector3.new(0, 5, 0)}):Play() ts:Create(txt, TweenInfo.new(3, Enum.EasingStyle.Exponential), {TextTransparency = 1, TextStrokeTransparency = 1}):Play() local alive = true task.delay(3, function() alive = false if bb then bb:Destroy() end if p then p:Destroy() end end) return function(newText, newColor) if not alive or not txt then return end txt.Text = tostring(newText) if newColor then txt.TextColor3 = newColor end if newText == "MISS" then txt.TextColor3 = Color3.fromRGB(255, 50, 50) txt.TextTransparency = 0 txt.TextStrokeTransparency = 0 ts:Create(txt, TweenInfo.new(2, Enum.EasingStyle.Exponential), {TextTransparency = 1, TextStrokeTransparency = 1}):Play() end end end local function TrackDamage(humanoid, timeout, callback) if not humanoid then return end local startHp = humanoid.Health local character = humanoid.Parent local conHealth, conAncestry local function cleanup() if conHealth then conHealth:Disconnect() end if conAncestry then conAncestry:Disconnect() end end conHealth = humanoid.HealthChanged:Connect(function(newHp) if newHp < startHp then local diff = startHp - newHp if diff > 0.1 then cleanup() callback(diff, newHp) end end end) if character then conAncestry = character.AncestryChanged:Connect(function(_, parent) if parent == workspace:FindFirstChild("Debris") then cleanup() callback(100, 0) end end) end task.delay(timeout, function() cleanup() end) end local success, bullet_module = pcall(function() local mod = require(game.ReplicatedStorage.Components.Weapon.Classes.Bullet) print("Bullet Module Keys:") for k,v in pairs(mod) do print(k, type(v)) end return mod end) if success and bullet_module then local originalPerformRaycast = bullet_module._performRaycast if not originalPerformRaycast then warn("bullet_module._performRaycast is nil! Falling back to 'create' checking... (Debug)") if bullet_module.performRaycast then originalPerformRaycast = bullet_module.performRaycast bullet_module.performRaycast = nil end end if originalPerformRaycast then bullet_module._performRaycast = function(self, spreadAmount) if _G.Config.NoSpread or _G.Config.SilentAim then spreadAmount = 0 end local target, targetPart, targetPoint = getClosestTarget() local originalCFrame = Camera and Camera.CFrame local startPos = Camera and Camera.CFrame.Position if _G.Config.SilentAim and target and target.Character and targetPart and startPos then targetPos = targetPoint or targetPart.Position local originalCamCFrame = Camera.CFrame Camera.CFrame = CFrame.new(startPos, targetPos) local direction = (targetPos - startPos).Unit local wbHits = nil if _G.Config.WallBang then wbHits = GetWallbangHits(targetPart, startPos, direction) end if not wbHits then wbHits = { { Instance = targetPart, Position = targetPos, Normal = Vector3.new(0, 1, 0), Material = targetPart.Material.Name, Distance = (targetPos - startPos).Magnitude, Exit = false } } end local fakeResult = { Hits = wbHits, Ray = Ray.new(startPos, direction), Instance = targetPart, Position = targetPos, Material = targetPart.Material, Normal = Vector3.new(0, 1, 0), Distance = (targetPos - startPos).Magnitude, Direction = direction, Origin = startPos } Camera.CFrame = originalCamCFrame if _G.Config.ShowHitLogs then task.spawn(function() local character = targetPart.Parent local humanoid = character:FindFirstChild("Humanoid") if not humanoid or humanoid.Health <= 0 then return end local initialHealth = humanoid.Health local victimName = character.Name local logHandle = nil if HitLogSystem and HitLogSystem.Add then logHandle = HitLogSystem.Add(targetPart.Name, victimName) end local start = tick() local damageDealt = 0 local connectionHC, connectionDied local function OnDamage(newHealth) if newHealth < initialHealth then damageDealt = initialHealth - newHealth if damageDealt > 0.1 then if logHandle then logHandle:Update(math.floor(damageDealt + 0.5), targetPart.Name == "Head", math.floor(newHealth)) end SpawnHitmarker(targetPart.Position) local updater = SpawnDamageText(targetPart.Position, damageDealt) if damageDealt >= 99 then task.delay(0.05, function() local victimName = character.Name local stillAlive = false local chars = workspace:FindFirstChild("Characters") if chars then if chars:FindFirstChild("Terrorists") and chars.Terrorists:FindFirstChild(victimName) then stillAlive = true end if chars:FindFirstChild("Counter-Terrorists") and chars["Counter-Terrorists"]:FindFirstChild(victimName) then stillAlive = true end end if stillAlive then updater("MISS") end end) end if connectionHC then connectionHC:Disconnect() connectionHC = nil end if connectionDied then connectionDied:Disconnect() connectionDied = nil end end end end connectionHC = humanoid.HealthChanged:Connect(OnDamage) connectionDied = humanoid.Died:Connect(function() OnDamage(0) end) task.spawn(function() local debr = workspace:FindFirstChild("Debris") if debr and character then local ancC ancC = character.AncestryChanged:Connect(function(_, p) if p == debr then if ancC then ancC:Disconnect() end OnDamage(0) end end) task.delay(1.5, function() if ancC then ancC:Disconnect() end end) end end) while tick() - start < 1.2 do if damageDealt > 0 then break end if humanoid then if not humanoid.Parent then OnDamage(0) break end if humanoid.Health < initialHealth then OnDamage(humanoid.Health) break elseif humanoid.Health <= 0 then OnDamage(0) break end end task.wait() end if connectionHC then connectionHC:Disconnect() end if connectionDied then connectionDied:Disconnect() end if damageDealt <= 0.1 then if logHandle then logHandle:Destroy() end end end) end if _G.Config.ShowTracers then draw_tracer(startPos, targetPos) if wbHits then for _, hit in ipairs(wbHits) do if hit.Instance and not hit.Instance.Parent:FindFirstChild("Humanoid") then draw_impact_box(hit.Position) end end end end table.insert(_G.LocalShots, { Position = targetPos, Time = tick() }) if _G.Config.EspOnShotChams and target and target.Character then local hl = target.Character:FindFirstChild("BloxStrikeHighlight") if hl then task.spawn(function() local oldColor = hl.FillColor hl.FillColor = Color3.fromRGB(255, 255, 255) hl.FillTransparency = 0.2 task.wait(0.1) hl.FillTransparency = 0.5 hl.FillColor = oldColor end) end end if _G.Config.PlayHitSound then playHitSound() end return fakeResult end local result = originalPerformRaycast(self, spreadAmount) if result and result.Hits then local finalHit = result.Hits[#result.Hits] if finalHit and finalHit.Instance and finalHit.Position then if _G.Config.ShowTracers then draw_tracer(startPos, finalHit.Position) end table.insert(_G.LocalShots, { Position = finalHit.Position, Time = tick() }) local character = finalHit.Instance.Parent local humanoid = character:FindFirstChild("Humanoid") if humanoid then if _G.Config.PlayHitSound then playHitSound() end if _G.Config.ShowHitmark then SpawnHitmarker(finalHit.Position) end local logHandle = nil if _G.Config.ShowHitLogs and HitLogSystem and HitLogSystem.Add then if not _G.HitLogDebounce then _G.HitLogDebounce = {} end local last = _G.HitLogDebounce[character.Name] or 0 if tick() - last > 0.05 then _G.HitLogDebounce[character.Name] = tick() logHandle = HitLogSystem.Add(finalHit.Instance.Name, character.Name) end end TrackDamage(humanoid, 1, function(dmg, newHp) local updater = SpawnDamageText(finalHit.Position, dmg) if logHandle then logHandle:Update(math.floor(dmg), finalHit.Instance.Name == "Head", math.floor(newHp)) end if dmg >= 99 then task.delay(0.05, function() local victimName = character.Name local stillAlive = false local chars = workspace:FindFirstChild("Characters") if chars then if chars:FindFirstChild("Terrorists") and chars.Terrorists:FindFirstChild(victimName) then stillAlive = true end if chars:FindFirstChild("Counter-Terrorists") and chars["Counter-Terrorists"]:FindFirstChild(victimName) then stillAlive = true end end if stillAlive then updater("MISS") end end) end end) end end end return result end else warn("Failed to hook _performRaycast") end else warn("Bullet module not found.") end local ESP_Table = {} local function SetAllVisible(data, val) if not data then return end for k, d in pairs(data) do if k == "InventoryPool" then continue end if typeof(d) == "Instance" then if d:IsA("BillboardGui") then d.Enabled = val end elseif d.Visible ~= nil then pcall(function() d.Visible = val end) end end end local function RemoveEsp(p) if ESP_Table[p] then for _, d in pairs(ESP_Table[p]) do if typeof(d) == "Instance" then d:Destroy() elseif d.Remove then d:Remove() end end ESP_Table[p] = nil end end Players.PlayerRemoving:Connect(RemoveEsp) local function GetMoveDirection() local Direction = Vector3.zero local LookVector = Camera.CFrame.LookVector local RightVector = Camera.CFrame.RightVector if UserInputService:IsKeyDown(Enum.KeyCode.W) then Direction += LookVector end if UserInputService:IsKeyDown(Enum.KeyCode.S) then Direction -= LookVector end if UserInputService:IsKeyDown(Enum.KeyCode.A) then Direction -= RightVector end if UserInputService:IsKeyDown(Enum.KeyCode.D) then Direction += RightVector end return Vector3.new(Direction.X, 0, Direction.Z).Unit end local CurrentWeaponName = nil local CurrentWeaponData = { CanWallbang = true, MaxPenetration = 4, Penetration = 4 } local RS = game:GetService("ReplicatedStorage") local WeaponDB = RS:WaitForChild("Database"):WaitForChild("Custom"):WaitForChild("Weapons") local IconCache = {} local LoadingCache = {} local function GetWeaponIcon(wName) if not wName then return nil end if IconCache[wName] then return IconCache[wName] end if LoadingCache[wName] then return nil end local mod = WeaponDB:FindFirstChild(wName) if mod then LoadingCache[wName] = true task.spawn(function() local success, res = pcall(require, mod) if success and type(res) == "table" and res.Icon then IconCache[wName] = res.Icon end LoadingCache[wName] = nil end) end return nil end local IsShifting = false local LastShiftTime = 0 local LastFireTime = 0 RunService.RenderStepped:Connect(function() if not _G.LoadStage or _G.LoadStage < 2 then return end pcall(function() UpdateAATarget() if _G.Config.SilentAim then local t = getClosestTarget() _G.SilentTarget = t else _G.SilentTarget = nil end if _G.Config.NoFlash then local gui = LP.PlayerGui:FindFirstChild("FlashbangEffect") if gui then gui:Destroy() end local lightingEffect = game:GetService("Lighting"):FindFirstChild("FlashbangColorCorrection") if lightingEffect then lightingEffect:Destroy() end end Camera = workspace.CurrentCamera if not Camera then return end if not LP.Character or not LP.Character.Parent then return end local frame = (getgenv and getgenv().FrameCount or 0) + 1 if getgenv then getgenv().FrameCount = frame end if frame % 10 == 0 then UpdateLighting() if _G.Config.WorldSkyboxEnabled then local L = game:GetService("Lighting") local mySky = L:FindFirstChild("BloxStrike_Sky") if not mySky then UpdateSkybox(_G.Config.WorldSkybox) end end end local mouse_pos = UserInputService:GetMouseLocation() fovCircle.Position = mouse_pos fovCircle.Radius = _G.Config.FovRadius fovCircle.Visible = _G.Config.ShowFov and _G.Config.SilentAim if _G.Config.EnableFov then Camera.FieldOfView = _G.Config.CustomFov end local foundModel = nil if CurrentWeaponName and Camera:FindFirstChild(CurrentWeaponName) then foundModel = Camera[CurrentWeaponName] else if frame % 30 == 0 then for _, child in ipairs(Camera:GetChildren()) do if child:IsA("Model") and WeaponDB:FindFirstChild(child.Name) then foundModel = child break end end end end if foundModel then if CurrentWeaponName ~= foundModel.Name then CurrentWeaponName = foundModel.Name local wModule = WeaponDB:FindFirstChild(CurrentWeaponName) local wData = nil if wModule then local s, r = pcall(require, wModule) if s and r then wData = r end end CurrentWeaponData.CanWallbang = true CurrentWeaponData.Penetration = 0 CurrentWeaponData.DamagePerPart = nil if wData then if wData.WallbangMultiplier and wData.WallbangMultiplier <= 0 then CurrentWeaponData.CanWallbang = false end if wData.Penetration then CurrentWeaponData.Penetration = wData.Penetration end if wData.DamagePerPart then CurrentWeaponData.DamagePerPart = wData.DamagePerPart end if wData.Spread then CurrentWeaponData.Spread = wData.Spread end end end else CurrentWeaponName = nil end local scopeInc = LP:GetAttribute("ScopeIncrement") or 0 local isScoped = scopeInc > 0 if isScoped then if _G.Config.NoScopeOverlay then local mainGui = LP.PlayerGui:FindFirstChild("MainGui") if mainGui then local scopeUI = mainGui:FindFirstChild("Gameplay") and mainGui.Gameplay:FindFirstChild("Scope") if scopeUI then scopeUI.Visible = false end end end if _G.Config.CustomScopeFov then Camera.FieldOfView = _G.Config.ScopeFovValue end end if _G.Config.ShowSpread and CurrentWeaponName and CurrentWeaponData and CurrentWeaponData.Spread then local spreadData = CurrentWeaponData.Spread local charSpeed = 0 if LP.Character and LP.Character.PrimaryPart then charSpeed = Vector3.new(LP.Character.PrimaryPart.AssemblyLinearVelocity.X, 0, LP.Character.PrimaryPart.AssemblyLinearVelocity.Z).Magnitude end local moveMult = spreadData.MovementMultiplier or 1 local baseSpread = spreadData.Range and spreadData.Range.Min or 0 local spreadVal = baseSpread + (charSpeed * moveMult) local currentFov = Camera.FieldOfView local viewportSize = Camera.ViewportSize local radSpread = math.rad(spreadVal / 2) local radFov = math.rad(currentFov / 2) local pixelRadius = math.tan(radSpread) * (viewportSize.Y / 2) / math.tan(radFov) * 2 spreadCircle.Visible = true spreadCircle.Position = mouse_pos spreadCircle.Radius = math.max(pixelRadius, 2) spreadCircle.Color = _G.Config.SpreadColor else spreadCircle.Visible = false end local function GetTriggerbotTarget() local mouseLoc = UserInputService:GetMouseLocation() local ray = Camera:ViewportPointToRay(mouseLoc.X, mouseLoc.Y) local params = RaycastParams.new() params.FilterDescendantsInstances = {LP.Character, Camera, workspace.CurrentCamera} if workspace:FindFirstChild("BacktrackChams") then local t = params.FilterDescendantsInstances table.insert(t, workspace.BacktrackChams) params.FilterDescendantsInstances = t end params.FilterType = Enum.RaycastFilterType.Exclude params.IgnoreWater = true local res = workspace:Raycast(ray.Origin, ray.Direction * 1000, params) if res and res.Instance then local hitInstance = res.Instance for _, p in pairs(Players:GetPlayers()) do if p ~= LP and isEnemy(p) and p.Character and hitInstance:IsDescendantOf(p.Character) then local hum = p.Character:FindFirstChild("Humanoid") if hum and hum.Health > 0 then return p end end end end if _G.Config.LegitAutoWallbang then for _, p in pairs(Players:GetPlayers()) do if p ~= LP and isEnemy(p) and p.Character then local hum = p.Character:FindFirstChild("Humanoid") local root = p.Character:FindFirstChild("HumanoidRootPart") local head = p.Character:FindFirstChild("Head") if hum and hum.Health > 0 and root and head then local bones = {head, root, p.Character:FindFirstChild("UpperTorso")} local isAiming = false local targetPos = nil for _, bone in ipairs(bones) do if not bone then continue end local sPos, visible = Camera:WorldToViewportPoint(bone.Position) if sPos.Z > 0 then local dist = (Vector2.new(sPos.X, sPos.Y) - mouseLoc).Magnitude if dist < (_G.Config.TriggerbotRadius or 10) then isAiming = true targetPos = bone.Position break end end end if isAiming then local weaponPen = 2.5 if CurrentWeaponData and CurrentWeaponData.Penetration then weaponPen = CurrentWeaponData.Penetration end if IsHitPossible and IsHitPossible(p.Character, ray.Origin, weaponPen, targetPos) then return p end end end end end end return nil end if _G.Config.AutoFire then local holdingGrenade = false local cam = workspace.CurrentCamera if cam then for _, child in ipairs(cam:GetChildren()) do local name = child.Name:lower() if name:find("grenade") or name:find("flash") or name:find("molotov") or name:find("decoy") or name:find("smoke") then holdingGrenade = true break end end end if not holdingGrenade and LP.Character then local tool = LP.Character:FindFirstChildWhichIsA("Tool") if tool then local name = tool.Name:lower() if name:find("grenade") or name:find("flash") or name:find("molotov") or name:find("decoy") or name:find("smoke") then holdingGrenade = true end end local heldItem = LP.Character:FindFirstChild("HE Grenade") or LP.Character:FindFirstChild("Flashbang") or LP.Character:FindFirstChild("Smoke Grenade") or LP.Character:FindFirstChild("Molotov") or LP.Character:FindFirstChild("Decoy Grenade") if heldItem then holdingGrenade = true end end local target = nil if not holdingGrenade then if _G.Config.SilentAim and _G.SilentTarget then target = _G.SilentTarget else target = GetTriggerbotTarget() end end if _G.Config.DebugMode then print("[AutoFire Debug] HoldingGrenade:", holdingGrenade, " Target:", target) end if target and target.Character then if Window and Window.IsOpen then return end local canShoot = true if _G.Config.LegitAutoStop and LP.Character and LP.Character:FindFirstChild("HumanoidRootPart") then local rp = LP.Character.HumanoidRootPart local vel = rp.AssemblyLinearVelocity local planeVel = Vector3.new(vel.X, 0, vel.Z) rp.AssemblyLinearVelocity = Vector3.new(0, vel.Y, 0) local hum = LP.Character:FindFirstChild("Humanoid") if hum then hum:Move(Vector3.new(0,0,0), true) end if planeVel.Magnitude > 0.5 then canShoot = false end end if _G.Config.LegitAutoScope and CurrentWeaponName then local isScoped = (LP:GetAttribute("ScopeIncrement") or 0) > 0 if not isScoped then if not _G.LegitScoping then if typeof(mouse2press) == "function" then mouse2press() else local vim = game:GetService("VirtualInputManager") vim:SendMouseButtonEvent(0, 0, 1, true, game, 1) end _G.LegitScoping = true _G.LegitScopeTime = tick() _G.LegitScopeDelay = math.random(150, 300) / 1000 end canShoot = false else if _G.LegitScoping and _G.LegitScopeTime and (tick() - _G.LegitScopeTime < (_G.LegitScopeDelay or 0.2)) then canShoot = false end end end if _G.Config.DebugMode then end if canShoot then local fired = false local now = tick() if now - (LastFireTime or 0) > 0.05 then fired = true LastFireTime = now if _G.Config.IsPeeking then _G.Config.AutoPeekReturning = true end if typeof(mouse1click) == "function" then mouse1click() else local vim = game:GetService("VirtualInputManager") vim:SendMouseButtonEvent(0, 0, 0, true, game, 1) vim:SendMouseButtonEvent(0, 0, 0, false, game, 1) end if _G.Config.LegitAutoScope and _G.LegitScoping then task.delay(math.random(200, 400) / 1000, function() if typeof(mouse2release) == "function" then mouse2release() else local vim = game:GetService("VirtualInputManager") vim:SendMouseButtonEvent(0, 0, 1, false, game, 1) end _G.LegitScoping = false end) end end end else if _G.LegitScoping then if typeof(mouse2release) == "function" then mouse2release() else local vim = game:GetService("VirtualInputManager") vim:SendMouseButtonEvent(0, 0, 1, false, game, 1) end _G.LegitScoping = false _G.LegitScopeTime = nil end end end if _G.Config.ShowWallbangIndicator then local camCFrame = Camera.CFrame local origin = camCFrame.Position local direction = camCFrame.LookVector * 1000 local rayParams = RaycastParams.new() rayParams.FilterDescendantsInstances = {LP.Character, Camera} rayParams.FilterType = Enum.RaycastFilterType.Exclude rayParams.IgnoreWater = true local hit = Workspace:Raycast(origin, direction, rayParams) local isPenetrable = false local showIndicator = false if hit then if CurrentWeaponData.CanWallbang then local penRemaining = (CurrentWeaponData.Penetration or 0) local stats = GetPenetrationStats(origin, direction, penRemaining, {LP.Character, Camera}, nil) if stats.Success then isPenetrable = true else isPenetrable = false if stats.MaterialStats and stats.MaterialStats.Limit then local limit = stats.MaterialStats.Limit local used = stats.MaterialStats.Thickness debugText = string.format("Blocked | %s: %.2f / %.2f", stats.MaterialStats.Name, used, limit) else debugText = "Blocked | " .. (stats.FailReason or "Unknown") end end end showIndicator = true end if showIndicator then local screenPos = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2) wbBox.Visible = true wbBox.Position = screenPos - (wbBox.Size / 2) wbText.Visible = true wbText.Position = screenPos + Vector2.new(0, 15) if isPenetrable then wbBox.Color = Color3.fromRGB(0, 255, 0) local mat = hit.Instance.Material local matName = mat.Name local variant = hit.Instance.MaterialVariant local limit = MaterialLimits[mat] or 0.25 if variant and variant ~= "" and MaterialVariantLimits[variant] then matName = variant limit = MaterialVariantLimits[variant] end wbText.Text = string.format("%s | %.2f", tostring(matName), limit) wbText.Color = Color3.fromRGB(0, 255, 0) else wbBox.Color = Color3.fromRGB(255, 0, 0) wbText.Text = debugText or "Blocked" wbText.Color = Color3.fromRGB(255, 255, 0) end else wbBox.Visible = false wbText.Visible = false end else wbBox.Visible = false wbText.Visible = false end end) end) RunService.RenderStepped:Connect(function() if not _G.LoadStage or _G.LoadStage < 1 then return end pcall(function() if not Camera then Camera = workspace.CurrentCamera end if not Camera then return end if _G.Config.EnableFov then Camera.FieldOfView = _G.Config.CustomFov end for _, p in pairs(Players:GetPlayers()) do if p == LP then continue end local data = ESP_Table[p] local character = p.Character if not character or not character.Parent then if data then RemoveEsp(p) end continue end local root = character:FindFirstChild("HumanoidRootPart") local humanoid = character:FindFirstChild("Humanoid") local head = character:FindFirstChild("Head") local isValid = (root and humanoid and head and humanoid.Health > 0) if not isValid or not _G.Config.Esp then if data then SetAllVisible(data, false) end if not isValid and data then RemoveEsp(p) end continue end local is_enemy = isEnemy(p) local shouldDraw = false if _G.Config.EspTeamMode == "All" then shouldDraw = true elseif _G.Config.EspTeamMode == "Enemies" and is_enemy then shouldDraw = true elseif _G.Config.EspTeamMode == "Teammates" and not is_enemy then shouldDraw = true end if not shouldDraw then if data then SetAllVisible(data, false) end continue end if not data then ESP_Table[p] = { BoxOutline = Drawing.new("Square"), Box = Drawing.new("Square"), Name = Drawing.new("Text"), HealthBarOutline = Drawing.new("Square"), HealthBar = Drawing.new("Square"), DistanceText = Drawing.new("Text"), Tracer = Drawing.new("Line"), HeadDot = Drawing.new("Circle"), Weapon = Drawing.new("Text") } data = ESP_Table[p] data.BoxOutline.Visible = false data.BoxOutline.Color = Color3.new(0,0,0) data.BoxOutline.Thickness = 3 data.BoxOutline.Filled = false data.HealthBarOutline.Visible = false data.HealthBarOutline.Color = Color3.new(0,0,0) data.HealthBarOutline.Filled = true local bb = Instance.new("BillboardGui") bb.Name = "EspIcon" bb.Size = UDim2.new(0, 40, 0, 40) bb.StudsOffset = Vector3.new(0, 5, 0) bb.AlwaysOnTop = true bb.Enabled = false if LP.PlayerGui then bb.Parent = LP.PlayerGui end local img = Instance.new("ImageLabel", bb) img.BackgroundTransparency = 1 img.Size = UDim2.new(1,0,1,0) img.Image = "" img.ScaleType = Enum.ScaleType.Fit data.IconBillboard = bb data.IconImage = img local invBB = Instance.new("BillboardGui") invBB.Name = "EspInventory" invBB.Size = UDim2.new(0, 200, 0, 34) invBB.StudsOffset = Vector3.new(0, 3.0, 0) invBB.AlwaysOnTop = true invBB.Enabled = false if LP.PlayerGui then invBB.Parent = LP.PlayerGui end local invFrame = Instance.new("Frame", invBB) invFrame.Size = UDim2.new(1, 0, 1, 0) invFrame.BackgroundColor3 = Color3.new(0, 0, 0) invFrame.BackgroundTransparency = 0.5 invFrame.BorderSizePixel = 0 local invList = Instance.new("UIListLayout", invFrame) invList.FillDirection = Enum.FillDirection.Horizontal invList.HorizontalAlignment = Enum.HorizontalAlignment.Center invList.SortOrder = Enum.SortOrder.LayoutOrder invList.Padding = UDim.new(0, 2) data.InventoryBillboard = invBB data.InventoryFrame = invFrame data.InventoryPool = {} end local pos, vis = Camera:WorldToViewportPoint(root.Position) if vis then local sX = Camera.ViewportSize.X local sY = Camera.ViewportSize.Y if pos.X < 0 or pos.X > sX or pos.Y < 0 or pos.Y > sY then vis = false end end if not vis then SetAllVisible(data, false) continue end local espColor = is_enemy and _G.Config.EnemyColor or _G.Config.TeammateColor if not espColor then espColor = Color3.new(1,1,1) end local currentFov = Camera.FieldOfView local fovScale = 70 / currentFov local size = math.max((2000 * fovScale) / math.max(pos.Z, 1), 10) data.BoxOutline.Visible = _G.Config.EspBoxes data.BoxOutline.Size = Vector2.new(size, size * 1.5) data.BoxOutline.Position = Vector2.new(pos.X - size/2, pos.Y - (size*1.5)/2) data.Box.Visible = _G.Config.EspBoxes data.Box.Size = Vector2.new(size, size * 1.5) data.Box.Position = Vector2.new(pos.X - size/2, pos.Y - (size*1.5)/2) data.Box.Color = _G.Config.BoxColor data.Box.Thickness = 1 data.Box.Filled = false data.Name.Visible = _G.Config.EspNames data.Name.Text = p.Name data.Name.Size = 14 data.Name.Center = true data.Name.Outline = true data.Name.Font = 2 data.Name.Color = _G.Config.NameColor data.Name.Position = Vector2.new(pos.X, pos.Y - (size*1.5)/2 - 16) if _G.Config.EspHealthBar then local healthPer = math.clamp(humanoid.Health / humanoid.MaxHealth, 0, 1) data.HealthBarOutline.Visible = true data.HealthBarOutline.Size = Vector2.new(4, size * 1.5 + 2) data.HealthBarOutline.Position = Vector2.new(pos.X - size/2 - 7, pos.Y - (size*1.5)/2 - 1) data.HealthBar.Visible = true data.HealthBar.Size = Vector2.new(2, size * 1.5 * healthPer) data.HealthBar.Position = Vector2.new(pos.X - size/2 - 6, pos.Y - (size*1.5)/2 + (size * 1.5 * (1 - healthPer))) data.HealthBar.Color = Color3.fromRGB(255, 0, 0):Lerp(Color3.fromRGB(0, 255, 0), healthPer) data.HealthBar.Filled = true else data.HealthBar.Visible = false data.HealthBarOutline.Visible = false end if _G.Config.EspDistance then data.DistanceText.Visible = true data.DistanceText.Text = math.floor((Camera.CFrame.Position - root.Position).Magnitude) .. "m" data.DistanceText.Size = 12 data.DistanceText.Center = true data.DistanceText.Outline = true data.DistanceText.Font = 2 data.DistanceText.Color = _G.Config.DistColor data.DistanceText.Position = Vector2.new(pos.X, pos.Y + (size*1.5)/2 + 5) else data.DistanceText.Visible = false end if _G.Config.EspTracers then data.Tracer.Visible = true data.Tracer.From = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y) data.Tracer.To = Vector2.new(pos.X, pos.Y) data.Tracer.Color = _G.Config.TracerColor data.Tracer.Thickness = 1 else data.Tracer.Visible = false end if _G.Config.EspHeadDot and head then local hPos, hVis = Camera:WorldToViewportPoint(head.Position) if hVis then data.HeadDot.Visible = true data.HeadDot.Position = Vector2.new(hPos.X, hPos.Y) data.HeadDot.Radius = 3 data.HeadDot.Color = _G.Config.HeadDotColor data.HeadDot.Filled = true else data.HeadDot.Visible = false end else data.HeadDot.Visible = false end local HttpService = game:GetService("HttpService") if _G.Config.EspWeapon then local weaponName = "None" local attr = p:GetAttribute("CurrentEquipped") if data.LastWeaponAttr ~= attr then data.LastWeaponAttr = attr if attr then local s, decoded = pcall(function() return HttpService:JSONDecode(attr) end) if s and decoded and decoded.Name then data.LastWeaponName = decoded.Name else data.LastWeaponName = "None" end else data.LastWeaponName = "None" end end weaponName = data.LastWeaponName or "None" if data.IconBillboard then data.IconBillboard.Enabled = false end data.Weapon.Visible = true data.Weapon.Text = weaponName or "None" data.Weapon.Size = 13 data.Weapon.Center = false data.Weapon.Outline = true data.Weapon.Font = 2 data.Weapon.Position = Vector2.new(pos.X + size/2 + 4, pos.Y - size/2) data.Weapon.Color = _G.Config.WeaponColor else if data.IconBillboard then data.IconBillboard.Enabled = false end data.Weapon.Visible = false end if _G.Config.EspInventory and data.InventoryBillboard then local folderName = p.Name .. "_WeaponAttachments" local folder = workspace.Debris:FindFirstChild(folderName) local items = folder and folder:GetChildren() or {} local shownCount = 0 for i, item in ipairs(items) do local icon = GetWeaponIcon(item.Name) if icon then shownCount += 1 local lbl = data.InventoryPool[shownCount] if not lbl then local parent = data.InventoryFrame or data.InventoryBillboard lbl = Instance.new("ImageLabel", parent) lbl.BackgroundTransparency = 1 lbl.Size = UDim2.new(0, 30, 0, 30) lbl.ScaleType = Enum.ScaleType.Fit data.InventoryPool[shownCount] = lbl end if data.InventoryFrame and lbl.Parent ~= data.InventoryFrame then lbl.Parent = data.InventoryFrame end lbl.Image = icon lbl.Visible = true lbl.LayoutOrder = i end end for i = shownCount + 1, #data.InventoryPool do data.InventoryPool[i].Visible = false end if shownCount > 0 then data.InventoryBillboard.Adornee = head data.InventoryBillboard.Enabled = true data.InventoryBillboard.Size = UDim2.new(0, shownCount * 32 + 4, 0, 34) else data.InventoryBillboard.Enabled = false end elseif data.InventoryBillboard then data.InventoryBillboard.Enabled = false end end end) end) RunService.Heartbeat:Connect(function() local Character = LP.Character if not Character then return end local RootPart = Character:FindFirstChild("HumanoidRootPart") local Humanoid = Character:FindFirstChild("Humanoid") if not RootPart or not Humanoid then return end if _G.Config.Bhop then if UserInputService:IsKeyDown(Enum.KeyCode.Space) then local RayParams = RaycastParams.new() RayParams.FilterDescendantsInstances = {Character} RayParams.FilterType = Enum.RaycastFilterType.Exclude local GroundCheck = Workspace:Raycast(RootPart.Position, Vector3.new(0, -4, 0), RayParams) if GroundCheck then Humanoid.Jump = true end end local Direction = Vector3.zero local Success, Result = pcall(function() return GetMoveDirection() end) if Success and Result.Magnitude > 0 then Direction = Result * _G.Config.BhopSpeed local Velocity = RootPart.AssemblyLinearVelocity local NewX = Velocity.X + (Direction.X - Velocity.X) * 0.2 local NewZ = Velocity.Z + (Direction.Z - Velocity.Z) * 0.2 RootPart.AssemblyLinearVelocity = Vector3.new(NewX, Velocity.Y, NewZ) end end if _G.Config.AutoStop and not _G.Config.AutoPeekReturning then local Success, Result = pcall(function() return GetMoveDirection() end) local Options = _G.Config.QuickStopOptions or {} local function HasOpt(name) for _,v in pairs(Options) do if v == name then return true end end return false end local isMoving = Success and Result.Magnitude > 0 local isShooting = UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) local shouldStop = false if Success and Result.Magnitude == 0 then shouldStop = true end if isShooting then shouldStop = true end local isGrounded = (Humanoid.FloorMaterial ~= Enum.Material.Air) local canStop = isGrounded or HasOpt("In Air") if HasOpt("Move Between Shots") and not isShooting and isMoving then shouldStop = false if Result.Magnitude == 0 then shouldStop = true end end if shouldStop and canStop then local Velocity = RootPart.AssemblyLinearVelocity local HorizontalVel = Vector3.new(Velocity.X, 0, Velocity.Z) if HorizontalVel.Magnitude > 0.1 then RootPart.AssemblyLinearVelocity = Vector3.new(0, Velocity.Y, 0) Humanoid:MoveTo(RootPart.Position) if HasOpt("Duck") and not _G.Config.FakeDuck then end end end end end) task.spawn(function() local PeekPart = Instance.new("Part") PeekPart.Name = "AutoPeekVisual" PeekPart.Shape = Enum.PartType.Cylinder PeekPart.Material = Enum.Material.Neon PeekPart.Color = Color3.fromRGB(0, 255, 0) PeekPart.Transparency = 0.6 PeekPart.Anchored = true PeekPart.CanCollide = false PeekPart.Size = Vector3.new(0.2, 3, 3) PeekPart.Parent = nil local PeekOrigin = nil _G.Config.IsPeeking = false _G.Config.AutoPeekReturning = false local IsPeeking = false local IsReturning = false UserInputService.InputBegan:Connect(function(input, gpe) if not _G.Config.AutoPeek then return end local isPeekKey = false if _G.Config.AutoPeekKey then if input.KeyCode ~= Enum.KeyCode.Unknown and input.KeyCode == _G.Config.AutoPeekKey then isPeekKey = true elseif input.UserInputType == _G.Config.AutoPeekKey then isPeekKey = true end end if gpe and not isPeekKey then return end if isPeekKey then if LP.Character and LP.Character:FindFirstChild("HumanoidRootPart") then PeekOrigin = LP.Character.HumanoidRootPart.Position IsPeeking = true _G.Config.IsPeeking = true IsReturning = false _G.Config.AutoPeekReturning = false PeekPart.Parent = Workspace PeekPart.CanCollide = false PeekPart.CanTouch = false PeekPart.CanQuery = false PeekPart.Massless = true PeekPart.Position = PeekOrigin - Vector3.new(0, 2, 0) PeekPart.CFrame = CFrame.new(PeekOrigin - Vector3.new(0, 2.8, 0)) * CFrame.Angles(0, 0, math.rad(90)) end end if IsPeeking and input.UserInputType == Enum.UserInputType.MouseButton1 then IsReturning = true _G.Config.AutoPeekReturning = true end end) UserInputService.InputEnded:Connect(function(input, gpe) local isPeekKey = false if _G.Config.AutoPeekKey then if input.KeyCode ~= Enum.KeyCode.Unknown and input.KeyCode == _G.Config.AutoPeekKey then isPeekKey = true elseif input.UserInputType == _G.Config.AutoPeekKey then isPeekKey = true end end if isPeekKey then IsPeeking = false _G.Config.IsPeeking = false IsReturning = false _G.Config.AutoPeekReturning = false if PeekPart then PeekPart.Parent = nil end PeekOrigin = nil end end) game:GetService("RunService").RenderStepped:Connect(function() if not _G.Config.AutoPeek then if PeekPart and PeekPart.Parent then PeekPart.Parent = nil end return end if _G.Config.AutoPeekReturning then IsReturning = true end if IsPeeking and PeekOrigin and PeekPart then PeekPart.Parent = Workspace PeekPart.CFrame = CFrame.new(PeekOrigin - Vector3.new(0, 2.8, 0)) * CFrame.Angles(0, 0, math.rad(90)) else if PeekPart then PeekPart.Parent = nil end end if IsReturning and PeekOrigin and LP.Character then local Humanoid = LP.Character:FindFirstChild("Humanoid") local Root = LP.Character:FindFirstChild("HumanoidRootPart") if Humanoid and Root then local flatPos = Vector3.new(Root.Position.X, PeekOrigin.Y, Root.Position.Z) local dist = (flatPos - PeekOrigin).Magnitude if dist < 1.0 then IsReturning = false _G.Config.AutoPeekReturning = false Humanoid:MoveTo(Root.Position) else Humanoid:MoveTo(PeekOrigin) end end end end) end) local Ghosts = {} local BacktrackHistory = {} local BacktrackFolder = workspace.CurrentCamera:FindFirstChild("BacktrackChams") or Instance.new("Folder", workspace.CurrentCamera) BacktrackFolder.Name = "BacktrackChams" Players.PlayerRemoving:Connect(function(player) BacktrackHistory[player] = nil if Ghosts[player] then Ghosts[player]:Destroy() Ghosts[player] = nil end end) RunService.RenderStepped:Connect(function() if not _G.Config.BacktrackChams then BacktrackFolder:ClearAllChildren() Ghosts = {} BacktrackHistory = {} return end local now = tick() local backtrackTime = _G.Config.BacktrackTime or 0.2 for _, p in pairs(Players:GetPlayers()) do if (p ~= LP or _G.Config.SelfBacktrack) and p.Character and p.Character:FindFirstChild("HumanoidRootPart") then local is_enemy = isEnemy(p) if p == LP and _G.Config.SelfBacktrack then is_enemy = true end if is_enemy then local Root = p.Character.HumanoidRootPart if not BacktrackHistory[p] then BacktrackHistory[p] = {} end if not _G.GhostStates then _G.GhostStates = {} end if not _G.GhostStates[p] then _G.GhostStates[p] = {Active=false, StartPos=Root.Position} end local history = BacktrackHistory[p] if Root.AssemblyLinearVelocity.Magnitude > 500 then BacktrackHistory[p] = {} history = BacktrackHistory[p] _G.GhostStates[p] = {Active=false, StartPos=Root.Position} end if #history > 0 then local lastRec = history[#history] local dist = (Root.Position - lastRec.CFrame.Position).Magnitude if dist > 0.1 then if dist > 25 then BacktrackHistory[p] = {} history = BacktrackHistory[p] _G.GhostStates[p] = {Active=false, StartPos=Root.Position} end if not _G.GhostStates[p].Active then if (Root.Position - _G.GhostStates[p].StartPos).Magnitude > 1.0 then _G.GhostStates[p].Active = true end end if _G.GhostStates[p].Active then table.insert(history, {Time = now, CFrame = Root.CFrame}) end end else _G.GhostStates[p] = {Active=false, StartPos=Root.Position} table.insert(history, {Time = now, CFrame = Root.CFrame}) end for i = #history, 1, -1 do if now - history[i].Time > 1.0 then table.remove(history, i) end end local targetTime = now - backtrackTime local finalCFrame = nil if #history > 0 then local found = false for i = #history, 2, -1 do local recent = history[i] local older = history[i-1] if targetTime <= recent.Time and targetTime >= older.Time then local alpha = (targetTime - older.Time) / (recent.Time - older.Time) finalCFrame = older.CFrame:Lerp(recent.CFrame, alpha) found = true break end end if not found then finalCFrame = history[1].CFrame end end if finalCFrame then local ghost = Ghosts[p] if not ghost or not ghost.Parent then p.Character.Archivable = true local rawGhost = p.Character:Clone() if rawGhost then ghost = rawGhost ghost.Name = "Ghost_" .. p.Name Ghosts[p] = ghost for _, item in ipairs(ghost:GetDescendants()) do if item:IsA("LuaSourceContainer") or item:IsA("Script") or item:IsA("Sound") or item:IsA("JointInstance") or item:IsA("BodyMover") or item:IsA("Constraint") then item:Destroy() end end ghost:BreakJoints() for _, item in ipairs(ghost:GetDescendants()) do if item:IsA("BasePart") then item.Anchored = true item.CanCollide = false item.CanQuery = false item.Massless = true item.AssemblyLinearVelocity = Vector3.zero item.Material = Enum.Material.Neon item.Transparency = 0.5 item.Color = _G.Config.BacktrackChamsColor or Color3.fromRGB(80, 0, 255) if item.Name == "HumanoidRootPart" then item.Transparency = 1 end elseif item:IsA("Humanoid") then item.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None item.PlatformStand = true elseif item:IsA("Decal") then item:Destroy() end end local hl = Instance.new("Highlight", ghost) hl.Name = "BacktrackHighlight" hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop hl.FillColor = _G.Config.BacktrackChamsColor hl.OutlineColor = Color3.new(1,1,1) hl.FillTransparency = 0.5 ghost.Parent = BacktrackFolder end end if ghost and ghost.Parent then ghost:PivotTo(finalCFrame) local baseColor = _G.Config.BacktrackChamsColor or Color3.fromRGB(80, 0, 255) local hl = ghost:FindFirstChild("BacktrackHighlight") if hl then hl.FillColor = baseColor end for _,v in pairs(ghost:GetChildren()) do if v:IsA("BasePart") and v.Name ~= "HumanoidRootPart" then v.Color = baseColor end end end end else if Ghosts[p] then Ghosts[p]:Destroy(); Ghosts[p] = nil end end else if Ghosts[p] then Ghosts[p]:Destroy(); Ghosts[p] = nil end end end end) task.spawn(function() local RunService = game:GetService("RunService") local Camera = workspace.CurrentCamera RunService.RenderStepped:Connect(function() if not LP or not LP.Character or not LP.Character:FindFirstChild("Humanoid") then return end local Humanoid = LP.Character.Humanoid local Root = LP.Character:FindFirstChild("HumanoidRootPart") if _G.Config.FakeDuck then local currentOffset = Humanoid.CameraOffset if currentOffset.Y < -0.5 then Humanoid.CameraOffset = Vector3.new(0, 0, 0) end end end) while true do task.wait(0.1) if LP.Character then if _G.Config.AutoScope and InventoryController then local weapon = InventoryController.getCurrentEquipped() local isSafeWeapon = weapon and weapon.Properties and weapon.Properties.Slot ~= "Grenade" and weapon.Properties.Slot ~= "C4" and weapon.Properties.Slot ~= "Knife" if isSafeWeapon and weapon.Properties.HasScope then local isShooting = UserInputService:IsMouseButtonPressed(Enum.UserInputType.MouseButton1) if not _G.LastAutoScopeAttempt then _G.LastAutoScopeAttempt = 0 end if isShooting and not weapon.IsScoped then if tick() - _G.LastAutoScopeAttempt > 0.3 then _G.LastAutoScopeAttempt = tick() pcall(function() weapon:scope(true) end) end end end end end end end) task.spawn(function() local RunService = game:GetService("RunService") local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local CoreGui = game:GetService("CoreGui") local parent = CoreGui local success, _ = pcall(function() return CoreGui.Name end) if not success then if LocalPlayer.PlayerGui then parent = LocalPlayer.PlayerGui end end local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "NoScopeOverlay" if parent:FindFirstChild("NoScopeOverlay") then parent.NoScopeOverlay:Destroy() end ScreenGui.Parent = parent local fakecrosshair = Instance.new("Frame", ScreenGui) fakecrosshair.Size = UDim2.new(0, 20, 0, 20) fakecrosshair.Position = UDim2.new(0.5, 0, 0.5, 0) fakecrosshair.AnchorPoint = Vector2.new(0.5, 0.5) fakecrosshair.BackgroundTransparency = 1 fakecrosshair.Visible = false local line0 = Instance.new("Frame", fakecrosshair) line0.Size = UDim2.new(1, 0, 0, 2) line0.Position = UDim2.new(0, 0, 0.5, 0) line0.AnchorPoint = Vector2.new(0, 0.5) line0.BackgroundColor3 = Color3.fromRGB(255, 0, 0) line0.BorderSizePixel = 0 local line1 = Instance.new("Frame", fakecrosshair) line1.Size = UDim2.new(0, 2, 1, 0) line1.Position = UDim2.new(0.5, 0, 0, 0) line1.AnchorPoint = Vector2.new(0.5, 0) line1.BackgroundColor3 = Color3.fromRGB(255, 0, 0) line1.BorderSizePixel = 0 local CachedSniperScope = nil RunService.RenderStepped:Connect(function() if CachedSniperScope and not CachedSniperScope.Parent then CachedSniperScope = nil end if not CachedSniperScope then local playerGui = LocalPlayer:FindFirstChild("PlayerGui") if playerGui then local s, scope = pcall(function() return playerGui.MainGui.Gameplay.Middle.SniperScope end) if s and scope then CachedSniperScope = scope end end end local scopeFrame = CachedSniperScope if not _G.Config.RemoveScope then fakecrosshair.Visible = false if scopeFrame then if scopeFrame.Size ~= UDim2.new(1,0,1,0) then scopeFrame.Size = UDim2.new(1,0,1,0) end end return end if scopeFrame then if scopeFrame.Visible == true then scopeFrame.Size = UDim2.new(0, 0, 0, 0) fakecrosshair.Visible = true else fakecrosshair.Visible = false if scopeFrame.Size ~= UDim2.new(1, 0, 1, 0) then scopeFrame.Size = UDim2.new(1, 0, 1, 0) end end else fakecrosshair.Visible = false end end) end) if Library and Library.Notification then Library:Notification({ Title = "BloxStrike", Description = "Loaded Successfully", Duration = 5, Icon = "73789337996373" }) end task.spawn(function() local PenText = Drawing.new("Text") PenText.Visible = false PenText.Center = true PenText.Size = 18 PenText.Font = 2 PenText.Color = Color3.fromRGB(0, 255, 0) PenText.Outline = true local penParams = RaycastParams.new() penParams.FilterType = Enum.RaycastFilterType.Exclude penParams.CollisionGroup = "Bullet" game:GetService("RunService").RenderStepped:Connect(function() local show = _G.Config.ShowPenetration local cam = workspace.CurrentCamera if show and cam then PenText.Position = Vector2.new(cam.ViewportSize.X/2, cam.ViewportSize.Y/2 - 40) local ignore = {LP.Character, cam, workspace:FindFirstChild("BacktrackChams")} penParams.FilterDescendantsInstances = ignore local res = workspace:Raycast(cam.CFrame.Position, cam.CFrame.LookVector * 1000, penParams) if res then local stats = GetPenetrationStats(cam.CFrame.Position, cam.CFrame.LookVector, 4, {LP.Character, cam}, nil) if stats.Success then PenText.Visible = true PenText.Text = string.format("WALLBANG: YES\n(%.1f studs)", stats.TotalThickness or 0) PenText.Color = Color3.fromRGB(0, 255, 0) else PenText.Visible = true PenText.Text = "WALLBANG: NO" PenText.Color = Color3.fromRGB(255, 0, 0) end else PenText.Visible = false end else PenText.Visible = false end end) end) task.spawn(function() local RunService = game:GetService("RunService") local Players = game:GetService("Players") local LP = Players.LocalPlayer RunService.RenderStepped:Connect(function() pcall(function() setfflag("AdornShadingAPI", "true") end) local configChams = _G.Config.EspChams local hiddenColor = _G.Config.ChamHiddenColor or Color3.fromRGB(255, 0, 0) for _, p in pairs(Players:GetPlayers()) do if p.Character then local shouldCham = false if configChams and p ~= LP then if isEnemy(p) then shouldCham = true end end for _, v in pairs(p.Character:GetChildren()) do if v:IsA("BasePart") then if v.Name ~= "HumanoidRootPart" then if v.Transparency >= 1 then v.Transparency = 0 end end local box = v:FindFirstChild("BloxStrikeChamAdorn") if shouldCham and v.Name ~= "HumanoidRootPart" then if not box then box = Instance.new("BoxHandleAdornment", v) box.Name = "BloxStrikeChamAdorn" box.Adornee = v box.AlwaysOnTop = false box.ZIndex = -1 box.Transparency = -1 box.Shading = Enum.AdornShading.XRayShaded end if box then box.Visible = true box.Size = v.Size + Vector3.new(0.1, 0.1, 0.1) box.Color3 = hiddenColor end else if box then box:Destroy() end end end end local hl = p.Character:FindFirstChild("BloxStrikeChams") if hl then hl:Destroy() end end end end) end) task.spawn(function() local Lighting = game:GetService("Lighting") local RunService = game:GetService("RunService") local CC = Instance.new("ColorCorrectionEffect") CC.Name = "BloxStrikeDark" CC.Enabled = false CC.Parent = Lighting RunService.RenderStepped:Connect(function() if _G.Config.DarkMode then Lighting.Ambient = Color3.fromRGB(60, 60, 60) Lighting.OutdoorAmbient = Color3.fromRGB(40, 40, 40) Lighting.Brightness = 1.2 Lighting.GlobalShadows = true Lighting.FogColor = Color3.fromRGB(40, 40, 40) CC.Saturation = -0.2 CC.Contrast = 0.05 CC.Enabled = true else if CC.Enabled then CC.Enabled = false end end end) end) task.spawn(function() local ZoneTrackers = {} local RunService = game:GetService("RunService") local Players = game:GetService("Players") local LP = Players.LocalPlayer local Camera = workspace.CurrentCamera local function VisualizeShrapnel(pos, color) if not _G.Config.GrenadeTracers then return end local lines = {} local numLines = 16 local length = 12 local c = color or _G.Config.GrenadeZoneColor or Color3.fromRGB(255, 100, 0) for i = 1, numLines do local line = Drawing.new("Line") line.Visible = true line.Color = c line.Thickness = 2 line.Transparency = 1 local x = math.random() * 2 - 1 local y = math.random() * 2 - 1 local z = math.random() * 2 - 1 local dir = Vector3.new(x, y, z).Unit table.insert(lines, {obj = line, dir = dir}) end task.spawn(function() local t = 0 local duration = 0.6 local startTick = tick() local connection connection = RunService.RenderStepped:Connect(function() pcall(function() t = tick() - startTick if t > duration then connection:Disconnect() for _, item in ipairs(lines) do item.obj:Remove() end return end local alpha = math.clamp(t / duration, 0, 1) local expansion = (1 - (1 - alpha) * (1 - alpha)) * length if pos.X ~= pos.X then connection:Disconnect() for _, item in ipairs(lines) do item.obj:Remove() end return end for _, item in ipairs(lines) do local line = item.obj local dir = item.dir local worldStart = pos + (dir * (expansion * 0.2)) local worldEnd = pos + (dir * expansion) local screenStart, onScreen1 = Camera:WorldToViewportPoint(worldStart) local screenEnd, onScreen2 = Camera:WorldToViewportPoint(worldEnd) if onScreen1 or onScreen2 then line.Visible = true line.From = Vector2.new(screenStart.X, screenStart.Y) line.To = Vector2.new(screenEnd.X, screenEnd.Y) line.Transparency = 1 - alpha else line.Visible = false end end end) end) end) end local function HandleObject(obj) if not obj or not obj.Parent then return end if ZoneTrackers[obj] then return end local name = obj.Name local lowName = name:lower() local isMolotovZone = (lowName:find("ignite") or lowName:find("fire") or lowName:find("molotov") or lowName:find("voxelfire")) local isSmokeZone = (lowName:find("smoke") or lowName:find("voxelsmoke")) if isMolotovZone or isSmokeZone then if not obj:IsA("BasePart") then obj.ChildAdded:Connect(function(c) task.wait(); HandleObject(c) end) return end local color = Color3.new(1,1,1) local show = false if isMolotovZone and _G.Config.MolotovZoneESP then color = _G.Config.GrenadeZoneColor or Color3.fromRGB(255, 0, 0) show = true elseif isSmokeZone and _G.Config.SmokeZoneESP then color = _G.Config.SmokeColor or Color3.fromRGB(100, 100, 100) show = true end if show then local box = Instance.new("SelectionBox") box.Name = "BS_ZoneVisual" box.Adornee = obj box.Color3 = color box.LineThickness = 0.05 box.Transparency = 0.5 box.SurfaceTransparency = 1 box.Parent = obj end return end local isUUID = (#name > 30 and select(2, name:gsub("-", "")) == 4) local isGrenadeName = (lowName:find("grenade") or lowName:find("flash") or lowName:find("molotov") or lowName:find("bang")) and not lowName:find("launch") and not lowName:find("muzzle") and not lowName:find("light") and not lowName:find("effect") and not lowName:find("gun") and not lowName:find("rifle") and not lowName:find("pistol") and not lowName:find("bullet") and not lowName:find("casing") and not lowName:find("debris") if isGrenadeName or isUUID then local mainPart = obj if obj:IsA("Model") then mainPart = obj:FindFirstChild("Handle") or obj:FindFirstChildWhichIsA("BasePart", true) end if mainPart and mainPart:IsA("BasePart") then if mainPart.Size.Magnitude < 0.6 then return end end if not mainPart or not mainPart:IsA("BasePart") then task.delay(0.1, function() if obj.Parent then HandleObject(obj) end end) return end ZoneTrackers[obj] = true if _G.Config.GrenadeESP then local box = Instance.new("BoxHandleAdornment") box.Name = "BS_GrenadeBox" box.Adornee = mainPart box.Size = mainPart.Size + Vector3.new(0.5, 0.5, 0.5) box.Color3 = Color3.fromRGB(255, 50, 50) box.Transparency = 0.2 box.AlwaysOnTop = true box.ZIndex = 10 box.Parent = mainPart end if _G.Config.GrenadeTracers then task.spawn(function() local follower = Instance.new("Part") follower.Name = "BSTrackerVisual" follower.Transparency = 1 follower.CanCollide = false follower.Anchored = true follower.Size = Vector3.new(0.1, 0.1, 0.1) follower.Position = mainPart.Position follower.Parent = workspace.CurrentCamera local a0 = Instance.new("Attachment", follower) local a1 = Instance.new("Attachment", follower) a0.Position = Vector3.new(0, 0.1, 0) a1.Position = Vector3.new(0, -0.1, 0) local trail = Instance.new("Trail") trail.Attachment0 = a0 trail.Attachment1 = a1 trail.Color = ColorSequence.new(Color3.fromRGB(255, 100, 0)) trail.Lifetime = 5.5 trail.MinLength = 0 trail.WidthScale = NumberSequence.new(1, 0) trail.Parent = follower local connection connection = RunService.RenderStepped:Connect(function() pcall(function() if mainPart and mainPart.Parent then follower.CFrame = mainPart.CFrame else connection:Disconnect() game:GetService("Debris"):AddItem(follower, 1) VisualizeShrapnel(follower.Position) end end) end) end) end end end local function Monitor(parent) parent.ChildAdded:Connect(function(child) HandleObject(child) end) for _, v in ipairs(parent:GetChildren()) do HandleObject(v) end end Monitor(workspace) local debris = workspace:FindFirstChild("Debris") if debris then Monitor(debris) debris.AncestryChanged:Connect(function() if not debris.Parent then task.wait(1) local newDebris = workspace:FindFirstChild("Debris") if newDebris then Monitor(newDebris) end end end) end workspace.ChildAdded:Connect(function(child) if child.Name == "Debris" or child.Name == "Projectiles" then Monitor(child) else HandleObject(child) end end) RunService.Heartbeat:Connect(function() for obj, _ in pairs(ZoneTrackers) do if not obj.Parent then ZoneTrackers[obj] = nil end end end) end) task.spawn(function() pcall(function() local ReplicatedStorage = game:GetService("ReplicatedStorage") local Remotes = require(ReplicatedStorage.Database.Security.Remotes) local FallDamagePacket = Remotes.Character.FallDamage if FallDamagePacket and FallDamagePacket.Send then local oldSend oldSend = hookfunction(FallDamagePacket.Send, function(...) if _G.Config.NoFallDamage then return end return oldSend(...) end) print("BloxStrike: No Fall Damage (Direct Hook)") end end) end) task.spawn(function() local Lighting = game:GetService("Lighting") local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local RunService = game:GetService("RunService") local Debris = game:GetService("Debris") local function GetPlayerGui() return LocalPlayer and LocalPlayer:FindFirstChild("PlayerGui") end local BadGuiNames = { ["FlashbangEffect"] = true, ["FlashOverlay"] = true, ["FlashScreenshot"] = true, ["BlindEffect"] = true, ["ScreenshotImage"] = true, ["StunEffect"] = true } local function SafeDestroyGui(instance) if not instance then return end if instance:IsA("ScreenGui") then instance.Enabled = false elseif instance:IsA("GuiObject") then instance.Visible = false end Debris:AddItem(instance, 0) end Lighting.ChildAdded:Connect(function(child) if not _G.Config.NoFlash then return end if (child.Name == "FlashbangColorCorrection" or child.Name:find("Flash") or child.Name:find("Blur")) and (child:IsA("ColorCorrectionEffect") or child:IsA("BlurEffect") or child:IsA("DepthOfFieldEffect")) then child.Enabled = false Debris:AddItem(child, 0) end end) local function HookPlayerGui(pg) if not pg then return end pg.ChildAdded:Connect(function(child) if not _G.Config.NoFlash then return end if BadGuiNames[child.Name] then SafeDestroyGui(child) end end) end if LocalPlayer then HookPlayerGui(GetPlayerGui()) LocalPlayer.CharacterAdded:Connect(function() task.wait(1) HookPlayerGui(GetPlayerGui()) end) end RunService.RenderStepped:Connect(function() if not _G.Config.NoFlash then return end for _, name in ipairs({"FlashbangColorCorrection", "FlashBlur", "Blur"}) do local effect = Lighting:FindFirstChild(name) if effect then effect.Enabled = false effect:Destroy() end end local pg = GetPlayerGui() if pg then for name, _ in pairs(BadGuiNames) do local overlay = pg:FindFirstChild(name) if overlay then SafeDestroyGui(overlay) end end end end) print("BloxStrike: Anti-Flashbang System Loaded (Fixed Error)") end) task.spawn(function() local Workspace = game:GetService("Workspace") local Debris = Workspace:WaitForChild("Debris") Debris.ChildAdded:Connect(function(child) if not _G.Config.CustomParticles then return end task.wait() local targetColor = ColorSequence.new(_G.Config.ParticleColor or Color3.fromRGB(170, 0, 255)) for _, descendant in ipairs(child:GetDescendants()) do if descendant:IsA("ParticleEmitter") then descendant.Color = targetColor descendant.LightEmission = 1 end end end) print("BloxStrike: Custom Particles Loaded") end) task.spawn(function() local Workspace = game:GetService("Workspace") local DebrisService = game:GetService("Debris") local DebrisFolder = Workspace:FindFirstChild("Debris") or Workspace local TweenService = game:GetService("TweenService") local function PlaySound(parent, id, vol, speed) local s = Instance.new("Sound") s.SoundId = "rbxassetid://" .. id s.Volume = vol or 1 s.PlaybackSpeed = speed or 1 s.Parent = parent s:Play() DebrisService:AddItem(s, 5) end local function ApplyRocket(model) local torso = model:FindFirstChild("UpperTorso") or model:FindFirstChild("Torso") or model:FindFirstChild("HumanoidRootPart") if not torso then return end PlaySound(torso, "8741569477", 6) local fire = Instance.new("ParticleEmitter", torso) fire.Texture = "rbxassetid://242905630" fire.Color = ColorSequence.new(Color3.fromRGB(255, 138, 59), Color3.fromRGB(255, 0, 0)) fire.Size = NumberSequence.new(0.8, 0) fire.Rate = 100 fire.Speed = NumberRange.new(5, 10) fire.EmissionDirection = Enum.NormalId.Back fire.Lifetime = NumberRange.new(0.5, 1) local smoke = Instance.new("ParticleEmitter", torso) smoke.Texture = "rbxassetid://242905630" smoke.Color = ColorSequence.new(Color3.fromRGB(100, 100, 100)) smoke.Size = NumberSequence.new(1, 3) smoke.Rate = 50 smoke.Speed = NumberRange.new(2, 5) smoke.Lifetime = NumberRange.new(1, 2) smoke.ZOffset = -1 local bv = Instance.new("BodyVelocity", torso) bv.MaxForce = Vector3.new(1e5, 1e5, 1e5) bv.Velocity = Vector3.new(0, 50, 0) local bav = Instance.new("BodyAngularVelocity", torso) bav.MaxTorque = Vector3.new(1e5, 1e5, 1e5) bav.AngularVelocity = Vector3.new(0, 20, 0) task.spawn(function() local t = 0 local duration = _G.Config.KillEffectDuration or 3 while model.Parent and t < duration do t += 0.1 if bv then bv.Velocity = bv.Velocity + Vector3.new(0, 10, 0) end if bav then bav.AngularVelocity = bav.AngularVelocity + Vector3.new(0, 5, 0) end task.wait(0.1) end if model.Parent then local ex = Instance.new("Explosion", Workspace) ex.Position = torso.Position ex.BlastRadius = 15 ex.BlastPressure = 0 PlaySound(Workspace, "142070127", 3) local sw = Instance.new("Part", Workspace) sw.Anchored = true; sw.CanCollide = false; sw.Shape = Enum.PartType.Ball sw.Material = Enum.Material.Neon; sw.Color = Color3.fromRGB(255, 100, 0) sw.Size = Vector3.new(1, 1, 1); sw.CFrame = torso.CFrame sw.Transparency = 0.2 local tween = TweenService:Create(sw, TweenInfo.new(0.3), {Size = Vector3.new(40, 40, 40), Transparency = 1}) tween:Play() tween.Completed:Connect(function() sw:Destroy() end) model:Destroy() end end) end local function ApplyLightning(model) local torso = model:FindFirstChild("HumanoidRootPart") or model:FindFirstChild("Torso") if not torso then return end PlaySound(torso, "5721273154", 6, 1) local startPos = torso.Position + Vector3.new(0, 150, 0) local endPos = torso.Position local function CreateBolt(p1, p2, thickness) local dist = (p1 - p2).Magnitude local part = Instance.new("Part", Workspace) part.Material = Enum.Material.Neon part.Color = Color3.fromRGB(100, 200, 255) part.Anchored = true; part.CanCollide = false part.Size = Vector3.new(thickness, thickness, dist) part.CFrame = CFrame.lookAt(p1, p2) * CFrame.new(0, 0, -dist/2) DebrisService:AddItem(part, 0.3) local light = Instance.new("PointLight", part) light.Color = part.Color light.Range = 30 light.Brightness = 10 end local points = {startPos} local segments = 8 for i = 1, segments do local last = points[#points] local alpha = i / segments local ideal = startPos:Lerp(endPos, alpha) local offset = Vector3.new(math.random(-5, 5), math.random(-5, 5), math.random(-5, 5)) if i == segments then offset = Vector3.zero end table.insert(points, ideal + offset) end for i = 1, #points - 1 do CreateBolt(points[i], points[i+1], 1.5) end local ex = Instance.new("Explosion", Workspace) ex.Position = torso.Position ex.BlastRadius = 0; ex.BlastPressure = 0 for _, v in pairs(model:GetDescendants()) do if v:IsA("BasePart") or v:IsA("MeshPart") then v.Color = Color3.fromRGB(20, 20, 20) v.Material = Enum.Material.Slate local smoke = Instance.new("ParticleEmitter", v) smoke.Texture = "rbxassetid://242905630" smoke.Color = ColorSequence.new(Color3.fromRGB(0,0,0)) smoke.Size = NumberSequence.new(0.5, 1) smoke.Rate = 10 smoke.Lifetime = NumberRange.new(1, 3) elseif v:IsA("Clothing") or v:IsA("Decal") then v:Destroy() end end torso.Velocity = Vector3.new(0, 50, 0) + Vector3.new(math.random(-50,50), 0, math.random(-50,50)) end local function ApplyBlackHole(model) local torso = model:FindFirstChild("HumanoidRootPart") or model:FindFirstChild("Torso") if not torso then return end torso.Anchored = true local hole = Instance.new("Part", Workspace) hole.Shape = Enum.PartType.Ball hole.Size = Vector3.new(1, 1, 1) hole.Color = Color3.new(0, 0, 0) hole.Material = Enum.Material.Neon hole.Anchored = true; hole.CanCollide = false hole.Position = torso.Position PlaySound(hole, "127456481028018", 10, 1) local suck = Instance.new("ParticleEmitter", hole) suck.Texture = "rbxassetid://242205574" suck.EmissionDirection = Enum.NormalId.Front suck.Lifetime = NumberRange.new(1) suck.Speed = NumberRange.new(-5, -2) suck.Rate = 200 suck.Color = ColorSequence.new(Color3.fromRGB(100, 0, 255), Color3.new(0,0,0)) local duration = 1.5 local tweenInfo = TweenInfo.new(duration, Enum.EasingStyle.Quint, Enum.EasingDirection.In) TweenService:Create(hole, tweenInfo, {Size = Vector3.new(15, 15, 15)}):Play() for _, v in pairs(model:GetChildren()) do if v:IsA("BasePart") then v.Anchored = true v.CanCollide = false v.Material = Enum.Material.Neon v.Color = Color3.new(0,0,0) TweenService:Create(v, tweenInfo, { Size = Vector3.new(0.01, 0.01, 0.01), Position = hole.Position, Transparency = 1 }):Play() end end task.delay(duration, function() local pop = TweenService:Create(hole, TweenInfo.new(0.1), {Size = Vector3.new(0,0,0)}) pop:Play() spawn(function() local sound = hole:FindFirstChild("Sound") if sound then local t = TweenService:Create(sound, TweenInfo.new(0.5), {Volume = 0}) t:Play() t.Completed:Wait() sound:Stop() end end) pop.Completed:Connect(function() hole:Destroy() model:Destroy() end) end) end local function ApplyDisintegrate(model) PlaySound(model:FindFirstChild("HumanoidRootPart") or model:FindFirstChild("Torso") or model.PrimaryPart, "2877304553", 4) task.delay(1.0, function() PlaySound(Workspace, "2884860176", 4) end) for _, v in pairs(model:GetDescendants()) do if v:IsA("BasePart") then v.Material = Enum.Material.Neon v.Color = Color3.fromRGB(255, 100, 50) local dust = Instance.new("ParticleEmitter", v) dust.Texture = "rbxassetid://242205574" dust.Color = ColorSequence.new(Color3.fromRGB(255, 150, 50), Color3.fromRGB(50, 50, 50)) dust.Size = NumberSequence.new(0.3, 0) dust.Rate = 100 dust.Speed = NumberRange.new(2, 5) dust.SpreadAngle = Vector2.new(360, 360) dust.Lifetime = NumberRange.new(1, 2) dust.Acceleration = Vector3.new(0, 5, 0) dust.Enabled = false task.delay(math.random() * 0.5, function() dust.Enabled = true local tween = TweenService:Create(v, TweenInfo.new(1), {Transparency = 1}) tween:Play() task.delay(0.2, function() dust.Enabled = false end) end) elseif v:IsA("Decal") or v:IsA("Clothing") then v:Destroy() end end task.delay(_G.Config.KillEffectDuration or 2, function() model:Destroy() end) end local function ApplyAscension(model) local torso = model:FindFirstChild("HumanoidRootPart") or model:FindFirstChild("Torso") if not torso then return end PlaySound(torso, "9022476960", 6) for _, v in pairs(model:GetDescendants()) do if v:IsA("BasePart") then v.Anchored = true v.CanCollide = false v.Material = Enum.Material.Ice v.Color = Color3.fromRGB(255, 215, 0) v.Transparency = 0 local s = Instance.new("Sparkles", v) s.SparkleColor = Color3.fromRGB(255, 255, 255) end end task.spawn(function() local startPos = {} for _, v in pairs(model:GetDescendants()) do if v:IsA("BasePart") then startPos[v] = v.Position end end local t = 0 local duration = _G.Config.KillEffectDuration or 3 while t < duration and model.Parent do local dt = game:GetService("RunService").Heartbeat:Wait() t += dt for v, original in pairs(startPos) do if v.Parent then v.Position = original + Vector3.new(0, t * 5, 0) v.Transparency = 0.3 + (t/3 * 0.7) end end end model:Destroy() end) end local function ApplyNuke(model) local torso = model:FindFirstChild("UpperTorso") or model:FindFirstChild("Torso") or model:FindFirstChild("HumanoidRootPart") if not torso then return end PlaySound(torso, "92744460088227", 10) local e = Instance.new("ParticleEmitter", torso) e.Texture = "rbxassetid://242905630" e.Color = ColorSequence.new(Color3.fromRGB(100, 255, 0)) e.Size = NumberSequence.new(2, 5) e.Rate = 100 e.Speed = NumberRange.new(5, 20) e.EmissionDirection = Enum.NormalId.Top e.Lifetime = NumberRange.new(1, 3) local bv = Instance.new("BodyVelocity", torso) bv.MaxForce = Vector3.new(1e5, 1e5, 1e5) bv.Velocity = Vector3.new(0, 100, 0) task.delay(1.5, function() if model.Parent then local ex = Instance.new("Explosion", Workspace) ex.Position = torso.Position ex.BlastRadius = 50 ex.BlastPressure = 0 PlaySound(Workspace, "142070127", 10) local nuke = Instance.new("Part", Workspace) nuke.Anchored = true; nuke.CanCollide = false nuke.Shape = Enum.PartType.Ball nuke.Material = Enum.Material.Neon nuke.Color = Color3.fromRGB(50, 255, 50) nuke.Size = Vector3.new(10, 10, 10) nuke.CFrame = torso.CFrame nuke.Transparency = 0.2 local t = TweenService:Create(nuke, TweenInfo.new(1), {Size = Vector3.new(200, 200, 200), Transparency=1}) t:Play() t.Completed:Connect(function() nuke:Destroy() end) model:Destroy() end end) end local function ApplyDigital(model) PlaySound(model:FindFirstChild("HumanoidRootPart") or model:FindFirstChild("Torso"), "2979000306", 2) for _, v in pairs(model:GetDescendants()) do if v:IsA("BasePart") then v.Anchored = true v.Material = Enum.Material.ForceField v.Color = Color3.fromRGB(0, 255, 0) if v:IsA("MeshPart") then v.TextureID = "" end end end local hl = Instance.new("Highlight", model) hl.FillColor = Color3.fromRGB(0, 255, 0) hl.OutlineColor = Color3.fromRGB(255, 255, 255) hl.FillTransparency = 0.5 hl.OutlineTransparency = 0 task.spawn(function() local duration = _G.Config.KillEffectDuration or 3 local steps = math.floor(duration * 10) for i = 1, steps do if not model.Parent then break end if hl then hl.FillColor = Color3.fromHSV(math.random(), 1, 1) end for _, v in pairs(model:GetChildren()) do if v:IsA("BasePart") then v.Color = Color3.fromHSV(math.random(), 1, 1) v.CFrame = v.CFrame * CFrame.new(math.random(-1,1)*0.5, math.random(-1,1)*0.5, math.random(-1,1)*0.5) end end task.wait(0.1) end model:Destroy() end) end DebrisFolder.ChildAdded:Connect(function(child) if not _G.Config.KillEffect then return end task.wait(0.05) if child:IsA("Model") and child:FindFirstChild("Humanoid") and child:FindFirstChild("Head") then local mode = _G.Config.KillEffectMode or "Lightning" if mode == "Rocket" then ApplyRocket(child) elseif mode == "Lightning" then ApplyLightning(child) elseif mode == "Nuke" then ApplyNuke(child) elseif mode == "Black Hole" then ApplyBlackHole(child) elseif mode == "Disintegrate" then ApplyDisintegrate(child) elseif mode == "Ascension" then ApplyAscension(child) elseif mode == "Digital" then ApplyDigital(child) else ApplyLightning(child) end end end) print("BloxStrike: Kill Effects Enhanced Loaded") end) local Players = game:GetService("Players") local Camera = workspace.CurrentCamera local IsGrenadeActive = false RunService.Heartbeat:Connect(function() if not _G.Config.AntiAim then return end local active = false local cam = workspace.CurrentCamera if cam then for _, child in ipairs(cam:GetChildren()) do local name = child.Name:lower() if name:find("grenade") or name:find("flash") or name:find("molotov") or name:find("decoy") or name:find("smoke") then active = true; break end end end if not active then local char = Players.LocalPlayer.Character if char then local tool = char:FindFirstChildWhichIsA("Tool") if tool then local name = tool.Name:lower() if name:find("grenade") or name:find("flash") or name:find("molotov") or name:find("decoy") or name:find("smoke") then active = true end end end end IsGrenadeActive = active end) local mt = getrawmetatable(game) setreadonly(mt, false) local oldIndex = mt.__index mt.__index = newcclosure(function(self, k) if self == Camera and k == "CFrame" and _G.Config.AntiAim then if not checkcaller() then if IsGrenadeActive then return oldIndex(self, k) end local trace = debug.traceback() if trace:find("Viewmodel") or trace:find("Bobble") or trace:find("WeaponComponent") or trace:find("CameraController") or trace:find("Loadout") then return oldIndex(self, k) end if trace:find("ByteNet") or trace:find("Spectate") or trace:find("UpdateCameraCFrame") or trace:find("Replicate") then local realCFrame = oldIndex(self, k) local _, realYaw, _ = realCFrame:ToEulerAnglesYXZ() local pitch = -1.57 if _G.Config.AntiAimPitchMode == "Up" then pitch = 1.57 end local yawOffset = 0 if _G.Config.AntiAimBackwards then yawOffset = math.pi end local targetYaw = realYaw local useTarget = false if _G.Config.FollowBackwardsAA and _G.AA_Target and _G.AA_Target.Character and _G.AA_Target.Character:FindFirstChild("HumanoidRootPart") then local myChar = Players.LocalPlayer.Character if myChar and myChar:FindFirstChild("HumanoidRootPart") then local targetPos = _G.AA_Target.Character.HumanoidRootPart.Position local myPos = myChar.HumanoidRootPart.Position local horizontalDiff = Vector3.new(targetPos.X, 0, targetPos.Z) - Vector3.new(myPos.X, 0, myPos.Z) if horizontalDiff.Magnitude > 0.1 then local lookCFrame = CFrame.lookAt(myPos, Vector3.new(targetPos.X, myPos.Y, targetPos.Z)) local _, tYaw, _ = lookCFrame:ToEulerAnglesYXZ() targetYaw = tYaw useTarget = true yawOffset = math.pi end end end if useTarget then if not _G.AA_LastYaw then _G.AA_LastYaw = targetYaw end local diff = (targetYaw - _G.AA_LastYaw + math.pi*3) % (math.pi*2) - math.pi _G.AA_LastYaw = _G.AA_LastYaw + diff * 0.2 realYaw = _G.AA_LastYaw else realYaw = realYaw end return CFrame.new(realCFrame.Position) * CFrame.fromEulerAnglesYXZ(pitch, realYaw + yawOffset, 0) end end end return oldIndex(self, k) end) setreadonly(mt, true) task.spawn(function() local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local LP = Players.LocalPlayer local function CreateESPPreview() local SCREEN_SIZE = Vector2.new(250, 350) local previewGui = Instance.new("ScreenGui") previewGui.Name = "BS_ESPPreview" previewGui.ResetOnSpawn = false previewGui.Enabled = true pcall(function() previewGui.Parent = LP:WaitForChild("PlayerGui") end) _G.SyncPreviewVisibility = function(isVisible) if previewGui then previewGui.Enabled = isVisible end end local mainFrame = Instance.new("Frame") mainFrame.Name = "PreviewFrame" mainFrame.Size = UDim2.new(0, SCREEN_SIZE.X, 0, SCREEN_SIZE.Y) mainFrame.Position = UDim2.new(0.7, 0, 0.3, 0) mainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30) mainFrame.BorderSizePixel = 0 mainFrame.Active = true mainFrame.Draggable = true mainFrame.Parent = previewGui local topBar = Instance.new("Frame") topBar.Size = UDim2.new(1, 0, 0, 20) topBar.BackgroundColor3 = Color3.fromRGB(200, 50, 50) topBar.BorderSizePixel = 0 topBar.Parent = mainFrame local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -10, 1, 0) title.Position = UDim2.new(0, 5, 0, 0) title.BackgroundTransparency = 1 title.Text = "ESP Preview" title.Font = Enum.Font.GothamBold title.TextSize = 12 title.TextColor3 = Color3.new(1,1,1) title.TextXAlignment = Enum.TextXAlignment.Left title.Parent = topBar local viewport = Instance.new("ViewportFrame") viewport.Name = "Viewport" viewport.Position = UDim2.new(0, 0, 0, 20) viewport.Size = UDim2.new(1, 0, 1, -20) viewport.BackgroundColor3 = Color3.fromRGB(20, 20, 20) viewport.BorderSizePixel = 0 viewport.Parent = mainFrame local vpCamera = Instance.new("Camera") vpCamera.Parent = viewport viewport.CurrentCamera = vpCamera vpCamera.CFrame = CFrame.lookAt(Vector3.new(0, 3, -10), Vector3.new(0, 3, 0)) local worldModel = Instance.new("WorldModel") worldModel.Parent = viewport local debugLabel = Instance.new("TextLabel") debugLabel.Name = "Debug" debugLabel.Size = UDim2.new(1, 0, 0, 15) debugLabel.Position = UDim2.new(0, 0, 1, -15) debugLabel.BackgroundTransparency = 1 debugLabel.TextColor3 = Color3.new(1, 0, 0) debugLabel.TextSize = 10 debugLabel.Text = "Initializing..." debugLabel.Visible = false debugLabel.ZIndex = 20 debugLabel.Parent = mainFrame local dummy = nil local highlight = nil local function GetRealCharacter() local char = LP.Character if char and char.Parent then return char end local charsFolder = workspace:FindFirstChild("Characters") if charsFolder then for _, folder in ipairs(charsFolder:GetChildren()) do local found = folder:FindFirstChild(LP.Name) if found then return found end end local foundDirect = charsFolder:FindFirstChild(LP.Name) if foundDirect then return foundDirect end end return nil end local function CloneRealCharacter() if dummy then dummy:Destroy() end local char = GetRealCharacter() if not char then return nil end char.Archivable = true local clone = char:Clone() char.Archivable = false if not clone then return nil end clone.Name = "Dummy" for _, v in ipairs(clone:GetDescendants()) do if v:IsA("Script") or v:IsA("LocalScript") or v:IsA("ModuleScript") or v:IsA("Sound") or v:IsA("ForceField") then v:Destroy() elseif v:IsA("BasePart") then v.Anchored = true v.CanCollide = false if v.Name == "HumanoidRootPart" then v.Transparency = 1 elseif v.Transparency < 1 then v.Transparency = 0 end elseif v:IsA("Humanoid") then v.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None v.HealthDisplayType = Enum.HumanoidHealthDisplayType.AlwaysOff end end highlight = Instance.new("Highlight") highlight.Name = "ESPHighlight" highlight.FillTransparency = 0.5 highlight.OutlineTransparency = 0 highlight.FillColor = _G.Config.EnemyColor or Color3.new(1, 0, 0) highlight.OutlineColor = Color3.new(1, 1, 1) highlight.Parent = clone highlight.Enabled = false clone.Parent = worldModel clone:PivotTo(CFrame.new(0, 3, 0)) return clone end dummy = CloneRealCharacter() LP.CharacterAdded:Connect(function(newChar) task.delay(1.5, function() if newChar and newChar.Parent then dummy = CloneRealCharacter() lastWeaponName = "None" end end) end) local espContainer = Instance.new("Frame") espContainer.Name = "ESPContainer" espContainer.Size = UDim2.new(1, 0, 1, 0) espContainer.BackgroundTransparency = 1 espContainer.ZIndex = 10 espContainer.Parent = viewport local boxOutline = Instance.new("Frame") boxOutline.Name = "Box" boxOutline.BackgroundTransparency = 1 boxOutline.BorderSizePixel = 0 boxOutline.Visible = false boxOutline.ZIndex = 11 boxOutline.Parent = espContainer local boxStroke = Instance.new("UIStroke") boxStroke.Parent = boxOutline boxStroke.Thickness = 1.5 local nameLabel = Instance.new("TextLabel") nameLabel.Name = "Name" nameLabel.BackgroundTransparency = 1 nameLabel.Font = Enum.Font.GothamBold nameLabel.TextSize = 13 nameLabel.TextStrokeTransparency = 0 nameLabel.Text = LP.Name nameLabel.Visible = false nameLabel.ZIndex = 12 nameLabel.AnchorPoint = Vector2.new(0.5, 1) nameLabel.Parent = espContainer local distLabel = Instance.new("TextLabel") distLabel.Name = "Dist" distLabel.BackgroundTransparency = 1 distLabel.Font = Enum.Font.Gotham distLabel.TextSize = 11 distLabel.TextStrokeTransparency = 0 distLabel.Text = "[15m]" distLabel.Visible = false distLabel.ZIndex = 12 distLabel.AnchorPoint = Vector2.new(0.5, 0) distLabel.Parent = espContainer local weaponLabel = Instance.new("TextLabel") weaponLabel.Name = "Weapon" weaponLabel.BackgroundTransparency = 1 weaponLabel.Font = Enum.Font.Gotham weaponLabel.TextSize = 11 weaponLabel.TextStrokeTransparency = 0 weaponLabel.Text = "Rifle" weaponLabel.Visible = false weaponLabel.ZIndex = 12 weaponLabel.AnchorPoint = Vector2.new(0, 0) weaponLabel.Parent = espContainer local inventoryLabel = Instance.new("TextLabel") inventoryLabel.Name = "Inventory" inventoryLabel.BackgroundTransparency = 1 inventoryLabel.Font = Enum.Font.Gotham inventoryLabel.TextSize = 10 inventoryLabel.TextColor3 = Color3.new(0.8, 0.8, 0.8) inventoryLabel.TextStrokeTransparency = 0 inventoryLabel.Text = "" inventoryLabel.Visible = false inventoryLabel.ZIndex = 12 inventoryLabel.AnchorPoint = Vector2.new(0.5, 0) inventoryLabel.Parent = espContainer local healthBarBg = Instance.new("Frame") healthBarBg.BorderSizePixel = 0 healthBarBg.BackgroundColor3 = Color3.new(0,0,0) healthBarBg.Visible = false healthBarBg.ZIndex = 11 healthBarBg.Parent = espContainer local healthBarFill = Instance.new("Frame") healthBarFill.BorderSizePixel = 0 healthBarFill.ZIndex = 12 healthBarFill.Parent = healthBarBg local headDot = Instance.new("Frame") headDot.Name = "HeadDot" headDot.Size = UDim2.new(0, 4, 0, 4) headDot.BackgroundColor3 = Color3.new(1, 0, 0) headDot.BorderSizePixel = 0 headDot.Visible = false headDot.ZIndex = 13 headDot.Parent = espContainer local headDotCorner = Instance.new("UICorner") headDotCorner.CornerRadius = UDim.new(1, 0) headDotCorner.Parent = headDot local function GetBoundingBox() if not dummy or not dummy.Parent then return end local minX, minY = 100000, 100000 local maxX, maxY = -100000, -100000 local onScreenAny = false local partCount = 0 local vpSize = viewport.AbsoluteSize local scaleX = vpSize.X local scaleY = vpSize.Y for _, part in ipairs(dummy:GetChildren()) do if part:IsA("BasePart") and part.Transparency < 1 then partCount = partCount + 1 local size = part.Size local cf = part.CFrame local corners = { cf * CFrame.new(size.X/2, size.Y/2, size.Z/2), cf * CFrame.new(-size.X/2, size.Y/2, size.Z/2), cf * CFrame.new(size.X/2, -size.Y/2, size.Z/2), cf * CFrame.new(-size.X/2, -size.Y/2, size.Z/2), cf * CFrame.new(size.X/2, size.Y/2, -size.Z/2), cf * CFrame.new(-size.X/2, size.Y/2, -size.Z/2), cf * CFrame.new(size.X/2, -size.Y/2, -size.Z/2), cf * CFrame.new(-size.X/2, -size.Y/2, -size.Z/2), } for _, corner in ipairs(corners) do local pos, vis = vpCamera:WorldToViewportPoint(corner.Position) local posX = pos.X * scaleX local posY = pos.Y * scaleY if vis then onScreenAny = true end if posX < minX then minX = posX end if posY < minY then minY = posY end if posX > maxX then maxX = posX end if posY > maxY then maxY = posY end end end end return minX, minY, maxX, maxY, onScreenAny, partCount end local lastCheckTime = 0 local lastWeaponName = "None" local cachedWeaponAttr = nil local cachedWeaponName = "None" local function GetCurrentWeaponName(player) if not player then return "None" end local attr = player:GetAttribute("CurrentEquipped") if attr ~= cachedWeaponAttr then cachedWeaponAttr = attr if attr then local s, decoded = pcall(function() return game:GetService("HttpService"):JSONDecode(attr) end) if s and decoded and decoded.Name then cachedWeaponName = decoded.Name else cachedWeaponName = "None" end else cachedWeaponName = "None" end end return cachedWeaponName end local function CheckAppearanceChanged() if not dummy then return true end local realChar = GetRealCharacter() if not realChar then return false end local realWeaponName = GetCurrentWeaponName(LP) if realWeaponName ~= lastWeaponName then return true end local realShirt = realChar:FindFirstChildWhichIsA("Shirt") local dummyShirt = dummy:FindFirstChildWhichIsA("Shirt") if (realShirt and not dummyShirt) or (not realShirt and dummyShirt) then return true end if realShirt and dummyShirt and realShirt.ShirtTemplate ~= dummyShirt.ShirtTemplate then return true end local realPants = realChar:FindFirstChildWhichIsA("Pants") local dummyPants = dummy:FindFirstChildWhichIsA("Pants") if (realPants and not dummyPants) or (not realPants and dummyPants) then return true end if realPants and dummyPants and realPants.PantsTemplate ~= dummyPants.PantsTemplate then return true end return false end local function Update() if not mainFrame.Visible then return end if tick() - lastCheckTime > 1 then lastCheckTime = tick() if CheckAppearanceChanged() then dummy = CloneRealCharacter() lastWeaponName = GetCurrentWeaponName(LP) end end if not dummy then dummy = CloneRealCharacter() lastWeaponName = GetCurrentWeaponName(LP) if not dummy then debugLabel.Text = "No Dummy" return end end local currentWeapon = GetCurrentWeaponName(LP) local inventoryText = "" local backpack = LP:FindFirstChild("Backpack") if backpack then local items = {} for _, t in ipairs(backpack:GetChildren()) do if t:IsA("Tool") then table.insert(items, t.Name) end end inventoryText = table.concat(items, ", ") end if nameLabel then nameLabel.Text = LP.Name end if weaponLabel then weaponLabel.Text = currentWeapon end if inventoryLabel then inventoryLabel.Text = inventoryText end if distLabel and dummy and dummy.PrimaryPart then local dist = (dummy.PrimaryPart.Position - vpCamera.CFrame.Position).Magnitude distLabel.Text = string.format("[%dm]", math.floor(dist)) end -- Health Bar Update local realChar = GetRealCharacter() if realChar then local hum = realChar:FindFirstChild("Humanoid") if hum then local hp = hum.Health local max = hum.MaxHealth local alpha = math.clamp(hp/max, 0, 1) healthBarFill.Size = UDim2.new(alpha, 0, 1, 0) healthBarFill.BackgroundColor3 = Color3.fromHSV(alpha * 0.3, 1, 1) end end local root = dummy:FindFirstChild("HumanoidRootPart") if root then dummy:PivotTo(CFrame.lookAt(Vector3.new(0, 3, 0), vpCamera.CFrame.Position)) end local minX, minY, maxX, maxY, onScreen, pCount = GetBoundingBox() local vpSize = viewport.AbsoluteSize if minX and minY and maxX and maxY then debugLabel.Text = string.format("Box: %d,%d -> %d,%d", minX, minY, maxX, maxY) else debugLabel.Text = "Waiting for valid bounds..." pCount = 0 end local headPos = nil local head = dummy:FindFirstChild("Head") if head then local pos, vis = vpCamera:WorldToViewportPoint(head.Position) if vis then headPos = Vector2.new(pos.X * vpSize.X, pos.Y * vpSize.Y) end end if pCount and pCount > 0 then local width = maxX - minX local height = maxY - minY if _G.Config.EspBoxes then boxOutline.Visible = true boxOutline.Position = UDim2.new(0, minX, 0, minY) boxOutline.Size = UDim2.new(0, width, 0, height) boxStroke.Color = _G.Config.BoxColor or Color3.new(1,1,1) else boxOutline.Visible = false end if _G.Config.EspChams then for _, v in ipairs(dummy:GetChildren()) do if v:IsA("BasePart") and v.Name ~= "HumanoidRootPart" then v.Material = Enum.Material.Neon v.Color = _G.Config.EnemyColor or Color3.new(1,0,0) v.Transparency = 0.5 end end else end if _G.Config.EspChinaHat then local head = dummy:FindFirstChild("Head") if head then local cha = head:FindFirstChild("ChinaHatAdornment") if not cha then cha = Instance.new("ConeHandleAdornment") cha.Name = "ChinaHatAdornment" cha.Adornee = head cha.Height = 1.0 cha.Radius = 1.0 cha.AlwaysOnTop = true cha.ZIndex = 5 cha.Transparency = 0.3 cha.CFrame = CFrame.new(0, 0.7, 0) * CFrame.Angles(math.rad(-90), 0, 0) cha.Parent = head end cha.Visible = true if _G.Config.EspChinaHatRainbow then local t = tick() cha.Color3 = Color3.fromHSV((t % 5)/5, 1, 1) else cha.Color3 = _G.Config.HeadDotColor or Color3.new(1, 0, 0) end end else if dummy then local head = dummy:FindFirstChild("Head") if head then local cha = head:FindFirstChild("ChinaHatAdornment") if cha then cha.Visible = false end end end end if _G.Config.EspNames then nameLabel.Visible = true nameLabel.Position = UDim2.new(0, minX + (width/2), 0, minY - 2) nameLabel.TextColor3 = _G.Config.NameColor or Color3.new(1,1,1) nameLabel.Text = LP.Name else nameLabel.Visible = false end if _G.Config.EspHealthBar then healthBarBg.Visible = true healthBarBg.Position = UDim2.new(0, minX - 5, 0, minY) healthBarBg.Size = UDim2.new(0, 2, 0, height) local hp = 80 if LP.Character and LP.Character:FindFirstChild("Humanoid") then hp = LP.Character.Humanoid.Health end local scale = hp / 100 healthBarFill.Size = UDim2.new(1, 0, scale, 0) healthBarFill.Position = UDim2.new(0, 0, 1 - scale, 0) healthBarFill.BackgroundColor3 = _G.Config.HealthBarColor or Color3.new(0,1,0) else healthBarBg.Visible = false end if _G.Config.EspHeadDot and headPos then headDot.Visible = true headDot.Position = UDim2.new(0, headPos.X - 2, 0, headPos.Y - 2) headDot.BackgroundColor3 = _G.Config.HeadDotColor or Color3.new(1, 0, 0) else headDot.Visible = false end if _G.Config.EspDistance then distLabel.Visible = true distLabel.Position = UDim2.new(0, minX + (width/2), 0, maxY + 2) distLabel.TextColor3 = _G.Config.DistColor or Color3.new(1,1,1) else distLabel.Visible = false end if _G.Config.EspWeapon then weaponLabel.Visible = true weaponLabel.TextXAlignment = Enum.TextXAlignment.Left weaponLabel.Position = UDim2.new(0, maxX + 4, 0, minY + (height * 0.15)) weaponLabel.TextColor3 = _G.Config.WeaponColor or Color3.new(1,1,1) else weaponLabel.Visible = false end if _G.Config.EspInventory and inventoryText ~= "" then inventoryLabel.Visible = true local offset = (_G.Config.EspDistance and 12 or 2) + 2 inventoryLabel.Position = UDim2.new(0, minX + (width/2), 0, maxY + offset) else inventoryLabel.Visible = false end else boxOutline.Visible = false nameLabel.Visible = false distLabel.Visible = false weaponLabel.Visible = false healthBarBg.Visible = false headDot.Visible = false inventoryLabel.Visible = false if highlight then highlight.Enabled = false end end end RunService.RenderStepped:Connect(Update) end CreateESPPreview() end)