Run it
Copy the script and paste it into your executor.
:()
.Loaded:()
(() (, ) )
.()
Players = :()
Players.LocalPlayer
Players:():()
LP = Players.LocalPlayer
Mouse = LP:()
()
RS = :()
VFXLibPos = RS:() RS.Components:() RS.Components.Common:()
VFXLibPos
VFXLibPos = RS:() RS.Components:() RS.Components.Common:()
VFXLibPos
success, lib = (, VFXLibPos)
success lib lib.CreateTracer
oldCreateTracer = lib.CreateTracer
lib.CreateTracer = (self, ...)
args = {...}
s, err = (()
(self, (args))
)
RunService = :()
UserInputService = :()
Workspace = :()
Camera = .CurrentCamera
IsMobile = UserInputService.TouchEnabled
Players = :()
LocalPlayer = Players.LocalPlayer
BacktrackHistory = {}
.LoadStage =
Window =
Library =
Network =
Packet_UpdateLookAngle =
Packet_ShootWeapon =
Packet_UpdateState =
_isProcessing =
.Config = {
Esp = ,
EspBoxes = ,
EspNames = ,
EspHealthBar = ,
EspDistance = ,
EspTracers = ,
EspHeadDot = ,
EspWeapon = ,
BoxColor = .(, , ),
NameColor = .(, , ),
HealthBarColor = .(, , ),
DistColor = .(, , ),
TracerColor = .(, , ),
HeadDotColor = .(, , ),
WeaponColor = .(, , ),
EnemyColor = .(, , ),
TeammateColor = .(, , ),
EspTeamMode = ,
UseTeamCheck = ,
SilentAim = ,
NoSpread = ,
ShowTracers = ,
PlayHitSound = ,
ShowHitLogs = ,
ShowPenetration = ,
FovRadius = ,
ShowFov = ,
AimPart = ,
HeadOnly = ,
ShowHitmark = ,
NoRecoilVisual = ,
NoRecoilReal = ,
CustomFov = ,
EnableFov = ,
WorldSkyboxEnabled = ,
WorldSkybox = ,
WorldTimeEnabled = ,
WorldClockTime = ,
WorldBrightEnabled = ,
WorldBrightness = ,
WorldAmbient = .(, , ),
WorldOutdoorAmbient = .(, , ),
Bhop = ,
BhopSpeed = ,
NoFallDamage = ,
NoFlash = ,
NoSmoke = ,
ColoredSmoke = ,
CustomParticles = ,
ParticleColor = .(, , ),
KillEffect = ,
KillEffectMode = ,
MinDamage = ,
MinDamageOverride = ,
MinDamageOverrideActive = ,
KillEffectDuration = ,
SmokeColor = .(, , ),
GrenadeZoneESP = ,
GrenadeZoneColor = .(, , ),
AutoFire = ,
MinHitChance = ,
WallBang = ,
WallDepth = ,
AutoWallDepth = ,
ShowWallbangIndicator = ,
BacktrackTime = ,
AntiAim = ,
AntiAimPitchMode = ,
AntiAimBackwards = ,
FollowBackwardsAA = ,
AntiAimYaw = ,
FakeDuck = ,
FakeDuckKey = ,
ThirdPerson = ,
ThirdPersonDist = ,
GrenadeTracers = ,
GrenadeESP = ,
AutoStop = ,
AutoPeek = ,
IsPeeking = ,
AutoPeekReturning = ,
AutoPeekKey = ,
SilentAimKey = ,
AutoFireKey = ,
WallBangKey = ,
GuiToggleKey = ,
NoScopeOverlay = ,
CustomScopeFov = ,
ScopeFovValue = ,
ShowSpread = ,
AutoScope = ,
SpreadColor = .(, , ),
TargetMode = ,
AimHitboxes = {, , },
Multipoint = ,
QuickStopOptions = {},
HistoryPreset = ,
Weather = ,
BacktrackChams = ,
BacktrackChamsColor = .(, , ),
BacktrackChamsStyle = ,
BacktrackChamsTransparency = ,
BulletTracers = ,
TracerDuration = ,
SelfBacktrack = ,
RemoveScope = ,
ShowImpactBox = ,
ShowImpacts = ,
ImpactColor = .(, , ),
ImpactTransparency = ,
BulletTracerColor = .(, , ),
EspOffscreenArrows = ,
EspChams = ,
ChamHiddenColor = .(, , ),
EspSoulParticles = ,
EspOnShotChams = ,
EspChinaHat = ,
EspSelfChinaHat = ,
EspChinaHatRainbow = ,
HitmarkColor = .(, , ),
HitmarkDuration = ,
LegitAim = ,
LegitSmooth = ,
LegitFov = ,
LegitBone = ,
LegitKey = ,
LegitDrawFov = ,
LegitAutoScope = ,
LegitAutoStop =
}
.LocalShots = {}
(position)
.Config.ShowHitmark
hitpart = .(, )
hitpart.Transparency =
hitpart.CanCollide =
hitpart.CanQuery =
hitpart.Size = .(,,)
hitpart.Anchored =
hitpart.Position = position
hitpart.Name =
hit = .()
hit.Name =
hit.AlwaysOnTop =
hit.Parent = hitpart
hit.Size = .(, , , )
hit.Adornee = hitpart
hit_img = .()
hit_img.Name =
hit_img.Image =
hit_img.BackgroundTransparency =
hit_img.Size = .(, , , )
hit_img.Visible =
hit_img.ImageColor3 = .Config.HitmarkColor .(,,)
hit_img.Rotation =
hit_img.AnchorPoint = .(, )
hit_img.Position = .(, , , )
hit_img.Parent = hit
.(()
duration = .Config.HitmarkDuration
ts = :()
tweninfo = TweenInfo.(duration, .EasingStyle.Sine)
tweninfo2 = TweenInfo.(duration, .EasingStyle.Linear)
ts:(hit_img, tweninfo, {ImageTransparency = }):()
ts:(hit_img, tweninfo2, {Rotation = }):()
.(duration)
hit_img hit_img:()
hit hit:()
hitpart hitpart:()
)
CameraController =
OldWeaponKick =
(p)
p p.Character
.Config.UseTeamCheck
p == LP .Config.SelfBacktrack
LPTeamFolder = LP.Character LP.Character.Parent
PlayerTeamFolder = p.Character.Parent
LP.Team p.Team
LP.Team ~= p.Team
LPTeamFolder PlayerTeamFolder LPTeamFolder.Name ~=
LPTeamFolder ~= PlayerTeamFolder
(val, default)
(val) == val == val val
default
()
CameraController
success, cc = (() (.ReplicatedStorage.Controllers.CameraController) )
success cc
CameraController = cc
OldWeaponKick = cc.weaponKick
OldSetRecoil = cc.setWeaponRecoil
CameraController
.Config.NoRecoilVisual
CameraController.weaponKick = ()
OldWeaponKick CameraController.weaponKick = OldWeaponKick
.Config.NoRecoilReal
CameraController.setWeaponRecoil = ()
OldSetRecoil CameraController.setWeaponRecoil = OldSetRecoil
()
()
.Config.PlayHitSound
s = .()
s.SoundId =
s.Volume =
s.PlayOnRemove =
s.Parent = Workspace
s:()
()
.Config.ShowHitmark
gui = LP.PlayerGui:()
gui
gui = .()
gui.Name =
gui.Parent = LP.PlayerGui
gui.ResetOnSpawn =
img = .()
img.BackgroundTransparency =
img.Image =
img.Size = .(, , , )
img.Position = .(, , , )
img.AnchorPoint = .(, )
img.ImageColor3 = .(, , )
img.Parent = gui
:():(img, TweenInfo.(, .EasingStyle.Quad, .EasingDirection.Out), {
Size = .(, , , ),
ImageTransparency =
}):()
.(, () img:() )
(pos)
.Config.GrenadeTracers
lines = {}
numLines =
length =
i = , numLines
line = .()
line.Visible =
line.Color = .Config.GrenadeZoneColor .(, , )
line.Thickness =
line.Transparency =
x = .() * -
y = .() * -
z = .() * -
dir = .(x, y, z).Unit
.(lines, {obj = line, dir = dir})
.(()
t =
duration =
startTick = ()
connection
connection = RunService.RenderStepped:(()
t = () - startTick
t > duration
connection:()
_, item (lines) item.obj:()
alpha = .(t / duration, , )
expansion = ( - ( - alpha) * ( - alpha)) * length
_, item (lines)
line = item.obj
dir = item.dir
worldStart = pos + (dir * (expansion * ))
worldEnd = pos + (dir * expansion)
screenStart, onScreen1 = Camera:(worldStart)
screenEnd, onScreen2 = Camera:(worldEnd)
onScreen1 onScreen2
line.Visible =
line.From = .(screenStart.X, screenStart.Y)
line.To = .(screenEnd.X, screenEnd.Y)
line.Transparency = - alpha
line.Visible =
)
)
(child)
child
name = child.Name
isSmoke = name:()
isFire = name:()
isSmoke isFire
.()
child child.Parent
showZone = (isFire .Config.MolotovZoneESP) (isSmoke .Config.SmokeZoneESP)
showZone
(part)
part:() part:()
box = .()
box.Name =
box.Adornee = part
box.Size = part.Size
box.Color3 = .Config.GrenadeZoneColor
box.Transparency =
box.AlwaysOnTop =
box.ZIndex =
box.Parent = part
_, v (child:()) (v)
child.ChildAdded:(AdornVoxel)
isSmoke .Config.ColoredSmoke
_, v (child:())
v:()
v.Color = .Config.SmokeColor
v.Material = .Material.Neon
v:()
v.Color = ColorSequence.(.Config.SmokeColor)
isSmoke .Config.NoSmoke
child:()
.Config.GrenadeESP .Config.GrenadeTracers
lowName = name:()
isUUID = name:()
matchesUUID = isUUID ( isSmoke isFire)
isNameMatch = lowName:() lowName:() lowName:() lowName:()
matchesUUID isNameMatch
child child.Parent
part = child
part:()
part = child:()
part
.Config.GrenadeESP
box = .()
box.Name =
box.Adornee = part
box.Size = part.Size + .(, , )
box.Color3 = .(, , )
box.Transparency =
box.AlwaysOnTop =
box.ZIndex =
box.Parent = part
bg = .()
bg.Name =
bg.Adornee = part
bg.Size = .(,,,)
bg.StudsOffset = .(, , )
bg.AlwaysOnTop =
bg.Parent = part
text = .()
text.BackgroundTransparency =
text.Size = .(,,,)
text.Text =
text.TextColor3 = .(, , )
text.TextStrokeTransparency =
text.Parent = bg
att0 = .(, part)
att1 = .(, part)
att0.Position = .(, , )
att1.Position = .(, -, )
trail = .()
trail.Name =
trail.Attachment0 = att0
trail.Attachment1 = att1
trail.Color = ColorSequence.(.(, , ))
trail.Lifetime =
trail.MinLength =
trail.FaceCamera =
trail.Transparency = NumberSequence.({
NumberSequenceKeypoint.(, ),
NumberSequenceKeypoint.(, ),
NumberSequenceKeypoint.(, )
})
trail.Parent = part
.(()
lastPos = part.Position
part part.Parent
lastPos = part.Position
.()
lastPos
(lastPos)
)
(child)
.Config.ShowImpacts
child
child.Name == child.Name ==
.()
child child.Parent
isLocal =
now = ()
i = #.LocalShots, , -
shot = .LocalShots[i]
now - shot.Time >
.(.LocalShots, i)
(child.Position - shot.Position).Magnitude <
isLocal =
isLocal child:()
box = .()
box.Name =
box.Adornee = child
box.Size = child.Size + .(, , )
box.Color3 = .Config.ImpactColor
box.Transparency = .Config.ImpactTransparency
box.AlwaysOnTop =
box.ZIndex =
box.Parent = child
DebrisConnections = {}
(folder)
DebrisConnections[folder]
DebrisConnections[folder] =
folder.ChildAdded:((c)
(c)
(c)
)
_, child (folder:())
(child)
(child)
debrisFolder = :()
debrisFolder
(debrisFolder)
.ChildAdded:((child)
child.Name ==
(child)
(child)
(child)
)
.(()
i, child (:())
i % == .()
(child)
(child)
)
.(()
scannedCount =
RS = :()
(module)
scannedCount = scannedCount +
module module:()
name = module.Name:()
(name:() name:() name:() name:())
name:() name:() name == name == name ==
s, r = (, module)
s (r) ==
success, isNetwork = (()
r.Character r.Inventory r.Inventory.ShootWeapon
)
success isNetwork
Packet_ShootWeapon = r.Inventory.ShootWeapon
Network = r
Packet_UpdateState = Network.Character Network.Character.UpdateCrouchState
Packet_UpdateState Packet_UpdateState.Send
oldSend
oldSend = (Packet_UpdateState.Send, (...)
args = {...}
.Config.FakeDuck
args[] =
()
((args))
(...)
)
Network.VFX Network.VFX.FlashPlayer
Network.VFX.FlashPlayer.Listen
Network.VFX.FlashPlayer.((...)
.Config.NoFlash
)
Network.Character Network.Character.FallDamage
Network.Character.FallDamage.Send
oldSend
oldSend = (Network.Character.FallDamage.Send, (...)
.Config.NoFallDamage
(...)
)
(folder)
folder
_, v (folder:())
(v)
(RS:())
(RS:())
foldersToCheck = {, , , , }
_, name (foldersToCheck)
folder = RS:(name)
folder
i, v (folder:())
i % == .()
(v)
)
.(()
mt = ()
oldNewIndex = mt.__newindex
(mt, )
mt.__newindex = ((self, key, value)
self == LP
.Config.ThirdPerson
key ==
(self, key, .CameraMode.Classic)
key ==
(self, key, .Config.ThirdPersonDist)
key ==
(self, key, .Config.ThirdPersonDist)
(self, key, value)
)
(mt, )
)
makefolder writefile isfile isfolder
(()
() ()
() ()
)
()
skyboxtable = {
[] = {
SkyboxBk = ,
SkyboxDn = ,
SkyboxFt = ,
SkyboxLf = ,
SkyboxRt = ,
SkyboxUp =
},
[] = {
SkyboxBk = ,
SkyboxDn = ,
SkyboxFt = ,
SkyboxLf = ,
SkyboxRt = ,
SkyboxUp =
},
[] = {
SkyboxBk = ,
SkyboxDn = ,
SkyboxFt = ,
SkyboxLf = ,
SkyboxRt = ,
SkyboxUp =
},
[] = {
SkyboxBk = ,
SkyboxDn = ,
SkyboxFt = ,
SkyboxLf = ,
SkyboxRt = ,
SkyboxUp =
},
[] = {
SkyboxBk = ,
SkyboxDn = ,
SkyboxFt = ,
SkyboxLf = ,
SkyboxRt = ,
SkyboxUp =
},
[] = {
SkyboxBk = ,
SkyboxDn = ,
SkyboxFt = ,
SkyboxLf = ,
SkyboxRt = ,
SkyboxUp =
},
[] = {
SkyboxBk = ,
SkyboxDn = ,
SkyboxFt = ,
SkyboxLf = ,
SkyboxRt = ,
SkyboxUp =
},
[] = {
SkyboxBk = ,
SkyboxDn = ,
SkyboxFt = ,
SkyboxLf = ,
SkyboxRt = ,
SkyboxUp =
}
}
(name)
data = skyboxtable[name]
data
L = :()
_, v (L:())
v:() v:()
v:()
sky = L:()
sky
_, v (L:())
v:() v:()
sky = .()
sky.Name =
sky.Parent = L
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 =
WeatherPart =
GroundPart =
CurrentWeatherType =
(wType)
.Config.Weather = wType
CurrentWeatherType = wType
WeatherPart WeatherPart:() WeatherPart =
GroundPart GroundPart:() GroundPart =
wType ==
WeatherPart = .()
WeatherPart.Name =
WeatherPart.Size = .(, , )
WeatherPart.Transparency =
WeatherPart.Anchored =
WeatherPart.CanCollide =
WeatherPart.Parent = .CurrentCamera
SkyEmitter = .()
SkyEmitter.Parent = WeatherPart
SkyEmitter.EmissionDirection = .NormalId.Bottom
GroundPart = .()
GroundPart.Name =
GroundPart.Size = .(, , )
GroundPart.Transparency =
GroundPart.Anchored =
GroundPart.CanCollide =
GroundPart.Parent = .CurrentCamera
GroundEmitter =
wType ==
SkyEmitter.Texture =
SkyEmitter.Rate =
SkyEmitter.Color = ColorSequence.(.(, , ))
SkyEmitter.Transparency = NumberSequence.({
NumberSequenceKeypoint.(, ),
NumberSequenceKeypoint.(, )
})
SkyEmitter.Size = NumberSequence.(, )
SkyEmitter.Lifetime = NumberRange.(, )
SkyEmitter.Speed = NumberRange.(, )
SkyEmitter.SpreadAngle = .(, )
SkyEmitter.Orientation = .ParticleOrientation.VelocityParallel
SkyEmitter.Acceleration = .(, -, )
GroundEmitter = .()
GroundEmitter.Parent = GroundPart
GroundEmitter.Texture =
GroundEmitter.Orientation = .ParticleOrientation.VelocityPerpendicular
GroundEmitter.Rate =
GroundEmitter.Color = ColorSequence.(.(, , ))
GroundEmitter.Transparency = NumberSequence.({
NumberSequenceKeypoint.(, ),
NumberSequenceKeypoint.(, )
})
GroundEmitter.Size = NumberSequence.(, )
GroundEmitter.Lifetime = NumberRange.(, )
GroundEmitter.Speed = NumberRange.(, )
wType ==
SkyEmitter.Texture =
SkyEmitter.Rate =
SkyEmitter.Color = ColorSequence.(.(, , ))
SkyEmitter.Size = NumberSequence.(, )
SkyEmitter.Speed = NumberRange.(, )
SkyEmitter.Lifetime = NumberRange.(, )
SkyEmitter.Acceleration = .(, -, )
SkyEmitter.Rotation = NumberRange.(, )
SkyEmitter.RotSpeed = NumberRange.(-, )
wType ==
SkyEmitter.Texture =
SkyEmitter.Rate =
SkyEmitter.Color = ColorSequence.(.(, , ), .(, , ))
SkyEmitter.Size = NumberSequence.(, )
SkyEmitter.Speed = NumberRange.(, )
SkyEmitter.Lifetime = NumberRange.(, )
SkyEmitter.Acceleration = .(, -, )
SkyEmitter.RotSpeed = NumberRange.(, )
(wType)
WeatherPart WeatherPart:() WeatherPart =
GroundPart GroundPart:() GroundPart =
_, v (:())
v.Name == v:()
.WeatherState = {Balls = {}, LastBall = (), Type = wType}
wType ==
WeatherPart = .()
WeatherPart.Name =
WeatherPart.Size = .(, , )
WeatherPart.Transparency =
WeatherPart.Anchored =
WeatherPart.CanCollide =
WeatherPart.Parent = .CurrentCamera
SkyEmitter = .()
SkyEmitter.Parent = WeatherPart
SkyEmitter.EmissionDirection = .NormalId.Bottom
SkyEmitter.Enabled =
GroundPart = .()
GroundPart.Name =
GroundPart.Size = .(, , )
GroundPart.Transparency =
GroundPart.Anchored =
GroundPart.CanCollide =
GroundPart.Parent = .CurrentCamera
GroundEmitter = .()
GroundEmitter.Parent = GroundPart
GroundEmitter.Enabled =
wType ==
SkyEmitter.Texture =
SkyEmitter.Rate =
SkyEmitter.Color = ColorSequence.(.(, , ))
SkyEmitter.LightEmission =
SkyEmitter.Transparency = NumberSequence.()
SkyEmitter.Size = NumberSequence.(, )
SkyEmitter.Lifetime = NumberRange.(, )
SkyEmitter.Speed = NumberRange.(, )
SkyEmitter.SpreadAngle = .(, )
SkyEmitter.Acceleration = .(, -, )
SkyEmitter.Orientation = .ParticleOrientation.FacingCamera
sound = .(, WeatherPart)
sound.SoundId =
sound.Volume =
sound.Looped =
sound.Playing =
wType ==
SkyEmitter.Texture =
SkyEmitter.Rate =
SkyEmitter.Color = ColorSequence.(.(, , ))
SkyEmitter.Size = NumberSequence.(, )
SkyEmitter.Speed = NumberRange.(, )
SkyEmitter.Lifetime = NumberRange.(, )
SkyEmitter.Acceleration = .(, , )
SkyEmitter.SpreadAngle = .(, )
SkyEmitter.LightEmission =
SkyEmitter.Rotation = NumberRange.(, )
SkyEmitter.RotSpeed = NumberRange.(, )
wType ==
SkyEmitter.Texture =
SkyEmitter.Rate =
SkyEmitter.Color = ColorSequence.(.(, , ), .(, , ))
SkyEmitter.Size = NumberSequence.(, )
SkyEmitter.Speed = NumberRange.(, )
SkyEmitter.Lifetime = NumberRange.(, )
SkyEmitter.Acceleration = .(, -, )
SkyEmitter.RotSpeed = NumberRange.(, )
rayParamsCover = RaycastParams.()
upVec = .(, , )
RunService.RenderStepped:(()
.CurrentCamera
CamCF = .CurrentCamera.CFrame
WeatherPart
WeatherPart.CFrame = CamCF * .(, , )
underCover =
LP.Character LP.Character:()
rayParamsCover.FilterDescendantsInstances = {LP.Character, WeatherPart, GroundPart, .CurrentCamera}
headPos = LP.Character.Head.Position
res = :(headPos, upVec, rayParamsCover)
res res.Instance.Transparency <
underCover =
WeatherPart WeatherPart:()
WeatherPart.ParticleEmitter.Enabled = underCover
.WeatherState .WeatherState.Type == underCover
() - (.WeatherState.LastBall ) >= .() *
.WeatherState.LastBall = ()
dist = .(, )
offset = .(.(-, ), .(-, ), -dist)
spawnPos = CamCF:(offset)
rayParams = RaycastParams.()
rayParams.FilterType = .RaycastFilterType.Exclude
ignoreList = {WeatherPart, GroundPart, .CurrentCamera, LP.Character}
rayParams.FilterDescendantsInstances = ignoreList
res = :(spawnPos, .(, -, ), rayParams)
res
splashPart = .()
splashPart.Name =
splashPart.Transparency =
splashPart.CanCollide =
splashPart.Anchored =
splashPart.Size = .(, , )
splashPart.Position = res.Position + .(, , )
splashPart.Parent = .CurrentCamera
splash = .()
splash.Parent = splashPart
splash.Texture =
splash.Size = NumberSequence.(, )
splash.Transparency = NumberSequence.({
NumberSequenceKeypoint.(, ),
NumberSequenceKeypoint.(, )
})
splash.Lifetime = NumberRange.(, )
splash.Rate =
splash.Speed = NumberRange.(, )
splash.Drag =
splash.Acceleration = .(, -, )
splash.Rotation = NumberRange.(, )
splash.Orientation = .ParticleOrientation.FacingCamera
splash.LightEmission =
splash:()
:():(splashPart, )
)
DefaultLighting = {
Ambient = :().Ambient,
OutdoorAmbient = :().OutdoorAmbient,
Brightness = :().Brightness,
ClockTime = :().ClockTime,
FogEnd = :().FogEnd,
FogStart = :().FogStart,
GlobalShadows = :().GlobalShadows
}
()
L = :()
.Config.WorldTimeEnabled
L.ClockTime = .Config.WorldClockTime
L.ClockTime = DefaultLighting.ClockTime
.Config.WorldBrightEnabled
L.Brightness = .Config.WorldBrightness
L.Brightness = DefaultLighting.Brightness
.Config.WorldColorEnabled
L.Ambient = .Config.WorldAmbient
L.OutdoorAmbient = .Config.WorldOutdoorAmbient
L.Ambient = DefaultLighting.Ambient
L.OutdoorAmbient = DefaultLighting.OutdoorAmbient
.Config.WorldSkyboxEnabled .Config.WorldTimeEnabled .Config.WorldColorEnabled
L.FogEnd =
L.FogStart =
L.GlobalShadows =
L.FogEnd = DefaultLighting.FogEnd
L.FogStart = DefaultLighting.FogStart
L.GlobalShadows = DefaultLighting.GlobalShadows
(val, default)
(val) == val == val
val
default
(.Config.MinDamage) .Config.MinDamage ~= .Config.MinDamage
.Config.MinDamage =
(.Config.MinDamageOverride) .Config.MinDamageOverride ~= .Config.MinDamageOverride
.Config.MinDamageOverride =
Library = (:())()
Window = Library:({
Name = ,
SubName = ,
Logo =
})
KeybindList = Library:()
Library.KeyList Library.KeyList.Add
_OriginalAdd = Library.KeyList.Add
Library.KeyList.Add = (self, Name, Key)
Item = (self, Name, Key)
Item Item.Set
_OriginalSet = Item.Set
Item.Set = (s, n, v)
v == v == v == v == v ==
Item.Instance Item.Instance.Visible =
Item.SetVisible Item:()
Item.Instance Item.Instance.Visible =
Item.SetVisible Item:()
(s, n, v)
Item
Window:()
LegitPage = Window:({Name = , Icon = , Columns = })
LegitAimSection = LegitPage:({Name = , Description = , Icon = , Side = })
LegitAimToggle = LegitAimSection:({Name = , Flag = , Default = .Config.LegitAim, Callback = (v) .Config.LegitAim = v })
LegitAimSection:({Name = , Flag = , Default = .UserInputType.None, Callback = () LegitAimToggle:( .Config.LegitAim) })
LegitAimSection:({Name = , Flag = , Min = , Max = , Default = (.Config.LegitSmooth, ), Decimals = , Suffix = , Callback = (v) .Config.LegitSmooth = v })
LegitAimSection:({Name = , Flag = , Min = , Max = , Default = (.Config.LegitFov, ), Decimals = , Suffix = , Callback = (v) .Config.LegitFov = v })
LegitAimSection:({Name = , Flag = , Default = .Config.LegitDrawFov, Callback = (v) .Config.LegitDrawFov = v })
LegitAimSection:({Name = , Flag = , Default = .Config.LegitWallCheck, Callback = (v) .Config.LegitWallCheck = v })
LegitAimSection:({Name = , Flag = , Default = .Config.LegitAutoWallbang, Callback = (v) .Config.LegitAutoWallbang = v })
LegitAimSection:({Name = , Flag = , Default = {.Config.LegitBone}, Items = {, , , }, Multi = , Callback = (v) .Config.LegitBone = v })
LegitAimSection:({Name = , Flag = , Default = .Config.AutoFire, Callback = (v) .Config.AutoFire = v })
LegitAimSection:({Name = , Flag = , Default = .UserInputType.None, Callback = () AutoFireToggle:( .Config.AutoFire) })
LegitAimSection:({Name = , Flag = , Default = .Config.AutoScope, Callback = (v) .Config.AutoScope = v })
LegitAimSection:({Name = , Flag = , Default = .Config.LegitAutoScope, Callback = (v) .Config.LegitAutoScope = v })
LegitAimSection:({Name = , Flag = , Default = .Config.LegitAutoStop, Callback = (v) .Config.LegitAutoStop = v })
LegitAimSection:({Name = , Flag = , Default = .Config.Multipoint, Callback = (v) .Config.Multipoint = v })
Window:()
RagePage = Window:({Name = , Icon = , Columns = })
RageAimSection = RagePage:({Name = , Description = , Icon = , Side = })
SilentAimToggle = RageAimSection:({Name = , Flag = , Default = .Config.SilentAim, Callback = (v) .Config.SilentAim = v })
RageAimSection:({Name = , Flag = , Default = .UserInputType.None, Callback = () SilentAimToggle:( .Config.SilentAim) })
RageAimSection:({Name = , Flag = , Default = {.Config.TargetMode}, Items = {, }, Multi = , Callback = (v) .Config.TargetMode = v })
RageAimSection:({Name = , Flag = , Default = .Config.AimHitboxes, Items = {, , , , , , , }, Multi = , Callback = (v) .Config.AimHitboxes = v })
RageAimSection:({Name = , Flag = , Default = .Config.WallBang, Callback = (v) .Config.WallBang = v })
RageAimSection:({Name = , Flag = , Default = .UserInputType.None, Callback = () WallBangToggle:( .Config.WallBang) })
RageAimSection:({Name = , Flag = , Default = .Config.ShowWallbangIndicator, Callback = (v) .Config.ShowWallbangIndicator = v })
RageAimSection:({Name = , Flag = , Default = .Config.AutoFire, Callback = (v) .Config.AutoFire = v })
RageAimSection:({Name = , Flag = , Min = , Max = , Default = (.Config.FovRadius, ), Decimals = , Suffix = , Callback = (v) .Config.FovRadius = v })
RageAimSection:({Name = , Flag = , Default = .Config.ShowFov, Callback = (v) .Config.ShowFov = v })
defaultMinDamage =
(.Config.MinDamage) == .Config.MinDamage == .Config.MinDamage
defaultMinDamage = .Config.MinDamage
defaultOverride =
(.Config.MinDamageOverride) == .Config.MinDamageOverride == .Config.MinDamageOverride
defaultOverride = .Config.MinDamageOverride
RageAimSection:({Name = , Flag = , Min = , Max = , Default = defaultMinDamage, Decimals = , Suffix = , Callback = (v) .Config.MinDamage = v })
RageAimSection:({Name = , Flag = , Min = , Max = , Default = defaultOverride, Decimals = , Suffix = , Callback = (v) .Config.MinDamageOverride = v })
RageAimSection:({Name = , Flag = , Default = .UserInputType.None, Callback = ()
.Config.MinDamageOverrideActive = .Config.MinDamageOverrideActive
Library Library.Notify
Library:({Title = , Content = .Config.MinDamageOverrideActive .. (.Config.MinDamageOverride) .. , Duration = })
})
RageAimSection:({Name = , Flag = , Min = , Max = , Default = (.Config.MinHitChance, ), Decimals = , Suffix = , Callback = (v) .Config.MinHitChance = v })
AntiAimSection = RagePage:({Name = , Description = , Icon = , Side = })
AntiAimToggle = AntiAimSection:({Name = , Flag = , Default = .Config.AntiAim, Callback = (v) .Config.AntiAim = v })
AntiAimSection:({Name = , Flag = , Default = .UserInputType.None, Callback = () AntiAimToggle:( .Config.AntiAim) })
AntiAimSection:({Name = , Flag = , Default = {.Config.AntiAimPitchMode}, Items = {, }, Multi = , Callback = (v) .Config.AntiAimPitchMode = v })
AntiAimSection:({Name = , Flag = , Default = .Config.AntiAimBackwards, Callback = (v) .Config.AntiAimBackwards = v })
AntiAimSection:({Name = , Flag = , Default = .Config.FollowBackwardsAA, Callback = (v) .Config.FollowBackwardsAA = v })
AllDirectionsToggle = AntiAimSection:({Name = , Flag = , Default = .Config.AllDirections, Callback = (v) .Config.AllDirections = v })
AntiAimSection:({Name = , Flag = , Default = .UserInputType.None, Callback = () AllDirectionsToggle:( .Config.AllDirections) })
BacktrackSection = RagePage:({Name = , Description = , Icon = , Side = })
BacktrackSection:({Name = , Flag = , Default = {.Config.HistoryPreset}, Items = {, , , }, Multi = , Callback = (v) .Config.HistoryPreset = v; v == .Config.BacktrackTime = v == .Config.BacktrackTime = v == .Config.BacktrackTime = v == .Config.BacktrackTime = })
BacktrackSection:({Name = , Flag = , Default = .Config.BacktrackChams, Callback = (v) .Config.BacktrackChams = v }):():():({Name = , Flag = , Default = .Config.BacktrackChamsColor, Callback = (v) .Config.BacktrackChamsColor = v })
BacktrackSection:({Name = , Flag = , Default = {.Config.BacktrackChamsStyle}, Items = {, , , , , , }, Multi = , Callback = (v) .Config.BacktrackChamsStyle = v })
BacktrackSection:({Name = , Flag = , Default = .Config.SelfBacktrack, Callback = (v) .Config.SelfBacktrack = v })
Window:()
VisualsPage = Window:({Name = , Icon = , Columns = })
EspSection = VisualsPage:({Name = , Description = , Icon = , Side = })
EspToggle = EspSection:({Name = , Flag = , Default = .Config.Esp, Callback = (Value) .Config.Esp = Value })
EspSection:({Name = , Flag = , Default = .UserInputType.None, Callback = (Value) EspToggle:( .Config.Esp) })
EspSection:({Name = , Flag = , Default = .Config.EspBoxes, Callback = (v) .Config.EspBoxes = v }):():():({Name = , Flag = , Default = .Config.BoxColor, Callback = (v) .Config.BoxColor = v })
EspSection:({Name = , Flag = , Default = .Config.EspNames, Callback = (v) .Config.EspNames = v }):():():({Name = , Flag = , Default = .Config.NameColor, Callback = (v) .Config.NameColor = v })
EspSection:({Name = , Flag = , Default = .Config.EspHealthBar, Callback = (v) .Config.EspHealthBar = v }):():():({Name = , Flag = , Default = .Config.HealthBarColor, Callback = (v) .Config.HealthBarColor = v })
EspSection:({Name = , Flag = , Default = .Config.EspDistance, Callback = (v) .Config.EspDistance = v }):():():({Name = , Flag = , Default = .Config.DistColor, Callback = (v) .Config.DistColor = v })
EspSection:({Name = , Flag = , Default = .Config.EspHeadDot, Callback = (v) .Config.EspHeadDot = v }):():():({Name = , Flag = , Default = .Config.HeadDotColor, Callback = (v) .Config.HeadDotColor = v })
EspSection:({Name = , Flag = , Default = .Config.EspWeapon, Callback = (v) .Config.EspWeapon = v }):():():({Name = , Flag = , Default = .Config.WeaponColor, Callback = (v) .Config.WeaponColor = v })
EspSection:({Name = , Flag = , Default = .Config.EspInventory, Callback = (v) .Config.EspInventory = v })
ChamsSection = VisualsPage:({Name = , Description = , Icon = , Side = })
ChamsSection:({Name = , Flag = , Default = .Config.EspOffscreenArrows, Callback = (v) .Config.EspOffscreenArrows = v })
ChamsSection:({Name = , Flag = , Default = .Config.EspChams, Callback = (v) .Config.EspChams = v }):():():({Name = , Flag = , Default = .(, , ), Callback = (v) .Config.ChamHiddenColor = v })
ChamsSection:({Name = , Flag = , Default = .Config.EspSoulParticles, Callback = (v) .Config.EspSoulParticles = v })
ChamsSection:({Name = , Flag = , Default = .Config.EspOnShotChams, Callback = (v) .Config.EspOnShotChams = v })
ChamsSection:({Name = , Flag = , Default = .Config.ShowImpacts, Callback = (v) .Config.ShowImpacts = v })
ChamsSection:({Name = , Flag = , Default = .Config.EspChinaHat, Callback = (v) .Config.EspChinaHat = v })
ChamsSection:({Name = , Flag = , Default = .Config.EspSelfChinaHat, Callback = (v) .Config.EspSelfChinaHat = v })
ChamsSection:({Name = , Flag = , Default = .Config.EspChinaHatRainbow, Callback = (v) .Config.EspChinaHatRainbow = v })
TeamSection = VisualsPage:({Name = , Description = , Icon = , Side = })
TeamSection:({Name = , Flag = , Default = {.Config.EspTeamMode}, Items = {, , }, Multi = , Callback = (v) .Config.EspTeamMode = v })
TeamSection:({Name = , Flag = , Default = .Config.UseTeamCheck, Callback = (v) .Config.UseTeamCheck = v })
TeamSection:():({Name = , Flag = , Default = .Config.EnemyColor, Callback = (v) .Config.EnemyColor = v })
TeamSection:():({Name = , Flag = , Default = .Config.TeammateColor, Callback = (v) .Config.TeammateColor = v })
WeaponAndWorldPage = Window:({Name = , Icon = , Columns = })
WorldSection = WeaponAndWorldPage:({Name = , Description = , Icon = , Side = })
skyNames = {}
skyboxtable k, v (skyboxtable) .(skyNames, k) .(skyNames)
WorldSection:({Name = , Flag = , Default = .Config.WorldSkyboxEnabled, Callback = (v) .Config.WorldSkyboxEnabled = v; v (.Config.WorldSkybox) })
WorldSection:({Name = , Flag = , Default = {.Config.WorldSkybox}, Items = skyNames, Multi = , Callback = (v) .Config.WorldSkybox = v; .Config.WorldSkyboxEnabled (v) })
WorldSection:({Name = , Flag = , Default = {}, Items = {, , , }, Multi = , Callback = (v) (v) })
WorldSection:({Name = , Flag = , Default = .Config.WorldTimeEnabled, Callback = (v) .Config.WorldTimeEnabled = v; () })
WorldSection:({Name = , Flag = , Min = , Max = , Default = (.Config.WorldClockTime, ), Decimals = , Suffix = , Callback = (v) .Config.WorldClockTime = v; () })
WorldSection:({Name = , Flag = , Default = .Config.WorldBrightEnabled, Callback = (v) .Config.WorldBrightEnabled = v; () })
WorldSection:({Name = , Flag = , Min = , Max = , Default = (.Config.WorldBrightness, ), Decimals = , Suffix = , Callback = (v) .Config.WorldBrightness = v; () })
WorldSection:({Name = , Flag = , Default = .Config.WorldColorEnabled, Callback = (v) .Config.WorldColorEnabled = v; () })
WorldSection:():({Name = , Flag = , Default = .Config.WorldAmbient, Callback = (v) .Config.WorldAmbient = v; () })
WorldSection:():({Name = , Flag = , Default = .Config.WorldOutdoorAmbient, Callback = (v) .Config.WorldOutdoorAmbient = v; () })
CombatVisualsSection = WeaponAndWorldPage:({Name = , Description = , Icon = , Side = })
CombatVisualsSection:({Name = , Flag = , Default = .Config.ShowTracers, Callback = (v) .Config.ShowTracers = v }):():():({Name = , Flag = , Default = .Config.BulletTracerColor, Callback = (v) .Config.BulletTracerColor = v })
CombatVisualsSection:({Name = , Flag = , Min = , Max = , Default = .Config.TracerDuration, Decimals = , Suffix = , Callback = (v) .Config.TracerDuration = v })
CombatVisualsSection:({Name = , Flag = , Default = .Config.ShowHitmark, Callback = (v) .Config.ShowHitmark = v }):():():({Name = , Flag = , Default = .Config.HitmarkColor, Callback = (v) .Config.HitmarkColor = v })
CombatVisualsSection:({Name = , Flag = , Min = , Max = , Default = .Config.HitmarkDuration, Decimals = , Suffix = , Callback = (v) .Config.HitmarkDuration = v })
CombatVisualsSection:({Name = , Flag = , Default = .Config.PlayHitSound, Callback = (v) .Config.PlayHitSound = v })
CombatVisualsSection:({Name = , Flag = , Default = .Config.ShowHitLogs, Callback = (v) .Config.ShowHitLogs = v })
CombatVisualsSection:({Name = , Flag = , Default = .Config.ShowPenetration, Callback = (v) .Config.ShowPenetration = v })
CombatVisualsSection:({Name = , Flag = , Default = .Config.ShowSpread, Callback = (v) .Config.ShowSpread = v }):():():({Name = , Flag = , Default = .Config.SpreadColor, Callback = (v) .Config.SpreadColor = v })
EffectsSection = WeaponAndWorldPage:({Name = , Description = , Icon = , Side = })
EffectsSection:({Name = , Flag = , Default = .Config.KillEffect, Callback = (v) .Config.KillEffect = v })
EffectsSection:({Name = , Flag = , Default = {.Config.KillEffectMode}, Items = {, , , , , , }, Multi = , Callback = (v) .Config.KillEffectMode = v })
EffectsSection:({Name = , Flag = , Min = , Max = , Default = (.Config.KillEffectDuration, ), Decimals = , Suffix = , Callback = (v) .Config.KillEffectDuration = v })
EffectsSection:({Name = , Flag = , 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 <font color='#AAAAAA'>[Drag to Move]</font>"
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 <font color='#FF80FF'>%s</font> in the %s <font color='#AAAAAA'>[?]</font>", 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("<font color='#AAAAAA'>(%d health left)</font>", remainingHP)
if remainingHP <= 0 then
statusText = "<font color='#FF5555'>DIE</font>"
end
label.Text = string.format("Hit <font color='%s'>%s</font> in the %s for <font color='%s'>%d</font> 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
Loads code from the internet. It downloads more code when it runs (loadstring + HttpGet), which can change after it was posted. From: www.roblox.com, raw.githubusercontent.com.
This script is quite old, as seen from the upload date of this video: https://www.youtube.com/watch?v=lb0jkG_Kho8 I decided to make it public because I no longer have the motivation to maintain it, and I want to provide it as a learning resource for those who are interested. **A friendly heads-up:** This script has already been detected, and many features are no longer functional. This is why I have chosen to leak/release it. **Additionally, please note that there are many unfinished features within this project.** **Contact Information:** * **Discord Server (Script) : https://discord.gg/nJaZ88C3z * **Discord Server (KeyAuth) : https://discord.gg/C94jE7B57B **By_ HihiHub** If you decide to "skid" or use this script, I would appreciate it if you could credit the original author and mention my name. By the way, this project is a total mess—it's pure spaghetti code. No caching, no optimization, and it's written in Lua. The naming conventions are all over the place, there are zero comments, and it's filled with leftover test code. So... good luck to you all, LOL!