Run it
Copy the script and paste it into your executor.
VERSION =
SAFE_MODE =
Players = :()
RunService = :()
UserInputService = :()
TweenService = :()
Workspace = :()
LocalPlayer = Players.LocalPlayer
LocalPlayer
.() Players.LocalPlayer
LocalPlayer = Players.LocalPlayer
.() :()
(.(, VERSION))
Camera = Workspace.CurrentCamera
Flags = {
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = {},
[] = {
Head = , Torso = , LeftArm = ,
RightArm = , LeftLeg = , RightLeg = ,
},
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
}
SavedLocations = {}
()
writefile
ok, encoded = (()
:():(SavedLocations)
)
ok encoded
(() (, encoded) )
()
(isfile readfile)
ok = (()
()
raw = ()
decoded = :():(raw)
(decoded) ==
SavedLocations = decoded
)
()
THEME = {
Background = .(, , ),
Sidebar = .(, , ),
Element = .(, , ),
Accent = .(, , ),
Text = .(, , ),
TextDark = .(, , ),
Success = .(, , ),
Fail = .(, , ),
}
ROLE_COLORS = {
Guard = .(, , ),
Inmate = .(, , ),
Criminal = .(, , ),
Neutral = .(, , ),
Unknown = .(, , ),
}
(obj, prop, val)
obj
ok = (()
obj[prop] ~= val obj[prop] = val
)
ok
(obj)
obj (() obj:() )
(player)
player player.Parent
team = player.Team
team
name = .(team.Name)
name:() name:() name:() name:()
name:() name:()
name:() name:() name:()
name:() name:()
ok, color = (() team.TeamColor.Color )
ok color
r, g, b = color.R, color.G, color.B
b > r < g <
r > g > g < b <
r > g < b <
r > g > b >
()
role = (LocalPlayer)
role ==
(player)
player ,
char = player.Character
char ,
hum = char:()
hum
hum.Health, hum.MaxHealth
,
(health, maxHealth)
maxHealth maxHealth <= .(, , )
percent = .(health / maxHealth, , )
percent >=
.(, , )
percent >=
.(, , )
percent >=
.(, , )
.(, , )
cachedPlayersList = Players:()
() cachedPlayersList
() cachedPlayersList = Players:()
CharCache = {}
(player)
player
cache = CharCache[player]
cache
char = cache.Char
root = cache.Root
char char.Parent char == player.Character root root.Parent
cache.Humanoid
cache.Humanoid.Health > char, root
char, root
cache.Char =
cache.Root =
cache.Humanoid =
character = player.Character
character character.Parent
rootPart = character:() character.PrimaryPart
rootPart
humanoid = character:()
humanoid humanoid.Health <=
cache
cache = {}
CharCache[player] = cache
cache.Char = character
cache.Root = rootPart
cache.Humanoid = humanoid
cache.Head = character:()
character, rootPart
HumanoidState = { Original = {}, Captured = }
HUMANOID_PROPERTY_MAP = {
[] = ,
[] = ,
[] = ,
[] = ,
[] = ,
}
()
char = LocalPlayer.Character
hum = char char:()
hum
HumanoidState.Original = {}
flagKey, prop (HUMANOID_PROPERTY_MAP)
ok, val = (() hum[prop] )
ok val ~=
HumanoidState.Original[flagKey] = val
isLocked = Flags[flagKey .. ] ==
isLocked Flags[flagKey] ==
Flags[flagKey] = val
HumanoidState.Captured =
()
char = LocalPlayer.Character
hum = char char:()
hum
flagKey, prop (HUMANOID_PROPERTY_MAP)
val = Flags[flagKey]
isLocked = Flags[flagKey .. ] ==
origVal = HumanoidState.Original[flagKey]
isLocked (val ~= origVal ~= val ~= origVal)
(()
hum[prop] ~= val
hum[prop] = val
)
()
HumanoidState.Captured
char = LocalPlayer.Character
hum = char char:()
hum
flagKey, prop (HUMANOID_PROPERTY_MAP)
isLocked = Flags[flagKey .. ] ==
isLocked
val = Flags[flagKey]
val ~=
(()
hum[prop] ~= val
hum[prop] = val
)
TARGET_GROUPS = {
Head = {},
Torso = {, , , },
LeftArm = {, , , },
RightArm = {, , , },
LeftLeg = {, , , },
RightLeg = {, , , },
}
ALL_BODY_PARTS = {}
_, group (TARGET_GROUPS)
_, part (group)
.(ALL_BODY_PARTS, part)
AimState = {
LastAimTarget = ,
LastMouseMode = ,
LastOriginX = ,
LastOriginY = ,
}
(resetMouseMode)
AimState.LastAimTarget =
AimState.LastOriginX =
AimState.LastOriginY =
resetMouseMode
AimState.LastMouseMode =
CachedFilterType = (()
ok, val = (()
ft = .RaycastFilterType.Exclude
(ft) == ft
)
ok val val
ok, val = (()
ft = .RaycastFilterType.Blacklist
(ft) == ft
)
ok val val
)()
SharedRaycastParams = RaycastParams.()
SharedRaycastParams.IgnoreWater =
CachedFilterType
SharedRaycastParams.FilterType = CachedFilterType
(Origin, Direction, Filter)
SharedRaycastParams.FilterDescendantsInstances = Filter
Workspace:(Origin, Direction, SharedRaycastParams)
OcclusionFilter = {, }
(Enabled, Origin, Position, Object)
Enabled
(Position) ~=
OcclusionFilter[] = LocalPlayer.Character
OcclusionFilter[] = Object
hit = (Origin, Position - Origin, OcclusionFilter)
hit hit.Instance hit.Instance:(Object)
ViewportCache = {}
ViewportPool = {}
MAX_VIEWPORT_POOL =
_vp_floor = .floor
RunService.RenderStepped:(()
recycled =
_, entry (ViewportCache)
recycled < MAX_VIEWPORT_POOL
ViewportPool[#ViewportPool + ] = entry
recycled = recycled +
.(ViewportCache)
)
(worldPos)
kx = (worldPos.X * )
ky = (worldPos.Y * )
kz = (worldPos.Z * )
key = kx .. .. ky .. .. kz
entry = ViewportCache[key]
entry entry[], entry[]
screenPos, onScreen = Camera:(worldPos)
entry = .(ViewportPool) {}
entry[], entry[] = screenPos, onScreen
ViewportCache[key] = entry
screenPos, onScreen
(mouseBehavior)
Camera Camera = Workspace.CurrentCamera
Camera , ,
viewportSize = Camera.ViewportSize
mouseBehavior == .MouseBehavior.LockCenter
viewportSize.X * , viewportSize.Y * ,
mouseLoc = UserInputService:()
crosshairX = mouseLoc.X
crosshairY = mouseLoc.Y
crosshairX ~= crosshairX crosshairY ~= crosshairY
, ,
crosshairX < crosshairY <
crosshairX > viewportSize.X crosshairY > viewportSize.Y
, ,
crosshairX, crosshairY,
CandidateList = {}
CandidateCount =
MAX_CANDIDATES =
ClosestResult = {, , , , , }
(a, b)
a.mag < b.mag
(array, count, compare)
i = , count
key = array[i]
j = i -
j > (key, array[j])
array[j + ] = array[j]
j = j -
array[j + ] = key
_hoistedCheckParts = {}
_lastTargetGroupsHash =
()
.(_hoistedCheckParts)
anySelected =
category, enabled (Flags[])
enabled
anySelected =
_, partName (TARGET_GROUPS[category])
.(_hoistedCheckParts, partName)
anySelected
_, partName (ALL_BODY_PARTS)
.(_hoistedCheckParts, partName)
(Enabled, TeamCheck, VisibilityCheck, FieldOfView, StickyTarget)
Enabled
CameraPosition = Camera.CFrame.Position
mouseBehavior = UserInputService.MouseBehavior
crosshairX, crosshairY, crosshairValid = (mouseBehavior)
crosshairValid
CandidateCount =
players = ()
lookVector = Camera.CFrame.LookVector
maxCandsLimit = MAX_CANDIDATES *
currentHash =
(Flags[].Head ) +
(Flags[].Torso ) +
(Flags[].LeftArm ) +
(Flags[].RightArm ) +
(Flags[].LeftLeg ) +
(Flags[].RightLeg )
currentHash ~= _lastTargetGroupsHash
()
_lastTargetGroupsHash = currentHash
checkParts = _hoistedCheckParts
_, Player (players)
Player == LocalPlayer
Character, RootPart = (Player)
Character RootPart
TeamCheck
lpTeam, pTeam = LocalPlayer.Team, Player.Team
lpTeam pTeam lpTeam == pTeam
rootPos = RootPart.Position
relPos = rootPos - CameraPosition
lookVector:(relPos) <
_, PartName (checkParts)
cache = CharCache[Player]
BodyPart = (cache cache[PartName]) Character:(PartName)
BodyPart
ActualPosition = BodyPart.Position
ScreenPosition, OnScreen = (ActualPosition)
OnScreen
screenX, screenY = ScreenPosition.X, ScreenPosition.Y
dx, dy = screenX - crosshairX, screenY - crosshairY
Magnitude = .(dx * dx + dy * dy)
Magnitude < FieldOfView
CandidateCount < maxCandsLimit
CandidateCount = CandidateCount +
entry = CandidateList[CandidateCount]
entry
entry = {}
CandidateList[CandidateCount] = entry
entry.mag = Magnitude
entry.ply = Player
entry.char = Character
entry.part = BodyPart
entry.sx = screenX
entry.sy = screenY
entry.pos = ActualPosition
entry.realPos = ActualPosition
CandidateCount ==
CandidateCount >
(CandidateList, CandidateCount, CandidateSortFn)
StickyTarget
i = , CandidateCount
entry = CandidateList[i]
entry.ply == StickyTarget
(VisibilityCheck, CameraPosition, entry.realPos, entry.char)
ClosestResult[] = entry.ply
ClosestResult[] = entry.char
ClosestResult[] = entry.part
ClosestResult[] = entry.sx
ClosestResult[] = entry.sy
ClosestResult[] = entry.pos
ClosestResult
limit = .(CandidateCount, MAX_CANDIDATES)
i = , limit
entry = CandidateList[i]
entry
(VisibilityCheck, CameraPosition, entry.realPos, entry.char)
ClosestResult[] = entry.ply
ClosestResult[] = entry.char
ClosestResult[] = entry.part
ClosestResult[] = entry.sx
ClosestResult[] = entry.sy
ClosestResult[] = entry.pos
ClosestResult
(Hitbox)
Hitbox
()
mousemoverel
targetPart = Hitbox[]
targetPart targetPart.Parent
()
currentMode = UserInputService.MouseBehavior
currentMode ~= AimState.LastMouseMode
AimState.LastMouseMode = currentMode
AimState.LastOriginX =
AimState.LastOriginY =
currentTarget = Hitbox[]
currentTarget ~= AimState.LastAimTarget
AimState.LastAimTarget = currentTarget
AimState.LastOriginX =
AimState.LastOriginY =
targetPos = targetPart.Position
cameraPos = Camera.CFrame.Position
dist = (targetPos - cameraPos).Magnitude
dist <
ScreenPosition, OnScreen = (targetPos)
OnScreen ScreenPosition.Z <=
viewportSize = Camera.ViewportSize
originX, originY, originValid = (currentMode)
originValid
AimState.LastOriginX = originX
AimState.LastOriginY = originY
targetX, targetY = ScreenPosition.X, ScreenPosition.Y
dx, dy = targetX - originX, targetY - originY
mag = .(dx * dx + dy * dy)
mag > Flags[]
attractionMultiplier = Flags[] /
Flags[]
lockThreshold = Flags[]
mag < lockThreshold
dampening = .(Flags[] / , mag / lockThreshold)
attractionMultiplier = attractionMultiplier * dampening
BASE_PULL =
deltaX = dx * BASE_PULL * attractionMultiplier
deltaY = dy * BASE_PULL * attractionMultiplier
deltaX ~= deltaX deltaY ~= deltaY
maxClampX = viewportSize.X *
maxClampY = viewportSize.Y *
deltaX = .(deltaX, -maxClampX, maxClampX)
deltaY = .(deltaY, -maxClampY, maxClampY)
(.(deltaX + ), .(deltaY + ))
CachedTarget =
CachedTargetTime =
TARGET_CACHE_DURATION =
()
now = .()
CachedTarget (now - CachedTargetTime) < TARGET_CACHE_DURATION
CachedTarget
CachedTarget = (
,
Flags[],
Flags[],
Flags[],
AimState.LastAimTarget
)
CachedTargetTime = now
CachedTarget
FovCircleGui =
FovCircleFrame =
()
FovCircleGui FovCircleGui.Parent FovCircleGui
parent = gethui () :()
FovCircleGui = .()
FovCircleGui.Name =
FovCircleGui.DisplayOrder =
FovCircleGui.IgnoreGuiInset =
FovCircleGui.ResetOnSpawn =
FovCircleGui.ZIndexBehavior = .ZIndexBehavior.Sibling
(() FovCircleGui.Parent = parent )
FovCircleGui.Parent
FovCircleGui.Parent = :()
FovCircleGui
()
showCircle = Flags[] Flags[]
showCircle
FovCircleFrame FovCircleFrame.Visible =
gui = ()
FovCircleFrame FovCircleFrame.Parent ~= gui
FovCircleFrame (FovCircleFrame)
FovCircleFrame = .()
FovCircleFrame.Name =
FovCircleFrame.BackgroundTransparency =
FovCircleFrame.BorderSizePixel =
FovCircleFrame.AnchorPoint = .(, )
FovCircleFrame.ZIndex =
corner = .()
corner.CornerRadius = .(, ); corner.Parent = FovCircleFrame
stroke = .()
stroke.Name =
stroke.Thickness =
stroke.Color = THEME.Accent
stroke.Transparency =
stroke.ApplyStrokeMode = .ApplyStrokeMode.Border
stroke.Parent = FovCircleFrame
FovCircleFrame.Parent = gui
currentMode = UserInputService.MouseBehavior
crosshairX, crosshairY, crosshairValid = (currentMode)
crosshairValid
radius = Flags[]
diameter = radius *
FovCircleFrame.Size = .(diameter, diameter)
FovCircleFrame.Position = .(crosshairX, crosshairY)
FovCircleFrame.Visible =
FovCircleFrame.Visible =
()
(UpdateFOVCircle)
SAFE_MODE
AimActive = Flags[]
AimActive
()
target = ()
target
(target)
()
ESP = { Objects = {}, Folder = }
()
ESP.Folder ESP.Folder.Parent ESP.Folder
parent = gethui () :()
ESP.Folder = .()
ESP.Folder.Name =
(() ESP.Folder.Parent = parent )
ESP.Folder.Parent ESP.Folder.Parent = :()
ESP.Folder
(player)
folder = ()
billboard = .()
billboard.Name = .. player.Name
billboard.Adornee =
billboard.AlwaysOnTop =
billboard.Size = .(, , , )
billboard.StudsOffset = .(, , )
billboard.MaxDistance = Flags[]
billboard.Enabled =
billboard.Parent = folder
layout = .()
layout.FillDirection = .FillDirection.Vertical
layout.HorizontalAlignment = .HorizontalAlignment.Center
layout.VerticalAlignment = .VerticalAlignment.Bottom
layout.SortOrder = .SortOrder.LayoutOrder
layout.Padding = .(, )
layout.Parent = billboard
label = .()
label.Name =
label.Size = .(, , , )
label.BackgroundTransparency =
label.Text = player.Name
label.TextColor3 = ROLE_COLORS.Unknown
label.TextStrokeTransparency =
label.TextStrokeColor3 = .(, , )
label.TextSize =
label.Font = .Font.GothamBold
label.TextTransparency = Flags[]
label.LayoutOrder =
label.Parent = billboard
healthNum = .()
healthNum.Name =
healthNum.Size = .(, , , )
healthNum.BackgroundTransparency =
healthNum.Text =
healthNum.TextColor3 = .(, , )
healthNum.TextStrokeTransparency =
healthNum.TextStrokeColor3 = .(, , )
healthNum.TextSize =
healthNum.Font = .Font.GothamBold
healthNum.TextTransparency = Flags[]
healthNum.LayoutOrder =
healthNum.Visible = Flags[]
healthNum.Parent = billboard
healthBarBG = .()
healthBarBG.Name =
healthBarBG.Size = .(, , , )
healthBarBG.BackgroundColor3 = .(, , )
healthBarBG.BorderSizePixel =
healthBarBG.LayoutOrder =
healthBarBG.Visible = Flags[]
healthBarBG.Parent = billboard
hbCorner = .()
hbCorner.CornerRadius = .(, ); hbCorner.Parent = healthBarBG
healthBarFill = .()
healthBarFill.Name =
healthBarFill.Size = .(, )
healthBarFill.BackgroundColor3 = .(, , )
healthBarFill.BorderSizePixel =
healthBarFill.Parent = healthBarBG
hbfCorner = .()
hbfCorner.CornerRadius = .(, ); hbfCorner.Parent = healthBarFill
distanceLabel = .()
distanceLabel.Name =
distanceLabel.Size = .(, , , )
distanceLabel.BackgroundTransparency =
distanceLabel.Text =
distanceLabel.TextColor3 = .(, , )
distanceLabel.TextStrokeTransparency =
distanceLabel.TextStrokeColor3 = .(, , )
distanceLabel.TextSize =
distanceLabel.Font = .Font.GothamMedium
distanceLabel.TextTransparency = Flags[]
distanceLabel.LayoutOrder =
distanceLabel.Visible = Flags[]
distanceLabel.Parent = billboard
equippedLabel = .()
equippedLabel.Name =
equippedLabel.Size = .(, , , )
equippedLabel.BackgroundTransparency =
equippedLabel.Text =
equippedLabel.TextColor3 = .(, , )
equippedLabel.TextStrokeTransparency =
equippedLabel.TextStrokeColor3 = .(, , )
equippedLabel.TextSize =
equippedLabel.Font = .Font.GothamMedium
equippedLabel.TextTransparency = Flags[]
equippedLabel.LayoutOrder =
equippedLabel.Visible = Flags[]
equippedLabel.Parent = billboard
highlight = .()
highlight.Name = .. player.Name
highlight.Adornee =
highlight.DepthMode = .HighlightDepthMode.AlwaysOnTop
highlight.FillColor = ROLE_COLORS.Unknown
highlight.FillTransparency = Flags[]
highlight.OutlineColor = ROLE_COLORS.Unknown
highlight.OutlineTransparency = Flags[]
highlight.Enabled =
highlight.Parent = folder
ESP.Objects[player] = {
Nametag = billboard,
Label = label,
HealthNum = healthNum,
HealthBarBG = healthBarBG,
HealthBarFill= healthBarFill,
DistanceLabel= distanceLabel,
EquippedLabel= equippedLabel,
Highlight = highlight,
LastName = player.Name,
LastRole = ,
LastHealth = -,
LastMaxHealth= -,
LastDistance = -,
LastEquipped = ,
}
(player)
data = ESP.Objects[player]
data
(data.Nametag)
data.Highlight (data.Highlight)
ESP.Objects[player] =
(player)
data = ESP.Objects[player]
data
shouldShow = Flags[]
shouldShow Flags[]
player.Team LocalPlayer.Team player.Team == LocalPlayer.Team
shouldShow =
shouldShow player == LocalPlayer shouldShow =
char = player.Character
root = char (char:() char.PrimaryPart)
humanoid = char char:()
root humanoid humanoid.Health <= shouldShow =
dist =
shouldShow
myRoot = LocalPlayer.Character
(LocalPlayer.Character:() LocalPlayer.Character.PrimaryPart)
myRoot
dist = (root.Position - myRoot.Position).Magnitude
dist > Flags[] shouldShow =
shouldShow
(data.Nametag, , )
data.Highlight (data.Highlight, , )
data.Nametag.Adornee ~= root data.Nametag.Adornee = root
(data.Nametag, , )
(data.Nametag, , Flags[])
data.Highlight
hlActive = Flags[]
data.Highlight.Adornee ~= char data.Highlight.Adornee = char
(data.Highlight, , hlActive)
Flags[]
data.LastName ~= player.Name
data.LastName = player.Name
(data.Label, , player.Name)
(data.Label, , )
(data.Label, , )
health, maxHealth = (player)
data.HealthNum
(data.HealthNum, , Flags[])
data.LastHealth ~= .(health) data.LastMaxHealth ~= .(maxHealth)
data.LastHealth = .(health)
data.LastMaxHealth = .(maxHealth)
(data.HealthNum, , .(, .(health), .(maxHealth)))
hpColor = (health, maxHealth)
(data.HealthNum, , hpColor)
data.HealthBarFill
pct = .(health / .(maxHealth, ), , )
(data.HealthBarFill, , .(pct, ))
(data.HealthBarFill, , hpColor)
data.HealthBarBG
(data.HealthBarBG, , Flags[])
data.DistanceLabel
(data.DistanceLabel, , Flags[])
distRounded = .(dist)
.(data.LastDistance - distRounded) >=
data.LastDistance = distRounded
(data.DistanceLabel, , .(, distRounded))
data.EquippedLabel
(data.EquippedLabel, , Flags[])
tool = char:()
toolName = tool tool.Name
equippedStr = .. toolName ..
data.LastEquipped ~= equippedStr
data.LastEquipped = equippedStr
(data.EquippedLabel, , equippedStr)
role = Flags[] (player)
role
data.LastRole ~= role
data.LastRole = role
color = ROLE_COLORS[role] ROLE_COLORS.Unknown
(data.Label, , color)
data.Highlight
(data.Highlight, , color)
(data.Highlight, , color)
data.LastRole ~=
data.LastRole =
(data.Label, , ROLE_COLORS.Neutral)
data.Highlight
(data.Highlight, , ROLE_COLORS.Neutral)
(data.Highlight, , ROLE_COLORS.Neutral)
op = Flags[]
(data.Label, , op)
data.HealthNum (data.HealthNum, , op)
data.DistanceLabel (data.DistanceLabel, , op)
data.EquippedLabel (data.EquippedLabel, , op)
data.HealthBarBG (data.HealthBarBG, , op)
data.HealthBarFill (data.HealthBarFill, , op)
()
players = Players:()
_, p (players)
p ~= LocalPlayer
ESP.Objects[p] (p)
(p)
p, _ (ESP.Objects)
p.Parent (p)
ESP2D = { Objects = {}, Gui = }
()
ESP2D.Gui ESP2D.Gui.Parent ESP2D.Gui
gui = .()
gui.Name =
gui.IgnoreGuiInset =
gui.ResetOnSpawn =
gui.DisplayOrder =
parent = gethui () :()
ok = (() gui.Parent = parent )
ok gui.Parent gui.Parent = LocalPlayer:()
ESP2D.Gui = gui
gui
(player)
gui = ()
root = .()
root.Name = .. player.UserId
root.BackgroundTransparency =
root.BorderSizePixel =
root.Visible =
root.Parent = gui
box = .()
box.Name =
box.BackgroundTransparency =
box.BorderSizePixel =
box.Size = .(, )
box.Parent = root
boxStroke = .()
boxStroke.Thickness =
boxStroke.Color = ROLE_COLORS.Unknown
boxStroke.Transparency =
boxStroke.Parent = box
healthBG = .()
healthBG.Name =
healthBG.BackgroundColor3 = .(, , )
healthBG.BackgroundTransparency =
healthBG.BorderSizePixel =
healthBG.Visible =
healthBG.Parent = gui
healthFill = .()
healthFill.Name =
healthFill.BackgroundColor3 = .(, , )
healthFill.BorderSizePixel =
healthFill.Parent = healthBG
ESP2D.Objects[player] = {Root = root, Box = box, Stroke = boxStroke, HealthBG = healthBG, HealthFill = healthFill}
(player)
data = ESP2D.Objects[player]
data
(data.Root)
(data.HealthBG)
ESP2D.Objects[player] =
()
camera = Workspace.CurrentCamera
camera
_, player (Players:())
player ~= LocalPlayer
ESP2D.Objects[player] (player)
data = ESP2D.Objects[player]
char = player.Character
hum = char char:()
shouldShow = Flags[] (Flags[] Flags[]) char hum hum.Health >
shouldShow Flags[] player.Team LocalPlayer.Team player.Team == LocalPlayer.Team
shouldShow =
rootPart = char (char:() char.PrimaryPart)
localRoot = LocalPlayer.Character (LocalPlayer.Character:() LocalPlayer.Character.PrimaryPart)
shouldShow rootPart localRoot
dist = (rootPart.Position - localRoot.Position).Magnitude
dist > (Flags[] ) shouldShow =
shouldShow
ok, cf, size = (() char:() )
ok cf size
half = size *
corners = {
.(-half.X,-half.Y,-half.Z), .(-half.X,-half.Y,half.Z),
.(-half.X,half.Y,-half.Z), .(-half.X,half.Y,half.Z),
.(half.X,-half.Y,-half.Z), .(half.X,-half.Y,half.Z),
.(half.X,half.Y,-half.Z), .(half.X,half.Y,half.Z),
}
minX, minY, maxX, maxY = .huge, .huge, -.huge, -.huge
valid =
_, corner (corners)
v, onScreen = camera:(cf:(corner))
v.Z >
valid =
minX, minY = .(minX, v.X), .(minY, v.Y)
maxX, maxY = .(maxX, v.X), .(maxY, v.Y)
valid maxX > minX maxY > minY
minX, minY = .(minX), .(minY)
maxX, maxY = .(maxX), .(maxY)
data.Root.Position = .(minX, minY)
data.Root.Size = .(.(, maxX-minX), .(, maxY-minY))
data.Root.Visible =
data.Box.Visible = Flags[]
color = ROLE_COLORS.Neutral
Flags[]
role = (player)
color = ROLE_COLORS[role] ROLE_COLORS.Unknown
data.Stroke.Color = color
health, maxHealth = (player)
pct = .(health / .(maxHealth, ), , )
hpColor = (health, maxHealth)
barOn = Flags[]
data.HealthBG.Visible = barOn
data.HealthBG.BackgroundColor3 = .(,,)
data.HealthFill.BackgroundColor3 = hpColor
Flags[]
data.HealthBG.Position = .(minX - , minY)
data.HealthBG.Size = .(, .(, maxY-minY))
data.HealthFill.AnchorPoint = .(, )
data.HealthFill.Position = .(, , , )
data.HealthFill.Size = .(, , pct, )
data.HealthBG.Position = .(minX, maxY + )
data.HealthBG.Size = .(.(, maxX-minX), )
data.HealthFill.AnchorPoint = .(, )
data.HealthFill.Position = .(, )
data.HealthFill.Size = .(pct, , , )
data.Root.Visible =
data.HealthBG.Visible =
data.Root.Visible =
data.HealthBG.Visible =
data.Root.Visible =
data.HealthBG.Visible =
player (ESP2D.Objects)
player.Parent (player)
Noclip = {
Broken = {},
BrokenCount = ,
OverlapParams = OverlapParams.(),
RaycastParams = RaycastParams.(),
ScratchIgnore = {},
}
Noclip.OverlapParams.FilterType = .RaycastFilterType.Exclude
Noclip.OverlapParams.MaxParts =
Noclip.RaycastParams.FilterType = .RaycastFilterType.Exclude
Noclip.RaycastParams.IgnoreWater =
_feetPartsBuffer = {}
(char)
.(_feetPartsBuffer)
char _feetPartsBuffer
root = char:() char.PrimaryPart
root _feetPartsBuffer
ignore = Noclip.ScratchIgnore
.(ignore)
ignore[] = char
Noclip.RaycastParams.FilterDescendantsInstances = ignore
basePos = root.Position - .(, , )
direction = .(, -, )
rootCF = root.CFrame
relOffsets = {
.(, , ),
.(-, , -), .(, , -),
.(-, , ), .(, , ),
}
_, relOff (relOffsets)
origin = basePos + rootCF:(relOff)
ok, result = (()
Workspace:(origin, direction, Noclip.RaycastParams)
)
ok result result.Instance
_feetPartsBuffer[result.Instance] =
_feetPartsBuffer
(part, feetParts)
part part:()
part:()
part.Parent
myChar = LocalPlayer.Character
myChar part:(myChar)
model = part:()
model Players:(model)
part:()
feetParts feetParts[part]
name = .(part.Name)
name == name == name ==
name == name ==
part.Size.X > part.Size.Z >
part.Anchored
Flags[]
Flags[]
(part)
Noclip.Broken[part]
part.CanCollide
(() part.CanCollide = )
Noclip.Broken[part] = { cc = part.CanCollide }
Noclip.BrokenCount = Noclip.BrokenCount +
(() part.CanCollide = )
(part)
data = Noclip.Broken[part]
data
(()
part part.Parent (data) ==
part.CanCollide = data.cc
)
Noclip.Broken[part] =
Noclip.BrokenCount = .(, Noclip.BrokenCount - )
()
part, data (Noclip.Broken)
(()
part part.Parent (data) ==
part.CanCollide = data.cc
)
Noclip.Broken = {}
Noclip.BrokenCount =
()
char = LocalPlayer.Character
char
root = char:() char.PrimaryPart
root
radius = Flags[]
origin = root.Position
feetParts = (char)
ignore = Noclip.ScratchIgnore
.(ignore)
ignore[] = char
Noclip.OverlapParams.FilterDescendantsInstances = ignore
ok, parts = (()
Workspace:(origin, radius, Noclip.OverlapParams)
)
ok parts
_, part (parts)
(part, feetParts)
(part)
()
(Noclip.Broken) ==
char = LocalPlayer.Character
char
root = char:() char.PrimaryPart
root
feetParts = (char)
toRemove =
toRestore =
part, _ (Noclip.Broken)
part part.Parent
toRemove = toRemove {}
toRemove[#toRemove + ] = part
feetParts[part]
toRestore = toRestore {}
toRestore[#toRestore + ] = part
part.CanCollide
(() part.CanCollide = )
toRemove
_, part (toRemove)
Noclip.Broken[part]
Noclip.Broken[part] =
Noclip.BrokenCount = .(, Noclip.BrokenCount - )
toRestore
_, part (toRestore)
(part)
AutoGive = { Running = }
MP5_ORIGIN_POS = .(, , )
REMINGTON_ORIGIN_POS = .(, , )
MATCH_TOLERANCE =
TP_HEIGHT_OFFSET =
TP_DWELL_TIME =
(targetPos)
_, obj (Workspace:())
obj.Name == obj:()
ok, pos = (()
primary = obj.PrimaryPart obj:()
primary primary.Position
)
ok pos (pos - targetPos).Magnitude < MATCH_TOLERANCE
obj, pos
()
char = LocalPlayer.Character
char
char:() char.PrimaryPart
(touchPos, myRoot, homeCFrame)
myRoot touchPos
targetCFrame = .(touchPos + .(, TP_HEIGHT_OFFSET, ))
(()
myRoot.CFrame = targetCFrame
)
.(TP_DWELL_TIME)
(()
myRoot.CFrame = homeCFrame
)
.()
(force)
force Flags[]
AutoGive.Running
AutoGive.Running =
.()
myRoot = ()
myRoot
AutoGive.Running =
homeCFrame = myRoot.CFrame
_, mp5Pos = (MP5_ORIGIN_POS)
_, remPos = (REMINGTON_ORIGIN_POS)
mp5Pos remPos
AutoGive.Running =
remPos
(remPos, myRoot, homeCFrame)
myRoot = ()
myRoot homeCFrame = myRoot.CFrame
mp5Pos
(mp5Pos, myRoot, homeCFrame)
finalRoot = ()
finalRoot
(() finalRoot.CFrame = homeCFrame )
AutoGive.Running =
ArrestState = {
Running = ,
SelectedPlayer = ,
ChaserConn = ,
EndTime = ,
HomeCFrame = ,
TargetRoot = ,
}
()
out = {}
_, p (())
p ~= LocalPlayer p.Parent
role = (p)
role ==
char, root = (p)
char root
myRoot = ()
dist = myRoot (root.Position - myRoot.Position).Magnitude
.(out, { player = p, dist = dist })
.(out, (a, b) a.dist < b.dist )
out
(toolName)
char = LocalPlayer.Character
backpack = LocalPlayer:()
char backpack
equipped = char:()
equipped equipped.Name == toolName
tool = backpack:(toolName)
tool tool:()
hum = char:()
hum
(() hum:(tool) )
(targetRoot)
targetRoot
dist = Flags[]
height = Flags[]
targetRoot.CFrame * .(, height, dist)
(targetRoot)
char = LocalPlayer.Character
char
myRoot = char:() char.PrimaryPart
hum = char:()
myRoot hum
(() hum.AutoRotate = )
chaserConn
chaserConn = RunService.RenderStepped:(()
myR = LocalPlayer.Character
(LocalPlayer.Character:() LocalPlayer.Character.PrimaryPart)
myR
behind = (targetRoot)
behind
(()
myR.CFrame = behind
myR.AssemblyLinearVelocity = .zero
)
)
chaserConn
(restoreCFrame)
ArrestState.ChaserConn
(() ArrestState.ChaserConn:() )
ArrestState.ChaserConn =
char = LocalPlayer.Character
hum = char char:()
hum
(() hum.AutoRotate = )
myRoot = char (char:() char.PrimaryPart)
myRoot restoreCFrame
(() myRoot.CFrame = restoreCFrame )
ArrestState.TargetRoot =
ArrestState.HomeCFrame =
ArrestState.EndTime =
(targetPlayer)
targetPlayer targetPlayer.Parent
ArrestState.Running
ArrestState.Running =
myChar = LocalPlayer.Character
myRoot = myChar (myChar:() myChar.PrimaryPart)
myRoot
ArrestState.Running =
homeCFrame = myRoot.CFrame
toolName = Flags[]
equipped = (toolName)
equipped
(, .. toolName .. )
ArrestState.Running =
.()
targetChar, targetRoot = (targetPlayer)
targetChar targetRoot
(, )
(() myRoot.CFrame = homeCFrame )
ArrestState.Running =
behind = (targetRoot)
behind
(() myRoot.CFrame = behind )
.()
ArrestState.TargetRoot = targetRoot
ArrestState.HomeCFrame = homeCFrame
ArrestState.EndTime = () + (Flags[rrest/StickDuration"] or 5.0)
ArrestState.ChaserConn = StartChaser(targetRoot)
task.spawn(function()
while ArrestState.Running do
task.wait(0.1)
if tick() >= ArrestState.EndTime then
if ArrestState.Running then
ArrestState.Running = false
StopChaser(homeCFrame)
Notify("Arrest", "Stick ended. You can click now or press the button again.")
end
break
end
end
end)
Notify("Arrest", string.format("Sticking to %s for %.1fs. Click on them to arrest!", targetPlayer.Name, Flags["Arrest/StickDuration"] or 5.0))
return true
end
local function StopArrestStick()
if not ArrestState.Running then return end
ArrestState.Running = false
StopChaser(ArrestState.HomeCFrame)
Notify("Arrest", "Stopped sticking.")
end
-- ══════════════════════════════════════════════════════════════════
-- NOTIFICATION
-- ══════════════════════════════════════════════════════════════════
local NotifyGui, NotifyContainer
local function EnsureNotifyGui()
if NotifyGui and NotifyGui.Parent then return end
local parent = gethui and gethui() or game:GetService("CoreGui")
NotifyGui = Instance.new("ScreenGui")
NotifyGui.Name = "Axiom_Notify"
NotifyGui.DisplayOrder = 1000
NotifyGui.IgnoreGuiInset = true
NotifyGui.ResetOnSpawn = false
pcall(function() NotifyGui.Parent = parent end)
if not NotifyGui.Parent then NotifyGui.Parent = game:GetService("CoreGui") end
NotifyContainer = Instance.new("Frame")
NotifyContainer.Name = "Container"
NotifyContainer.Size = UDim2.new(0, 300, 1, -40)
NotifyContainer.Position = UDim2.new(1, -20, 1, -20)
NotifyContainer.AnchorPoint = Vector2.new(1, 1)
NotifyContainer.BackgroundTransparency = 1
NotifyContainer.Parent = NotifyGui
local layout = Instance.new("UIListLayout")
layout.HorizontalAlignment = Enum.HorizontalAlignment.Right
layout.VerticalAlignment = Enum.VerticalAlignment.Bottom
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Padding = UDim.new(0, 8)
layout.Parent = NotifyContainer
end
function Notify(title, text)
EnsureNotifyGui()
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 280, 0, 0)
frame.AutomaticSize = Enum.AutomaticSize.Y
frame.BackgroundColor3 = THEME.Background
frame.BackgroundTransparency = 1
frame.BorderSizePixel = 0
frame.Parent = NotifyContainer
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 8); corner.Parent = frame
local stroke = Instance.new("UIStroke")
stroke.Color = THEME.Accent; stroke.Thickness = 1; stroke.Transparency = 1
stroke.Parent = frame
local pad = Instance.new("UIPadding")
pad.PaddingTop = UDim.new(0, 10); pad.PaddingBottom = UDim.new(0, 10)
pad.PaddingLeft = UDim.new(0, 12); pad.PaddingRight = UDim.new(0, 12)
pad.Parent = frame
local titleLbl = Instance.new("TextLabel")
titleLbl.Size = UDim2.new(1, 0, 0, 16)
titleLbl.BackgroundTransparency = 1
titleLbl.Text = title
titleLbl.Font = Enum.Font.GothamBold
titleLbl.TextSize = 13
titleLbl.TextColor3 = THEME.Accent
titleLbl.TextXAlignment = Enum.TextXAlignment.Left
titleLbl.TextTransparency = 1
titleLbl.Parent = frame
local bodyLbl = Instance.new("TextLabel")
bodyLbl.Size = UDim2.new(1, 0, 0, 0)
bodyLbl.AutomaticSize = Enum.AutomaticSize.Y
bodyLbl.Position = UDim2.new(0, 0, 0, 18)
bodyLbl.BackgroundTransparency = 1
bodyLbl.Text = tostring(text or "")
bodyLbl.Font = Enum.Font.Gotham
bodyLbl.TextSize = 11
bodyLbl.TextColor3 = THEME.Text
bodyLbl.TextWrapped = true
bodyLbl.TextXAlignment = Enum.TextXAlignment.Left
bodyLbl.TextTransparency = 1
bodyLbl.Parent = frame
TweenService:Create(frame, TweenInfo.new(0.2), {BackgroundTransparency = 0.05}):Play()
TweenService:Create(stroke, TweenInfo.new(0.2), {Transparency = 0.4}):Play()
TweenService:Create(titleLbl, TweenInfo.new(0.2), {TextTransparency = 0}):Play()
TweenService:Create(bodyLbl, TweenInfo.new(0.2), {TextTransparency = 0}):Play()
task.delay(3, function()
local t1 = TweenService:Create(frame, TweenInfo.new(0.2), {BackgroundTransparency = 1})
TweenService:Create(stroke, TweenInfo.new(0.2), {Transparency = 1}):Play()
TweenService:Create(titleLbl, TweenInfo.new(0.2), {TextTransparency = 1}):Play()
TweenService:Create(bodyLbl, TweenInfo.new(0.2), {TextTransparency = 1}):Play()
t1:Play()
t1.Completed:Connect(function() SafeDestroy(frame) end)
end)
end
-- ══════════════════════════════════════════════════════════════════
-- TELEPORT SYSTEM
-- ══════════════════════════════════════════════════════════════════
local TELEPORT_PRESETS = {
{name = "Entrance Tower", pos = Vector3.new(510, 122, 2325)},
{name = "Police Car Spawn", pos = Vector3.new(595, 98, 2497)},
{name = "Police Armory", pos = Vector3.new(816, 99, 2237)},
{name = "Rooftop (Escape)", pos = Vector3.new(946, 135, 2201)},
{name = "Yard Tower", pos = Vector3.new(822, 125, 2587)},
{name = "Hammer", pos = Vector3.new(806, 98, 2525)},
{name = "Knife", pos = Vector3.new(707, 97, 2508)},
{name = "Criminal Armory", pos = Vector3.new(-936, 94, 2043)},
{name = "Criminal Car Spawn", pos = Vector3.new(-912, 95, 2160)},
{name = "Criminal Tower Rooftop", pos = Vector3.new(-371, 114, 1992)},
}
local function TeleportToPosition(pos)
if typeof(pos) ~= "Vector3" then
Notify("Teleport", "Invalid position.")
return false
end
local char = LocalPlayer.Character
if not char then
Notify("Teleport", "Character not found.")
return false
end
local root = char:FindFirstChild("HumanoidRootPart") or char.PrimaryPart
if not root then
Notify("Teleport", "HumanoidRootPart not found.")
return false
end
-- Try a smarter teleport: offset upward if player would clip
local offsetY = 3
pcall(function()
root.CFrame = CFrame.new(pos + Vector3.new(0, offsetY, 0))
root.AssemblyLinearVelocity = Vector3.zero
root.AssemblyAngularVelocity = Vector3.zero
end)
Notify("Teleport", string.format("Teleported to (%.0f, %.0f, %.0f)", pos.X, pos.Y, pos.Z))
return true
end
local function GetCurrentPosition()
local char = LocalPlayer.Character
if not char then return nil end
local root = char:FindFirstChild("HumanoidRootPart") or char.PrimaryPart
if not root then return nil end
return root.Position
end
-- ══════════════════════════════════════════════════════════════════
-- UI — Main Window
-- ══════════════════════════════════════════════════════════════════
local UI = {}
local State = {
Visible = true,
Minimized = false,
Tabs = {},
CurrentTab = nil,
Updaters = {},
MainFrame = nil,
ScreenGui = nil,
}
local function EnsureMainGui()
if State.ScreenGui and State.ScreenGui.Parent then return State.ScreenGui end
local parent = gethui and gethui() or game:GetService("CoreGui")
local gui = Instance.new("ScreenGui")
gui.Name = "Axiom_Main"
gui.DisplayOrder = 999
gui.IgnoreGuiInset = true
gui.ResetOnSpawn = false
gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
pcall(function() gui.Parent = parent end)
if not gui.Parent then gui.Parent = game:GetService("CoreGui") end
State.ScreenGui = gui
return gui
end
function UI.CreateWindow(title)
local gui = EnsureMainGui()
local main = Instance.new("CanvasGroup")
main.Name = "MainFrame"
main.Size = UDim2.fromOffset(780, 500)
main.Position = UDim2.fromScale(0.5, 0.5)
main.AnchorPoint = Vector2.new(0.5, 0.5)
main.BackgroundColor3 = THEME.Background
main.BorderSizePixel = 0
main.ClipsDescendants = true
main.Parent = gui
State.MainFrame = main
local ambient = Instance.new("Frame")
ambient.Name = "AmbientFX"
ambient.Size = UDim2.fromScale(1, 1)
ambient.BackgroundTransparency = 1
ambient.BorderSizePixel = 0
ambient.ClipsDescendants = true
ambient.ZIndex = 0
ambient.Parent = main
local ambientGlow = Instance.new("Frame")
ambientGlow.Name = "AccentBloom"
ambientGlow.Size = UDim2.fromOffset(280, 280)
ambientGlow.Position = UDim2.new(1, -210, 0, -170)
ambientGlow.BackgroundColor3 = THEME.Accent
ambientGlow.BackgroundTransparency = 0.94
ambientGlow.BorderSizePixel = 0
ambientGlow.ZIndex = 0
ambientGlow.Parent = ambient
local bloomCorner = Instance.new("UICorner")
bloomCorner.CornerRadius = UDim.new(1, 0)
bloomCorner.Parent = ambientGlow
local bloomGradient = Instance.new("UIGradient")
bloomGradient.Transparency = NumberSequence.new({
NumberSequenceKeypoint.new(0, 0.1),
NumberSequenceKeypoint.new(0.55, 0.55),
NumberSequenceKeypoint.new(1, 1),
})
bloomGradient.Parent = ambientGlow
TweenService:Create(ambientGlow, TweenInfo.new(5.5, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut, -1, true), {
Position = UDim2.new(1, -260, 0, -125),
BackgroundTransparency = 0.965,
}):Play()
for i = 1, 9 do
local particle = Instance.new("Frame")
particle.Name = "AmbientParticle" .. i
local size = (i % 3) + 2
particle.Size = UDim2.fromOffset(size, size)
particle.Position = UDim2.new((i * 0.137) % 1, 0, (i * 0.193) % 1, 0)
particle.BackgroundColor3 = i % 2 == 0 and THEME.Accent or Color3.fromRGB(145, 190, 210)
particle.BackgroundTransparency = 0.76 + ((i % 3) * 0.06)
particle.BorderSizePixel = 0
particle.ZIndex = 0
particle.Parent = ambient
local particleCorner = Instance.new("UICorner")
particleCorner.CornerRadius = UDim.new(1, 0)
particleCorner.Parent = particle
task.spawn(function()
local phase = i * 0.31
while particle.Parent do
local target = UDim2.new((i * 0.173 + phase * 0.04) % 1, 0, (i * 0.119 + phase * 0.025) % 1, 0)
TweenService:Create(particle, TweenInfo.new(4.5 + (i % 4), Enum.EasingStyle.Sine, Enum.EasingDirection.InOut), {
Position = target,
BackgroundTransparency = 0.66 + ((i % 3) * 0.08),
}):Play()
task.wait(4.5 + (i % 4))
phase += 1
if particle.Parent then
TweenService:Create(particle, TweenInfo.new(2.4, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut), {
BackgroundTransparency = 0.88,
}):Play()
end
end
end)
end
local uiScale = Instance.new("UIScale")
local camera = workspace.CurrentCamera
if camera then
local viewport = camera.ViewportSize
uiScale.Scale = math.clamp(math.min((viewport.X - 28) / 780, (viewport.Y - 28) / 500), 0.72, 1)
else
uiScale.Scale = 1
end
uiScale.Parent = main
local mainCorner = Instance.new("UICorner")
mainCorner.CornerRadius = UDim.new(0, 14)
mainCorner.Parent = main
local outline = Instance.new("UIStroke")
outline.Color = Color3.fromRGB(58, 67, 76)
outline.Thickness = 1
outline.Transparency = 0.12
outline.Parent = main
local outlineGradient = Instance.new("UIGradient")
outlineGradient.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, THEME.Accent),
ColorSequenceKeypoint.new(0.48, Color3.fromRGB(66, 91, 112)),
ColorSequenceKeypoint.new(1, THEME.Accent),
})
outlineGradient.Rotation = 25
outlineGradient.Parent = outline
task.spawn(function()
while outlineGradient.Parent do
TweenService:Create(outlineGradient, TweenInfo.new(8, Enum.EasingStyle.Linear), {Rotation = 385}):Play()
task.wait(8)
if outlineGradient.Parent then outlineGradient.Rotation = 25 end
end
end)
local top = Instance.new("Frame")
top.Name = "CommandHeader"
top.Size = UDim2.new(1, 0, 0, 54)
top.BackgroundColor3 = THEME.Sidebar
top.BorderSizePixel = 0
top.Parent = main
local topGradient = Instance.new("UIGradient")
topGradient.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, Color3.fromRGB(25, 33, 41)),
ColorSequenceKeypoint.new(0.55, THEME.Sidebar),
ColorSequenceKeypoint.new(1, Color3.fromRGB(21, 30, 37)),
})
topGradient.Rotation = 0
topGradient.Parent = top
local topLine = Instance.new("Frame")
topLine.Size = UDim2.new(1, 0, 0, 1)
topLine.Position = UDim2.new(0, 0, 1, -1)
topLine.BackgroundColor3 = Color3.fromRGB(58, 67, 76)
topLine.BorderSizePixel = 0
topLine.Parent = top
local shimmer = Instance.new("Frame")
shimmer.Name = "HeaderSweep"
shimmer.Size = UDim2.new(0, 70, 1, 0)
shimmer.Position = UDim2.new(0, -80, 0, 0)
shimmer.BackgroundColor3 = THEME.Accent
shimmer.BackgroundTransparency = 0.94
shimmer.BorderSizePixel = 0
shimmer.ZIndex = 2
shimmer.Parent = top
local shimmerGradient = Instance.new("UIGradient")
shimmerGradient.Transparency = NumberSequence.new({
NumberSequenceKeypoint.new(0, 1),
NumberSequenceKeypoint.new(0.5, 0.2),
NumberSequenceKeypoint.new(1, 1),
})
shimmerGradient.Parent = shimmer
task.spawn(function()
while shimmer.Parent do
shimmer.Position = UDim2.new(0, -80, 0, 0)
TweenService:Create(shimmer, TweenInfo.new(2.8, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut), {
Position = UDim2.new(1, 10, 0, 0),
}):Play()
task.wait(4.5)
end
end)
local mark = Instance.new("Frame")
mark.Size = UDim2.fromOffset(4, 28)
mark.Position = UDim2.new(0, 16, 0, 13)
mark.BackgroundColor3 = THEME.Accent
mark.BorderSizePixel = 0
mark.Parent = top
local markCorner = Instance.new("UICorner")
markCorner.CornerRadius = UDim.new(1, 0)
markCorner.Parent = mark
local titleLbl = Instance.new("TextLabel")
titleLbl.Name = "BrandTitle"
titleLbl.Size = UDim2.new(0, 280, 0, 24)
titleLbl.Position = UDim2.new(0, 29, 0, 7)
titleLbl.BackgroundTransparency = 1
titleLbl.Text = string.upper(title)
titleLbl.Font = Enum.Font.GothamBlack
titleLbl.TextSize = 15
titleLbl.TextColor3 = THEME.Text
titleLbl.TextXAlignment = Enum.TextXAlignment.Left
titleLbl.Parent = top
local verLbl = Instance.new("TextLabel")
verLbl.Size = UDim2.new(0, 250, 0, 14)
verLbl.Position = UDim2.new(0, 29, 0, 31)
verLbl.BackgroundTransparency = 1
verLbl.Text = "OPERATIONS INTERFACE / BUILD " .. tostring(VERSION)
verLbl.Font = Enum.Font.GothamMedium
verLbl.TextSize = 8
verLbl.TextColor3 = THEME.TextDark
verLbl.TextXAlignment = Enum.TextXAlignment.Left
verLbl.Parent = top
local status = Instance.new("Frame")
status.Name = "SystemStatus"
status.Size = UDim2.fromOffset(104, 27)
status.Position = UDim2.new(1, -148, 0, 13)
status.BackgroundColor3 = THEME.Element
status.BorderSizePixel = 0
status.Parent = top
local statusCorner = Instance.new("UICorner")
statusCorner.CornerRadius = UDim.new(0, 7)
statusCorner.Parent = status
local statusDot = Instance.new("Frame")
statusDot.Size = UDim2.fromOffset(7, 7)
statusDot.Position = UDim2.new(0, 10, 0.5, -3)
statusDot.BackgroundColor3 = THEME.Success
statusDot.BorderSizePixel = 0
statusDot.Parent = status
local dotCorner = Instance.new("UICorner")
dotCorner.CornerRadius = UDim.new(1, 0)
dotCorner.Parent = statusDot
local dotGlow = Instance.new("UIStroke")
dotGlow.Color = THEME.Success
dotGlow.Thickness = 1
dotGlow.Transparency = 0.2
dotGlow.Parent = statusDot
TweenService:Create(dotGlow, TweenInfo.new(1.1, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut, -1, true), {
Transparency = 0.75,
Thickness = 2,
}):Play()
local statusText = Instance.new("TextLabel")
statusText.Size = UDim2.new(1, -26, 1, 0)
statusText.Position = UDim2.new(0, 23, 0, 0)
statusText.BackgroundTransparency = 1
statusText.Text = "INTERFACE READY"
statusText.Font = Enum.Font.GothamBold
statusText.TextSize = 9
statusText.TextColor3 = THEME.Text
statusText.TextXAlignment = Enum.TextXAlignment.Left
statusText.Parent = status
local closeBtn = Instance.new("TextButton")
closeBtn.Name = "Minimize"
closeBtn.Size = UDim2.fromOffset(28, 28)
closeBtn.Position = UDim2.new(1, -36, 0, 13)
closeBtn.BackgroundColor3 = THEME.Element
closeBtn.Text = "−"
closeBtn.Font = Enum.Font.GothamBold
closeBtn.TextSize = 18
closeBtn.TextColor3 = THEME.Text
closeBtn.BorderSizePixel = 0
closeBtn.AutoButtonColor = false
closeBtn.Parent = top
local closeCorner = Instance.new("UICorner")
closeCorner.CornerRadius = UDim.new(0, 7)
closeCorner.Parent = closeBtn
local nav = Instance.new("Frame")
nav.Name = "ModuleNavigation"
nav.Size = UDim2.new(1, 0, 0, 40)
nav.Position = UDim2.new(0, 0, 0, 54)
nav.BackgroundColor3 = THEME.Background
nav.BorderSizePixel = 0
nav.Parent = main
local navLabel = Instance.new("TextLabel")
navLabel.Size = UDim2.fromOffset(68, 40)
navLabel.Position = UDim2.new(0, 16, 0, 0)
navLabel.BackgroundTransparency = 1
navLabel.Text = "MODULES"
navLabel.Font = Enum.Font.GothamBold
navLabel.TextSize = 10
navLabel.TextColor3 = THEME.TextDark
navLabel.TextXAlignment = Enum.TextXAlignment.Left
navLabel.Parent = nav
local tabContainer = Instance.new("ScrollingFrame")
tabContainer.Name = "Tabs"
tabContainer.Size = UDim2.new(1, -96, 1, 0)
tabContainer.Position = UDim2.new(0, 80, 0, 0)
tabContainer.BackgroundTransparency = 1
tabContainer.BorderSizePixel = 0
tabContainer.ScrollBarThickness = 0
tabContainer.ScrollingDirection = Enum.ScrollingDirection.X
tabContainer.CanvasSize = UDim2.new(0, 0, 0, 0)
tabContainer.AutomaticCanvasSize = Enum.AutomaticSize.X
tabContainer.Parent = nav
State.TabContainer = tabContainer
local tabLayout = Instance.new("UIListLayout")
tabLayout.FillDirection = Enum.FillDirection.Horizontal
tabLayout.Padding = UDim.new(0, 7)
tabLayout.VerticalAlignment = Enum.VerticalAlignment.Center
tabLayout.SortOrder = Enum.SortOrder.LayoutOrder
tabLayout.Parent = tabContainer
local navPad = Instance.new("UIPadding")
navPad.PaddingLeft = UDim.new(0, 2)
navPad.PaddingRight = UDim.new(0, 12)
navPad.Parent = tabContainer
local workspace = Instance.new("Frame")
workspace.Name = "Workspace"
workspace.Size = UDim2.new(1, -24, 1, -106)
workspace.Position = UDim2.new(0, 12, 0, 94)
workspace.BackgroundColor3 = THEME.Sidebar
workspace.BorderSizePixel = 0
workspace.ClipsDescendants = true
workspace.Parent = main
State.ContentArea = workspace
local workspaceCorner = Instance.new("UICorner")
workspaceCorner.CornerRadius = UDim.new(0, 10)
workspaceCorner.Parent = workspace
local workspaceStroke = Instance.new("UIStroke")
workspaceStroke.Color = Color3.fromRGB(48, 56, 64)
workspaceStroke.Transparency = 0.2
workspaceStroke.Thickness = 1
workspaceStroke.Parent = workspace
local dragging, dragStart, startPos = false, nil, nil
local function beginDrag(input)
if input.UserInputType ~= Enum.UserInputType.MouseButton1 and input.UserInputType ~= Enum.UserInputType.Touch then return end
dragging = true
dragStart = input.Position
startPos = main.Position
end
top.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
if input.Position.X < closeBtn.AbsolutePosition.X then beginDrag(input) end
end
end)
UserInputService.InputChanged:Connect(function(input)
if not dragging then return end
if input.UserInputType ~= Enum.UserInputType.MouseMovement and input.UserInputType ~= Enum.UserInputType.Touch then return end
local delta = input.Position - dragStart
main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end)
UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end
end)
local minimized = false
local normalSize = main.Size
State.ToggleMinimize = function()
minimized = not minimized
State.Minimized = minimized
if minimized then
normalSize = main.Size
TweenService:Create(main, TweenInfo.new(0.22, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Size = UDim2.fromOffset(300, 64)}):Play()
nav.Visible = false
workspace.Visible = false
status.Visible = false
closeBtn.Text = "+"
else
TweenService:Create(main, TweenInfo.new(0.22, Enum.EasingStyle.Quart, Enum.EasingDirection.Out), {Size = normalSize}):Play()
task.wait(0.1)
nav.Visible = true
workspace.Visible = true
status.Visible = true
closeBtn.Text = "−"
end
end
closeBtn.MouseButton1Click:Connect(State.ToggleMinimize)
UserInputService.InputBegan:Connect(function(input, gp)
if gp then return end
if input.KeyCode == Enum.KeyCode.CapsLock then State.ToggleMinimize() end
end)
local finalSize = UDim2.fromOffset(780, 500)
main.Size = UDim2.fromOffset(700, 440)
main.GroupTransparency = 1
main.Rotation = -1.2
uiScale.Scale = uiScale.Scale * 0.94
local openTween = TweenService:Create(main, TweenInfo.new(0.58, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {
Size = finalSize,
GroupTransparency = 0,
Rotation = 0,
})
TweenService:Create(uiScale, TweenInfo.new(0.62, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {Scale = uiScale.Scale / 0.94}):Play()
openTween:Play()
return UI
end
function UI.CreateTab(name)
if not State.TabContainer or not State.ContentArea then return end
local btn = Instance.new("TextButton")
btn.Name = name .. "Tab"
btn.Size = UDim2.fromOffset(math.clamp(#name * 7 + 28, 78, 132), 29)
btn.BackgroundColor3 = THEME.Element
btn.BackgroundTransparency = 1
btn.Text = ""
btn.BorderSizePixel = 0
btn.AutoButtonColor = false
btn.Parent = State.TabContainer
local bCorner = Instance.new("UICorner")
bCorner.CornerRadius = UDim.new(0, 7)
bCorner.Parent = btn
local tabStroke = Instance.new("UIStroke")
tabStroke.Color = THEME.Accent
tabStroke.Thickness = 1
tabStroke.Transparency = 1
tabStroke.Parent = btn
local tabScale = Instance.new("UIScale")
tabScale.Scale = 1
tabScale.Parent = btn
local label = Instance.new("TextLabel")
label.Size = UDim2.new(1, -12, 1, 0)
label.Position = UDim2.new(0, 6, 0, 0)
label.BackgroundTransparency = 1
label.Text = string.upper(name)
label.Font = Enum.Font.GothamBold
label.TextSize = 10
label.TextColor3 = THEME.TextDark
label.TextXAlignment = Enum.TextXAlignment.Center
label.Parent = btn
local indicator = Instance.new("Frame")
indicator.Size = UDim2.new(0.45, 0, 0, 2)
indicator.AnchorPoint = Vector2.new(0.5, 1)
indicator.Position = UDim2.new(0.5, 0, 1, -2)
indicator.BackgroundColor3 = THEME.Accent
indicator.BackgroundTransparency = 1
indicator.BorderSizePixel = 0
indicator.Parent = btn
local page = Instance.new("ScrollingFrame")
page.Name = name .. "Page"
page.Size = UDim2.new(1, -28, 1, -28)
page.Position = UDim2.new(0, 14, 0, 14)
page.BackgroundTransparency = 1
page.BorderSizePixel = 0
page.ScrollBarThickness = 3
page.ScrollBarImageColor3 = THEME.Accent
page.Visible = false
page.CanvasSize = UDim2.new(0, 0, 0, 0)
page.AutomaticCanvasSize = Enum.AutomaticSize.Y
page.Parent = State.ContentArea
local layout = Instance.new("UIListLayout")
layout.Padding = UDim.new(0, 8)
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Parent = page
local pad = Instance.new("UIPadding")
pad.PaddingRight = UDim.new(0, 8)
pad.PaddingBottom = UDim.new(0, 8)
pad.Parent = page
local function select()
for _, t in pairs(State.Tabs) do
TweenService:Create(t.Label, TweenInfo.new(0.14), {TextColor3 = THEME.TextDark}):Play()
TweenService:Create(t.Indicator, TweenInfo.new(0.14), {BackgroundTransparency = 1}):Play()
TweenService:Create(t.Button, TweenInfo.new(0.14), {BackgroundTransparency = 1}):Play()
local existingStroke = t.Button:FindFirstChildOfClass("UIStroke")
local existingScale = t.Button:FindFirstChildOfClass("UIScale")
if existingStroke then TweenService:Create(existingStroke, TweenInfo.new(0.14), {Transparency = 1}):Play() end
if existingScale then TweenService:Create(existingScale, TweenInfo.new(0.14), {Scale = 1}):Play() end
t.Page.Visible = false
end
TweenService:Create(label, TweenInfo.new(0.14), {TextColor3 = THEME.Text}):Play()
TweenService:Create(indicator, TweenInfo.new(0.14), {BackgroundTransparency = 0}):Play()
TweenService:Create(btn, TweenInfo.new(0.14), {BackgroundTransparency = 0.15}):Play()
TweenService:Create(tabStroke, TweenInfo.new(0.18), {Transparency = 0.5}):Play()
TweenService:Create(tabScale, TweenInfo.new(0.18, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {Scale = 1.025}):Play()
page.Visible = true
page.Position = UDim2.new(0, 22, 0, 14)
TweenService:Create(page, TweenInfo.new(0.22, Enum.EasingStyle.Quint, Enum.EasingDirection.Out), {
Position = UDim2.new(0, 14, 0, 14)
}):Play()
State.CurrentTab = name
end
btn.MouseButton1Click:Connect(select)
btn.MouseEnter:Connect(function()
if State.CurrentTab ~= name then
TweenService:Create(btn, TweenInfo.new(0.16), {BackgroundTransparency = 0.55}):Play()
TweenService:Create(label, TweenInfo.new(0.16), {TextColor3 = THEME.Text}):Play()
TweenService:Create(tabStroke, TweenInfo.new(0.16), {Transparency = 0.78}):Play()
TweenService:Create(tabScale, TweenInfo.new(0.16, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Scale = 1.035}):Play()
end
end)
btn.MouseLeave:Connect(function()
if State.CurrentTab ~= name then
TweenService:Create(btn, TweenInfo.new(0.16), {BackgroundTransparency = 1}):Play()
TweenService:Create(label, TweenInfo.new(0.16), {TextColor3 = THEME.TextDark}):Play()
TweenService:Create(tabStroke, TweenInfo.new(0.16), {Transparency = 1}):Play()
TweenService:Create(tabScale, TweenInfo.new(0.16), {Scale = 1}):Play()
end
end)
table.insert(State.Tabs, {Button = btn, Label = label, Indicator = indicator, Page = page, Select = select})
if #State.Tabs == 1 then select() end
return page
end
function UI.CreateSection(page, name)
local container = Instance.new("Frame")
container.Size = UDim2.new(1, 0, 0, 34)
container.BackgroundTransparency = 1
container.Parent = page
local marker = Instance.new("Frame")
marker.Size = UDim2.fromOffset(3, 13)
marker.Position = UDim2.new(0, 2, 0.5, -6)
marker.BackgroundColor3 = THEME.Accent
marker.BorderSizePixel = 0
marker.Parent = container
local markerCorner = Instance.new("UICorner")
markerCorner.CornerRadius = UDim.new(1, 0)
markerCorner.Parent = marker
local lbl = Instance.new("TextLabel")
lbl.Size = UDim2.new(1, -18, 1, 0)
lbl.Position = UDim2.new(0, 13, 0, 0)
lbl.BackgroundTransparency = 1
lbl.Text = string.upper(name)
lbl.Font = Enum.Font.GothamBold
lbl.TextSize = 10
lbl.TextColor3 = THEME.Text
lbl.TextXAlignment = Enum.TextXAlignment.Left
lbl.Parent = container
local line = Instance.new("Frame")
line.Size = UDim2.new(1, -16, 0, 1)
line.Position = UDim2.new(0, 8, 1, -1)
line.BackgroundColor3 = Color3.fromRGB(54, 62, 70)
line.BackgroundTransparency = 0.35
line.BorderSizePixel = 0
line.Parent = container
end
function UI.CreateToggle(page, text, flag, default, callback)
local frame = Instance.new("Frame")
frame.Size = UDim2.new(1, 0, 0, 35)
frame.BackgroundColor3 = THEME.Element
frame.BorderSizePixel = 0
frame.Parent = page
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 6); corner.Parent = frame
local hoverStroke = Instance.new("UIStroke")
hoverStroke.Color = THEME.Accent
hoverStroke.Thickness = 1
hoverStroke.Transparency = 1
hoverStroke.Parent = frame
frame.MouseEnter:Connect(function()
TweenService:Create(frame, TweenInfo.new(0.16, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {BackgroundColor3 = Color3.fromRGB(39, 47, 57)}):Play()
TweenService:Create(hoverStroke, TweenInfo.new(0.16), {Transparency = 0.72}):Play()
end)
frame.MouseLeave:Connect(function()
TweenService:Create(frame, TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {BackgroundColor3 = THEME.Element}):Play()
TweenService:Create(hoverStroke, TweenInfo.new(0.2), {Transparency = 1}):Play()
end)
local lbl = Instance.new("TextLabel")
lbl.Size = UDim2.new(1, -70, 1, 0)
lbl.Position = UDim2.new(0, 12, 0, 0)
lbl.BackgroundTransparency = 1
lbl.Text = text
lbl.Font = Enum.Font.GothamMedium
lbl.TextSize = 12
lbl.TextColor3 = THEME.Text
lbl.TextXAlignment = Enum.TextXAlignment.Left
lbl.Parent = frame
if Flags[flag] == nil then Flags[flag] = default end
local switch = Instance.new("Frame")
switch.Size = UDim2.fromOffset(44, 22)
switch.AnchorPoint = Vector2.new(1, 0.5)
switch.Position = UDim2.new(1, -12, 0.5, 0)
switch.BackgroundColor3 = Flags[flag] and THEME.Accent or Color3.fromRGB(55, 55, 62)
switch.BorderSizePixel = 0
switch.Parent = frame
local swCorner = Instance.new("UICorner")
swCorner.CornerRadius = UDim.new(1, 0); swCorner.Parent = switch
local knob = Instance.new("Frame")
knob.Size = UDim2.fromOffset(18, 18)
knob.AnchorPoint = Vector2.new(0, 0.5)
knob.Position = Flags[flag] and UDim2.new(1, -20, 0.5, 0) or UDim2.new(0, 2, 0.5, 0)
knob.BackgroundColor3 = Color3.fromRGB(240, 240, 245)
knob.BorderSizePixel = 0
knob.Parent = switch
local kCorner = Instance.new("UICorner")
kCorner.CornerRadius = UDim.new(1, 0); kCorner.Parent = knob
local clickArea = Instance.new("TextButton")
clickArea.Size = UDim2.new(1, 0, 1, 0)
clickArea.BackgroundTransparency = 1
clickArea.Text = ""
clickArea.Parent = switch
local function updateVisuals(state)
TweenService:Create(switch, TweenInfo.new(0.15), {
BackgroundColor3 = state and THEME.Accent or Color3.fromRGB(55, 55, 62),
}):Play()
TweenService:Create(knob, TweenInfo.new(0.15), {
Position = state and UDim2.new(1, -20, 0.5, 0) or UDim2.new(0, 2, 0.5, 0),
}):Play()
end
State.Updaters[flag] = function(state)
updateVisuals(state)
if callback then pcall(callback, state) end
end
clickArea.MouseButton1Click:Connect(function()
Flags[flag] = not Flags[flag]
updateVisuals(Flags[flag])
if callback then pcall(callback, Flags[flag]) end
end)
end
function UI.CreateNumericInput(page, text, flag, default, minV, maxV, step, unit, callback, lockable)
local frame = Instance.new("Frame")
frame.Size = UDim2.new(1, 0, 0, 46)
frame.BackgroundColor3 = THEME.Element
frame.BorderSizePixel = 0
frame.Parent = page
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 6); corner.Parent = frame
local lbl = Instance.new("TextLabel")
lbl.Size = UDim2.new(0.55, lockable and -42 or -12, 1, 0)
lbl.Position = UDim2.new(0, 12, 0, 0)
lbl.BackgroundTransparency = 1
lbl.Text = text
lbl.Font = Enum.Font.GothamMedium
lbl.TextSize = 12
lbl.TextColor3 = THEME.Text
lbl.TextXAlignment = Enum.TextXAlignment.Left
lbl.Parent = frame
if lockable then
local locked = Flags[flag .. "/Locked"] == true
local lockBtn = Instance.new("TextButton")
lockBtn.Name = "Lock"
lockBtn.Size = UDim2.fromOffset(24, 24)
lockBtn.AnchorPoint = Vector2.new(1, 0.5)
lockBtn.Position = UDim2.new(0.6, -12, 0.5, 0)
lockBtn.BackgroundTransparency = 1
lockBtn.Text = locked and "🔒" or "🔓"
lockBtn.Font = Enum.Font.GothamBold
lockBtn.TextSize = 14
lockBtn.TextColor3 = locked and THEME.Accent or THEME.TextDark
lockBtn.Parent = frame
State.Updaters[flag .. "/Locked"] = function(state)
local l = state == true
Flags[flag .. "/Locked"] = l
SafeSet(lockBtn, "TextColor3", l and THEME.Accent or THEME.TextDark)
SafeSet(lockBtn, "Text", l and "🔒" or "🔓")
end
lockBtn.MouseButton1Click:Connect(function()
Flags[flag .. "/Locked"] = not Flags[flag .. "/Locked"]
local l = Flags[flag .. "/Locked"]
SafeSet(lockBtn, "TextColor3", l and THEME.Accent or THEME.TextDark)
SafeSet(lockBtn, "Text", l and "🔒" or "🔓")
end)
end
local inputFrame = Instance.new("Frame")
inputFrame.Size = UDim2.new(0.45, -12, 0, 30)
inputFrame.Position = UDim2.new(1, -12, 0.5, 0)
inputFrame.AnchorPoint = Vector2.new(1, 0.5)
inputFrame.BackgroundColor3 = Color3.fromRGB(48, 48, 55)
inputFrame.BorderSizePixel = 0
inputFrame.Parent = frame
local ifCorner = Instance.new("UICorner")
ifCorner.CornerRadius = UDim.new(0, 6); ifCorner.Parent = inputFrame
if Flags[flag] == nil and not flag:match("^Humanoid/") then
Flags[flag] = default
end
local box = Instance.new("TextBox")
box.Size = UDim2.new(1, -50, 1, 0)
box.Position = UDim2.new(0, 25, 0, 0)
box.BackgroundTransparency = 1
box.Text = tostring(Flags[flag] ~= nil and Flags[flag] or default) .. (unit or "")
box.Font = Enum.Font.GothamBold
box.TextSize = 12
box.TextColor3 = THEME.Accent
box.ClearTextOnFocus = false
box.Parent = inputFrame
local function commit(val, isUser)
val = math.clamp(tonumber(val) or (Flags[flag] or default), minV, maxV)
if step and step > 0 then
val = math.floor(val / step + 0.5) * step
end
Flags[flag] = val
box.Text = tostring(val) .. (unit or "")
if isUser then
if callback then pcall(callback, val) end
end
end
State.Updaters[flag] = function(val)
if not box:IsFocused() then
val = math.clamp(tonumber(val) or default, minV, maxV)
box.Text = tostring(val) .. (unit or "")
if callback then pcall(callback, val) end
end
end
box.FocusLost:Connect(function()
commit((box.Text:gsub("[^%d%.%-]", "")), true)
end)
local minus = Instance.new("TextButton")
minus.Size = UDim2.new(0, 25, 1, 0)
minus.BackgroundTransparency = 1
minus.Text = "−"
minus.Font = Enum.Font.GothamBold
minus.TextSize = 16
minus.TextColor3 = THEME.TextDark
minus.Parent = inputFrame
minus.MouseButton1Click:Connect(function() commit((Flags[flag] or default) - (step or 1), true) end)
local plus = Instance.new("TextButton")
plus.Size = UDim2.new(0, 25, 1, 0)
plus.Position = UDim2.new(1, -25, 0, 0)
plus.BackgroundTransparency = 1
plus.Text = "+"
plus.Font = Enum.Font.GothamBold
plus.TextSize = 16
plus.TextColor3 = THEME.TextDark
plus.Parent = inputFrame
plus.MouseButton1Click:Connect(function() commit((Flags[flag] or default) + (step or 1), true) end)
end
function UI.CreateButton(page, text, callback)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, 0, 0, 34)
btn.BackgroundColor3 = THEME.Accent
btn.BackgroundTransparency = 0.15
btn.Text = text
btn.Font = Enum.Font.GothamBold
btn.TextSize = 12
btn.TextColor3 = Color3.fromRGB(20, 20, 22)
btn.BorderSizePixel = 0
btn.Parent = page
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 6); corner.Parent = btn
local stroke = Instance.new("UIStroke")
stroke.Color = THEME.Accent; stroke.Thickness = 1
stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
stroke.Transparency = 0.28
stroke.Parent = btn
local gradient = Instance.new("UIGradient")
gradient.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, THEME.Accent),
ColorSequenceKeypoint.new(0.5, Color3.fromRGB(115, 190, 207)),
ColorSequenceKeypoint.new(1, THEME.Accent),
})
gradient.Rotation = 0
gradient.Parent = btn
btn.MouseEnter:Connect(function()
TweenService:Create(btn, TweenInfo.new(0.16, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {BackgroundTransparency = 0, TextSize = 12}):Play()
TweenService:Create(stroke, TweenInfo.new(0.16), {Transparency = 0.02, Thickness = 1.35}):Play()
TweenService:Create(gradient, TweenInfo.new(0.45, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {Rotation = 18}):Play()
end)
btn.MouseLeave:Connect(function()
TweenService:Create(btn, TweenInfo.new(0.2), {BackgroundTransparency = 0.15}):Play()
TweenService:Create(stroke, TweenInfo.new(0.2), {Transparency = 0.28, Thickness = 1}):Play()
TweenService:Create(gradient, TweenInfo.new(0.45), {Rotation = 0}):Play()
end)
btn.MouseButton1Click:Connect(function()
TweenService:Create(btn, TweenInfo.new(0.08), {Size = UDim2.new(1, -6, 0, 30)}):Play()
task.wait(0.06)
TweenService:Create(btn, TweenInfo.new(0.08), {Size = UDim2.new(1, 0, 0, 34)}):Play()
if callback then pcall(callback) end
end)
end
-- ══════════════════════════════════════════════════════════════════
-- HITBOX EXPANDER MODULE (adapted from supplied logic)
-- ══════════════════════════════════════════════════════════════════
local HitboxState = { Original = {}, Hooks = {} }
local function HitboxRemember(part)
if not HitboxState.Original[part] then
HitboxState.Original[part] = {Size = part.Size, Transparency = part.Transparency}
end
end
local function HitboxRestoreCharacter(char)
if not char then return end
for _, part in ipairs(char:GetDescendants()) do
local original = HitboxState.Original[part]
if part:IsA("BasePart") and original then
pcall(function() part.Size = original.Size; part.Transparency = original.Transparency end)
HitboxState.Original[part] = nil
end
end
local viz = char:FindFirstChild("AxiomHitboxViz")
if viz then viz:Destroy() end
end
local function HitboxApplyCharacter(char)
if not Flags["Hitbox/Enabled"] or not char then return end
local player = Players:GetPlayerFromCharacter(char)
if not player or (player == LocalPlayer and not Flags["Hitbox/IncludeSelf"]) then return end
local parts = {}
if Flags["Hitbox/AllParts"] then
for _, part in ipairs(char:GetDescendants()) do
if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then table.insert(parts, part) end
end
local hrp = char:FindFirstChild("HumanoidRootPart")
if hrp then table.insert(parts, hrp) end
else
local hrp = char:FindFirstChild("HumanoidRootPart")
if hrp then table.insert(parts, hrp) end
end
for _, part in ipairs(parts) do
HitboxRemember(part)
pcall(function()
part.Size = Vector3.new(Flags["Hitbox/Size"], Flags["Hitbox/Size"], Flags["Hitbox/Size"])
part.Transparency = Flags["Hitbox/Transparency"]
end)
end
local viz = char:FindFirstChild("AxiomHitboxViz")
if Flags["Hitbox/Visualizer"] then
if not viz then
viz = Instance.new("Highlight")
viz.Name = "AxiomHitboxViz"
viz.FillColor = THEME.Accent
viz.FillTransparency = 0.55
viz.OutlineColor = THEME.Accent
viz.OutlineTransparency = 0.05
viz.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
viz.Adornee = char
viz.Parent = char
end
elseif viz then viz:Destroy() end
end
local function HitboxRestoreAll()
for _, player in ipairs(Players:GetPlayers()) do
if player.Character then HitboxRestoreCharacter(player.Character) end
end
for part, original in pairs(HitboxState.Original) do
if part and part.Parent then
pcall(function() part.Size = original.Size; part.Transparency = original.Transparency end)
end
end
table.clear(HitboxState.Original)
end
local function HitboxRefreshAll()
HitboxRestoreAll()
if Flags["Hitbox/Enabled"] then
for _, player in ipairs(Players:GetPlayers()) do
if player.Character then HitboxApplyCharacter(player.Character) end
end
end
end
local function HitboxSetEnabled(enabled)
Flags["Hitbox/Enabled"] = enabled
if enabled then
HitboxRefreshAll()
Notify("Hitbox", "Hitbox expander enabled.")
else
HitboxRestoreAll()
Notify("Hitbox", "Original hitboxes restored.")
end
end
for _, player in ipairs(Players:GetPlayers()) do
player.CharacterAdded:Connect(function(char)
task.wait(0.35)
if Flags["Hitbox/Enabled"] then HitboxApplyCharacter(char) end
end)
end
Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function(char)
task.wait(0.35)
if Flags["Hitbox/Enabled"] then HitboxApplyCharacter(char) end
end)
end)
-- ══════════════════════════════════════════════════════════════════
-- BUILD UI
-- ══════════════════════════════════════════════════════════════════
UI.CreateWindow("Axiom")
-- ── Tab: Aim ─────────────────────────────────────────────────────
local aimTab = UI.CreateTab("Aim")
UI.CreateSection(aimTab, "Aim Assist")
UI.CreateToggle(aimTab, "Enable Aimlock", "Aim/AimLock", Flags["Aim/AimLock"], function(state)
Notify("Aim", state and "Aimlock enabled." or "Aimlock disabled.")
if not state then ClearAimLockState(true) end
end)
UI.CreateToggle(aimTab, "Ignore Teammates", "Aim/TeamCheck", Flags["Aim/TeamCheck"])
UI.CreateToggle(aimTab, "Visibility Check (Raycast)", "Aim/VisibilityCheck", Flags["Aim/VisibilityCheck"])
UI.CreateNumericInput(aimTab, "Attraction Strength", "Aim/AttractionStrength",
Flags["Aim/AttractionStrength"], 0, 500, 10, "%")
UI.CreateNumericInput(aimTab, "FOV Radius", "Aim/FOV/Radius",
Flags["Aim/FOV/Radius"], 0, 500, 5, "px")
UI.CreateToggle(aimTab, "Show FOV Circle", "Aim/FOV/ShowCircle", Flags["Aim/FOV/ShowCircle"])
UI.CreateSection(aimTab, "Dampening")
UI.CreateToggle(aimTab, "Enable Dampening", "Aim/Dampening", Flags["Aim/Dampening"])
UI.CreateNumericInput(aimTab, "Dampening Threshold", "Aim/Dampening/Threshold",
Flags["Aim/Dampening/Threshold"], 0, 500, 5, "px")
UI.CreateNumericInput(aimTab, "Dampening Min Strength", "Aim/Dampening/Strength",
Flags["Aim/Dampening/Strength"], 0, 100, 1, "%")
UI.CreateSection(aimTab, "Target Zone Selector")
do
local TargetArea = Instance.new("Frame")
TargetArea.Name = "TargetArea"
TargetArea.Size = UDim2.new(1, 0, 0, 220)
TargetArea.BackgroundTransparency = 1
TargetArea.Parent = aimTab
local PriorityLabel = Instance.new("TextLabel")
PriorityLabel.Name = "PriorityLabel"
PriorityLabel.Size = UDim2.new(1, 0, 0, 25)
PriorityLabel.Position = UDim2.new(0, 0, 0, 0)
PriorityLabel.BackgroundTransparency = 1
PriorityLabel.Text = "Selected: Head"
PriorityLabel.Font = Enum.Font.GothamBold
PriorityLabel.TextSize = 14
PriorityLabel.TextColor3 = THEME.Text
PriorityLabel.Parent = TargetArea
local HumanoidRoot = Instance.new("Frame")
HumanoidRoot.Name = "HumanoidRoot"
HumanoidRoot.Size = UDim2.fromOffset(100, 180)
HumanoidRoot.Position = UDim2.new(0.5, 0, 0.5, 15)
HumanoidRoot.AnchorPoint = Vector2.new(0.5, 0.5)
HumanoidRoot.BackgroundTransparency = 1
HumanoidRoot.Parent = TargetArea
local function UpdatePriorityLabel()
local selected = {}
for cat, on in pairs(Flags["Aim/TargetGroups"]) do
if on then table.insert(selected, cat) end
end
if #selected == 0 or #selected == 6 then
PriorityLabel.Text = "Selected: All body parts"
else
PriorityLabel.Text = "Selected: " .. table.concat(selected, ", ")
end
end
local function CreatePart(name, size, pos, flagKey)
local Part = Instance.new("TextButton")
Part.Name = name
Part.Size = size
Part.Position = pos
Part.BackgroundColor3 = Color3.fromRGB(255, 80, 80)
Part.BackgroundTransparency = Flags["Aim/TargetGroups"][flagKey] and 0 or 1
Part.BorderSizePixel = 0
Part.Text = ""
Part.Parent = HumanoidRoot
local PartStroke = Instance.new("UIStroke")
PartStroke.Color = Color3.fromRGB(255, 255, 255)
PartStroke.Thickness = 1
PartStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
PartStroke.Parent = Part
Part.MouseButton1Click:Connect(function()
Flags["Aim/TargetGroups"][flagKey] = not Flags["Aim/TargetGroups"][flagKey]
Part.BackgroundTransparency = Flags["Aim/TargetGroups"][flagKey] and 0 or 1
UpdatePriorityLabel()
end)
return Part
end
local Head = CreatePart("Head", UDim2.fromOffset(30, 30), UDim2.new(0.5, 0, 0, 0), "Head")
Head.AnchorPoint = Vector2.new(0.5, 0)
local HeadCorner = Instance.new("UICorner", Head)
HeadCorner.CornerRadius = UDim.new(1, 0)
local Torso = CreatePart("Torso", UDim2.fromOffset(40, 60), UDim2.new(0.5, 0, 0, 35), "Torso")
Torso.AnchorPoint = Vector2.new(0.5, 0)
local LeftArm = CreatePart("LeftArm", UDim2.fromOffset(20, 60), UDim2.new(0.5, -25, 0, 35), "LeftArm")
LeftArm.AnchorPoint = Vector2.new(1, 0)
local RightArm = CreatePart("RightArm", UDim2.fromOffset(20, 60), UDim2.new(0.5, 25, 0, 35), "RightArm")
RightArm.AnchorPoint = Vector2.new(0, 0)
local LeftLeg = CreatePart("LeftLeg", UDim2.fromOffset(18, 70), UDim2.new(0.5, -2, 0, 100), "LeftLeg")
LeftLeg.AnchorPoint = Vector2.new(1, 0)
local RightLeg = CreatePart("RightLeg", UDim2.fromOffset(18, 70), UDim2.new(0.5, 2, 0, 100), "RightLeg")
RightLeg.AnchorPoint = Vector2.new(0, 0)
UpdatePriorityLabel()
end
-- ── Tab: ESP ─────────────────────────────────────────────────────
local espTab = UI.CreateTab("ESP")
UI.CreateSection(espTab, "ESP")
UI.CreateToggle(espTab, "Enable ESP", "ESP/Enabled", Flags["ESP/Enabled"], function(state)
Notify("ESP", state and "ESP enabled." or "ESP disabled.")
if not state then
for _, data in pairs(ESP.Objects) do
SafeSet(data.Nametag, "Enabled", false)
if data.Highlight then SafeSet(data.Highlight, "Enabled", false) end
end
end
end)
UI.CreateToggle(espTab, "Show Username", "ESP/ShowUsername", Flags["ESP/ShowUsername"])
UI.CreateToggle(espTab, "Color By Role", "ESP/ColorByRole", Flags["ESP/ColorByRole"])
UI.CreateToggle(espTab, "Hide Teammates", "ESP/TeamCheck", Flags["ESP/TeamCheck"])
UI.CreateNumericInput(espTab, "Max Distance", "ESP/MaxDistance", Flags["ESP/MaxDistance"], 50, 10000, 50, "m")
UI.CreateSection(espTab, "Player Info")
UI.CreateToggle(espTab, "Show Health", "ESP/HealthIndicator", Flags["ESP/HealthIndicator"])
UI.CreateToggle(espTab, "Show Distance", "ESP/ShowDistance", Flags["ESP/ShowDistance"])
UI.CreateToggle(espTab, "Show Equipped", "ESP/ShowEquipped", Flags["ESP/ShowEquipped"])
UI.CreateSection(espTab, "2D Box & Health Bar")
UI.CreateToggle(espTab, "Enable Box ESP", "ESP/BoxEnabled", Flags["ESP/BoxEnabled"])
UI.CreateToggle(espTab, "Enable Health Bar", "ESP/HealthBarEnabled", Flags["ESP/HealthBarEnabled"])
UI.CreateToggle(espTab, "Vertical Health Bar (outside left edge)", "ESP/HealthBarVertical", Flags["ESP/HealthBarVertical"])
UI.CreateSection(espTab, "Highlight")
UI.CreateToggle(espTab, "Enable Highlight", "ESP/HighlightEnabled", Flags["ESP/HighlightEnabled"], function(state)
for _, data in pairs(ESP.Objects) do
if data.Highlight then SafeSet(data.Highlight, "Enabled", state) end
end
end)
UI.CreateNumericInput(espTab, "Fill Transparency", "ESP/HighlightFillAlpha",
Flags["ESP/HighlightFillAlpha"], 0, 1, 0.05, "", function(val)
for _, data in pairs(ESP.Objects) do
if data.Highlight then SafeSet(data.Highlight, "FillTransparency", val) end
end
end)
UI.CreateNumericInput(espTab, "Outline Transparency", "ESP/HighlightOutlineAlpha",
Flags["ESP/HighlightOutlineAlpha"], 0, 1, 0.05, "", function(val)
for _, data in pairs(ESP.Objects) do
if data.Highlight then SafeSet(data.Highlight, "OutlineTransparency", val) end
end
end)
UI.CreateSection(espTab, "Legend")
do
local legend = Instance.new("Frame")
legend.Size = UDim2.new(1, 0, 0, 120)
legend.BackgroundColor3 = THEME.Element
legend.BorderSizePixel = 0
legend.Parent = espTab
local lCorner = Instance.new("UICorner")
lCorner.CornerRadius = UDim.new(0, 6); lCorner.Parent = legend
local roles = {
{"Guard", ROLE_COLORS.Guard},
{"Inmate", ROLE_COLORS.Inmate},
{"Criminal", ROLE_COLORS.Criminal},
{"Neutral", ROLE_COLORS.Neutral},
}
for i, data in ipairs(roles) do
local dot = Instance.new("Frame")
dot.Size = UDim2.fromOffset(10, 10)
dot.Position = UDim2.fromOffset(16, 14 + (i - 1) * 24)
dot.BackgroundColor3 = data[2]
dot.BorderSizePixel = 0
dot.Parent = legend
local dCorner = Instance.new("UICorner")
dCorner.CornerRadius = UDim.new(1, 0); dCorner.Parent = dot
local lbl = Instance.new("TextLabel")
lbl.Size = UDim2.new(1, -40, 0, 16)
lbl.Position = UDim2.fromOffset(34, 12 + (i - 1) * 24)
lbl.BackgroundTransparency = 1
lbl.Text = data[1]
lbl.Font = Enum.Font.GothamMedium
lbl.TextSize = 12
lbl.TextColor3 = THEME.Text
lbl.TextXAlignment = Enum.TextXAlignment.Left
lbl.Parent = legend
end
end
-- ── Tab: Humanoid ────────────────────────────────────────────────
local humanoidTab = UI.CreateTab("Humanoid")
UI.CreateSection(humanoidTab, "Movement")
UI.CreateNumericInput(humanoidTab, "Walk Speed", "Humanoid/WalkSpeed",
16, 0, 500, 1, nil,
function(v)
local char = LocalPlayer.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
if hum then pcall(function() hum.WalkSpeed = v end) end
end,
true)
UI.CreateNumericInput(humanoidTab, "Jump Power", "Humanoid/JumpPower",
50, 0, 500, 1, nil,
function(v)
local char = LocalPlayer.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
if hum then pcall(function() hum.JumpPower = v end) end
end,
true)
UI.CreateNumericInput(humanoidTab, "Jump Height", "Humanoid/JumpHeight",
7.2, 0, 500, 0.5, nil,
function(v)
local char = LocalPlayer.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
if hum then pcall(function() hum.JumpHeight = v end) end
end,
true)
UI.CreateNumericInput(humanoidTab, "Hip Height", "Humanoid/HipHeight",
2, 0, 100, 0.5, nil,
function(v)
local char = LocalPlayer.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
if hum then pcall(function() hum.HipHeight = v end) end
end,
true)
UI.CreateSection(humanoidTab, "Health")
UI.CreateNumericInput(humanoidTab, "Max Health", "Humanoid/MaxHealth",
100, 0, 2000, 1, nil,
function(v)
local char = LocalPlayer.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
if hum then pcall(function() hum.MaxHealth = v end) end
end,
true)
-- ── Tab: Noclip ──────────────────────────────────────────────────
local noclipTab = UI.CreateTab("Noclip")
UI.CreateSection(noclipTab, "Noclip")
UI.CreateToggle(noclipTab, "Enable Noclip", "Noclip/Enabled", Flags["Noclip/Enabled"], function(state)
if state then
Notify("Noclip", "Noclip enabled — scanning walls...")
task.spawn(function()
ScanAndBreak()
Notify("Noclip", "Done. Broken: " .. tostring(Noclip.BrokenCount))
end)
else
Notify("Noclip", "Noclip disabled — restoring walls.")
RestoreAll()
end
end)
UI.CreateNumericInput(noclipTab, "Radius", "Noclip/Radius", Flags["Noclip/Radius"], 50, 2000, 25, "m")
UI.CreateToggle(noclipTab, "Include Anchored (Walls)", "Noclip/IncludeAnchored", Flags["Noclip/IncludeAnchored"])
UI.CreateToggle(noclipTab, "Include Unanchored (Objects)", "Noclip/IncludeUnanchored", Flags["Noclip/IncludeUnanchored"])
UI.CreateSection(noclipTab, "Actions")
UI.CreateButton(noclipTab, "Force Rescan Now", function()
if Flags["Noclip/Enabled"] then
task.spawn(function()
ScanAndBreak()
Notify("Noclip", "Rescan done. Broken: " .. tostring(Noclip.BrokenCount))
end)
else
Notify("Noclip", "Enable Noclip first.")
end
end)
UI.CreateButton(noclipTab, "Restore All", function()
RestoreAll()
Notify("Noclip", "All walls restored.")
end)
-- ── Tab: Hitbox ──────────────────────────────────────────────────
local hitboxTab = UI.CreateTab("Hitbox")
UI.CreateSection(hitboxTab, "Hitbox Expander")
UI.CreateToggle(hitboxTab, "Enable Hitbox Expander", "Hitbox/Enabled", Flags["Hitbox/Enabled"], HitboxSetEnabled)
UI.CreateNumericInput(hitboxTab, "Hitbox Size", "Hitbox/Size", Flags["Hitbox/Size"], 1, 200, 1, " studs", function(v)
if Flags["Hitbox/Enabled"] then HitboxRefreshAll() end
end)
UI.CreateNumericInput(hitboxTab, "Transparency", "Hitbox/Transparency", Flags["Hitbox/Transparency"], 0, 1, 0.05, "", function(v)
if Flags["Hitbox/Enabled"] then HitboxRefreshAll() end
end)
UI.CreateToggle(hitboxTab, "Expand All Body Parts", "Hitbox/AllParts", Flags["Hitbox/AllParts"], function()
if Flags["Hitbox/Enabled"] then HitboxRefreshAll() end
end)
UI.CreateToggle(hitboxTab, "Include Local Character", "Hitbox/IncludeSelf", Flags["Hitbox/IncludeSelf"], function()
if Flags["Hitbox/Enabled"] then HitboxRefreshAll() end
end)
UI.CreateToggle(hitboxTab, "Show Hitbox Visualizer", "Hitbox/Visualizer", Flags["Hitbox/Visualizer"], function()
if Flags["Hitbox/Enabled"] then HitboxRefreshAll() end
end)
UI.CreateSection(hitboxTab, "Actions")
UI.CreateButton(hitboxTab, "Reapply Current Settings", function() HitboxRefreshAll() end)
UI.CreateButton(hitboxTab, "Restore Original Hitboxes", function() HitboxSetEnabled(false) end)
-- ══════════════════════════════════════════════════════════════════
-- TAB: TELEPORT
-- ══════════════════════════════════════════════════════════════════
local teleportTab = UI.CreateTab("Teleport")
-- ── Preset buttons ──
UI.CreateSection(teleportTab, "Preset Locations")
local presetList = Instance.new("Frame")
presetList.Name = "PresetList"
presetList.Size = UDim2.new(1, 0, 0, 0)
presetList.AutomaticSize = Enum.AutomaticSize.Y
presetList.BackgroundTransparency = 1
presetList.Parent = teleportTab
local plLayout = Instance.new("UIListLayout")
plLayout.Padding = UDim.new(0, 4)
plLayout.SortOrder = Enum.SortOrder.LayoutOrder
plLayout.Parent = presetList
for i, loc in ipairs(TELEPORT_PRESETS) do
local btn = Instance.new("TextButton")
btn.Name = "Preset_" .. i
btn.Size = UDim2.new(1, 0, 0, 32)
btn.BackgroundColor3 = THEME.Element
btn.Text = string.format("%s (%.0f, %.0f, %.0f)", loc.name, loc.pos.X, loc.pos.Y, loc.pos.Z)
btn.Font = Enum.Font.GothamMedium
btn.TextSize = 11
btn.TextColor3 = THEME.Text
btn.BorderSizePixel = 0
btn.LayoutOrder = i
btn.Parent = presetList
local bCorner = Instance.new("UICorner")
bCorner.CornerRadius = UDim.new(0, 6); bCorner.Parent = btn
local bStroke = Instance.new("UIStroke")
bStroke.Color = THEME.Accent; bStroke.Thickness = 1
bStroke.Transparency = 0.7
bStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
bStroke.Parent = btn
btn.MouseButton1Click:Connect(function()
TeleportToPosition(loc.pos)
end)
end
-- ── Save current location ──
UI.CreateSection(teleportTab, "Save Current Location")
local saveFrame = Instance.new("Frame")
saveFrame.Size = UDim2.new(1, 0, 0, 42)
saveFrame.BackgroundColor3 = THEME.Element
saveFrame.BorderSizePixel = 0
saveFrame.Parent = teleportTab
local sfCorner = Instance.new("UICorner")
sfCorner.CornerRadius = UDim.new(0, 6); sfCorner.Parent = saveFrame
local saveInput = Instance.new("TextBox")
saveInput.Name = "SaveName"
saveInput.Size = UDim2.new(1, -110, 0, 30)
saveInput.Position = UDim2.new(0, 8, 0, 6)
saveInput.BackgroundColor3 = Color3.fromRGB(48, 48, 55)
saveInput.BorderSizePixel = 0
saveInput.PlaceholderText = "Location name..."
saveInput.Text = ""
saveInput.Font = Enum.Font.GothamMedium
saveInput.TextSize = 12
saveInput.TextColor3 = THEME.Text
saveInput.ClearTextOnFocus = false
saveInput.Parent = saveFrame
local siCorner = Instance.new("UICorner")
siCorner.CornerRadius = UDim.new(0, 6); siCorner.Parent = saveInput
local saveBtn = Instance.new("TextButton")
saveBtn.Name = "SaveBtn"
saveBtn.Size = UDim2.new(0, 95, 0, 30)
saveBtn.Position = UDim2.new(1, -103, 0, 6)
saveBtn.BackgroundColor3 = THEME.Success
saveBtn.Text = "💾 Save"
saveBtn.Font = Enum.Font.GothamBold
saveBtn.TextSize = 12
saveBtn.TextColor3 = Color3.fromRGB(20, 20, 22)
saveBtn.BorderSizePixel = 0
saveBtn.Parent = saveFrame
local sbCorner = Instance.new("UICorner")
sbCorner.CornerRadius = UDim.new(0, 6); sbCorner.Parent = saveBtn
-- Saved locations list
UI.CreateSection(teleportTab, "Saved Locations")
local savedListFrame = Instance.new("Frame")
savedListFrame.Name = "SavedList"
savedListFrame.Size = UDim2.new(1, 0, 0, 0)
savedListFrame.AutomaticSize = Enum.AutomaticSize.Y
savedListFrame.BackgroundTransparency = 1
savedListFrame.Parent = teleportTab
local slLayout = Instance.new("UIListLayout")
slLayout.Padding = UDim.new(0, 4)
slLayout.SortOrder = Enum.SortOrder.LayoutOrder
slLayout.Parent = savedListFrame
local function RefreshSavedList()
for _, ch in ipairs(savedListFrame:GetChildren()) do
if not ch:IsA("UIListLayout") then ch:Destroy() end
end
local count = 0
local sortedNames = {}
for name, _ in pairs(SavedLocations) do
table.insert(sortedNames, name)
end
table.sort(sortedNames)
for i, name in ipairs(sortedNames) do
local posTable = SavedLocations[name]
count = count + 1
local row = Instance.new("Frame")
row.Size = UDim2.new(1, 0, 0, 36)
row.BackgroundColor3 = THEME.Element
row.BorderSizePixel = 0
row.LayoutOrder = i
row.Parent = savedListFrame
local rCorner = Instance.new("UICorner")
rCorner.CornerRadius = UDim.new(0, 6); rCorner.Parent = row
local nameLbl = Instance.new("TextLabel")
nameLbl.Size = UDim2.new(1, -130, 1, 0)
nameLbl.Position = UDim2.new(0, 10, 0, 0)
nameLbl.BackgroundTransparency = 1
nameLbl.Text = name
nameLbl.Font = Enum.Font.GothamMedium
nameLbl.TextSize = 12
nameLbl.TextColor3 = THEME.Text
nameLbl.TextXAlignment = Enum.TextXAlignment.Left
nameLbl.Parent = row
local goBtn = Instance.new("TextButton")
goBtn.Size = UDim2.new(0, 65, 0, 26)
goBtn.Position = UDim2.new(1, -100, 0.5, -13)
goBtn.BackgroundColor3 = THEME.Accent
goBtn.Text = "GO"
goBtn.Font = Enum.Font.GothamBold
goBtn.TextSize = 11
goBtn.TextColor3 = Color3.fromRGB(20, 20, 22)
goBtn.BorderSizePixel = 0
goBtn.Parent = row
local gCorner = Instance.new("UICorner")
gCorner.CornerRadius = UDim.new(0, 6); gCorner.Parent = goBtn
goBtn.MouseButton1Click:Connect(function()
local v3 = Vector3.new(posTable.X, posTable.Y, posTable.Z)
TeleportToPosition(v3)
end)
local delBtn = Instance.new("TextButton")
delBtn.Size = UDim2.new(0, 26, 0, 26)
delBtn.Position = UDim2.new(1, -30, 0.5, -13)
delBtn.BackgroundColor3 = Color3.fromRGB(70, 30, 30)
delBtn.Text = "✕"
delBtn.Font = Enum.Font.GothamBold
delBtn.TextSize = 13
delBtn.TextColor3 = Color3.fromRGB(230, 100, 100)
delBtn.BorderSizePixel = 0
delBtn.Parent = row
local dCorner = Instance.new("UICorner")
dCorner.CornerRadius = UDim.new(0, 6); dCorner.Parent = delBtn
delBtn.MouseButton1Click:Connect(function()
SavedLocations[name] = nil
SaveLocationsToDisk()
RefreshSavedList()
Notify("Teleport", "Deleted '" .. name .. "'")
end)
end
if count == 0 then
local emptyLbl = Instance.new("TextLabel")
emptyLbl.Size = UDim2.new(1, 0, 0, 30)
emptyLbl.BackgroundTransparency = 1
emptyLbl.Text = "No saved locations yet."
emptyLbl.Font = Enum.Font.Gotham
emptyLbl.TextSize = 11
emptyLbl.TextColor3 = THEME.TextDark
emptyLbl.LayoutOrder = 1
emptyLbl.Parent = savedListFrame
end
end
saveBtn.MouseButton1Click:Connect(function()
local name = saveInput.Text
name = tostring(name or ""):gsub("^%s+", ""):gsub("%s+$", "")
if name == "" then
Notify("Teleport", "Please enter a name.")
return
end
local pos = GetCurrentPosition()
if not pos then
Notify("Teleport", "Could not read current position.")
return
end
SavedLocations[name] = { X = pos.X, Y = pos.Y, Z = pos.Z }
SaveLocationsToDisk()
saveInput.Text = ""
RefreshSavedList()
Notify("Teleport", string.format("Saved '%s'", name))
end)
RefreshSavedList()
-- ══════════════════════════════════════════════════════════════════
-- TAB: GOTO PLAYERS
-- ══════════════════════════════════════════════════════════════════
local gotoPlayersTab = UI.CreateTab("Go-To Players")
-- Filter row
UI.CreateSection(gotoPlayersTab, "Filter Roles")
local filterFrame = Instance.new("Frame")
filterFrame.Size = UDim2.new(1, 0, 0, 36)
filterFrame.BackgroundColor3 = THEME.Element
filterFrame.BorderSizePixel = 0
filterFrame.Parent = gotoPlayersTab
local ffCorner = Instance.new("UICorner")
ffCorner.CornerRadius = UDim.new(0, 6); ffCorner.Parent = filterFrame
local filterLayout = Instance.new("UIListLayout")
filterLayout.FillDirection = Enum.FillDirection.Horizontal
filterLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
filterLayout.VerticalAlignment = Enum.VerticalAlignment.Center
filterLayout.Padding = UDim.new(0, 3)
filterLayout.Parent = filterFrame
local RoleFilter = {
Guard = true,
Inmate = true,
Criminal = true,
Neutral = true,
Unknown = true,
}
local RefreshGotoListRef = nil
for _, roleName in ipairs({"Guard", "Inmate", "Criminal", "Neutral", "Unknown"}) do
local fBtn = Instance.new("TextButton")
fBtn.Size = UDim2.fromOffset(70, 26)
fBtn.BackgroundColor3 = ROLE_COLORS[roleName]
fBtn.BackgroundTransparency = RoleFilter[roleName] and 0 or 0.7
fBtn.Text = roleName
fBtn.Font = Enum.Font.GothamBold
fBtn.TextSize = 10
fBtn.TextColor3 = Color3.fromRGB(20, 20, 22)
fBtn.BorderSizePixel = 0
fBtn.Parent = filterFrame
local fCorner = Instance.new("UICorner")
fCorner.CornerRadius = UDim.new(0, 4); fCorner.Parent = fBtn
fBtn.MouseButton1Click:Connect(function()
RoleFilter[roleName] = not RoleFilter[roleName]
fBtn.BackgroundTransparency = RoleFilter[roleName] and 0 or 0.7
if RefreshGotoListRef then pcall(RefreshGotoListRef) end
end)
end
-- Player list
UI.CreateSection(gotoPlayersTab, "Players")
local playersListFrame = Instance.new("Frame")
playersListFrame.Name = "PlayersList"
playersListFrame.Size = UDim2.new(1, 0, 0, 0)
playersListFrame.AutomaticSize = Enum.AutomaticSize.Y
playersListFrame.BackgroundTransparency = 1
playersListFrame.Parent = gotoPlayersTab
local gplLayout = Instance.new("UIListLayout")
gplLayout.Padding = UDim.new(0, 4)
gplLayout.SortOrder = Enum.SortOrder.LayoutOrder
gplLayout.Parent = playersListFrame
local function RefreshGotoPlayers()
for _, ch in ipairs(playersListFrame:GetChildren()) do
if not ch:IsA("UIListLayout") then ch:Destroy() end
end
local myRoot = GetMyRoot()
local myPos = myRoot and myRoot.Position or Vector3.zero
local groups = {
Guard = {},
Inmate = {},
Criminal = {},
Neutral = {},
Unknown = {},
}
for _, p in ipairs(GetPlayersCache()) do
if p ~= LocalPlayer and p.Parent then
local char, root = GetCharacter(p)
if char and root then
local role = DetectRole(p)
if not groups[role] then role = "Unknown" end
local dist = (root.Position - myPos).Magnitude
table.insert(groups[role], {player = p, dist = dist})
end
end
end
local order = 1
for _, roleName in ipairs({"Guard", "Inmate", "Criminal", "Neutral", "Unknown"}) do
if RoleFilter[roleName] then
local list = groups[roleName]
table.sort(list, function(a, b) return a.dist < b.dist end)
if #list > 0 then
-- Header
local header = Instance.new("Frame")
header.Size = UDim2.new(1, 0, 0, 22)
header.BackgroundTransparency = 1
header.LayoutOrder = order
header.Parent = playersListFrame
order = order + 1
local hLbl = Instance.new("TextLabel")
hLbl.Size = UDim2.new(1, 0, 1, 0)
hLbl.Position = UDim2.new(0, 4, 0, 0)
hLbl.BackgroundTransparency = 1
hLbl.Text = string.format("%s (%d)", string.upper(roleName), #list)
hLbl.Font = Enum.Font.GothamBlack
hLbl.TextSize = 11
hLbl.TextColor3 = ROLE_COLORS[roleName]
hLbl.TextXAlignment = Enum.TextXAlignment.Left
hLbl.Parent = header
for _, entry in ipairs(list) do
local p = entry.player
local dist = math.floor(entry.dist)
local row = Instance.new("Frame")
row.Size = UDim2.new(1, 0, 0, 40)
row.BackgroundColor3 = THEME.Element
row.BorderSizePixel = 0
row.LayoutOrder = order
row.Parent = playersListFrame
order = order + 1
local rCorner = Instance.new("UICorner")
rCorner.CornerRadius = UDim.new(0, 6); rCorner.Parent = row
-- Left color bar
local bar = Instance.new("Frame")
bar.Size = UDim2.new(0, 3, 1, -8)
bar.Position = UDim2.new(0, 4, 0, 4)
bar.BackgroundColor3 = ROLE_COLORS[roleName]
bar.BorderSizePixel = 0
bar.Parent = row
local barCorner = Instance.new("UICorner")
barCorner.CornerRadius = UDim.new(1, 0); barCorner.Parent = bar
local nameLbl = Instance.new("TextLabel")
nameLbl.Size = UDim2.new(1, -110, 0, 18)
nameLbl.Position = UDim2.new(0, 14, 0, 3)
nameLbl.BackgroundTransparency = 1
nameLbl.Text = p.DisplayName or p.Name
nameLbl.Font = Enum.Font.GothamBold
nameLbl.TextSize = 12
nameLbl.TextColor3 = ROLE_COLORS[roleName]
nameLbl.TextXAlignment = Enum.TextXAlignment.Left
nameLbl.Parent = row
local subLbl = Instance.new("TextLabel")
subLbl.Size = UDim2.new(1, -110, 0, 14)
subLbl.Position = UDim2.new(0, 14, 0, 22)
subLbl.BackgroundTransparency = 1
subLbl.Text = string.format("@%s | %d studs", p.Name, dist)
subLbl.Font = Enum.Font.Gotham
subLbl.TextSize = 10
subLbl.TextColor3 = THEME.TextDark
subLbl.TextXAlignment = Enum.TextXAlignment.Left
subLbl.Parent = row
local goBtn = Instance.new("TextButton")
goBtn.Size = UDim2.new(0, 84, 0, 28)
goBtn.Position = UDim2.new(1, -92, 0.5, -14)
goBtn.BackgroundColor3 = ROLE_COLORS[roleName]
goBtn.Text = "GOTO"
goBtn.Font = Enum.Font.GothamBlack
goBtn.TextSize = 11
goBtn.TextColor3 = Color3.fromRGB(20, 20, 22)
goBtn.BorderSizePixel = 0
goBtn.Parent = row
local gCorner = Instance.new("UICorner")
gCorner.CornerRadius = UDim.new(0, 6); gCorner.Parent = goBtn
goBtn.MouseButton1Click:Connect(function()
local char, root = GetCharacter(p)
if char and root then
local behindPos = root.Position + Vector3.new(0, 0, 3)
TeleportToPosition(behindPos)
else
Notify("Go-To", "Player has no character.")
end
end)
end
end
end
end
-- Empty state
local anyVisible = false
for _, roleName in ipairs({"Guard", "Inmate", "Criminal", "Neutral", "Unknown"}) do
if RoleFilter[roleName] and #groups[roleName] > 0 then
anyVisible = true
break
end
end
if not anyVisible then
local emptyLbl = Instance.new("TextLabel")
emptyLbl.Size = UDim2.new(1, 0, 0, 30)
emptyLbl.BackgroundTransparency = 1
emptyLbl.Text = "No players match the current filter."
emptyLbl.Font = Enum.Font.Gotham
emptyLbl.TextSize = 11
emptyLbl.TextColor3 = THEME.TextDark
emptyLbl.LayoutOrder = 1
emptyLbl.Parent = playersListFrame
end
end
RefreshGotoListRef = RefreshGotoPlayers
-- Refresh when page becomes visible
task.spawn(function()
while true do
task.wait(1.5)
if State.CurrentTab == "Go-To Players" then
pcall(RefreshGotoPlayers)
end
end
end)
RefreshGotoPlayers()
-- ══════════════════════════════════════════════════════════════════
-- Tab: Auto-Give
-- ══════════════════════════════════════════════════════════════════
local autoTab = UI.CreateTab("Auto-Give")
UI.CreateSection(autoTab, "Auto-Give (MP5 + Remington)")
UI.CreateToggle(autoTab, "Enable Auto-Give", "AutoGive/Enabled", Flags["AutoGive/Enabled"], function(state)
if state then
Notify("Auto-Give", "Auto-Give enabled.")
task.spawn(function() SpawnTouchGiversInFront() end)
else
Notify("Auto-Give", "Auto-Give disabled.")
end
end)
UI.CreateButton(autoTab, "Visit TouchGivers Now", function()
task.spawn(function()
SpawnTouchGiversInFront(true)
Notify("Auto-Give", "Visited TouchGivers.")
end)
end)
-- ══════════════════════════════════════════════════════════════════
-- Tab: Arrest
-- ══════════════════════════════════════════════════════════════════
local arrestTab = UI.CreateTab("Arrest")
local arrestWrapper = Instance.new("Frame")
arrestWrapper.Name = "ArrestWrapper"
arrestWrapper.Size = UDim2.new(1, 0, 0, 0)
arrestWrapper.AutomaticSize = Enum.AutomaticSize.Y
arrestWrapper.BackgroundTransparency = 1
arrestWrapper.Parent = arrestTab
arrestWrapper.LayoutOrder = 1
local wrapperLayout = Instance.new("UIListLayout")
wrapperLayout.Padding = UDim.new(0, 5)
wrapperLayout.SortOrder = Enum.SortOrder.LayoutOrder
wrapperLayout.Parent = arrestWrapper
local function MakeArrestSectionTitle(text, order)
local container = Instance.new("Frame")
container.Size = UDim2.new(1, 0, 0, 24)
container.BackgroundTransparency = 1
container.LayoutOrder = order
container.Parent = arrestWrapper
local lbl = Instance.new("TextLabel")
lbl.Size = UDim2.new(1, 0, 1, 0)
lbl.Position = UDim2.new(0, 2, 0, 4)
lbl.BackgroundTransparency = 1
lbl.Text = string.upper(text)
lbl.Font = Enum.Font.GothamBold
lbl.TextSize = 10
lbl.TextColor3 = THEME.Accent
lbl.TextXAlignment = Enum.TextXAlignment.Left
lbl.Parent = container
end
local function MakeArrestNumericRow(labelText, flag, default, minV, maxV, step, unit, order)
local frame = Instance.new("Frame")
frame.Size = UDim2.new(1, 0, 0, 46)
frame.BackgroundColor3 = THEME.Element
frame.BorderSizePixel = 0
frame.LayoutOrder = order
frame.Parent = arrestWrapper
local c = Instance.new("UICorner")
c.CornerRadius = UDim.new(0, 6); c.Parent = frame
local lbl = Instance.new("TextLabel")
lbl.Size = UDim2.new(0.55, -12, 1, 0)
lbl.Position = UDim2.new(0, 12, 0, 0)
lbl.BackgroundTransparency = 1
lbl.Text = labelText
lbl.Font = Enum.Font.GothamMedium
lbl.TextSize = 12
lbl.TextColor3 = THEME.Text
lbl.TextXAlignment = Enum.TextXAlignment.Left
lbl.Parent = frame
if Flags[flag] == nil then Flags[flag] = default end
local inputFrame = Instance.new("Frame")
inputFrame.Size = UDim2.new(0.45, -12, 0, 30)
inputFrame.Position = UDim2.new(1, -12, 0.5, 0)
inputFrame.AnchorPoint = Vector2.new(1, 0.5)
inputFrame.BackgroundColor3 = Color3.fromRGB(48, 48, 55)
inputFrame.BorderSizePixel = 0
inputFrame.Parent = frame
local ifc = Instance.new("UICorner")
ifc.CornerRadius = UDim.new(0, 6); ifc.Parent = inputFrame
local box = Instance.new("TextBox")
box.Size = UDim2.new(1, -50, 1, 0)
box.Position = UDim2.new(0, 25, 0, 0)
box.BackgroundTransparency = 1
box.Text = tostring(Flags[flag]) .. (unit or "")
box.Font = Enum.Font.GothamBold
box.TextSize = 12
box.TextColor3 = THEME.Accent
box.ClearTextOnFocus = false
box.Parent = inputFrame
local function commit(val)
val = math.clamp(tonumber(val) or Flags[flag], minV, maxV)
if step and step > 0 then
val = math.floor(val / step + 0.5) * step
end
Flags[flag] = val
box.Text = tostring(val) .. (unit or "")
end
box.FocusLost:Connect(function()
commit((box.Text:gsub("[^%d%.%-]", "")))
end)
local minus = Instance.new("TextButton")
minus.Size = UDim2.new(0, 25, 1, 0)
minus.BackgroundTransparency = 1
minus.Text = "−"
minus.Font = Enum.Font.GothamBold
minus.TextSize = 16
minus.TextColor3 = THEME.TextDark
minus.Parent = inputFrame
minus.MouseButton1Click:Connect(function() commit(Flags[flag] - (step or 1)) end)
local plus = Instance.new("TextButton")
plus.Size = UDim2.new(0, 25, 1, 0)
plus.Position = UDim2.new(1, -25, 0, 0)
plus.BackgroundTransparency = 1
plus.Text = "+"
plus.Font = Enum.Font.GothamBold
plus.TextSize = 16
plus.TextColor3 = THEME.TextDark
plus.Parent = inputFrame
plus.MouseButton1Click:Connect(function() commit(Flags[flag] + (step or 1)) end)
end
-- Status banner
local arrestStatusFrame = Instance.new("Frame")
arrestStatusFrame.Name = "StatusFrame"
arrestStatusFrame.Size = UDim2.new(1, 0, 0, 44)
arrestStatusFrame.BackgroundColor3 = THEME.Element
arrestStatusFrame.BorderSizePixel = 0
arrestStatusFrame.LayoutOrder = 1
arrestStatusFrame.Parent = arrestWrapper
local asCorner = Instance.new("UICorner")
asCorner.CornerRadius = UDim.new(0, 6); asCorner.Parent = arrestStatusFrame
local arrestStatusLbl = Instance.new("TextLabel")
arrestStatusLbl.Name = "StatusLabel"
arrestStatusLbl.Size = UDim2.new(1, -16, 1, 0)
arrestStatusLbl.Position = UDim2.new(0, 8, 0, 0)
arrestStatusLbl.BackgroundTransparency = 1
arrestStatusLbl.Text = "Checking role..."
arrestStatusLbl.Font = Enum.Font.GothamBold
arrestStatusLbl.TextSize = 12
arrestStatusLbl.TextColor3 = THEME.Text
arrestStatusLbl.TextXAlignment = Enum.TextXAlignment.Left
arrestStatusLbl.TextWrapped = true
arrestStatusLbl.Parent = arrestStatusFrame
MakeArrestSectionTitle("Settings", 2)
local enableRow = Instance.new("Frame")
enableRow.Size = UDim2.new(1, 0, 0, 38)
enableRow.BackgroundColor3 = THEME.Element
enableRow.BorderSizePixel = 0
enableRow.LayoutOrder = 3
enableRow.Parent = arrestWrapper
local erCorner = Instance.new("UICorner")
erCorner.CornerRadius = UDim.new(0, 6); erCorner.Parent = enableRow
local enableLabel = Instance.new("TextLabel")
enableLabel.Size = UDim2.new(1, -70, 1, 0)
enableLabel.Position = UDim2.new(0, 12, 0, 0)
enableLabel.BackgroundTransparency = 1
enableLabel.Text = "Enable Arrest"
enableLabel.Font = Enum.Font.GothamMedium
enableLabel.TextSize = 12
enableLabel.TextColor3 = THEME.Text
enableLabel.TextXAlignment = Enum.TextXAlignment.Left
enableLabel.Parent = enableRow
local enableSwitch = Instance.new("Frame")
enableSwitch.Size = UDim2.fromOffset(44, 22)
enableSwitch.AnchorPoint = Vector2.new(1, 0.5)
enableSwitch.Position = UDim2.new(1, -12, 0.5, 0)
enableSwitch.BackgroundColor3 = Flags["Arrest/Enabled"] and THEME.Accent or Color3.fromRGB(55, 55, 62)
enableSwitch.BorderSizePixel = 0
enableSwitch.Parent = enableRow
local esCorner = Instance.new("UICorner")
esCorner.CornerRadius = UDim.new(1, 0); esCorner.Parent = enableSwitch
local enableKnob = Instance.new("Frame")
enableKnob.Size = UDim2.fromOffset(18, 18)
enableKnob.AnchorPoint = Vector2.new(0, 0.5)
enableKnob.Position = Flags["Arrest/Enabled"] and UDim2.new(1, -20, 0.5, 0) or UDim2.new(0, 2, 0.5, 0)
enableKnob.BackgroundColor3 = Color3.fromRGB(240, 240, 245)
enableKnob.BorderSizePixel = 0
enableKnob.Parent = enableSwitch
local ekCorner = Instance.new("UICorner")
ekCorner.CornerRadius = UDim.new(1, 0); ekCorner.Parent = enableKnob
local enableClick = Instance.new("TextButton")
enableClick.Size = UDim2.new(1, 0, 1, 0)
enableClick.BackgroundTransparency = 1
enableClick.Text = ""
enableClick.Parent = enableSwitch
local function UpdateEnableVisuals(state)
TweenService:Create(enableSwitch, TweenInfo.new(0.15), {
BackgroundColor3 = state and THEME.Accent or Color3.fromRGB(55, 55, 62),
}):Play()
TweenService:Create(enableKnob, TweenInfo.new(0.15), {
Position = state and UDim2.new(1, -20, 0.5, 0) or UDim2.new(0, 2, 0.5, 0),
}):Play()
end
enableClick.MouseButton1Click:Connect(function()
Flags["Arrest/Enabled"] = not Flags["Arrest/Enabled"]
UpdateEnableVisuals(Flags["Arrest/Enabled"])
end)
MakeArrestNumericRow("Stick Distance (Behind)", "Arrest/StickDistance", 2.2, 0.5, 20.0, 0.5, "studs", 4)
MakeArrestNumericRow("Stick Height", "Arrest/StickHeight", 0.0, -5.0, 10.0, 0.5, "studs", 5)
MakeArrestNumericRow("Stick Duration", "Arrest/StickDuration", 5.0, 0.5, 60.0, 0.5, "s", 6)
MakeArrestSectionTitle("Criminals", 7)
local arrestListFrame = Instance.new("Frame")
arrestListFrame.Name = "ArrestListFrame"
arrestListFrame.Size = UDim2.new(1, 0, 0, 0)
arrestListFrame.AutomaticSize = Enum.AutomaticSize.Y
arrestListFrame.BackgroundTransparency = 1
arrestListFrame.LayoutOrder = 8
arrestListFrame.Parent = arrestWrapper
local alLayout = Instance.new("UIListLayout")
alLayout.Padding = UDim.new(0, 4)
alLayout.SortOrder = Enum.SortOrder.LayoutOrder
alLayout.Parent = arrestListFrame
local function ClearArrestList()
for _, ch in ipairs(arrestListFrame:GetChildren()) do
if not ch:IsA("UIListLayout") then ch:Destroy() end
end
end
local function RefreshArrestList()
ClearArrestList()
local isGuard = IsLocalGuard()
if not isGuard then
arrestStatusLbl.Text = "❌ You are not a Guard. Arrest is disabled."
arrestStatusLbl.TextColor3 = THEME.Fail
local lbl = Instance.new("TextLabel")
lbl.Size = UDim2.new(1, 0, 0, 30)
lbl.BackgroundTransparency = 1
lbl.Text = "Join the Guards team to use this tab."
lbl.Font = Enum.Font.Gotham
lbl.TextSize = 12
lbl.TextColor3 = THEME.TextDark
lbl.LayoutOrder = 1
lbl.Parent = arrestListFrame
return
end
local hasCuffs = false
local backpack = LocalPlayer:FindFirstChild("Backpack")
local char = LocalPlayer.Character
local toolName = Flags["Arrest/ToolName"] or "Handcuffs"
if backpack and backpack:FindFirstChild(toolName) then hasCuffs = true end
if char and char:FindFirstChild(toolName) then hasCuffs = true end
local criminals = GetCriminalsList()
if hasCuffs then
arrestStatusLbl.Text = string.format("✓ Guard | Handcuffs ready | %d criminal(s)", #criminals)
arrestStatusLbl.TextColor3 = THEME.Success
else
arrestStatusLbl.Text = string.format("⚠ Guard | No Handcuffs in backpack | %d criminal(s)", #criminals)
arrestStatusLbl.TextColor3 = Color3.fromRGB(230, 190, 60)
end
if #criminals == 0 then
local lbl = Instance.new("TextLabel")
lbl.Size = UDim2.new(1, 0, 0, 30)
lbl.BackgroundTransparency = 1
lbl.Text = "No criminals detected."
lbl.Font = Enum.Font.Gotham
lbl.TextSize = 12
lbl.TextColor3 = THEME.TextDark
lbl.LayoutOrder = 1
lbl.Parent = arrestListFrame
return
end
for i, data in ipairs(criminals) do
local p = data.player
local dist = math.floor(data.dist)
local row = Instance.new("Frame")
row.Size = UDim2.new(1, 0, 0, 44)
row.BackgroundColor3 = THEME.Element
row.BorderSizePixel = 0
row.LayoutOrder = i
row.Parent = arrestListFrame
local rCorner = Instance.new("UICorner")
rCorner.CornerRadius = UDim.new(0, 6); rCorner.Parent = row
local nameLbl = Instance.new("TextLabel")
nameLbl.Size = UDim2.new(1, -110, 0, 20)
nameLbl.Position = UDim2.new(0, 10, 0, 4)
nameLbl.BackgroundTransparency = 1
nameLbl.Text = p.DisplayName or p.Name
nameLbl.Font = Enum.Font.GothamBold
nameLbl.TextSize = 13
nameLbl.TextColor3 = ROLE_COLORS.Criminal
nameLbl.TextXAlignment = Enum.TextXAlignment.Left
nameLbl.Parent = row
local subLbl = Instance.new("TextLabel")
subLbl.Size = UDim2.new(1, -110, 0, 16)
subLbl.Position = UDim2.new(0, 10, 0, 23)
subLbl.BackgroundTransparency = 1
subLbl.Text = string.format("@%s | %d studs", p.Name, dist)
subLbl.Font = Enum.Font.Gotham
subLbl.TextSize = 11
subLbl.TextColor3 = THEME.TextDark
subLbl.TextXAlignment = Enum.TextXAlignment.Left
subLbl.Parent = row
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0, 90, 0, 30)
btn.Position = UDim2.new(1, -100, 0.5, -15)
btn.BackgroundColor3 = Color3.fromRGB(180, 60, 60)
btn.Text = "STICK"
btn.Font = Enum.Font.GothamBlack
btn.TextSize = 12
btn.TextColor3 = Color3.fromRGB(255, 255, 255)
btn.BorderSizePixel = 0
btn.Parent = row
local bCorner = Instance.new("UICorner")
bCorner.CornerRadius = UDim.new(0, 6); bCorner.Parent = btn
btn.MouseButton1Click:Connect(function()
if not Flags["Arrest/Enabled"] then
Notify("Arrest", "Arrest is disabled. Enable it in the Arrest tab.")
return
end
if not IsLocalGuard() then
Notify("Arrest", "You must be a Guard to arrest.")
return
end
if ArrestState.Running then
StopArrestStick()
end
task.spawn(function() ArrestPlayer(p) end)
end)
end
end
local stopArrestBtn = Instance.new("TextButton")
stopArrestBtn.Size = UDim2.new(1, 0, 0, 34)
stopArrestBtn.BackgroundColor3 = Color3.fromRGB(70, 30, 30)
stopArrestBtn.Text = "■ Stop Sticking"
stopArrestBtn.Font = Enum.Font.GothamBold
stopArrestBtn.TextSize = 12
stopArrestBtn.TextColor3 = Color3.fromRGB(230, 100, 100)
stopArrestBtn.BorderSizePixel = 0
stopArrestBtn.LayoutOrder = 9
stopArrestBtn.Parent = arrestWrapper
local sabCorner = Instance.new("UICorner")
sabCorner.CornerRadius = UDim.new(0, 6); sabCorner.Parent = stopArrestBtn
stopArrestBtn.MouseButton1Click:Connect(function()
StopArrestStick()
end)
local refreshArrestBtn = Instance.new("TextButton")
refreshArrestBtn.Size = UDim2.new(1, 0, 0, 34)
refreshArrestBtn.BackgroundColor3 = THEME.Accent
refreshArrestBtn.BackgroundTransparency = 0.15
refreshArrestBtn.Text = "↻ Refresh Criminal List"
refreshArrestBtn.Font = Enum.Font.GothamBold
refreshArrestBtn.TextSize = 12
refreshArrestBtn.TextColor3 = Color3.fromRGB(20, 20, 22)
refreshArrestBtn.BorderSizePixel = 0
refreshArrestBtn.LayoutOrder = 10
refreshArrestBtn.Parent = arrestWrapper
local rabCorner = Instance.new("UICorner")
rabCorner.CornerRadius = UDim.new(0, 6); rabCorner.Parent = refreshArrestBtn
local rabStroke = Instance.new("UIStroke")
rabStroke.Color = THEME.Accent; rabStroke.Thickness = 1
rabStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
rabStroke.Parent = refreshArrestBtn
refreshArrestBtn.MouseButton1Click:Connect(function()
RefreshArrestList()
end)
-- ── Tab: Keybinds ────────────────────────────────────────────────
local keybindTab = UI.CreateTab("Keybinds")
UI.CreateSection(keybindTab, "Toggle Shortcuts")
local Keybinds = {
Aim = Enum.KeyCode.Q,
ESP = Enum.KeyCode.E,
Noclip = Enum.KeyCode.N,
Hitbox = Enum.KeyCode.H,
}
local KeybindTargets = {
{Name = "Aimlock", Id = "Aim", Flag = "Aim/AimLock"},
{Name = "ESP", Id = "ESP", Flag = "ESP/Enabled"},
{Name = "Noclip", Id = "Noclip", Flag = "Noclip/Enabled"},
{Name = "Hitbox Expander", Id = "Hitbox", Flag = "Hitbox/Enabled"},
}
local capturingKeybind = nil
local keybindButtons = {}
local function MakeKeybindRow(entry, order)
local row = Instance.new("Frame")
row.Name = entry.Id .. "KeybindRow"
row.Size = UDim2.new(1, 0, 0, 42)
row.BackgroundColor3 = THEME.Element
row.BorderSizePixel = 0
row.LayoutOrder = order
row.Parent = keybindTab
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 7)
corner.Parent = row
local lbl = Instance.new("TextLabel")
lbl.Size = UDim2.new(1, -130, 1, 0)
lbl.Position = UDim2.fromOffset(12, 0)
lbl.BackgroundTransparency = 1
lbl.Text = entry.Name
lbl.Font = Enum.Font.GothamMedium
lbl.TextSize = 12
lbl.TextColor3 = THEME.Text
lbl.TextXAlignment = Enum.TextXAlignment.Left
lbl.Parent = row
local btn = Instance.new("TextButton")
btn.Size = UDim2.fromOffset(104, 28)
btn.Position = UDim2.new(1, -114, 0.5, -14)
btn.BackgroundColor3 = THEME.Sidebar
btn.Text = Keybinds[entry.Id].Name
btn.Font = Enum.Font.GothamBold
btn.TextSize = 11
btn.TextColor3 = THEME.Accent
btn.BorderSizePixel = 0
btn.AutoButtonColor = false
btn.Parent = row
local bc = Instance.new("UICorner")
bc.CornerRadius = UDim.new(0, 6)
bc.Parent = btn
keybindButtons[entry.Id] = btn
btn.MouseButton1Click:Connect(function()
capturingKeybind = entry.Id
btn.Text = "PRESS KEY..."
btn.TextColor3 = THEME.Success
end)
end
for i, entry in ipairs(KeybindTargets) do MakeKeybindRow(entry, i) end
UI.CreateButton(keybindTab, "Reset Default Keybinds", function()
Keybinds.Aim, Keybinds.ESP, Keybinds.Noclip, Keybinds.Hitbox = Enum.KeyCode.Q, Enum.KeyCode.E, Enum.KeyCode.N, Enum.KeyCode.H
for id, btn in pairs(keybindButtons) do btn.Text = Keybinds[id].Name end
capturingKeybind = nil
Notify("Keybinds", "Default keys restored.")
end)
local keybindHint = Instance.new("TextLabel")
keybindHint.Size = UDim2.new(1, 0, 0, 34)
keybindHint.BackgroundTransparency = 1
keybindHint.Text = "Click a key, then press the new key. Backspace clears it."
keybindHint.Font = Enum.Font.Gotham
keybindHint.TextSize = 10
keybindHint.TextColor3 = THEME.TextDark
keybindHint.TextWrapped = true
keybindHint.TextXAlignment = Enum.TextXAlignment.Left
keybindHint.Parent = keybindTab
UserInputService.InputBegan:Connect(function(input, gp)
if capturingKeybind then
if input.UserInputType == Enum.UserInputType.Keyboard then
local id = capturingKeybind
if input.KeyCode == Enum.KeyCode.Backspace then
Keybinds[id] = nil
keybindButtons[id].Text = "NONE"
elseif input.KeyCode ~= Enum.KeyCode.Unknown then
Keybinds[id] = input.KeyCode
keybindButtons[id].Text = input.KeyCode.Name
end
keybindButtons[id].TextColor3 = THEME.Accent
capturingKeybind = nil
end
return
end
if gp then return end
for _, entry in ipairs(KeybindTargets) do
if Keybinds[entry.Id] and input.KeyCode == Keybinds[entry.Id] then
local newState = not Flags[entry.Flag]
if entry.Id == "Hitbox" then
if State.Updaters[entry.Flag] then State.Updaters[entry.Flag](newState) else HitboxSetEnabled(newState) end
else
Flags[entry.Flag] = newState
if State.Updaters[entry.Flag] then State.Updaters[entry.Flag](newState) end
if entry.Id == "Aim" and not newState then ClearAimLockState(true) end
if entry.Id == "Noclip" and not newState then RestoreAll() end
if entry.Id == "ESP" and not newState then
for _, data in pairs(ESP.Objects) do
SafeSet(data.Nametag, "Enabled", false)
if data.Highlight then SafeSet(data.Highlight, "Enabled", false) end
end
end
Notify(entry.Name, newState and "Enabled" or "Disabled")
end
break
end
end
end)
task.spawn(function()
while true do
task.wait(1.5)
if State.CurrentTab == "Arrest" then
pcall(RefreshArrestList)
end
end
end)
-- ══════════════════════════════════════════════════════════════════
-- PLAYER LIFECYCLE
-- ══════════════════════════════════════════════════════════════════
Players.PlayerAdded:Connect(function(player)
UpdatePlayerCache()
end)
Players.PlayerRemoving:Connect(function(player)
UpdatePlayerCache()
RemoveNametag(player)
RemoveESP2D(player)
if player.Character then HitboxRestoreCharacter(player.Character) end
CharCache[player] = nil
if AimState.LastAimTarget == player then
ClearAimLockState(false)
end
end)
UpdatePlayerCache()
local function OnLocalCharacterAdded(character)
task.wait(0.5)
CaptureHumanoidSettings()
task.wait(0.3)
ApplySavedHumanoidSettings()
if Flags["AutoGive/Enabled"] then
task.spawn(function() SpawnTouchGiversInFront() end)
end
task.wait(0.5)
pcall(RefreshArrestList)
end
LocalPlayer.CharacterAdded:Connect(OnLocalCharacterAdded)
if LocalPlayer.Character then
task.spawn(function()
task.wait(1)
CaptureHumanoidSettings()
task.wait(0.3)
ApplySavedHumanoidSettings()
if Flags["AutoGive/Enabled"] then
SpawnTouchGiversInFront()
end
task.wait(0.5)
pcall(RefreshArrestList)
end)
end
-- ══════════════════════════════════════════════════════════════════
-- MAIN LOOPS
-- ══════════════════════════════════════════════════════════════════
local lastESPUpdate = 0
local ESP_UPDATE_INTERVAL = 0.1
local lastNoclipScan = 0
local NOCLIP_SCAN_INTERVAL = 0.75
local lastNoclipEnforce = 0
local NOCLIP_ENFORCE_INTERVAL = 0.2
local lastCharCachePrune = 0
local CHAR_CACHE_PRUNE_INTERVAL = 5.0
local lastHumanoidEnforce = 0
local HUMANOID_ENFORCE_INTERVAL = 0.1
local function PruneCharCache()
local now = os.clock()
if (now - lastCharCachePrune) < CHAR_CACHE_PRUNE_INTERVAL then return end
lastCharCachePrune = now
local playerMap = {}
for i = 1, #cachedPlayersList do
playerMap[cachedPlayersList[i]] = true
end
for player, cache in pairs(CharCache) do
if not playerMap[player] or not player.Parent then
if AimState.LastAimTarget == player then
ClearAimLockState(false)
end
cache.Char = nil
cache.Root = nil
cache.Humanoid = nil
cache.Head = nil
CharCache[player] = nil
elseif cache.Char and not cache.Char.Parent then
if AimState.LastAimTarget == player then
ClearAimLockState(false)
end
cache.Char = nil
cache.Root = nil
cache.Humanoid = nil
cache.Head = nil
end
end
end
RunService.Heartbeat:Connect(function()
local now = tick()
if now - lastESPUpdate >= ESP_UPDATE_INTERVAL then
lastESPUpdate = now
if Flags["ESP/Enabled"] then
RefreshESP()
end
end
if Flags["Noclip/Enabled"] then
if now - lastNoclipScan >= NOCLIP_SCAN_INTERVAL then
lastNoclipScan = now
ScanAndBreak()
end
if now - lastNoclipEnforce >= NOCLIP_ENFORCE_INTERVAL then
lastNoclipEnforce = now
EnforceNoclip()
end
end
if now - lastHumanoidEnforce >= HUMANOID_ENFORCE_INTERVAL then
lastHumanoidEnforce = now
ApplyHumanoidSettings()
end
PruneCharCache()
end)
RunService.RenderStepped:Connect(function()
UpdateAim()
UpdateESP2D()
end)
task.spawn(function()
while task.wait(0.5) do
if Flags["Hitbox/Enabled"] then
for _, player in ipairs(Players:GetPlayers()) do
local char = player.Character
local hrp = char and char:FindFirstChild("HumanoidRootPart")
if hrp and math.abs(hrp.Size.X - Flags["Hitbox/Size"]) > 0.1 then
HitboxApplyCharacter(char)
end
end
end
end
end)
-- ══════════════════════════════════════════════════════════════════
-- CLEANUP
-- ══════════════════════════════════════════════════════════════════
function Axiom_Unload()
if ArrestState.Running then
StopArrestStick()
end
RestoreAll()
ClearAimLockState(true)
for p, _ in pairs(ESP.Objects) do RemoveNametag(p) end
for p, _ in pairs(ESP2D.Objects) do RemoveESP2D(p) end
if ESP2D.Gui then SafeDestroy(ESP2D.Gui) end
HitboxSetEnabled(false)
if ESP.Folder then SafeDestroy(ESP.Folder) end
if NotifyGui then SafeDestroy(NotifyGui) end
if FovCircleGui then SafeDestroy(FovCircleGui) end
if State.ScreenGui then SafeDestroy(State.ScreenGui) end
table.clear(CharCache)
table.clear(CandidateList)
print("[Axiom] Unloaded.")
end
_G.Axiom_Unload = Axiom_Unload
-- ══════════════════════════════════════════════════════════════════
-- READY
-- ══════════════════════════════════════════════════════════════════
print(string.format("[Axiom v%s] Loaded successfully.", VERSION))
print("[Axiom] Press CapsLock to minimize/restore.")
print("[Axiom] Unload: _G.Axiom_Unload()")
Notify("Axiom", "Loaded! Aim, ESP, Noclip, Teleport, Go-To, Auto-Give, Humanoid, Arrest ready.")AXIOM MENU v3.20 end boss of all prison life scripts. no key system, no logging and no bfuscation. A powerful all-in-one menu designed for Prison life, featuring a collection of advanced gameplay and utility features in one clean interface. FEATURES -- Role ESP -- * Display players with role-based colors * Guard, Inmate, Criminal, Neutral and Unknown detection * Username display * Health indicator * Distance display * Equipped item display * Highlight system with customizable transparency * Team check * Adjustable ESP render distance -- Noclip -- * Enable or disable Noclip * Adjustable scan radius * Support for anchored walls * Optional support for unanchored objects * Force Rescan option * Restore All option -- Aim / AimLock -- * AimLock system * Visibility Check * Team Check * Adjustable attraction strength * Customizable FOV radius * Optional FOV circle * Aim dampening * Adjustable dampening threshold and strength * Head and body-part targeting options * Configurable target groups -- Auto-Give -- * Automated weapon-giving system * Supports MP5 and Remington * Automatic TouchGiver handling * Manual "Visit TouchGivers Now" option -- Arrest -- * Automated arrest funct

Prison Life