Run it
Copy the script and paste it into your executor.
Players = :()
LocalPlayer = Players.LocalPlayer
RunService = :()
UserInputService = :()
ReplicatedStorage = :()
StarterGui = :()
TweenService = :()
CoreGui = :()
GuiService = :()
Teams = :()
guardsTeam = Teams:()
inmatesTeam = Teams:()
criminalsTeam = Teams:()
cfg = {
enabled = ,
teamcheck = ,
wallcheck = ,
deathcheck = ,
ffcheck = ,
hostilecheck = ,
trespasscheck = ,
vehiclecheck = ,
criminalsnoinnmates = ,
inmatesnocriminals = ,
shieldbreaker = ,
shieldfrontangle = ,
shieldrandomhead = ,
shieldheadchance = ,
taserbypasshostile = ,
taserbypasstrespass = ,
taseralwayshit = ,
ifplayerstill = ,
stillthreshold = ,
hitchance = ,
hitchanceAutoOnly = ,
distancebasedhitchance = ,
distancehitchance1dist = ,
distancehitchance1value = ,
distancehitchance2dist = ,
distancehitchance2value = ,
distancehitchance3dist = ,
distancehitchance3value = ,
distancehitchance4dist = ,
distancehitchance4value = ,
distancehitchance5dist = ,
distancehitchance5value = ,
autoshoot = ,
autoshootweapon = ,
autoshootdelay = ,
autoshootstartdelay = ,
aimmaxdist = ,
missspread = ,
shotgunnaturalspread = ,
shotgungamehandled = ,
prioritizeclosest = ,
prioritizecriminals = ,
targetstickiness = ,
targetstickinessduration = ,
targetstickinessrandom = ,
targetstickinessmin = ,
targetstickinessmax = ,
fov = ,
showfov = ,
staticfov = ,
showtargetline = ,
togglekey = .KeyCode.RightShift,
aimpart = ,
randomparts = ,
partslist = {, , , , , , },
esp = ,
espteamcheck = ,
espshowteam = ,
esptargets = {guards = , inmates = , criminals = },
espmaxdist = ,
espshowdist = ,
esptoggle = .KeyCode.RightControl,
espcolor = .(, , ),
espguards = .(, , ),
espinmates = .(, , ),
espcriminals = .(, , ),
espteam = .(, , ),
espuseteamcolors = ,
c4esp = ,
c4esptoggle = .KeyCode.B,
c4espcolor = .(, , ),
c4espmaxdist = ,
c4espshowdist = ,
autograb = ,
autograbdistance = ,
autograbdelay = ,
autograbkeycard = ,
autograbm9 = ,
}
wallParams = RaycastParams.()
wallParams.FilterType = .RaycastFilterType.Exclude
wallParams.IgnoreWater =
wallParams.RespectCanCollide =
wallParams.CollisionGroup =
projectileParams = RaycastParams.()
projectileParams.FilterType = .RaycastFilterType.Exclude
projectileParams.IgnoreWater =
projectileParams.RespectCanCollide =
projectileParams.CollisionGroup =
currentGun =
rng = Random.()
lastShotTime =
lastShotResult =
shotCooldown = /
currentTarget =
targetSwitchTime =
currentStickiness =
randomPartCache = {}
lastTouchAimPos =
storedAimMaxDistanceBeforeDistanceHitchance = (cfg.aimmaxdist)
distanceHitchanceForcesAimMaxDistance =
activeTouch =
lastAutoShoot =
cachedBulletsLabel =
targetAcquiredTime =
lastAutoTarget =
playerSettings = ReplicatedStorage:()
mobileCursorOffset =
isInsideDynThumbFrame =
giverPressedRemote = ReplicatedStorage:() ReplicatedStorage.Remotes:()
trackedGrabbables = {}
firstSeenGrabbables = {}
lastAutoGrab =
sharedModules = ReplicatedStorage:()
dynThumbModule = sharedModules sharedModules:()
dynThumbModule
ok, result = (, dynThumbModule)
ok (result) ==
isInsideDynThumbFrame = result
fovCircle = .()
fovCircle.Color = .(, , )
fovCircle.Radius = cfg.fov
fovCircle.Transparency =
fovCircle.Filled =
fovCircle.NumSides =
fovCircle.Thickness =
fovCircle.Visible = cfg.showfov cfg.enabled
targetLine = .()
targetLine.Color = .(, , )
targetLine.Thickness =
targetLine.Transparency =
targetLine.Visible =
visuals = {container = }
espCache = {}
()
lastShotTime =
lastShotResult =
currentTarget =
targetSwitchTime =
currentStickiness =
lastAutoShoot =
lastAutoTarget =
targetAcquiredTime =
cachedBulletsLabel =
()
playerGui = LocalPlayer:()
home = playerGui playerGui:()
home home:()
()
hud = ()
hud hud:()
()
mobileGunFrame = ()
mobileGunFrame mobileGunFrame:()
()
playerSettings
mobileCursorOffset =
offset = playerSettings:()
(offset) ==
mobileCursorOffset = offset *
mobileCursorOffset =
playerSettings
()
playerSettings:():(updateMobileCursorOffset)
(position)
isInsideDynThumbFrame (position.X, position.Y)
mobileGunFrame = ()
ignoreTouchArea = mobileGunFrame mobileGunFrame:()
ignoreTouchArea
x = position.X
y = position.Y
left = ignoreTouchArea.AbsolutePosition.X
right = left + ignoreTouchArea.AbsoluteSize.X
top = ignoreTouchArea.AbsolutePosition.Y
bottom = top + ignoreTouchArea.AbsoluteSize.Y
left <= x x <= right top <= y y <= bottom
(camera)
camera = camera .CurrentCamera
camera
UserInputService:()
lastInput = UserInputService:()
UserInputService.MouseBehavior == .MouseBehavior.LockCenter
viewportSize = camera.ViewportSize
.(viewportSize.X / , viewportSize.Y / )
lastInput == .UserInputType.Touch
mobileCursor = ()
mobileCursor mobileCursor.Visible
pos = mobileCursor.AbsolutePosition
size = mobileCursor.AbsoluteSize
.(pos.X + size.X / , pos.Y + size.Y / )
viewportSize = camera.ViewportSize
.(viewportSize.X / , viewportSize.Y / )
UserInputService:()
(camera)
camera = camera .CurrentCamera
camera
.zero
viewportSize = camera.ViewportSize
.(viewportSize.X / , viewportSize.Y / )
(camera)
cfg.staticfov
(camera)
(camera)
(gun)
gun gun:() ==
(gun)
gun (gun:() == gun:() == )
(gun)
gun (gun:() gun:() == )
(gun)
gun gun:() ==
(value)
(value ):():(, )
(gun)
gun
selector = (cfg.autoshootweapon)
selector == selector == selector ==
gunName = (gun.Name)
behavior = (gun:())
projectile = (gun:())
selector ==
(gun) gunName:(, , ) ~=
selector ==
(gun)
selector ==
(gun)
selector == selector ==
(gun)
selector == gunName selector == behavior selector == projectile
()
character = LocalPlayer.Character
character
character:() character:()
(targetPos)
maxDistance = (cfg.aimmaxdist)
maxDistance <= targetPos
originPart = ()
originPart
(targetPos - originPart.Position).Magnitude <= maxDistance
()
currentAimMaxDistance = (cfg.aimmaxdist)
cfg.distancebasedhitchance
currentAimMaxDistance >
storedAimMaxDistanceBeforeDistanceHitchance = currentAimMaxDistance
storedAimMaxDistanceBeforeDistanceHitchance <=
storedAimMaxDistanceBeforeDistanceHitchance =
cfg.aimmaxdist =
distanceHitchanceForcesAimMaxDistance =
distanceHitchanceForcesAimMaxDistance
cfg.aimmaxdist = (storedAimMaxDistanceBeforeDistanceHitchance)
distanceHitchanceForcesAimMaxDistance =
storedAimMaxDistanceBeforeDistanceHitchance = currentAimMaxDistance
(gun)
gun ~= cfg.hitchanceAutoOnly (gun)
()
character = LocalPlayer.Character
character character:()
(gun)
(gun)
UserInputService.MouseBehavior ~= .MouseBehavior.LockCenter
humanoid = ()
humanoid humanoid:() ~= .HumanoidStateType.Freefall
()
myChar = LocalPlayer.Character
myHead = myChar myChar:()
myHead
muzzle = currentGun currentGun:()
muzzle muzzle.Position myHead.Position
(targetPos, originPos)
currentGun targetPos
range = currentGun:()
(range) ~= range <=
originPos = originPos ()
originPos
(targetPos - originPos).Magnitude <= range +
(obj)
obj obj:()
name = obj.Name:()
name:(, , ) ~= name ==
(obj)
cfg.autograb obj obj:()
name = obj.Name:()
name:(, , ) ~=
cfg.autograbkeycard
name ==
cfg.autograbm9
(obj)
ancestor = obj obj.Parent
ancestor ancestor ~=
ancestor:()
ancestor.Name ==
ancestor = ancestor.Parent
(model)
model
model.PrimaryPart model:(, )
(a, b)
delta = a - b
delta.X * delta.X + delta.Y * delta.Y + delta.Z * delta.Z
(obj)
(obj)
trackedGrabbables[obj] =
(obj)
trackedGrabbables[obj] =
firstSeenGrabbables[obj] =
(now)
cfg.autograb giverPressedRemote
now - lastAutoGrab <
root = ()
root
grabDistance = .((cfg.autograbdistance) , , )
grabDistance <=
requiredDelay = .((cfg.autograbdelay) , )
grabDistanceSq = grabDistance * grabDistance
item (trackedGrabbables)
item item.Parent
(item)
(item)
firstSeenGrabbables[item] =
(item)
firstSeenGrabbables[item] =
part = (item)
part (root.Position, part.Position) <= grabDistanceSq
firstSeenGrabbables[item]
firstSeenGrabbables[item] = now
now - firstSeenGrabbables[item] >= requiredDelay
lastAutoGrab = now
firstSeenGrabbables[item] =
(giverPressedRemote.FireServer, giverPressedRemote, item)
firstSeenGrabbables[item] =
(gun)
gun
lastInput = UserInputService:()
lastInput == .UserInputType.Touch lastInput == .UserInputType.Gamepad1 (gun)
(startPos, aimPos, gun)
gun startPos aimPos
, aimPos
behavior = gun:()
spread = gun:()
range = gun:()
randomScale = rng:()
behavior == behavior ==
randomScale = .(randomScale)
baseCFrame = .(startPos, aimPos)
rollAngle = .( - * rng:())
direction = (baseCFrame * .(, , rollAngle) * .(, randomScale * spread, )).LookVector * range
projectileParams.FilterDescendantsInstances = {LocalPlayer.Character}
result = :(startPos, direction, projectileParams)
result
result.Instance, result.Position
, startPos + direction
()
container
guiParent = (gethui ()) CoreGui
existing = guiParent:() CoreGui:()
existing
existing:()
gethui
screen = .()
screen.Name =
screen.ResetOnSpawn =
screen.Parent = ()
container = screen
.protect_gui
screen = .()
screen.Name =
screen.ResetOnSpawn =
.(screen)
screen.Parent = CoreGui
container = screen
screen = .()
screen.Name =
screen.ResetOnSpawn =
screen.Parent = CoreGui
container = screen
visuals.container = container
(player)
espCache[player] espCache[player]
esp = .()
esp.Name = .. player.Name
esp.AlwaysOnTop =
esp.Size = .(, , , )
esp.StudsOffset = .(, , )
esp.LightInfluence =
diamond = .()
diamond.Name =
diamond.BackgroundColor3 = cfg.espcolor
diamond.BorderSizePixel =
diamond.Size = .(, , , )
diamond.Position = .(, -, , -)
diamond.Rotation =
diamond.Parent = esp
stroke = .()
stroke.Color = .(, , )
stroke.Thickness =
stroke.Transparency =
stroke.Parent = diamond
distLabel = .()
distLabel.Name =
distLabel.BackgroundTransparency =
distLabel.Size = .(, , , )
distLabel.Position = .(, -, , )
distLabel.Font = .Font.GothamBold
distLabel.TextSize =
distLabel.TextColor3 = .(, , )
distLabel.TextStrokeTransparency =
distLabel.TextStrokeColor3 = .(, , )
distLabel.Text =
distLabel.Parent = esp
nameLabel = .()
nameLabel.Name =
nameLabel.BackgroundTransparency =
nameLabel.Size = .(, , , )
nameLabel.Position = .(, -, , -)
nameLabel.Font = .Font.GothamBold
nameLabel.TextSize =
nameLabel.TextColor3 = .(, , )
nameLabel.TextStrokeTransparency =
nameLabel.TextStrokeColor3 = .(, , )
nameLabel.Text = player.Name
nameLabel.Parent = esp
espCache[player] = esp
esp
(player)
e = espCache[player]
e e:() espCache[player] =
player player.Character
randomPartCache[player.Character] =
currentTarget == player
currentTarget =
lastAutoTarget == player
lastAutoTarget =
(player)
player player == LocalPlayer player.Character
humanoid = player.Character:()
humanoid humanoid.Health <=
hrp = player.Character:()
hrp
myChar = LocalPlayer.Character
myChar
myHrp = myChar:()
myHrp
distance = (hrp.Position - myHrp.Position).Magnitude
espMaxDistance = (cfg.espmaxdist)
espMaxDistance > distance > espMaxDistance
myTeam = LocalPlayer.Team
theirTeam = player.Team
theirTeam == myTeam
cfg.espshowteam
cfg.espteamcheck
imCrimOrInmate = (myTeam == criminalsTeam myTeam == inmatesTeam)
theyCrimOrInmate = (theirTeam == criminalsTeam theirTeam == inmatesTeam)
imCrimOrInmate theyCrimOrInmate
theirTeam == guardsTeam cfg.esptargets.guards
theirTeam == inmatesTeam cfg.esptargets.inmates
theirTeam == criminalsTeam cfg.esptargets.criminals
()
cfg.esp visuals.container
_, e (espCache) e.Parent =
myChar = LocalPlayer.Character
myHrp = myChar myChar:()
_, player (Players:())
show = (player)
show
char = player.Character
hrp = char char:()
head = char char:()
hrp head
esp = (player)
esp.Adornee = head
esp.Parent = visuals.container
d = esp:()
d cfg.espuseteamcolors
t = player.Team
t == LocalPlayer.Team d.BackgroundColor3 = cfg.espteam
t == guardsTeam d.BackgroundColor3 = cfg.espguards
t == inmatesTeam d.BackgroundColor3 = cfg.espinmates
t == criminalsTeam d.BackgroundColor3 = cfg.espcriminals
d.BackgroundColor3 = cfg.espcolor
cfg.espshowdist myHrp
label = esp:()
label
label.Text = .((hrp.Position - myHrp.Position).Magnitude) ..
label.Visible =
label = esp:()
label
label.Visible =
e = espCache[player]
e e.Parent =
c4espCache = {}
(c4Part)
c4espCache[c4Part] c4espCache[c4Part]
esp = .()
esp.Name = .. (c4Part)
esp.AlwaysOnTop =
esp.Size = .(, , , )
esp.StudsOffset = .(, , )
esp.LightInfluence =
icon = .()
icon.Name =
icon.BackgroundColor3 = cfg.c4espcolor
icon.BorderSizePixel =
icon.Size = .(, , , )
icon.Position = .(, -, , -)
icon.Rotation =
icon.Parent = esp
stroke = .()
stroke.Color = .(, , )
stroke.Thickness =
stroke.Transparency =
stroke.Parent = icon
label = .()
label.Name =
label.BackgroundTransparency =
label.Size = .(, , , )
label.Position = .(, -, , )
label.Font = .Font.GothamBold
label.TextSize =
label.TextColor3 = .(, , )
label.TextStrokeTransparency =
label.TextStrokeColor3 = .(, , )
label.Text =
label.Parent = esp
distLabel = .()
distLabel.Name =
distLabel.BackgroundTransparency =
distLabel.Size = .(, , , )
distLabel.Position = .(, -, , )
distLabel.Font = .Font.GothamBold
distLabel.TextSize =
distLabel.TextColor3 = cfg.c4espcolor
distLabel.TextStrokeTransparency =
distLabel.TextStrokeColor3 = .(, , )
distLabel.Text =
distLabel.Parent = esp
c4espCache[c4Part] = esp
esp
trackedC4s = {}
(part)
part part:()
name = part.Name:()
parentName = part.Parent part.Parent.Name:()
name == name == name ==
parentName:() name:()
(desc)
(desc)
trackedC4s[desc] =
(desc)
trackedC4s[desc] =
c4espCache[desc]
c4espCache[desc]:()
c4espCache[desc] =
_, desc (:())
(desc) trackedC4s[desc] =
(desc)
.DescendantAdded:(onDescendantAdded)
.DescendantRemoving:(onDescendantRemoving)
.DescendantAdded:(trackGrabbable)
.DescendantRemoving:(untrackGrabbable)
()
cfg.c4esp visuals.container
_, e (c4espCache) e.Parent =
myChar = LocalPlayer.Character
myHrp = myChar myChar:()
part (trackedC4s)
part part:()
dist =
myHrp
dist = (part.Position - myHrp.Position).Magnitude
c4MaxDistance = (cfg.c4espmaxdist)
c4MaxDistance <= dist <= c4MaxDistance
esp = (part)
esp.Adornee = part
esp.Parent = visuals.container
cfg.c4espshowdist myHrp
distLabel = esp:()
distLabel
distLabel.Text = .(dist) ..
distLabel = esp:()
distLabel
distLabel.Text =
e = c4espCache[part]
e e.Parent =
trackedC4s[part] =
c4espCache[part]
c4espCache[part]:()
c4espCache[part] =
()
partMap = {
[] = {},
[] = {},
[] = {},
[] = {},
[] = {}
}
(name)
(name ):(, )
(char, name)
char
p = char:(name)
p p
maps = partMap[(name)]
maps
_, n (maps)
part = char:(n)
part part
char:() char:()
(char)
char
char:()
char:()
char:()
(char)
char
(currentGun)
(char)
cfg.shieldbreaker
shield = char:()
shield shield:()
hp = shield:()
hp hp >
myChar = LocalPlayer.Character
myHrp = myChar myChar:()
theirHrp = char:()
myHrp theirHrp
toMe = (myHrp.Position - theirHrp.Position).Unit
theirLook = theirHrp.CFrame.LookVector
dot = toMe:(theirLook)
dot > cfg.shieldfrontangle
cfg.shieldrandomhead rng:(, ) <= cfg.shieldheadchance
(char, )
shield
partName
cfg.randomparts
cached = randomPartCache[char]
cached cached.part cached.part.Parent == char cached.expiresAt > .()
cached.part
list = cfg.partslist
partName = (list #list > ) list[rng:(, #list)]
partName = cfg.aimpart
part = (char, partName)
cfg.randomparts part
randomPartCache[char] = {
part = part,
partName = partName,
expiresAt = .() +
}
part
(player)
player player.Character
humanoid = player.Character:()
humanoid humanoid.Health <=
(player)
player player.Character
hrp = player.Character:()
hrp
vel = hrp.AssemblyLinearVelocity
.(vel.X, vel.Z).Magnitude <= cfg.stillthreshold
(player)
player player.Character
player.Character:() ~=
(player)
player player.Character
humanoid = player.Character:()
humanoid
humanoid.SeatPart ~=
(startPos, endPos, targetChar)
myChar = LocalPlayer.Character
myChar
filter = {myChar}
targetChar .(filter, targetChar)
wallParams.FilterDescendantsInstances = filter
direction = endPos - startPos
distance = direction.Magnitude
distance <=
unit = direction.Unit
currentStart = startPos
remaining = distance
_ = ,
result = :(currentStart, unit * remaining, wallParams)
result
hit = result.Instance
hit.Transparency < hit.CanCollide
hitDist = (result.Position - currentStart).Magnitude
remaining = remaining - hitDist -
remaining <=
currentStart = result.Position + unit *
(player)
player player == LocalPlayer player.Character
targetPart = (player.Character)
targetPart
(targetPart.Position)
(targetPart.Position)
cfg.deathcheck (player)
cfg.ffcheck (player)
cfg.vehiclecheck (player)
cfg.teamcheck player.Team == LocalPlayer.Team
cfg.criminalsnoinnmates
LocalPlayer.Team == criminalsTeam player.Team == inmatesTeam
cfg.inmatesnocriminals
LocalPlayer.Team == inmatesTeam player.Team == criminalsTeam
cfg.hostilecheck cfg.trespasscheck
isTaser = (currentGun)
bypassHostile = cfg.taserbypasshostile isTaser
bypassTrespass = cfg.taserbypasstrespass isTaser
targetChar = player.Character
LocalPlayer.Team == guardsTeam player.Team == inmatesTeam
hostile = targetChar:()
trespass = targetChar:()
cfg.hostilecheck cfg.trespasscheck
bypassHostile bypassTrespass
hostile trespass
cfg.hostilecheck bypassHostile
hostile
cfg.trespasscheck bypassTrespass
trespass
(player)
(player)
cfg.wallcheck
myChar = LocalPlayer.Character
myHead = myChar myChar:()
targetPart = (player.Character)
myHead targetPart
(myHead.Position, targetPart.Position, player.Character)
(chanceOverride)
lastShotTime = .()
chance = .((chanceOverride) (cfg.hitchance) , , )
chance >=
lastShotResult =
chance <=
lastShotResult =
lastShotResult = rng:(, ) <= chance
lastShotResult
(targetPart, originPos)
baseChance = .((cfg.hitchance) , , )
cfg.distancebasedhitchance
baseChance
targetPart
baseChance
origin = originPos ()
origin
originPart = ()
origin = originPart originPart.Position
origin
baseChance
distance = (targetPart.Position - origin).Magnitude
selectedChance = baseChance
points = {
{distance = .((cfg.distancehitchance1dist) , ), chance = .((cfg.distancehitchance1value) baseChance, , )},
{distance = .((cfg.distancehitchance2dist) , ), chance = .((cfg.distancehitchance2value) baseChance, , )},
{distance = .((cfg.distancehitchance3dist) , ), chance = .((cfg.distancehitchance3value) baseChance, , )},
{distance = .((cfg.distancehitchance4dist) , ), chance = .((cfg.distancehitchance4value) baseChance, , )},
{distance = .((cfg.distancehitchance5dist) , ), chance = .((cfg.distancehitchance5value) baseChance, , )}
}
.(points, (a, b)
a.distance < b.distance
)
_, point (points)
point.distance > distance >= point.distance
selectedChance = point.chance
selectedChance
(startPos, targetPartOrPos)
targetPart = (targetPartOrPos) == targetPartOrPos:() targetPartOrPos
targetPos = targetPart targetPart.Position targetPartOrPos
targetPos startPos
toTarget = targetPos - startPos
toTarget.Magnitude <=
targetPos + .(cfg.missspread + , , )
direction = toTarget.Unit
reference = .(direction.Y) > .(, , ) .(, , )
right = direction:(reference)
right.Magnitude <=
right = .(, , )
right = right.Unit
up = right:(direction)
up.Magnitude <=
up = .(, , )
up = up.Unit
partRadius = targetPart .(targetPart.Size.X, targetPart.Size.Y, targetPart.Size.Z) *
missRadius = .(cfg.missspread, partRadius + )
angle = rng:(, .pi * )
offset = right * .(angle) * missRadius + up * .(angle) * missRadius
targetPos + offset
(player)
cfg.prioritizecriminals
player.Team == criminalsTeam
player.Team == inmatesTeam
(fovRadius)
fovRadius = fovRadius cfg.fov
camera = .CurrentCamera
camera ,
aimPos = (camera)
now = .()
cfg.targetstickiness currentTarget (now - targetSwitchTime) < currentStickiness
(currentTarget)
part = (currentTarget.Character)
part
screenPos, onScreen = camera:(part.Position)
onScreen screenPos.Z >
dist = (.(screenPos.X, screenPos.Y) - aimPos).Magnitude
dist < fovRadius
currentTarget, part.Position
candidates = {}
_, player (Players:())
(player)
part = (player.Character)
part
screenPos, onScreen = camera:(part.Position)
onScreen screenPos.Z >
dist = (.(screenPos.X, screenPos.Y) - aimPos).Magnitude
dist < fovRadius
candidates[#candidates + ] = {
player = player,
dist = dist,
part = part,
priority = (player)
}
cfg.prioritizeclosest
.(candidates, (a, b)
a.priority ~= b.priority
a.priority < b.priority
a.dist < b.dist
)
bestPriority = .huge
_, candidate (candidates)
candidate.priority < bestPriority
bestPriority = candidate.priority
bestPriority < .huge
prioritizedCandidates = {}
_, candidate (candidates)
candidate.priority == bestPriority
prioritizedCandidates[#prioritizedCandidates + ] = candidate
candidates = prioritizedCandidates
i = #candidates, , -
j = rng:(, i)
candidates[i], candidates[j] = candidates[j], candidates[i]
_, candidate (candidates)
(candidate.player)
part = (candidate.player.Character)
part
candidate.player ~= currentTarget
currentTarget = candidate.player
targetSwitchTime = now
cfg.targetstickinessrandom
currentStickiness = rng:(cfg.targetstickinessmin, cfg.targetstickinessmax)
currentStickiness = cfg.targetstickinessduration
candidate.player, part.Position
currentTarget =
,
ShootEvent = ReplicatedStorage:():()
ReloadRemote = ReplicatedStorage:():()
Debris = :()
lastReloadRequest =
(startPos, endPos, isTaser)
distance = (endPos - startPos).Magnitude
trail = .()
trail.Name =
trail.Anchored =
trail.CanCollide =
trail.CanQuery =
trail.CanTouch =
trail.Material = .Material.Neon
trail.Size = .(, , distance)
trail.CFrame = .(startPos, endPos) * .(, , -distance / )
trail.Transparency =
isTaser
trail.BrickColor = BrickColor.()
trail.Size = .(, , distance)
light = .()
light.Color = .(, , )
light.Range =
light.Brightness =
light.Face = .NormalId.Bottom
light.Parent = trail
trail.BrickColor = BrickColor.()
trail.Parent =
Debris:(trail, isTaser )
()
cachedBulletsLabel cachedBulletsLabel.Parent
cachedBulletsLabel
cachedBulletsLabel =
playerGui = LocalPlayer:()
home = playerGui playerGui:()
hud = home home:()
bottomRight = hud hud:()
gunFrame = bottomRight bottomRight:()
cachedBulletsLabel = gunFrame gunFrame:()
cachedBulletsLabel
(gun)
now = .()
now - lastReloadRequest <
gun gun:() ~=
storedAmmo = gun:()
(storedAmmo) == storedAmmo <=
lastReloadRequest = now
.(()
(()
ReloadRemote:()
)
)
()
gun = currentGun
cfg.autoshoot cfg.enabled gun
gun.Parent ~= LocalPlayer.Character
(gun)
lastAutoTarget =
now = .()
reloadSession = gun:()
reloadSession ~= gun:()
(gun)
fireRate = .(gun:() , cfg.autoshootdelay)
now - lastAutoShoot < fireRate
myChar = LocalPlayer.Character
myChar
myHead = myChar:()
myHead
muzzle = gun:()
startPos = muzzle muzzle.Position myHead.Position
target, targetPos = (cfg.fov)
target (target)
lastAutoTarget =
target ~= lastAutoTarget
targetAcquiredTime = now
lastAutoTarget = target
acquireDelay = (gun) cfg.autoshootstartdelay
requiredDelay = .(acquireDelay, gun:() )
now - targetAcquiredTime < requiredDelay
targetPart = (target.Character)
targetPart
weaponRange = gun:()
weaponRange (targetPart.Position - startPos).Magnitude > weaponRange +
ammo = gun:() gun:()
ammo <=
(gun)
lastAutoShoot = now
isTaser = (gun)
sniper = (gun)
shotgun = (gun)
shouldHit =
cfg.taseralwayshit isTaser
shouldHit =
cfg.ifplayerstill (target)
shouldHit =
(gun)
shouldHit =
shouldHit = ((targetPart, startPos))
projectileCount = gun:()
shots = {}
i = , projectileCount
aimPoint
shouldHit
aimPoint = targetPart.Position
cfg.missspread >
aimPoint = (startPos, targetPart)
hitPart = shouldHit targetPart
finalPos = aimPoint
shouldHit
isTaser
simulatedHit, simulatedPos = (startPos, aimPoint, gun)
finalPos = simulatedPos
hitPart = simulatedHit targetPart
shotgun cfg.shotgunnaturalspread
simulatedHit, simulatedPos = (startPos, aimPoint, gun)
finalPos = simulatedPos
hitPart = simulatedHit targetPart
shots[i] = {myHead.Position, finalPos, hitPart}
(startPos, finalPos, isTaser)
ShootEvent:(shots)
gun ~= currentGun gun.Parent ~= LocalPlayer.Character
newAmmo = ammo -
gun:(, newAmmo)
bulletsLabel = ()
bulletsLabel
sniper
bulletsLabel.Text = newAmmo .. .. (gun:() )
bulletsLabel.Text = newAmmo .. .. (gun:() )
handle = gun:()
handle
shootSound = handle:()
shootSound
sound = shootSound:()
sound.Parent = handle
sound:()
Debris:(sound, )
()
char = LocalPlayer.Character
char
children = char:()
index = #children, , -
tool = children[index]
tool:() tool:() ==
tool
(title, text, duration)
(()
StarterGui:(, {
Title = title,
Text = text,
Duration = duration
})
)
lastGun =
()
RunService.Heartbeat:(()
now = .()
()
currentGun = ()
currentGun ~= lastGun
()
lastGun = currentGun
(now)
()
)
RunService.PreRender:(()
camera = .CurrentCamera
fovPos = (camera)
fovCircle.Position = fovPos
fovCircle.Radius = cfg.fov
fovCircle.Visible = cfg.showfov cfg.enabled
cfg.showtargetline cfg.enabled
target, targetPos = ()
target targetPos camera
screenPos, onScreen = camera:(targetPos)
onScreen
targetLine.From = fovPos
targetLine.To = .(screenPos.X, screenPos.Y)
targetLine.Visible =
targetLine.Visible =
targetLine.Visible =
targetLine.Visible =
()
()
)
UserInputService.InputBegan:((input, gameProcessed)
gameProcessed
input.KeyCode == cfg.togglekey
cfg.enabled = cfg.enabled
(, .. (cfg.enabled), )
input.KeyCode == cfg.esptoggle
cfg.esp = cfg.esp
(, .. (cfg.esp), )
input.KeyCode == cfg.c4esptoggle
cfg.c4esp = cfg.c4esp
(, .. (cfg.c4esp), )
)
Players.PlayerRemoving:(removeEsp)
(player)
player.CharacterRemoving:((char)
randomPartCache[char] =
currentTarget currentTarget == player
currentTarget =
lastAutoTarget lastAutoTarget == player
lastAutoTarget =
)
_, player (Players:())
(player)
Players.PlayerAdded:(bindPlayer)
()
player, e (espCache)
e e:()
espCache[player] =
randomPartCache = {}
currentTarget =
LocalPlayer:():(()
()
()
)
(fn)
(...) (...)
origCastRay
hooked =
()
castRayFunc = (, {Name = }, )
castRayFunc
origCastRay = (castRayFunc, ((startPos, targetPos, ...)
cfg.enabled (startPos, targetPos, ...)
closest = (cfg.fov)
closest closest.Character
gun = currentGun
gun
(startPos, targetPos, ...)
isTaser = (gun)
shotgun = (gun)
sniperStable = (gun)
shouldHit =
bypassHitchance = (gun)
targetPart = (closest.Character)
targetPart
(startPos, targetPos, ...)
(targetPart.Position, startPos)
(startPos, targetPos, ...)
cfg.shotgungamehandled shotgun
(startPos, targetPart.Position, ...)
cfg.taseralwayshit isTaser
shouldHit =
cfg.ifplayerstill (closest)
shouldHit =
bypassHitchance
shouldHit =
shouldHit = ((targetPart, startPos))
shouldHit
(gun) sniperStable
(startPos, targetPart.Position, ...)
isTaser
(startPos, targetPart.Position, ...)
cfg.shotgunnaturalspread shotgun
(startPos, targetPart.Position, ...)
targetPart, targetPart.Position
cfg.missspread >
missPos = (startPos, targetPart)
(startPos, missPos, ...)
(startPos, targetPos, ...)
(startPos, targetPos, ...)
))
()
.(()
hooked
.()
()
hooked =
)
hooked =
(, , )edit your configuration in the script everything is under the "local criminalsTeam = Teams:FindFirstChild("Criminals")" ill say have around a 40-65 hitchance for legit and 100 for blatant (high UNC support sorry i tried but its just not possible when hooking into castray) -- update 15 fixed bugs and added so much features i cant even list them all but yeahhhhhhhh!!!! >~< check out the GUI version https://scriptblox.com/script/Prison-Life-Silent-Aim-And-ESP-With-UI-SRC-78055 -- update 14 Fixed a lot of bugs added mobile support and added a static FOV (FOV dont move when you move your cursor or finger) I wanna say im very sorry for not keeping up with the script ive been dealing with school and doing new things -- update 13 added auto shoot (kinda buggy i dont like it but yeah :3) and C4 ESP >:3333 -- update 12 added if your a criminal you cant shoot inmates and if your a inmate you cant shoot criminals made missspread work a lot better and now the config is more legit (can change to be more blatant in config :3) -- update 11 i just changed the code to make it more pretty :3 -- update 10 sorry for forgetting to add the shield break but now i did anyways uh >w< -- update 9 Add

Prison Life