Run it
Copy the script and paste it into your executor.
P = :()
RS = :()
UIS = :()
L = :()
W = :()
player = P.LocalPlayer
player
player = P.PlayerAdded:()
(, player)
theme = {
bg = .(, , ),
bg2 = .(, , ),
btn = .(, , ),
btnLight = .(, , ),
accent = .(, , ),
accentDark = .(, , ),
text = .(, , ),
dim = .(, , ),
red = .(, , ),
}
settings = {
esp = , espName = , espBox = , espHealth = , espCornerBoxes = , espDistance = ,
espHighlight = , espGun = , espKills = , espSkeleton = , espVelocity = , tracers = , bodyType = ,
fly = , flySpeed = , infJump = ,
walkspeed = , noclip = , jumpPower = ,
aimbot = , flick = , flickShoot = , aim360 = , multiTarget = , maxTargets = , hitPart = , fov = , maxDistance = , smoothing = , prediction = , aimTargetMode = , stickyAim = ,
noRecoil = , noSpread = , antiAim = , antiAimAngle = , autoShoot = , rapidFire = , rapidCps = , noClickDelay = , killAura = , killAuraRange = , hitEffects = , trickShot = , trickShotKey = ,
lowHpTp = , lowHpTpTrigger = , lowHpTpDir = , lowHpTpThreshold = , lowHpTpRange = , lowHpTpCooldown = ,
massKill = , massKillDelay = , bringAll = , bringAllDist = , stickBehind = , stickBehindDist = ,
hitboxExtend = , hitboxExtendScale = , speedHack = , speedHackMult = ,
lagSwitch = , lagSwitchKey = , lagSwitchMs = ,
enabled = , silentAim = , silent360 = , toggleKey = .KeyCode.F, hideKey = .KeyCode.LeftControl, mouseFreeKey = .KeyCode.LeftAlt,
checkVisible = , showFovCircle = , showTarget = , fovColor = .(, , ), showTargetV2 = , showTargetV3 = ,
teamCheck = , wallbang = , semiWallbang = , semiWallbangThickness = , ignoreBarriers = , ignoreNonCollision = , ignoreFriends = , ignoreDead = ,
antiAfk = , autoClicker = , cps = , triggerbot = , freecam = , autoAim = ,
chatSpam = , chatDelay = , chatMessage = ,
fovEnabled = , camFov = ,
clock = , clockTime = ,
fog = , fogDistance = ,
shaders = , ccBrightness = , ccContrast = , ccSaturation = ,
shaderPreset = , gloom = , dof = , dofFocus = , bloom = , bloomIntensity = , skybox = , materials = ,
thirdPerson = , tpDist = , spinbot = , spinSpeed = , tpWalk = , tpWalkSpeed = , gravityChanger = , gravity = ,
swimBoost = , swimSpeed = , autoSprint = , wallClimb = , flyBoost = , flyBoostMult = , clickTp = , clickTpKey = , strafe = , strafeSpeed = , bhop = , strafeV2 = , strafeV2Speed = ,
chams = , chamsType = , chamsColor = .(, , ), chamsRainbow = , chamsRainbowSpeed = ,
fpsCap = , fpsCapValue = ,
playerFinder = ,
playerSearch = ,
serverTarget = ,
scan = , cheatSpeed = ,
unlocked = , keyEntry = ,
}
defaultSettings = .(settings)
saved = ().HubState
saved
key, value (saved)
settings[key] = value
()
().HubState = .(settings)
(className, props)
i = .(className)
key, value (props)
i[key] = value
i
(i, radius)
c = .()
c.CornerRadius = .(, radius )
c.Parent = i
(t)
- ( - t) ^
(instance, duration, target, done)
start = {}
k (target)
start[k] = instance[k]
elapsed =
conn
conn = RS.Heartbeat:((dt)
elapsed += dt
t = .(elapsed / duration, , )
e = (t)
k, v (target)
sv = start[k]
(sv) ==
instance[k] = .(
sv.X.Scale + (v.X.Scale - sv.X.Scale) * e,
sv.X.Offset + (v.X.Offset - sv.X.Offset) * e,
sv.Y.Scale + (v.Y.Scale - sv.Y.Scale) * e,
sv.Y.Offset + (v.Y.Offset - sv.Y.Offset) * e
)
(sv) ==
instance[k] = sv:(v, e)
(sv) ==
instance[k] = .(sv.Scale + (v.Scale - sv.Scale) * e, sv.Offset + (v.Offset - sv.Offset) * e)
instance[k] = sv + (v - sv) * e
t >=
conn:()
done
()
)
conn
useDrawing = (()
d = .()
d:()
)
espDrawings = {}
flyConn =
flyHrp =
flicking =
pendingSilent =
restoreCFrame =
cycleIndex =
skeletonDrawings = {}
highlights = {}
stats = {}
charBounds = {}
centerLines = {}
lockTarget =
trickActive =
trickLockUntil =
trickLockTarget =
scanSus = {}
scanSample = {}
scanHits = {}
scanWatched = {}
cheaterRows = {}
cheaterList =
cheaterScroll =
scanTick =
refreshCheatersUI =
scanLastTick =
scanUiTimer =
tpYaw =
tpPitch =
originalCamType =
matTimer =
noRecoilBase =
preShotPitch =
spreadTimer =
lastM1 =
lastMousePos = .zero
antiAimT =
antiAimFlip =
autoShootT =
stickyTarget =
rapidT =
hitMarkers = {}
killAuraT =
spectateTarget =
fpsCapApplied =
playersScroll =
playersRefreshT =
refreshPlayers =
chamsObjs = {}
lowHpTpT =
lowHpTrack = {}
lowHpToolTrack = {}
lastLowHpTp =
aimTarget =
hitboxParts = {}
hitboxChar =
hitboxScale =
massKillTick =
stickBehindTarget =
(char)
root = char:() char:()
root
settings.bodyType ==
{
topPoint = root.Position + .(, , ),
bottomPoint = root.Position + .(, -, ),
}
settings.bodyType ==
{
topPoint = root.Position + .(, , ),
bottomPoint = root.Position + .(, -, ),
}
head = char:()
maxY, minY = -.huge, .huge
minX, maxX = .huge, -.huge
minZ, maxZ = .huge, -.huge
count =
_, p (char:())
p:() p.Name ~=
c = p.Position
s = p.Size
topY = c.Y + s.Y /
botY = c.Y - s.Y /
topY > maxY maxY = topY
botY < minY minY = botY
cx0, cx1 = c.X - s.X / , c.X + s.X /
cz0, cz1 = c.Z - s.Z / , c.Z + s.Z /
cx0 < minX minX = cx0
cx1 > maxX maxX = cx1
cz0 < minZ minZ = cz0
cz1 > maxZ maxZ = cz1
count +=
count ==
{
topPoint = root.Position + .(, , ),
bottomPoint = root.Position + .(, -, ),
}
headTop = head (head.Position.Y + head.Size.Y / ) maxY
top = .(maxY, headTop + )
midX = (minX + maxX) /
midZ = (minZ + maxZ) /
{
topPoint = .(midX, top, midZ),
bottomPoint = .(midX, minY, midZ),
}
(plr)
row = stats[plr]
row
row = { kills = , deaths = , lastAimed = }
stats[plr] = row
row
(plr)
d = espDrawings[plr]
d
d
d = {
box = .(),
name = .(),
health = .(),
tracer = .(),
corners = {},
}
d.box.Thickness =
d.box.Visible =
d.name.Size =
d.name.Center =
d.name.Outline =
d.name.Visible =
d.health.Thickness =
d.health.Visible =
d.tracer.Thickness =
d.tracer.Visible =
i = ,
ln = .()
ln.Thickness =
ln.Visible =
.(d.corners, ln)
espDrawings[plr] = d
d
(d)
d.box.Visible =
d.name.Visible =
d.health.Visible =
d.tracer.Visible =
_, ln (d.corners)
ln.Visible =
(char, col, plr)
joints = {}
_, child (char:())
child:() child.Part0 child.Part1
.(joints, child)
entry = skeletonDrawings[plr]
entry entry.char ~= char
entry
_, l (entry.lines)
l:()
lines = {}
i = , #joints
line = .()
line.Thickness =
line.Color = col
line.Visible =
.(lines, line)
entry = { joints = joints, lines = lines, char = char }
skeletonDrawings[plr] = entry
i, joint (entry.joints)
line = entry.lines[i]
line
line.Color = col
line.From = joint.Part0.Position
line.To = joint.Part1.Position
line.Visible =
(plr)
entry = skeletonDrawings[plr]
entry
_, l (entry.lines)
l.Visible =
()
_, d (espDrawings)
(d)
()
cam = W.CurrentCamera
cam
center = cam.ViewportSize /
nearestDist = .huge
nearestPlr =
_, other (P:())
d = (other)
char = other.Character
other == player char
(d)
(other)
humanoid = char:()
root = humanoid humanoid.RootPart
bounds = (char)
root bounds
(d)
(other)
top, topOn = cam:(bounds.topPoint)
bottom, botOn = cam:(bounds.bottomPoint)
topOn botOn
(d)
(other)
height = .(, bottom.Y - top.Y)
boxW = height *
col = (other.Team other.Team.TeamColor.Color) .(, , )
settings.espBox
d.box.Color = col
d.box.Position = .(bottom.X - boxW / , top.Y)
d.box.Size = .(boxW, height)
d.box.Visible = settings.espCornerBoxes
d.box.Visible =
settings.espBox settings.espCornerBoxes
x0 = bottom.X - boxW /
y0 = top.Y
x1 = bottom.X + boxW /
y1 = bottom.Y
cl = .(, boxW * )
d.corners[].From = .(x0, y0)
d.corners[].To = .(x0 + cl, y0)
d.corners[].From = .(x0, y0)
d.corners[].To = .(x0, y0 + cl)
d.corners[].From = .(x1, y0)
d.corners[].To = .(x1 - cl, y0)
d.corners[].From = .(x1, y0)
d.corners[].To = .(x1, y0 + cl)
d.corners[].From = .(x0, y1)
d.corners[].To = .(x0 + cl, y1)
d.corners[].From = .(x0, y1)
d.corners[].To = .(x0, y1 - cl)
d.corners[].From = .(x1, y1)
d.corners[].To = .(x1 - cl, y1)
d.corners[].From = .(x1, y1)
d.corners[].To = .(x1, y1 - cl)
_, ln (d.corners)
ln.Color = col
ln.Visible =
_, ln (d.corners)
ln.Visible =
settings.espName
info = other.Name
settings.espGun
tool = char:()
info = info .. .. (tool tool.Name ) ..
row = stats[other]
settings.espKills row
info = info .. .. row.kills .. .. row.deaths
settings.espVelocity
info = info .. .. .(root.AssemblyLinearVelocity.Magnitude) ..
settings.espDistance
info = info .. .. .((root.Position - cam.CFrame.Position).Magnitude) ..
d.name.Color = col
d.name.Text = info
d.name.Position = .(bottom.X, top.Y - )
d.name.Visible =
d.name.Visible =
settings.espHealth humanoid
ratio = .(humanoid.Health / .(, humanoid.MaxHealth), , )
d.health.Color = .(, , )
d.health.From = .(bottom.X - boxW / , top.Y - )
d.health.To = .(bottom.X - boxW / + boxW * ratio, top.Y - )
d.health.Visible =
d.health.Visible =
settings.espSkeleton
(char, col, other)
(other)
settings.tracers
d.tracer.Color = col
d.tracer.From = .(center.X, cam.ViewportSize.Y)
tPoint = topOn .(top.X, top.Y) .(bottom.X, bottom.Y)
d.tracer.To = tPoint
d.tracer.Visible =
d.tracer.Visible =
distToCenter = (.(bottom.X, bottom.Y) - center).Magnitude
distToCenter < nearestDist
nearestDist = distToCenter
nearestPlr = other
nearestPlr stats[nearestPlr]
stats[nearestPlr].lastAimed = .()
()
settings.espHighlight
_, other (P:())
other == player
char = other.Character
char
h = highlights[other]
h h.Parent ~= char
h
h:()
h = .()
h.FillTransparency =
h.OutlineTransparency =
h.Parent = char
highlights[other] = h
col = (other.Team other.Team.TeamColor.Color) .(, , )
h.FillColor = col
h.OutlineColor = col
_, h (highlights)
h:()
highlights = {}
()
settings.chamsRainbow
hue = (.() * .(, settings.chamsRainbowSpeed) * ) %
.(hue, , )
settings.chamsColor
()
settings.chams
_, obj (chamsObjs)
obj.model
obj.model:()
obj.highlight
obj.highlight:()
chamsObjs = {}
ctype = settings.chamsType
col = ()
_, other (P:())
other == player
char = other.Character
char char.PrimaryPart
gone = chamsObjs[other]
gone
gone.model
gone.model:()
gone.highlight
gone.highlight:()
chamsObjs[other] =
obj = chamsObjs[other]
needModel = ctype == ctype ==
needHighlight = ctype == ctype ==
rebuild = obj obj.kind ~= ctype
(obj.highlight obj.highlight.Parent ~= char)
(obj.model obj.model.Parent ~= )
rebuild
obj
obj.model
obj.model:()
obj.highlight
obj.highlight:()
obj = { kind = ctype }
needModel
model = char:()
model.Name =
_, d (model:())
d:() d:() d:()
d:()
_, p (model:())
p:()
p.CanCollide =
p.Material = .Material.SmoothPlastic
p.Transparency =
ctype ==
head = model:()
head head:()
head.Transparency =
head.Color = col
model.PrimaryPart = head
model.Parent =
obj.model = model
model:()
chamsObjs[other] =
_, p (model:())
p:()
p.Transparency =
p.Color = col
model.Parent =
obj.model = model
needHighlight
h = .()
h.FillTransparency = (ctype == )
h.OutlineTransparency =
h.DepthMode = .HighlightDepthMode.AlwaysOnTop
h.FillColor = col
h.OutlineColor = col
h.Parent = char
obj.highlight = h
chamsObjs[other] = obj
obj.highlight
obj.highlight.FillColor = col
obj.highlight.OutlineColor = col
obj.model
ctype ==
realHead = char:()
chamHead = obj.model.PrimaryPart
realHead chamHead
chamHead.CFrame = realHead.CFrame
ok = (()
obj.model:(char:())
)
ok
obj.model:()
chamsObjs[other] =
_, p (obj.model:())
p:() p.Transparency <
p.Color = col
()
_, line (centerLines)
line.Visible =
(ms)
ok = (()
(, , ms)
)
ok
(()
().Network.IncomingReplicationLag = ms
)
()
_, p (hitboxParts)
p p.Parent
p:()
hitboxParts = {}
hitboxChar =
hitboxScale =
(char)
()
_, v (char:())
v:() v.Transparency ~=
clone = v:()
clone.Size = v.Size * settings.hitboxExtendScale
clone.Transparency =
clone.Material = .Material.Neon
clone.CanCollide =
clone.Anchored =
clone.CastShadow =
clone.Parent = char
weld = .()
weld.Part0 = v
weld.Part1 = clone
weld.C0 = .()
weld.C1 = .()
weld.Parent = v
.(hitboxParts, clone)
hitboxChar = char
hitboxScale = settings.hitboxExtendScale
()
useDrawing
cam = W.CurrentCamera
cam (settings.enabled (settings.showTargetV2 settings.showTargetV3))
()
center = cam.ViewportSize /
candidates = {}
_, other (P:())
other == player
char = other.Character
char
humanoid = char:()
humanoid humanoid.Health <=
part = char:(settings.hitPart)
part
part = char:()
part
screenPos, onScreen = cam:(part.Position)
onScreen
screenDist = (.(screenPos.X, screenPos.Y) - center).Magnitude
screenDist > settings.fov
friend = player.Team ~= other.Team ~= player.Team == other.Team
.(candidates, { plr = other, pos = .(screenPos.X, screenPos.Y), screenDist = screenDist, friend = friend })
.(candidates, (a, b)
a.screenDist < b.screenDist
)
nextTarget =
_, c (candidates)
(c.friend settings.teamCheck)
nextTarget = c
active = {}
_, c (candidates)
settings.showTargetV3 c ~= nextTarget
line = centerLines[c.plr]
line
line = .()
line.Thickness =
line.Visible =
centerLines[c.plr] = line
c == nextTarget
line.Color = theme.red
c.friend
line.Color = .(, , )
line.Color = .(, , )
line.From = center
line.To = c.pos
line.Visible =
active[c.plr] =
plr, line (centerLines)
active[plr]
line.Visible =
(plr)
row = (plr)
row.deaths +=
.() - row.lastAimed <
row.kills +=
(plr)
(plr)
plr.CharacterAdded:((char)
humanoid = char:()
humanoid.Died:(()
(plr)
)
)
plr.Character
humanoid = plr.Character:()
humanoid
humanoid.Died:(()
(plr)
)
_, plr (P:())
(plr)
P.PlayerAdded:(trackPlayer)
P.PlayerRemoving:((plr)
d = espDrawings[plr]
d
d.box:()
d.name:()
d.health:()
d.tracer:()
espDrawings[plr] =
cl = centerLines[plr]
cl
cl:()
centerLines[plr] =
sk = skeletonDrawings[plr]
sk
_, l (sk.lines)
l:()
skeletonDrawings[plr] =
h = highlights[plr]
h
h:()
highlights[plr] =
stats[plr] =
)
originalClock = L.ClockTime
originalFogStart = L.FogStart
originalFogEnd = L.FogEnd
originalFov =
cce = L:()
cce
cce = .()
cce.Parent = L
originalGravity = W.Gravity
origLighting = {
Ambient = L.Ambient,
OutdoorAmbient = L.OutdoorAmbient,
ColorShift_Top = L.ColorShift_Top,
ColorShift_Bottom = L.ColorShift_Bottom,
FogColor = L.FogColor,
ExposureCompensation = L.ExposureCompensation,
Brightness = L.Brightness,
}
originalAtmoDensity =
origAtmo = L:()
origAtmo
originalAtmoDensity = origAtmo.Density
dofEffect = L:()
dofEffect
dofEffect = .()
dofEffect.FocusDistance = settings.dofFocus
dofEffect.InFocusRadius =
dofEffect.NearIntensity =
dofEffect.FarIntensity =
dofEffect.Parent = L
bloomEffect = L:()
bloomEffect
bloomEffect = .()
bloomEffect.Intensity = settings.bloomIntensity
bloomEffect.Size =
bloomEffect.Threshold =
bloomEffect.Parent = L
shaderPresets = {
Sunset = {
ClockTime = , Ambient = .(, , ), OutdoorAmbient = .(, , ),
ColorShift_Top = .(, , ), ColorShift_Bottom = .(, , ),
FogColor = .(, , ), FogStart = , FogEnd = , ExposureCompensation = , Brightness = , atmoDensity = ,
},
[] = {
ClockTime = , Ambient = .(, , ), OutdoorAmbient = .(, , ),
ColorShift_Top = .(, , ), ColorShift_Bottom = .(, , ),
FogColor = .(, , ), FogStart = , FogEnd = , ExposureCompensation = , Brightness = , atmoDensity = ,
},
Snowy = {
ClockTime = , Ambient = .(, , ), OutdoorAmbient = .(, , ),
ColorShift_Top = .(, , ), ColorShift_Bottom = .(, , ),
FogColor = .(, , ), FogStart = , FogEnd = , ExposureCompensation = , Brightness = , atmoDensity = ,
},
[] = {
ClockTime = , Ambient = .(, , ), OutdoorAmbient = .(, , ),
ColorShift_Top = .(, , ), ColorShift_Bottom = .(, , ),
FogColor = .(, , ), FogStart = , FogEnd = , ExposureCompensation = , Brightness = , atmoDensity = ,
},
Toxic = {
ClockTime = , Ambient = .(, , ), OutdoorAmbient = .(, , ),
ColorShift_Top = .(, , ), ColorShift_Bottom = .(, , ),
FogColor = .(, , ), FogStart = , FogEnd = , ExposureCompensation = , Brightness = , atmoDensity = ,
},
}
(name)
atmo = L:()
name ==
L.ClockTime = originalClock
L.Ambient = origLighting.Ambient
L.OutdoorAmbient = origLighting.OutdoorAmbient
L.ColorShift_Top = origLighting.ColorShift_Top
L.ColorShift_Bottom = origLighting.ColorShift_Bottom
L.FogColor = origLighting.FogColor
L.FogStart = originalFogStart
L.FogEnd = originalFogEnd
L.ExposureCompensation = origLighting.ExposureCompensation
L.Brightness = origLighting.Brightness
atmo
atmo.Density = originalAtmoDensity
p = shaderPresets[name]
p
L.ClockTime = p.ClockTime
L.Ambient = p.Ambient
L.OutdoorAmbient = p.OutdoorAmbient
L.ColorShift_Top = p.ColorShift_Top
L.ColorShift_Bottom = p.ColorShift_Bottom
L.FogColor = p.FogColor
L.FogStart = p.FogStart
L.FogEnd = p.FogEnd
L.ExposureCompensation = p.ExposureCompensation
L.Brightness = p.Brightness
atmo
atmo.Density = p.atmoDensity
(on)
on
L.Ambient = .(, , )
L.OutdoorAmbient = .(, , )
L.FogColor = .(, , )
L.FogStart =
L.FogEnd =
L.ExposureCompensation = -
L.Brightness =
atmo = L:()
atmo
atmo.Density =
(settings.shaderPreset)
skyboxChoices = {
{ , },
{ , },
{ , },
{ , },
}
sky =
(name)
sky
sky:()
sky =
id =
_, s (skyboxChoices)
s[] == name
id = s[]
id
sky = .()
asset = .. id
sky.SkyboxBk = asset
sky.SkyboxDn = asset
sky.SkyboxFt = asset
sky.SkyboxLf = asset
sky.SkyboxRt = asset
sky.SkyboxUp = asset
sky.Parent = L
chatRemote =
()
chatRemote chatRemote.Parent
chatRemote
chatRemote =
rs = :()
folder = rs:()
folder
chatRemote = folder:()
chatRemote
_, child (rs:())
child.Name == child:()
chatRemote = child
chatRemote
chatTimer =
(on)
on
char = player.Character
humanoid = char char:()
hrp = humanoid humanoid.RootPart
humanoid hrp
()
flyHrp = hrp
flyConn = RS.RenderStepped:(()
root = humanoid.RootPart
root
humanoid:(.HumanoidStateType.Freefall)
up = (UIS:(.KeyCode.Space) ) - (UIS:(.KeyCode.LeftControl) )
forward = (UIS:(.KeyCode.W) ) - (UIS:(.KeyCode.S) )
left = (UIS:(.KeyCode.A) ) - (UIS:(.KeyCode.D) )
cam = W.CurrentCamera
move = cam.CFrame.LookVector * forward + cam.CFrame.RightVector * left + .(, up, )
speed = settings.flySpeed
settings.flyBoost UIS:(.KeyCode.LeftShift)
speed = speed * .(, settings.flyBoostMult)
root.AssemblyLinearVelocity = move * speed
)
flyConn
flyConn:()
flyConn =
humanoid = player.Character player.Character:()
humanoid
humanoid:(.HumanoidStateType.Running)
freecamYaw, freecamPitch = ,
freecamConn =
(on)
on
cam = W.CurrentCamera
cam
look = cam.CFrame.LookVector
freecamYaw = .(-look.X, -look.Z)
freecamPitch = .(.(look.Y, -, ))
cam.CameraType = .CameraType.Scriptable
freecamConn = RS.RenderStepped:((dt)
mouse = UIS:()
freecamYaw -= mouse.X *
freecamPitch = .(freecamPitch - mouse.Y * , -, )
rot = .(freecamPitch, freecamYaw, )
move = .zero
UIS:(.KeyCode.W)
move += rot.LookVector
UIS:(.KeyCode.S)
move -= rot.LookVector
UIS:(.KeyCode.D)
move += rot.RightVector
UIS:(.KeyCode.A)
move -= rot.RightVector
UIS:(.KeyCode.Space)
move += .(, , )
UIS:(.KeyCode.LeftControl)
move -= .(, , )
cam2 = W.CurrentCamera
cam2
cam2.CFrame = rot + (cam2.CFrame.Position + move * * dt)
)
freecamConn
freecamConn:()
freecamConn =
cam = W.CurrentCamera
cam cam.CameraType == .CameraType.Scriptable
cam.CameraType = .CameraType.Custom
(plr)
root = player.Character player.Character:()
tchar = plr.Character
troot = tchar tchar:()
root troot
root.CFrame = troot.CFrame * .(, , )
(plr)
root = player.Character player.Character:()
tchar = plr.Character
troot = tchar tchar:()
root troot
troot.CFrame = root.CFrame * .(, , )
()
root = player.Character player.Character:()
root
base = root.CFrame * .(, , -settings.bringAllDist)
_, other (P:())
other == player
tchar = other.Character
troot = tchar tchar:()
troot
troot.CFrame = .(base.Position, root.Position)
(pos)
(useDrawing settings.hitEffects pos)
mk = { pos = pos, life = , t = , drawings = {} }
i = ,
d = .()
d.Thickness =
d.Color = .(, , )
mk.drawings[i] = d
.(hitMarkers, mk)
(pos, cam)
cam
vim = :()
center = cam.ViewportSize /
vim:(center.X, center.Y, , )
vim:(center.X, center.Y, , )
(pos)
()
ok = (()
HttpService = :()
TS = :()
url = .. .PlaceId ..
data = HttpService:(HttpService:(url))
servers = {}
_, s (data.data)
s.playing < s.maxPlayers s.id ~= .JobId
.(servers, s.id)
#servers >
TS:(.PlaceId, servers[.(, #servers)], player)
)
ok
()
()
(()
chat = :()
_, m (chat:())
m.Name ==
m:()
)
(count, allow360, maxDistanceOverride)
camera = W.CurrentCamera
camera
{}
camPos = camera.CFrame.Position
center = camera.ViewportSize /
maxD = maxDistanceOverride settings.maxDistance
found = {}
requireVisible = settings.checkVisible settings.wallbang
_, other (P:())
other == player
settings.ignoreFriends other:(player)
char = other.Character
char
settings.teamCheck player.Team ~= player.Team == other.Team
humanoid = char:()
humanoid settings.ignoreDead humanoid.Health <=
part = char:(settings.hitPart)
part
part = char:()
part
settings.ignoreInvis part.Transparency >=
settings.stickyAim other == stickyTarget
stickyTarget =
worldDist = (camPos - part.Position).Magnitude
worldDist > maxD
settings.stickyAim other == stickyTarget
stickyTarget =
requireVisible (settings.semiWallbang settings.wallbang)
params = RaycastParams.()
params.FilterType = .RaycastFilterType.Blacklist
filter = { player.Character, char }
settings.ignoreBarriers
filter = { player.Character, char, }
result
attempt = ,
params.FilterDescendantsInstances = filter
result = W:(camPos, (part.Position - camPos).Unit * worldDist, params)
result
settings.ignoreNonCollision result.Instance:() result.Instance.CanCollide
.(filter, result.Instance)
result
allow =
settings.semiWallbang settings.wallbang
total =
dir = (part.Position - camPos).Unit
origin = camPos
remain = worldDist
filter2 = { player.Character, char }
i = ,
segParams = RaycastParams.()
segParams.FilterType = .RaycastFilterType.Blacklist
segParams.FilterDescendantsInstances = filter2
seg = W:(origin, dir * remain, segParams)
seg
exitParams = RaycastParams.()
exitParams.FilterType = .RaycastFilterType.Blacklist
exitParams.FilterDescendantsInstances = { player.Character, char, seg.Instance }
exit = W:(seg.Position + dir * , dir * , exitParams)
thickness = exit (exit.Position - seg.Position).Magnitude
total += thickness
total > settings.semiWallbangThickness
.(filter2, seg.Instance)
origin = seg.Position + dir * (thickness + )
remain = (part.Position - origin).Magnitude
remain <=
total <= settings.semiWallbangThickness
allow =
allow
isSticky = settings.stickyAim other == stickyTarget
key
isSticky
key = -.huge
allow360
key = settings.aimTargetMode == ((humanoid humanoid.Health) .huge) worldDist
screenPos, onScreen = camera:(part.Position)
onScreen
screenDist = (.(screenPos.X, screenPos.Y) - center).Magnitude
screenDist > settings.fov
settings.aimTargetMode ==
key = (humanoid humanoid.Health) .huge
settings.aimTargetMode ==
key = worldDist
key = screenDist
.(found, { part = part, key = key, plr = other })
lockTarget lockTarget ~= player
lchar = lockTarget.Character
lpart = lchar (lchar:(settings.hitPart) lchar:())
lhum = lchar lchar:()
lpart lhum lhum.Health > (camPos - lpart.Position).Magnitude <= settings.maxDistance
found = { { part = lpart, key = , plr = lockTarget } }
lockTarget =
.(found, (a, b)
a.key < b.key
)
aimTarget = found[] found[].plr
settings.stickyAim #found >
stickyTarget = found[].plr
out = {}
i = , .(count, #found)
entry = found[i]
out[i] = entry.part
settings.prediction >
cchar = entry.plr.Character
root = cchar cchar:()
vel = (root root.AssemblyLinearVelocity) (entry.part.AssemblyLinearVelocity .())
vel.Magnitude >
vel = vel.Unit *
lead = ((camPos - entry.part.Position).Magnitude / ) * (settings.prediction / )
out[i] = { Position = entry.part.Position + vel * lead }
row = stats[entry.plr]
row
row.lastAimed = .()
out
()
camera = W.CurrentCamera
camera
camPos = camera.CFrame.Position
center = camera.ViewportSize /
best =
bestDist = .huge
_, other (P:())
other == player
char = other.Character
char
settings.teamCheck player.Team ~= player.Team == other.Team
humanoid = char:()
humanoid humanoid.Health <=
part = char:(settings.hitPart)
part
part = char:()
part
screenPos, onScreen = camera:(part.Position)
onScreen
screenDist = (.(screenPos.X, screenPos.Y) - center).Magnitude
screenDist > settings.fov
screenDist < bestDist
bestDist = screenDist
best = { name = other.Name, dist = .((camPos - part.Position).Magnitude) }
best
UIS.InputBegan:((input, processed)
processed
input.UserInputType == .UserInputType.MouseButton1
settings.enabled
flicking = settings.flick
settings.silentAim
pendingSilent =
settings.clickTp (settings.clickTpKey UIS:(settings.clickTpKey))
cam = W.CurrentCamera
root = player.Character player.Character:()
cam root
mousePos = UIS:()
ray = cam:(mousePos.X, mousePos.Y)
params = RaycastParams.()
params.FilterType = .RaycastFilterType.Blacklist
params.FilterDescendantsInstances = { player.Character }
result = W:(ray.Origin, ray.Direction * , params)
result
root.CFrame = .(result.Position + .(, , ))
)
antiAfkTimer =
clickTimer =
()
trigger = settings.lowHpTpTrigger
trigger ==
lockTarget aimTarget
trigger ==
_, other (P:())
other == player
char = other.Character
tool = char char:()
entry = lowHpToolTrack[other]
tool
lowHpToolTrack[other] =
entry entry.tool ~= tool
lowHpToolTrack[other] = { tool = tool, enabled = tool.Enabled }
was = entry.enabled
entry.enabled = tool.Enabled
was == tool.Enabled
other
_, other (P:())
other == player
char = other.Character
hum = char char:()
troot = char char:()
hum troot
lowHpTrack[other] =
health = hum.Health
entry = lowHpTrack[other]
entry entry.char ~= char
entry =
drop = entry (entry.health - health)
lowHpTrack[other] = { char = char, health = health }
drop >= settings.lowHpTpThreshold health >
other
RS.RenderStepped:((dt)
()
()
()
settings.esp useDrawing
()
useDrawing
()
useDrawing settings.hitEffects #hitMarkers >
camH = W.CurrentCamera
i = #hitMarkers, , -
mk = hitMarkers[i]
mk.t += dt
mk.t >= mk.life
_, d (mk.drawings)
d:()
.(hitMarkers, i)
camH
sp, on = camH:(mk.pos)
on
fade = - mk.t / mk.life
s =
_, d (mk.drawings)
d.Transparency = - fade
mk.drawings[].From = sp + .(-s, -s)
mk.drawings[].To = sp + .(s, s)
mk.drawings[].From = sp + .(-s, s)
mk.drawings[].To = sp + .(s, -s)
mk.drawings[].From = sp + .(, -s)
mk.drawings[].To = sp + .(, s)
mk.drawings[].From = sp + .(-s, )
mk.drawings[].To = sp + .(s, )
_, d (mk.drawings)
d:()
.(hitMarkers, i)
cam = W.CurrentCamera
cam
settings.fovEnabled
cam.FieldOfView = settings.camFov
cam.FieldOfView ~= originalFov
cam.FieldOfView = originalFov
customLighting = settings.shaderPreset ~= settings.gloom
settings.clock
L.ClockTime = settings.clockTime
( customLighting) L.ClockTime ~= originalClock
L.ClockTime = originalClock
settings.fog
L.FogStart = settings.fogDistance *
L.FogEnd = settings.fogDistance
( customLighting) L.FogEnd ~= originalFogEnd
L.FogStart = originalFogStart
L.FogEnd = originalFogEnd
cce.Enabled = settings.shaders
cce.Brightness = settings.ccBrightness
cce.Contrast = settings.ccContrast
cce.Saturation = settings.ccSaturation
dofEffect.Enabled = settings.dof
settings.dof
dofEffect.FocusDistance = settings.dofFocus
bloomEffect.Enabled = settings.bloom
settings.bloom
bloomEffect.Intensity = settings.bloomIntensity
settings.materials ~=
matTimer += dt
matTimer >=
matTimer =
mat = .Material[settings.materials]
mat
_, p (W:())
p:() p.Material ~= mat
p.Material = mat
settings.antiAfk
antiAfkTimer += dt
antiAfkTimer >=
antiAfkTimer =
(()
vu = :()
vu:()
vu:(.(, ))
)
settings.chatSpam settings.chatMessage ~=
remote = ()
remote
chatTimer += dt
chatTimer >= settings.chatDelay
chatTimer =
(()
remote:(settings.chatMessage, )
)
settings.autoClicker
clickTimer += dt
interval = / .(, settings.cps)
clickTimer >= interval
clickTimer =
vim = :()
mousePos = UIS:()
vim:(mousePos.X, mousePos.Y, , )
vim:(mousePos.X, mousePos.Y, , )
settings.rapidFire
UIS:(.UserInputType.MouseButton1)
rapidT += dt
rapidT >= / .(, settings.rapidCps)
rapidT =
vim = :()
mpos = UIS:()
vim:(mpos.X, mpos.Y, , )
vim:(mpos.X, mpos.Y, , )
settings.noClickDelay
bp = player:()
bp
_, tool (bp:())
tool:()
tool.Disabled =
equipped = player.Character player.Character:()
equipped
equipped.Disabled =
settings.enabled settings.killAura
killAuraT += dt
killAuraT >=
killAuraT =
camK = W.CurrentCamera
camK
targets = (, , settings.killAuraRange)
#targets >
aimPos = ((targets[]) == ) targets[].Position targets[].Position
camK.CFrame = .(camK.CFrame.Position, aimPos)
(aimPos, camK)
settings.lowHpTp
lowHpTpT += dt
lowHpTpT >=
lowHpTpT =
lroot = player.Character player.Character:()
candidate = ()
lroot candidate
char = candidate.Character
troot = char char:()
troot
.() - lastLowHpTp >= settings.lowHpTpCooldown
(lroot.Position - troot.Position).Magnitude <= settings.lowHpTpRange
dir = settings.lowHpTpDir
offset = .(, , )
dir ==
offset = .(, , -)
dir ==
offset = .(-, , )
dir ==
offset = .(, , )
dir ==
offset = .(, , )
dir ==
offset = .(, -, )
lroot.CFrame = troot.CFrame * offset
lastLowHpTp = .()
( .. dir .. .. candidate.Name)
spectateTarget
stchar = spectateTarget.Character
stroot = stchar (stchar:() stchar:())
stroot
scCam = W.CurrentCamera
scCam
scCam.CFrame = .(stroot.Position + .(, , ), stroot.Position + .(, , ))
spectateTarget =
settings.stickBehind
sroot = player.Character player.Character:()
sroot
stickBehindTarget
tchar = stickBehindTarget.Character
troot = tchar tchar:()
thum = tchar tchar:()
troot thum thum.Health <=
stickBehindTarget =
stickBehindTarget
best =
bestD = .huge
_, other (P:())
other == player
settings.teamCheck player.Team ~= player.Team == other.Team
settings.ignoreFriends other:(player)
char = other.Character
hum = char char:()
troot = char char:()
hum troot hum.Health <=
d = (sroot.Position - troot.Position).Magnitude
d < bestD
bestD = d
best = other
stickBehindTarget = best
stickBehindTarget
tchar = stickBehindTarget.Character
troot = tchar tchar:()
thum = tchar tchar:()
troot thum thum.Health >
sroot.CFrame = troot.CFrame * .(, , settings.stickBehindDist)
stickBehindTarget =
settings.fpsCap settings.fpsCapValue >
fpsCapApplied ~= settings.fpsCapValue
fpsCapApplied = settings.fpsCapValue
(() (settings.fpsCapValue) )
fpsCapApplied
fpsCapApplied =
(() () )
playersScroll
ptab = playersScroll.Parent playersScroll.Parent.Parent
ptab ptab.Visible
playersRefreshT += dt
playersRefreshT >=
playersRefreshT =
refreshPlayers
()
restoreCFrame
camera = W.CurrentCamera
camera
camera.CFrame = restoreCFrame
restoreCFrame =
settings.enabled settings.silentAim pendingSilent
pendingSilent =
camera = W.CurrentCamera
camera
targets = (, settings.aim360 settings.silent360)
#targets >
camera.CFrame = .(camera.CFrame.Position, targets[].Position)
settings.enabled trickActive (settings.aimbot settings.autoAim)
camera = W.CurrentCamera
camera
targets = (settings.multiTarget settings.maxTargets , settings.aim360)
#targets >
pick = targets[settings.multiTarget cycleIndex ]
settings.multiTarget
cycleIndex = (cycleIndex % #targets) +
settings.smoothing >
desired = .(camera.CFrame.Position, pick.Position)
alpha = .( - settings.smoothing / , )
camera.CFrame = camera.CFrame:(desired, alpha)
camera.CFrame = .(camera.CFrame.Position, pick.Position)
settings.enabled settings.flick flicking
camera = W.CurrentCamera
camera
original = camera.CFrame
targets = (settings.multiTarget settings.maxTargets , settings.aim360)
#targets >
vim = :()
viewport = camera.ViewportSize
_, target (targets)
camera.CFrame = .(camera.CFrame.Position, target.Position)
vim:(viewport.X / , viewport.Y / , , )
vim:(viewport.X / , viewport.Y / , , )
settings.flickShoot
camera.CFrame = original
restoreCFrame = original
settings.enabled settings.triggerbot
camera = W.CurrentCamera
camera
targets = (, )
#targets >
center = camera.ViewportSize /
sp, on = camera:(targets[].Position)
on (.(sp.X, sp.Y) - center).Magnitude <=
vim = :()
vim:(center.X, center.Y, , )
vim:(center.X, center.Y, , )
lockTarget trickActive
tchar = lockTarget.Character
troot = tchar tchar:()
tcam = W.CurrentCamera
troot tcam
tcam.CFrame = .(tcam.CFrame.Position, troot.Position)
tpCam = W.CurrentCamera
settings.thirdPerson trickActive
root = player.Character player.Character:()
tpCam root
tpCam.CameraType = .CameraType.Scriptable
mouse = UIS:()
center = tpCam.ViewportSize /
tpYaw += (mouse.X - center.X) *
tpPitch = .(tpPitch - (mouse.Y - center.Y) * , -, )
head = root.Position + .(, , )
back = .(tpPitch, tpYaw, ) * .(, , settings.tpDist)
tpCam.CFrame = .(head + back.Position, head)
settings.spinbot
root = player.Character player.Character:()
root
root.CFrame = root.CFrame * .(, .(settings.spinSpeed) * dt, )
settings.tpWalk
root = player.Character player.Character:()
hum = player.Character player.Character:()
root hum
move = hum.MoveDirection
move.Magnitude >
root.CFrame = root.CFrame + move * (settings.tpWalkSpeed * dt)
settings.gravityChanger
W.Gravity ~= settings.gravity
W.Gravity = settings.gravity
W.Gravity ~= originalGravity
W.Gravity = originalGravity
m1 = UIS:(.UserInputType.MouseButton1)
settings.noSpread m1 lastM1
shotCam = W.CurrentCamera
shotCam
preShotPitch = .(.(shotCam.CFrame.LookVector.Y, -, ))
spreadTimer =
lastM1 = m1
settings.noSpread preShotPitch ~= W.CurrentCamera
camK = W.CurrentCamera
spreadTimer -= dt
spreadTimer >
look = camK.CFrame.LookVector
yaw = .(-look.X, -look.Z)
pitch = .(.(look.Y, -, ))
.(pitch - preShotPitch) >
camK.CFrame = .(camK.CFrame.Position, camK.CFrame.Position + (.(preShotPitch, yaw, ) * .(, , -)))
preShotPitch =
settings.noRecoil W.CurrentCamera
camR = W.CurrentCamera
m1
mouse = UIS:()
(mouse - lastMousePos).Magnitude <
noRecoilBase
camR.CFrame = .(camR.CFrame.Position, noRecoilBase.Position + noRecoilBase.LookVector)
noRecoilBase = camR.CFrame
noRecoilBase = camR.CFrame
lastMousePos = mouse
noRecoilBase =
settings.antiAim
root = player.Character player.Character:()
hum = player.Character player.Character:()
root hum hum.MoveDirection.Magnitude < hum.FloorMaterial ~= .Material.Air
antiAimT += dt
antiAimT >=
antiAimT =
antiAimFlip = antiAimFlip
angle = (antiAimFlip -) * .(settings.antiAimAngle)
root.CFrame = .(root.Position) * .(, angle, )
settings.enabled settings.autoShoot
camA = W.CurrentCamera
camA
targets = (, settings.aim360)
#targets >
sp, on = camA:(targets[].Position)
centerA = camA.ViewportSize /
on (.(sp.X, sp.Y) - centerA).Magnitude <=
autoShootT += dt
autoShootT >=
autoShootT =
(targets[], camA)
autoShootT =
char = player.Character
humanoid = char char:()
humanoid
humanoid.WalkSpeed = settings.walkspeed
humanoid.JumpPower = settings.jumpPower
settings.swimBoost humanoid:() == .HumanoidStateType.Swimming
humanoid.WalkSpeed = settings.swimSpeed
settings.autoSprint settings.fly humanoid.MoveDirection.Magnitude > humanoid.FloorMaterial ~= .Material.Air
humanoid:(.HumanoidStateType.Running)
settings.wallClimb
wroot = char:()
wroot humanoid.FloorMaterial == .Material.Air UIS:(.KeyCode.W)
wdir = humanoid.MoveDirection
wdir.Magnitude >
wparams = RaycastParams.()
wparams.FilterType = .RaycastFilterType.Blacklist
wparams.FilterDescendantsInstances = { char }
W:(wroot.Position, wdir.Unit * , wparams)
wroot.AssemblyLinearVelocity = .(, , )
settings.strafe
UIS:(.KeyCode.A) UIS:(.KeyCode.D)
humanoid.WalkSpeed = settings.strafeSpeed
settings.bhop and not settings.fly and humanoid.MoveDirection.Magnitude > 0.1 and humanoid.FloorMaterial ~= Enum.Material.Air then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
if settings.strafeV2 and not settings.fly then
local vroot = char:FindFirstChild("HumanoidRootPart")
if vroot then
local camV = W.CurrentCamera
if camV then
local forward = (UIS:IsKeyDown(Enum.KeyCode.W) and 1 or 0) - (UIS:IsKeyDown(Enum.KeyCode.S) and 1 or 0)
local strafe = (UIS:IsKeyDown(Enum.KeyCode.D) and 1 or 0) - (UIS:IsKeyDown(Enum.KeyCode.A) and 1 or 0)
local up = (UIS:IsKeyDown(Enum.KeyCode.Space) and 1 or 0) - (UIS:IsKeyDown(Enum.KeyCode.LeftControl) and 1 or 0)
local move = camV.CFrame.LookVector * forward + camV.CFrame.RightVector * strafe
if move.Magnitude > 0.01 then
move = move.Unit * settings.strafeV2Speed
else
move = Vector3.new()
end
if up ~= 0 then
vroot.AssemblyLinearVelocity = Vector3.new(move.X, up * settings.strafeV2Speed, move.Z)
else
vroot.AssemblyLinearVelocity = Vector3.new(move.X, vroot.AssemblyLinearVelocity.Y, move.Z)
end
end
end
end
if settings.infJump and not settings.fly and UIS:IsKeyDown(Enum.KeyCode.Space) then
if humanoid.FloorMaterial ~= Enum.Material.Air then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
end
if settings.noclip then
for _, p in ipairs(char:GetDescendants()) do
if p:IsA("BasePart") then
p.CanCollide = false
end
end
end
if settings.speedHack and not settings.fly then
local sroot = char:FindFirstChild("HumanoidRootPart")
if sroot then
local v = sroot.AssemblyLinearVelocity
sroot.AssemblyLinearVelocity = Vector3.new(v.X * settings.speedHackMult, v.Y, v.Z * settings.speedHackMult)
end
end
if settings.hitboxExtend then
if hitboxChar ~= char or hitboxScale ~= settings.hitboxExtendScale then
rebuildHitbox(char)
end
elseif #hitboxParts > 0 then
clearHitbox()
end
end
if settings.scan then
scanTick()
end
end)
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "OpenHub"
screenGui.ResetOnSpawn = false
screenGui.IgnoreGuiInset = true
screenGui.DisplayOrder = 1000
screenGui.Parent = player:WaitForChild("PlayerGui")
print("Hub: gui parented")
local function cleanupOldHubs()
for _, g in ipairs(player.PlayerGui:GetChildren()) do
if g:IsA("ScreenGui") and g.Name == "OpenHub" and g ~= screenGui then
g:Destroy()
end
end
end
local main = Instance.new("Frame")
main.Size = UDim2.fromOffset(440, 430)
main.Position = UDim2.new(0.5, -220, 0.5, -215)
main.BackgroundColor3 = theme.bg
main.BorderSizePixel = 0
main.Visible = false
main.Parent = screenGui
corner(main, 6)
local titleBar = Instance.new("Frame")
titleBar.Size = UDim2.new(1, 0, 0, 38)
titleBar.BackgroundColor3 = theme.bg2
titleBar.BorderSizePixel = 0
titleBar.Parent = main
corner(titleBar, 6)
local titleLabel = new("TextLabel", {
Size = UDim2.new(1, -60, 1, 0),
Position = UDim2.fromOffset(10, 0),
BackgroundTransparency = 1,
Text = "OpenHub",
TextColor3 = theme.accent,
TextSize = 15,
Font = Enum.Font.GothamBold,
TextXAlignment = Enum.TextXAlignment.Left,
})
titleLabel.Parent = titleBar
local dragging = false
local dragOffset = Vector2.zero
titleBar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragOffset = UIS:GetMouseLocation() - main.AbsolutePosition
end
end)
UIS.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
local mouse = UIS:GetMouseLocation()
main.Position = UDim2.fromOffset(mouse.X - dragOffset.X, mouse.Y - dragOffset.Y)
end
end)
UIS.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = false
flicking = false
end
end)
local closeBtn = new("TextButton", {
Size = UDim2.fromOffset(28, 28),
Position = UDim2.new(1, -34, 0, 5),
BackgroundColor3 = theme.btnLight,
Text = "x",
TextColor3 = theme.text,
TextSize = 14,
Font = Enum.Font.GothamBold,
})
closeBtn.Parent = titleBar
corner(closeBtn, 5)
closeBtn.Activated:Connect(function()
settings.fly = false
setFly(false)
setFreecam(false)
hideEsp()
if useDrawing then
for _, d in pairs(espDrawings) do
d.box:Remove()
d.name:Remove()
d.health:Remove()
d.tracer:Remove()
for _, ln in ipairs(d.corners) do
ln:Remove()
end
end
for _, sk in pairs(skeletonDrawings) do
for _, l in ipairs(sk.lines) do
l:Remove()
end
end
for _, line in pairs(centerLines) do
line:Remove()
end
end
for _, h in pairs(highlights) do
h:Destroy()
end
for _, obj in pairs(chamsObjs) do
if obj.model then
obj.model:Destroy()
end
if obj.highlight then
obj.highlight:Destroy()
end
end
espDrawings = {}
skeletonDrawings = {}
highlights = {}
chamsObjs = {}
centerLines = {}
charBounds = {}
clearHitbox()
setNetworkLag(0)
screenGui:Destroy()
end)
local tabBar = Instance.new("Frame")
tabBar.Size = UDim2.fromOffset(90, 392)
tabBar.Position = UDim2.new(1, -90, 0, 38)
tabBar.BackgroundColor3 = theme.bg
tabBar.BorderSizePixel = 0
tabBar.Parent = main
corner(tabBar, 6)
local tabNames = { "ESP", "Combat", "Movement", "Misc", "World", "Shader", "Server", "Players", "Chams", "AntiCheat", "Settings" }
local tabButtons = {}
local tabFrames = {}
local tabScales = {}
local cursors = {}
local activeTab = "ESP"
local function cursorOf(parent)
cursors[parent] = cursors[parent] or 10
return cursors[parent]
end
local function advance(parent, height)
cursors[parent] = cursorOf(parent) + height + 8
end
local function newContentTab(name)
local frame = Instance.new("ScrollingFrame")
frame.Size = UDim2.new(1, -94, 1, -46)
frame.Position = UDim2.fromOffset(0, 38)
frame.BackgroundTransparency = 1
frame.ScrollBarThickness = 4
frame.CanvasSize = UDim2.fromOffset(0, 10)
frame.Visible = false
frame.Parent = main
local scale = Instance.new("UIScale")
scale.Scale = 1
scale.Parent = frame
tabScales[name] = scale
tabFrames[name] = frame
return frame
end
for _, name in ipairs(tabNames) do
local btn = Instance.new("TextButton")
btn.Size = UDim2.fromScale(1, 1 / #tabNames)
local index = table.find(tabNames, name) or 1
btn.Position = UDim2.fromScale(0, (index - 1) / #tabNames)
btn.BackgroundColor3 = theme.btn
btn.Text = name
btn.TextColor3 = theme.text
btn.TextSize = 12
btn.Font = Enum.Font.GothamBold
btn.BorderSizePixel = 0
btn.Parent = tabBar
tabButtons[name] = btn
btn.Activated:Connect(function()
activeTab = name
for n, f in pairs(tabFrames) do
f.Visible = (n == name)
end
for n, b in pairs(tabButtons) do
b.BackgroundColor3 = (n == name) and theme.accentDark or theme.btn
end
local sf = tabScales[name]
if sf then
sf.Scale = 0.96
tweenProps(sf, 0.12, { Scale = 1 })
end
end)
end
local minimized = false
local function setMinimized(v)
minimized = v
if v then
main.Size = UDim2.fromOffset(440, 38)
tabBar.Visible = false
for _, f in pairs(tabFrames) do
f.Visible = false
end
else
main.Size = UDim2.fromOffset(440, 430)
tabBar.Visible = true
for n, f in pairs(tabFrames) do
f.Visible = (n == activeTab)
end
for n, b in pairs(tabButtons) do
b.BackgroundColor3 = (n == activeTab) and theme.accentDark or theme.btn
end
end
end
local minimizeBtn = new("TextButton", {
Size = UDim2.fromOffset(28, 28),
Position = UDim2.new(1, -68, 0, 5),
BackgroundColor3 = theme.btnLight,
Text = "-",
TextColor3 = theme.text,
TextSize = 14,
Font = Enum.Font.GothamBold,
})
minimizeBtn.Parent = titleBar
corner(minimizeBtn, 5)
minimizeBtn.Activated:Connect(function()
setMinimized(not minimized)
end)
local function addSection(parent, text)
local label = new("TextLabel", {
Size = UDim2.new(1, -20, 0, 16),
Position = UDim2.fromOffset(10, cursorOf(parent)),
BackgroundTransparency = 1,
Text = text,
TextColor3 = theme.accent,
TextSize = 12,
Font = Enum.Font.GothamBold,
TextXAlignment = Enum.TextXAlignment.Left,
})
label.Parent = parent
advance(parent, 16)
end
local function addToggle(parent, title, default, callback)
local value = default
local row = new("Frame", {
Size = UDim2.new(1, -20, 0, 28),
Position = UDim2.fromOffset(10, cursorOf(parent)),
BackgroundTransparency = 1,
})
row.Parent = parent
local box = new("TextButton", {
Size = UDim2.fromOffset(22, 22),
Position = UDim2.fromOffset(0, 3),
BackgroundColor3 = theme.btn,
Text = "",
AutoButtonColor = false,
})
box.Parent = row
corner(box, 5)
local check = new("TextLabel", {
Size = UDim2.new(1, 0, 1, 0),
BackgroundTransparency = 1,
Text = "\u{2713}",
TextColor3 = theme.bg,
TextSize = 14,
Font = Enum.Font.GothamBold,
Visible = false,
})
check.Parent = box
local label = new("TextButton", {
Size = UDim2.new(1, -30, 1, 0),
Position = UDim2.fromOffset(30, 0),
BackgroundTransparency = 1,
Text = title,
TextColor3 = theme.text,
TextSize = 14,
Font = Enum.Font.Gotham,
TextXAlignment = Enum.TextXAlignment.Left,
})
label.Parent = row
local function update()
if value then
box.BackgroundColor3 = theme.accent
check.Visible = true
label.TextColor3 = theme.accent
else
box.BackgroundColor3 = theme.btn
check.Visible = false
label.TextColor3 = theme.text
end
end
update()
local function click()
value = not value
update()
callback(value)
end
box.Activated:Connect(click)
label.Activated:Connect(click)
advance(parent, 28)
end
local function addSlider(parent, title, min, max, default, callback)
local value = default
local label = new("TextLabel", {
Size = UDim2.new(1, -20, 0, 18),
Position = UDim2.fromOffset(10, cursorOf(parent)),
BackgroundTransparency = 1,
Text = title .. ": " .. string.format("%.0f", value),
TextColor3 = theme.text,
TextSize = 13,
Font = Enum.Font.Gotham,
TextXAlignment = Enum.TextXAlignment.Left,
})
label.Parent = parent
advance(parent, 18)
local bar = new("TextButton", {
Size = UDim2.new(1, -20, 0, 12),
Position = UDim2.fromOffset(10, cursorOf(parent)),
BackgroundColor3 = theme.btnLight,
Text = "",
})
bar.Parent = parent
corner(bar, 6)
local fill = new("Frame", {
Size = UDim2.fromScale(0, 1),
BackgroundColor3 = theme.accent,
BorderSizePixel = 0,
})
fill.Parent = bar
corner(fill, 6)
local function setRatio(ratio)
ratio = math.clamp(ratio, 0, 1)
value = min + (max - min) * ratio
fill.Size = UDim2.fromScale(ratio, 1)
label.Text = title .. ": " .. string.format("%.0f", value)
callback(value)
end
setRatio((default - min) / (max - min))
local sliderDragging = false
bar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
sliderDragging = true
setRatio((input.Position.X - bar.AbsolutePosition.X) / bar.AbsoluteSize.X)
end
end)
UIS.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
sliderDragging = false
end
end)
UIS.InputChanged:Connect(function(input)
if sliderDragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
setRatio((input.Position.X - bar.AbsolutePosition.X) / bar.AbsoluteSize.X)
end
end)
advance(parent, 12)
end
local function addDropdown(parent, title, getOptions, default, callback)
local current = default
local button = new("TextButton", {
Size = UDim2.new(1, -20, 0, 36),
Position = UDim2.fromOffset(10, cursorOf(parent)),
BackgroundColor3 = theme.btn,
Text = title .. ": " .. current,
TextColor3 = theme.text,
TextSize = 14,
Font = Enum.Font.Gotham,
TextXAlignment = Enum.TextXAlignment.Left,
})
button.Parent = parent
corner(button, 6)
local menu = new("Frame", {
Size = UDim2.fromOffset(280, 0),
Position = UDim2.fromOffset(0, 0),
BackgroundColor3 = theme.bg2,
BorderSizePixel = 0,
Visible = false,
ZIndex = 50,
})
menu.Parent = main
corner(menu, 6)
local menuScale = Instance.new("UIScale")
menuScale.Parent = menu
local function positionMenu()
local anchor = button.AbsolutePosition + Vector2.new(0, button.AbsoluteSize.Y)
menu.Position = UDim2.fromOffset(anchor.X - main.AbsolutePosition.X, anchor.Y - main.AbsolutePosition.Y)
end
local function refresh()
menu:ClearAllChildren()
local options = getOptions()
for index, option in ipairs(options) do
local item = new("TextButton", {
Size = UDim2.new(1, 0, 0, 32),
Position = UDim2.fromOffset(0, (index - 1) * 32),
BackgroundColor3 = option == current and theme.accentDark or theme.btn,
Text = option,
TextColor3 = theme.text,
TextSize = 13,
Font = Enum.Font.Gotham,
BorderSizePixel = 0,
ZIndex = 50,
})
item.Parent = menu
item.Activated:Connect(function()
current = option
button.Text = title .. ": " .. current
menu.Visible = false
refresh()
callback(option)
end)
end
menu.Size = UDim2.fromOffset(280, #options * 32)
positionMenu()
end
refresh()
button.Activated:Connect(function()
menu.Visible = not menu.Visible
if menu.Visible then
refresh()
menuScale.Scale = 0.85
tweenProps(menuScale, 0.12, { Scale = 1 })
end
end)
advance(parent, 36)
end
local function addButton(parent, title, callback)
local button = new("TextButton", {
Size = UDim2.new(1, -20, 0, 36),
Position = UDim2.fromOffset(10, cursorOf(parent)),
BackgroundColor3 = theme.accentDark,
Text = title,
TextColor3 = theme.text,
TextSize = 14,
Font = Enum.Font.GothamBold,
})
button.Parent = parent
corner(button, 6)
button.Activated:Connect(callback)
advance(parent, 36)
end
local function addInfo(parent, text)
local label = new("TextLabel", {
Size = UDim2.new(1, -20, 0, 20),
Position = UDim2.fromOffset(10, cursorOf(parent)),
BackgroundTransparency = 1,
Text = text,
TextColor3 = theme.dim,
TextSize = 12,
Font = Enum.Font.Gotham,
TextXAlignment = Enum.TextXAlignment.Left,
})
label.Parent = parent
advance(parent, 20)
end
local function telekill(plr)
local start = os.clock()
local conn
conn = RS.RenderStepped:Connect(function()
if os.clock() - start > 2 then
conn:Disconnect()
return
end
local tchar = plr.Character
local root = tchar and tchar:FindFirstChild("HumanoidRootPart")
local hum = tchar and tchar:FindFirstChildOfClass("Humanoid")
if not root or not hum or hum.Health <= 0 then
conn:Disconnect()
return
end
root.CFrame = CFrame.new(root.Position.X, root.Position.Y - 500, root.Position.Z)
end)
end
RS.RenderStepped:Connect(function(dt)
if settings.massKill then
massKillTick += dt
if massKillTick >= math.max(0.5, settings.massKillDelay) then
massKillTick = 0
for _, other in ipairs(P:GetPlayers()) do
if other ~= player then
telekill(other)
end
end
end
end
if settings.bringAll then
bringAllFront()
end
end)
local function scanAddSus(plr, reason, points, note)
local row = scanSus[plr]
if not row then
return
end
local seen = false
for i, r in ipairs(row.reasons) do
if r[1] == reason then
r[2] = os.clock()
r[3] = note
seen = true
break
end
end
if not seen then
table.insert(row.reasons, { reason, os.clock(), note })
end
row.score = math.min(999, row.score + points)
if row.score >= 100 then
row.flagged = true
end
end
scanTick = function()
local now = os.clock()
for _, plr in ipairs(P:GetPlayers()) do
if plr == player then
continue
end
local char = plr.Character
if char and not scanWatched[char] then
scanWatched[char] = true
local hum = char:FindFirstChildOfClass("Humanoid")
if hum then
local lastH = hum.Health
hum:GetPropertyChangedSignal("Health"):Connect(function()
local cur = hum.Health
if cur < lastH then
local row = scanHits[plr]
if not row then
row = { count = 0, t = 0, shooter = nil }
scanHits[plr] = row
end
if now - row.t > 1 then
row.count = 0
row.shooter = nil
row.t = now
end
row.count += 1
local vroot = plr.Character and plr.Character:FindFirstChild("HumanoidRootPart")
local best, bestDot = nil, -1
if vroot then
for _, other in ipairs(P:GetPlayers()) do
if other == plr or other == player then
continue
end
local och = other.Character
local oroot = och and och:FindFirstChild("HumanoidRootPart")
if oroot then
local toVictim = vroot.Position - oroot.Position
local d = toVictim.Magnitude
if d > 1 and d < 200 then
local dot = oroot.CFrame.LookVector:Dot(toVictim / d)
if dot > bestDot then
bestDot = dot
best = other
end
end
end
end
end
if best then
row.shooter = best
end
if row.count >= 7 then
if row.shooter then
scanAddSus(row.shooter, "Rapid fire", 40, "rapid damage on " .. plr.Name)
end
row.count = 0
row.shooter = nil
row.t = now
end
end
lastH = cur
end)
end
end
end
if now - (scanLastTick or 0) < 0.2 then
return
end
scanLastTick = now
for _, plr in ipairs(P:GetPlayers()) do
if plr == player then
continue
end
local char = plr.Character
local row = scanSus[plr]
if not char then
scanSus[plr] = nil
scanSample[plr] = nil
else
if not row then
row = { score = 0, reasons = {}, flagged = false }
scanSus[plr] = row
end
local root = char:FindFirstChild("HumanoidRootPart")
local hum = char:FindFirstChildOfClass("Humanoid")
local s = scanSample[plr]
if root and hum then
local pos = root.Position
local vel = root.AssemblyLinearVelocity or Vector3.new()
local speed = vel.Magnitude
local airborne = hum.FloorMaterial == Enum.Material.Air or hum:GetState() == Enum.HumanoidStateType.Freefall
if s then
local dt = now - s.t
if dt > 0 and dt < 0.5 then
local dist = (pos - s.pos).Magnitude
if dist > 45 then
scanAddSus(plr, "Teleport", 35, math.floor(dist) .. " studs in " .. math.floor(dt * 100) .. "ms")
elseif speed > settings.cheatSpeed and (dist / dt) > settings.cheatSpeed then
scanAddSus(plr, "Speed", 25, math.floor(speed) .. " studs/s")
end
if airborne then
if now - s.airborneSince > 3 and math.abs(vel.Y) < 8 then
scanAddSus(plr, "Fly", 30, "hovering mid-air")
end
if vel.Y > 18 then
if now - s.upSince > 1 then
scanAddSus(plr, "Fly", 30, "rising at " .. math.floor(vel.Y) .. " studs/s")
end
else
s.upSince = now
end
else
s.airborneSince = now
s.upSince = now
end
if hum:GetState() == Enum.HumanoidStateType.Running then
local params = RaycastParams.new()
params.FilterType = Enum.RaycastFilterType.Blacklist
params.FilterDescendantsInstances = { char }
local ray = W:Raycast(pos, Vector3.new(0, 1, 0) * 4, params)
if ray and ray.Distance < 0.7 then
scanAddSus(plr, "Noclip", 25, "inside geometry")
end
end
end
end
scanSample[plr] = {
pos = pos,
t = now,
airborneSince = s and s.airborneSince or now,
upSince = s and s.upSince or now,
}
else
scanSample[plr] = nil
end
end
if row then
row.score = math.max(0, row.score - 0.4)
if row.score < 40 then
row.flagged = false
end
if #row.reasons > 0 then
for i = #row.reasons, 1, -1 do
if now - row.reasons[i][2] > 6 then
table.remove(row.reasons, i)
end
end
end
if row.score == 0 then
row.reasons = {}
end
end
end
if lockTarget then
local lchar = lockTarget.Character
local lhum = lchar and lchar:FindFirstChildOfClass("Humanoid")
if not (lchar and lhum and lhum.Health > 0) then
lockTarget = nil
end
end
if now - (scanUiTimer or 0) >= 0.5 then
scanUiTimer = now
refreshCheatersUI()
end
end
local function buildCheaterRow(plr)
local frame = new("Frame", {
Size = UDim2.new(1, -8, 0, 56),
Position = UDim2.fromOffset(6, 6),
BackgroundColor3 = theme.bg2,
BorderSizePixel = 0,
})
frame.Parent = cheaterScroll
corner(frame, 6)
local name = new("TextLabel", {
Size = UDim2.new(1, -84, 0, 18),
Position = UDim2.fromOffset(6, 4),
BackgroundTransparency = 1,
Text = plr.Name,
TextColor3 = theme.red,
TextSize = 13,
Font = Enum.Font.GothamBold,
TextXAlignment = Enum.TextXAlignment.Left,
})
name.Parent = frame
local score = new("TextLabel", {
Size = UDim2.new(0, 74, 0, 16),
Position = UDim2.new(1, -80, 0, 5),
BackgroundTransparency = 1,
Text = "risk 0",
TextColor3 = theme.accent,
TextSize = 11,
Font = Enum.Font.Gotham,
TextXAlignment = Enum.TextXAlignment.Right,
})
score.Parent = frame
local reasons = new("TextLabel", {
Size = UDim2.new(1, -12, 0, 16),
Position = UDim2.fromOffset(6, 21),
BackgroundTransparency = 1,
Text = "",
TextColor3 = theme.dim,
TextSize = 10,
Font = Enum.Font.Gotham,
TextWrapped = true,
TextXAlignment = Enum.TextXAlignment.Left,
})
reasons.Parent = frame
local kill = new("TextButton", {
Size = UDim2.new(0, 48, 0, 20),
Position = UDim2.fromOffset(6, 34),
BackgroundColor3 = theme.red,
Text = "Kill",
TextColor3 = theme.bg,
TextSize = 11,
Font = Enum.Font.GothamBold,
BorderSizePixel = 0,
})
kill.Parent = frame
corner(kill, 4)
kill.Activated:Connect(function()
telekill(plr)
end)
local tp = new("TextButton", {
Size = UDim2.new(0, 48, 0, 20),
Position = UDim2.fromOffset(60, 34),
BackgroundColor3 = theme.accentDark,
Text = "TP",
TextColor3 = theme.text,
TextSize = 11,
Font = Enum.Font.GothamBold,
BorderSizePixel = 0,
})
tp.Parent = frame
corner(tp, 4)
tp.Activated:Connect(function()
teleportTo(plr)
end)
local lock = new("TextButton", {
Size = UDim2.new(0, 56, 0, 20),
Position = UDim2.fromOffset(114, 34),
BackgroundColor3 = theme.btn,
Text = "Lock",
TextColor3 = theme.text,
TextSize = 11,
Font = Enum.Font.GothamBold,
BorderSizePixel = 0,
})
lock.Parent = frame
corner(lock, 4)
lock.Activated:Connect(function()
lockTarget = (lockTarget == plr) and nil or plr
refreshCheatersUI()
end)
return { frame = frame, name = name, score = score, reasons = reasons, lock = lock }
end
refreshCheatersUI = function()
if not cheaterScroll then
return
end
local flagged = {}
for plr, row in pairs(scanSus) do
if row.flagged then
table.insert(flagged, plr)
end
end
table.sort(flagged, function(a, b)
return (scanSus[a].score or 0) > (scanSus[b].score or 0)
end)
for plr, row in pairs(cheaterRows) do
if not scanSus[plr] or not scanSus[plr].flagged then
row.frame:Destroy()
cheaterRows[plr] = nil
end
end
for i, plr in ipairs(flagged) do
local row = cheaterRows[plr]
if not row then
row = buildCheaterRow(plr)
cheaterRows[plr] = row
end
row.frame.Position = UDim2.fromOffset(6, (i - 1) * 62 + 6)
row.frame.Visible = true
local sus = scanSus[plr]
row.name.Text = plr.Name
local reasonText = {}
for _, r in ipairs(sus.reasons) do
table.insert(reasonText, r[3] and (r[1] .. " (" .. r[3] .. ")") or r[1])
end
row.reasons.Text = #reasonText > 0 and table.concat(reasonText, ", ") or "flagging..."
row.score.Text = "risk " .. math.floor(sus.score)
row.lock.Text = (lockTarget == plr) and "Locked" or "Lock"
row.lock.BackgroundColor3 = (lockTarget == plr) and theme.accent or theme.btn
end
if cheaterScroll then
cheaterScroll.CanvasSize = UDim2.fromOffset(0, #flagged * 62 + 12)
end
end
local function addTextBox(parent, title, default, callback)
local label = new("TextLabel", {
Size = UDim2.new(1, -20, 0, 16),
Position = UDim2.fromOffset(10, cursorOf(parent)),
BackgroundTransparency = 1,
Text = title,
TextColor3 = theme.dim,
TextSize = 12,
Font = Enum.Font.GothamBold,
TextXAlignment = Enum.TextXAlignment.Left,
})
label.Parent = parent
advance(parent, 16)
local box = new("TextBox", {
Size = UDim2.new(1, -20, 0, 34),
Position = UDim2.fromOffset(10, cursorOf(parent)),
BackgroundColor3 = theme.btn,
Text = default,
PlaceholderText = title,
TextColor3 = theme.text,
PlaceholderColor3 = theme.dim,
TextSize = 14,
Font = Enum.Font.Gotham,
TextXAlignment = Enum.TextXAlignment.Left,
ClearTextOnFocus = false,
})
box.Parent = parent
corner(box, 6)
box.FocusLost:Connect(function()
callback(box.Text)
end)
advance(parent, 34)
end
local fovPalette = {
{ "Green", Color3.fromRGB(90, 255, 120) },
{ "Red", Color3.fromRGB(255, 90, 90) },
{ "Yellow", Color3.fromRGB(255, 230, 90) },
{ "White", Color3.fromRGB(255, 255, 255) },
{ "Cyan", Color3.fromRGB(90, 220, 255) },
{ "Orange", Color3.fromRGB(255, 160, 80) },
{ "Pink", Color3.fromRGB(255, 120, 200) },
{ "Purple", Color3.fromRGB(180, 120, 255) },
{ "Blue", Color3.fromRGB(90, 140, 255) },
}
local function colorName(c)
for _, p in ipairs(fovPalette) do
if p[2] == c then
return p[1]
end
end
return "Custom"
end
local function addColorPicker(parent, title, default, callback)
local current = default
local button = new("TextButton", {
Size = UDim2.new(1, -20, 0, 36),
Position = UDim2.fromOffset(10, cursorOf(parent)),
BackgroundColor3 = theme.btn,
Text = title .. ": " .. colorName(current),
TextColor3 = theme.text,
TextSize = 14,
Font = Enum.Font.Gotham,
TextXAlignment = Enum.TextXAlignment.Left,
})
button.Parent = parent
corner(button, 6)
local swatch = new("Frame", {
Size = UDim2.fromOffset(20, 20),
Position = UDim2.new(1, -28, 0.5, -10),
BackgroundColor3 = current,
BorderSizePixel = 0,
})
swatch.Parent = button
corner(swatch, 4)
local menu = new("Frame", {
Size = UDim2.fromOffset(280, 0),
Position = UDim2.fromOffset(0, 0),
BackgroundColor3 = theme.bg2,
BorderSizePixel = 0,
Visible = false,
ZIndex = 50,
})
menu.Parent = main
corner(menu, 6)
local menuScale = Instance.new("UIScale")
menuScale.Parent = menu
local function positionMenu()
local anchor = button.AbsolutePosition + Vector2.new(0, button.AbsoluteSize.Y)
menu.Position = UDim2.fromOffset(anchor.X - main.AbsolutePosition.X, anchor.Y - main.AbsolutePosition.Y)
end
local function refresh()
menu:ClearAllChildren()
for index, p in ipairs(fovPalette) do
local item = new("TextButton", {
Size = UDim2.new(1, 0, 0, 28),
Position = UDim2.fromOffset(0, (index - 1) * 28),
BackgroundColor3 = p[2] == current and theme.accentDark or theme.btn,
Text = " " .. p[1],
TextColor3 = theme.text,
TextSize = 13,
Font = Enum.Font.Gotham,
BorderSizePixel = 0,
TextXAlignment = Enum.TextXAlignment.Left,
ZIndex = 50,
})
item.Parent = menu
local dot = new("Frame", {
Size = UDim2.fromOffset(12, 12),
Position = UDim2.fromOffset(8, 8),
BackgroundColor3 = p[2],
BorderSizePixel = 0,
ZIndex = 50,
})
dot.Parent = item
corner(dot, 6)
item.Activated:Connect(function()
current = p[2]
button.Text = title .. ": " .. p[1]
swatch.BackgroundColor3 = current
menu.Visible = false
callback(current)
end)
end
menu.Size = UDim2.fromOffset(280, #fovPalette * 28)
positionMenu()
end
refresh()
button.Activated:Connect(function()
menu.Visible = not menu.Visible
if menu.Visible then
refresh()
menuScale.Scale = 0.85
tweenProps(menuScale, 0.12, { Scale = 1 })
end
end)
advance(parent, 36)
end
local function colorToHex(c)
return string.format("#%02X%02X%02X", math.floor(c.R * 255 + 0.5), math.floor(c.G * 255 + 0.5), math.floor(c.B * 255 + 0.5))
end
local function hexToColor(h)
local clean = (h or ""):gsub("#", ""):gsub("%s", "")
if #clean == 6 then
local r = tonumber(clean:sub(1, 2), 16)
local g = tonumber(clean:sub(3, 4), 16)
local b = tonumber(clean:sub(5, 6), 16)
if r and g and b then
return Color3.fromRGB(r, g, b)
end
end
return nil
end
local function addHexColorPicker(parent, title, default, callback)
local current = default
local button = new("TextButton", {
Size = UDim2.new(1, -20, 0, 36),
Position = UDim2.fromOffset(10, cursorOf(parent)),
BackgroundColor3 = theme.btn,
Text = title .. ": " .. colorToHex(current),
TextColor3 = theme.text,
TextSize = 14,
Font = Enum.Font.Gotham,
TextXAlignment = Enum.TextXAlignment.Left,
})
button.Parent = parent
corner(button, 6)
local swatch = new("Frame", {
Size = UDim2.fromOffset(20, 20),
Position = UDim2.new(1, -28, 0.5, -10),
BackgroundColor3 = current,
BorderSizePixel = 0,
ZIndex = 50,
})
swatch.Parent = button
corner(swatch, 4)
local menu = new("Frame", {
Size = UDim2.fromOffset(260, 190),
Position = UDim2.fromOffset(0, 0),
BackgroundColor3 = theme.bg2,
BorderSizePixel = 0,
Visible = false,
ZIndex = 50,
})
menu.Parent = main
corner(menu, 6)
local menuScale = Instance.new("UIScale")
menuScale.Parent = menu
local function positionMenu()
local anchor = button.AbsolutePosition + Vector2.new(0, button.AbsoluteSize.Y)
menu.Position = UDim2.fromOffset(anchor.X - main.AbsolutePosition.X, anchor.Y - main.AbsolutePosition.Y)
end
local preview = new("Frame", {
Size = UDim2.fromOffset(24, 24),
Position = UDim2.fromOffset(222, 12),
BackgroundColor3 = current,
BorderSizePixel = 0,
ZIndex = 50,
})
preview.Parent = menu
corner(preview, 4)
local hexBox = new("TextBox", {
Size = UDim2.new(1, -40, 0, 30),
Position = UDim2.fromOffset(12, 8),
BackgroundColor3 = theme.btn,
PlaceholderText = "#RRGGBB",
Text = colorToHex(current),
TextColor3 = theme.text,
TextSize = 13,
Font = Enum.Font.GothamBold,
ClearTextOnFocus = false,
ZIndex = 50,
})
hexBox.Parent = menu
corner(hexBox, 4)
local sliders = {}
local function channelOf(name)
if name == "R" then
return current.R
elseif name == "G" then
return current.G
end
return current.B
end
local function applyColor(newColor)
current = newColor
swatch.BackgroundColor3 = current
preview.BackgroundColor3 = current
hexBox.Text = colorToHex(current)
for _, s in ipairs(sliders) do
local ch = channelOf(s.ch)
s.fill.Size = UDim2.fromScale(ch, 1)
s.label.Text = s.ch .. ": " .. string.format("%.0f", ch * 255)
end
callback(current)
end
local function makeSlider(ch, y)
local label = new("TextLabel", {
Size = UDim2.new(1, -24, 0, 14),
Position = UDim2.fromOffset(12, y),
BackgroundTransparency = 1,
Text = ch .. ": ",
TextColor3 = theme.text,
TextSize = 12,
Font = Enum.Font.Gotham,
TextXAlignment = Enum.TextXAlignment.Left,
ZIndex = 50,
})
label.Parent = menu
local bar = new("TextButton", {
Size = UDim2.new(1, -80, 0, 10),
Position = UDim2.fromOffset(60, y),
BackgroundColor3 = theme.btnLight,
Text = "",
ZIndex = 50,
})
bar.Parent = menu
corner(bar, 4)
local fill = new("Frame", {
Size = UDim2.fromScale(0, 1),
BackgroundColor3 = theme.accent,
BorderSizePixel = 0,
ZIndex = 50,
})
fill.Parent = bar
corner(fill, 4)
local slider = { ch = ch, label = label, bar = bar, fill = fill }
local dragging = false
local function setRatio(ratio)
ratio = math.clamp(ratio, 0, 1)
local v = ratio * 255
fill.Size = UDim2.fromScale(ratio, 1)
label.Text = ch .. ": " .. string.format("%.0f", v)
local nc = Color3.fromRGB(
ch == "R" and v or current.R * 255,
ch == "G" and v or current.G * 255,
ch == "B" and v or current.B * 255
)
applyColor(nc)
end
bar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
setRatio((input.Position.X - bar.AbsolutePosition.X) / bar.AbsoluteSize.X)
end
end)
UIS.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = false
end
end)
UIS.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
setRatio((input.Position.X - bar.AbsolutePosition.X) / bar.AbsoluteSize.X)
end
end)
table.insert(sliders, slider)
return slider
end
makeSlider("R", 46)
makeSlider("G", 62)
makeSlider("B", 78)
hexBox.FocusLost:Connect(function()
local nc = hexToColor(hexBox.Text)
if nc then
applyColor(nc)
else
hexBox.Text = colorToHex(current)
end
end)
local presetY = 100
for i, p in ipairs(fovPalette) do
local dot = new("TextButton", {
Size = UDim2.fromOffset(20, 20),
Position = UDim2.fromOffset(14 + (i - 1) * 24, presetY),
BackgroundColor3 = p[2],
Text = "",
BorderSizePixel = 0,
ZIndex = 50,
})
dot.Parent = menu
corner(dot, 10)
dot.Activated:Connect(function()
applyColor(p[2])
end)
end
button.Activated:Connect(function()
menu.Visible = not menu.Visible
if menu.Visible then
positionMenu()
applyColor(current)
menuScale.Scale = 0.85
tweenProps(menuScale, 0.12, { Scale = 1 })
end
end)
advance(parent, 36)
end
local function addKeybind(parent, title, defaultKey, callback)
local key = defaultKey
local rebinding = false
local button = new("TextButton", {
Size = UDim2.new(1, -20, 0, 36),
Position = UDim2.fromOffset(10, cursorOf(parent)),
BackgroundColor3 = theme.btn,
Text = title,
TextColor3 = theme.text,
TextSize = 14,
Font = Enum.Font.Gotham,
TextXAlignment = Enum.TextXAlignment.Left,
})
button.Parent = parent
corner(button, 6)
local function updateText()
if rebinding then
button.Text = "Press a key (Esc = none)..."
elseif key then
button.Text = title .. ": " .. key.Name
else
button.Text = title .. ": None"
end
end
updateText()
button.Activated:Connect(function()
rebinding = not rebinding
button.BackgroundColor3 = rebinding and theme.accentDark or theme.btn
updateText()
end)
local function findTrickShotTarget()
local cam = W.CurrentCamera
if not cam then
return nil
end
local camPos = cam.CFrame.Position
local best = nil
local bestD = math.huge
for _, other in ipairs(P:GetPlayers()) do
if other == player then
continue
end
if settings.ignoreFriends and other:IsFriendsWith(player) then
continue
end
local char = other.Character
if not char then
continue
end
if settings.teamCheck and player.Team and player.Team == other.Team then
continue
end
local humanoid = char:FindFirstChildOfClass("Humanoid")
if humanoid and settings.ignoreDead and humanoid.Health <= 0 then
continue
end
local part = char:FindFirstChild(settings.hitPart) or char:FindFirstChild("HumanoidRootPart")
if not part then
continue
end
if settings.ignoreInvis and part.Transparency >= 1 then
continue
end
local dist = (camPos - part.Position).Magnitude
if dist >= bestD or dist > settings.maxDistance then
continue
end
local params = RaycastParams.new()
params.FilterType = Enum.RaycastFilterType.Blacklist
params.FilterDescendantsInstances = { player.Character, char }
if W:Raycast(camPos, (part.Position - camPos).Unit * dist, params) then
continue
end
best = other
bestD = dist
end
return best
end
local function doTrickShot()
if trickActive or not settings.trickShot then
return
end
trickActive = true
local humanoid = player.Character and player.Character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
local cam = W.CurrentCamera
if not cam then
trickActive = false
return
end
local origType = cam.CameraType
cam.CameraType = Enum.CameraType.Scriptable
local startCF = cam.CFrame
local eye = startCF.Position
local look = startCF.LookVector
look = Vector3.new(look.X, 0, look.Z)
if look.Magnitude < 0.01 then
look = Vector3.new(0, 0, -1)
end
look = look.Unit
local startAng = math.atan2(look.X, look.Z)
local dur = 0.6
local t0 = os.clock()
spawn(function()
local spun = false
while trickActive do
if not cam.Parent then
trickActive = false
break
end
local el = os.clock() - t0
if el >= dur and not spun then
spun = true
local target = findTrickShotTarget()
if target and cam.Parent then
trickLockTarget = target
trickLockUntil = os.clock() + 1.2
end
end
if spun and os.clock() > trickLockUntil then
trickActive = false
end
if not trickActive then
break
end
if trickLockTarget then
local tchar = trickLockTarget.Character
local troot = tchar and (tchar:FindFirstChild(settings.hitPart) or tchar:FindFirstChild("HumanoidRootPart"))
if troot then
cam.CFrame = CFrame.lookAt(cam.CFrame.Position, troot.Position)
end
else
local ang = startAng + (el / dur) * math.pi * 2
local dir = Vector3.new(math.sin(ang), 0, math.cos(ang))
cam.CFrame = CFrame.lookAt(eye, eye + dir)
end
wait()
end
trickActive = false
trickLockTarget = nil
if cam.Parent and cam.CameraType == Enum.CameraType.Scriptable then
cam.CameraType = origType or Enum.CameraType.Custom
end
end)
end
UIS.InputBegan:Connect(function(input, processed)
if processed then
return
end
if rebinding and input.KeyCode ~= Enum.KeyCode.None then
key = (input.KeyCode == Enum.KeyCode.Escape) and nil or input.KeyCode
rebinding = false
button.BackgroundColor3 = theme.btn
updateText()
callback(key)
end
end)
advance(parent, 36)
end
local function finishTab(name)
local frame = tabFrames[name]
frame.CanvasSize = UDim2.fromOffset(0, cursorOf(frame))
end
local espTab = newContentTab("ESP")
addSection(espTab, "ESP")
addToggle(espTab, "Enabled", settings.esp, function(v) settings.esp = v save() end)
addToggle(espTab, "Show names", settings.espName, function(v) settings.espName = v save() end)
addToggle(espTab, "Show boxes", settings.espBox, function(v) settings.espBox = v save() end)
addToggle(espTab, "Corner boxes", settings.espCornerBoxes, function(v) settings.espCornerBoxes = v save() end)
addToggle(espTab, "Distance", settings.espDistance, function(v) settings.espDistance = v save() end)
addToggle(espTab, "Show health", settings.espHealth, function(v) settings.espHealth = v save() end)
addToggle(espTab, "Highlight enemies", settings.espHighlight, function(v) settings.espHighlight = v save() end)
addToggle(espTab, "Gun name", settings.espGun, function(v) settings.espGun = v save() end)
addToggle(espTab, "Kills / Deaths", settings.espKills, function(v) settings.espKills = v save() end)
addToggle(espTab, "Velocity", settings.espVelocity, function(v) settings.espVelocity = v save() end)
addToggle(espTab, "Skeleton", settings.espSkeleton, function(v) settings.espSkeleton = v save() end)
addToggle(espTab, "Tracers", settings.tracers, function(v) settings.tracers = v save() end)
addDropdown(espTab, "Body type", function() return { "Auto", "R15", "R6" } end, settings.bodyType, function(v) settings.bodyType = v save() end)
addInfo(espTab, "Drawing-based, works without guis")
finishTab("ESP")
local fovCircle = Instance.new("Frame")
fovCircle.ZIndex = 5
fovCircle.BackgroundColor3 = settings.fovColor
fovCircle.BackgroundTransparency = 0.85
fovCircle.BorderSizePixel = 0
fovCircle.Visible = false
fovCircle.Parent = screenGui
local fovCircleCorner = Instance.new("UICorner")
fovCircleCorner.CornerRadius = UDim.new(1, 0)
fovCircleCorner.Parent = fovCircle
local fovCircleStroke = Instance.new("UIStroke")
fovCircleStroke.Thickness = 1.5
fovCircleStroke.Color = settings.fovColor
fovCircleStroke.Parent = fovCircle
local function updateFovCircle()
fovCircle.Visible = settings.showFovCircle
fovCircle.Size = UDim2.fromOffset(settings.fov * 2, settings.fov * 2)
fovCircle.Position = UDim2.new(0.5, -settings.fov, 0.5, -settings.fov)
fovCircle.BackgroundColor3 = settings.fovColor
fovCircle.BackgroundTransparency = 0.85
fovCircleStroke.Color = settings.fovColor
end
local targetLabel = Instance.new("TextLabel")
targetLabel.ZIndex = 5
targetLabel.Size = UDim2.new(0, 220, 0, 26)
targetLabel.Position = UDim2.new(0.5, -110, 0, 6)
targetLabel.BackgroundColor3 = theme.bg
targetLabel.TextColor3 = theme.accent
targetLabel.TextSize = 13
targetLabel.Font = Enum.Font.GothamBold
targetLabel.Visible = false
targetLabel.Parent = screenGui
corner(targetLabel, 6)
local targetTimer = 0
RS.RenderStepped:Connect(function(dt)
if settings.showTarget then
targetLabel.Visible = true
targetTimer -= dt
if targetTimer <= 0 then
targetTimer = 0.1
local info = getTargetInfo()
targetLabel.Text = info and ("Target: " .. info.name .. " (" .. info.dist .. ")") or "Target: none"
end
elseif targetLabel.Visible then
targetLabel.Visible = false
end
end)
UIS.InputBegan:Connect(function(input, processed)
if processed then
return
end
if settings.toggleKey and input.KeyCode == settings.toggleKey then
settings.enabled = not settings.enabled
save()
end
if settings.hideKey and input.KeyCode == settings.hideKey then
setMinimized(not minimized)
end
if settings.mouseFreeKey and input.KeyCode == settings.mouseFreeKey then
if UIS.MouseBehavior == Enum.MouseBehavior.Free then
UIS.MouseBehavior = Enum.MouseBehavior.LockCenter
else
UIS.MouseBehavior = Enum.MouseBehavior.Free
end
end
if settings.lagSwitch and settings.lagSwitchKey and input.KeyCode == settings.lagSwitchKey then
setNetworkLag(settings.lagSwitchMs)
end
if settings.trickShot and settings.trickShotKey and input.KeyCode == settings.trickShotKey then
doTrickShot()
end
end)
UIS.InputEnded:Connect(function(input)
if settings.lagSwitch and settings.lagSwitchKey and input.KeyCode == settings.lagSwitchKey then
setNetworkLag(0)
end
end)
local playerTab = newContentTab("Combat")
addSection(playerTab, "AIM")
addToggle(playerTab, "Aim enabled", settings.enabled, function(v) settings.enabled = v save() end)
addKeybind(playerTab, "Toggle key", settings.toggleKey, function(k) settings.toggleKey = k save() end)
addToggle(playerTab, "Aimbot", settings.aimbot, function(v) settings.aimbot = v save() end)
addToggle(playerTab, "Silent aim", settings.silentAim, function(v) settings.silentAim = v save() end)
addToggle(playerTab, "360 silent aim", settings.silent360, function(v) settings.silent360 = v save() end)
addToggle(playerTab, "360 aimbot", settings.aim360, function(v) settings.aim360 = v save() end)
addToggle(playerTab, "Multi target", settings.multiTarget, function(v) settings.multiTarget = v save() end)
addSlider(playerTab, "Max targets", 1, 10, settings.maxTargets, function(v) settings.maxTargets = v save() end)
addToggle(playerTab, "Flick on click", settings.flick, function(v) settings.flick = v save() end)
addToggle(playerTab, "Flick on shoot", settings.flickShoot, function(v) settings.flickShoot = v save() end)
addDropdown(playerTab, "Hit part", function() return { "Head", "Torso", "HumanoidRootPart" } end, settings.hitPart, function(v) settings.hitPart = v save() end)
addDropdown(playerTab, "Target mode", function() return { "Crosshair", "Lowest HP", "Closest" } end, settings.aimTargetMode, function(v) settings.aimTargetMode = v save() end)
addSlider(playerTab, "Aim FOV", 0, 500, settings.fov, function(v) settings.fov = v save() updateFovCircle() end)
addSlider(playerTab, "Smoothing", 0, 100, settings.smoothing, function(v) settings.smoothing = v save() end)
addSlider(playerTab, "Prediction", 0, 100, settings.prediction, function(v) settings.prediction = v save() end)
addSlider(playerTab, "Max distance", 50, 1000, settings.maxDistance, function(v) settings.maxDistance = v save() end)
addToggle(playerTab, "Team check", settings.teamCheck, function(v) settings.teamCheck = v save() end)
addToggle(playerTab, "Wall check", settings.checkVisible, function(v) settings.checkVisible = v save() end)
addToggle(playerTab, "Wallbang", settings.wallbang, function(v) settings.wallbang = v save() end)
addToggle(playerTab, "Sticky aim", settings.stickyAim, function(v) settings.stickyAim = v save() end)
addInfo(playerTab, "Sticky aim keeps your target until it dies or is out of range")
addSection(playerTab, "TARGET FILTERS")
addToggle(playerTab, "Semi-wallbang", settings.semiWallbang, function(v) settings.semiWallbang = v save() end)
addSlider(playerTab, "Wall thickness", 1, 20, settings.semiWallbangThickness, function(v) settings.semiWallbangThickness = v save() end)
addToggle(playerTab, "Ignore barriers", settings.ignoreBarriers, function(v) settings.ignoreBarriers = v save() end)
addToggle(playerTab, "Ignore no-collision", settings.ignoreNonCollision, function(v) settings.ignoreNonCollision = v save() end)
addToggle(playerTab, "Ignore invisible", settings.ignoreInvis, function(v) settings.ignoreInvis = v save() end)
addToggle(playerTab, "Ignore friends", settings.ignoreFriends, function(v) settings.ignoreFriends = v save() end)
addToggle(playerTab, "Ignore dead", settings.ignoreDead, function(v) settings.ignoreDead = v save() end)
addInfo(playerTab, "Semi-wallbang lets shots pass thin walls")
addToggle(playerTab, "Show FOV circle", settings.showFovCircle, function(v) settings.showFovCircle = v save() updateFovCircle() end)
addColorPicker(playerTab, "FOV circle color", settings.fovColor, function(c) settings.fovColor = c save() updateFovCircle() end)
addToggle(playerTab, "Show targeted player", settings.showTarget, function(v) settings.showTarget = v save() end)
addToggle(playerTab, "Show target lines", settings.showTargetV2, function(v) settings.showTargetV2 = v save() end)
addToggle(playerTab, "Show target line v3", settings.showTargetV3, function(v) settings.showTargetV3 = v save() end)
updateFovCircle()
addSection(playerTab, "AUTO")
addToggle(playerTab, "Auto clicker", settings.autoClicker, function(v) settings.autoClicker = v save() end)
addSlider(playerTab, "Clicks per second", 1, 50, settings.cps, function(v) settings.cps = v save() end)
addToggle(playerTab, "Triggerbot", settings.triggerbot, function(v) settings.triggerbot = v save() end)
addToggle(playerTab, "Auto aim", settings.autoAim, function(v) settings.autoAim = v save() end)
addToggle(playerTab, "Auto shoot", settings.autoShoot, function(v) settings.autoShoot = v save() end)
addSection(playerTab, "TRICK SHOT")
addToggle(playerTab, "Trick shot", settings.trickShot, function(v) settings.trickShot = v save() end)
addKeybind(playerTab, "Trick shot key", settings.trickShotKey, function(k) settings.trickShotKey = k save() end)
addInfo(playerTab, "Press the key to jump, spin 360 and snap-aim at the nearest visible enemy")
addSection(playerTab, "CAMERA CONTROL")
addToggle(playerTab, "No recoil", settings.noRecoil, function(v) settings.noRecoil = v save() end)
addToggle(playerTab, "No spread", settings.noSpread, function(v) settings.noSpread = v save() end)
addInfo(playerTab, "Hold mouse1 to shoot; recoil/spread are cancelled")
addSection(playerTab, "EXTRA COMBAT")
addToggle(playerTab, "Rapid fire", settings.rapidFire, function(v) settings.rapidFire = v save() end)
addSlider(playerTab, "Rapid CPS", 1, 50, settings.rapidCps, function(v) settings.rapidCps = v save() end)
addToggle(playerTab, "No click delay", settings.noClickDelay, function(v) settings.noClickDelay = v save() end)
addInfo(playerTab, "No click delay re-enables tools every frame")
addToggle(playerTab, "Kill aura", settings.killAura, function(v) settings.killAura = v save() end)
addSlider(playerTab, "Kill aura range", 5, 100, settings.killAuraRange, function(v) settings.killAuraRange = v save() end)
addToggle(playerTab, "Hit effects", settings.hitEffects, function(v) settings.hitEffects = v save() end)
addSection(playerTab, "LOWHP TP")
addToggle(playerTab, "LowHP teleport", settings.lowHpTp, function(v) settings.lowHpTp = v save() end)
addDropdown(playerTab, "Trigger", function() return { "Low HP", "Player clicking", "Locked target" } end, settings.lowHpTpTrigger, function(v) settings.lowHpTpTrigger = v save() end)
addDropdown(playerTab, "Direction", function() return { "Behind", "Forward", "Left", "Right", "Up", "Down" } end, settings.lowHpTpDir, function(v) settings.lowHpTpDir = v save() end)
addSlider(playerTab, "Health drop", 5, 100, settings.lowHpTpThreshold, function(v) settings.lowHpTpThreshold = v save() end)
addSlider(playerTab, "Range", 20, 500, settings.lowHpTpRange, function(v) settings.lowHpTpRange = v save() end)
addSlider(playerTab, "Cooldown", 0.5, 10, settings.lowHpTpCooldown, function(v) settings.lowHpTpCooldown = v save() end)
addInfo(playerTab, "Low HP = sudden drop; Clicking = someone fires a tool; Locked = aimbot/silent target")
addSection(playerTab, "DEFENSE")
addToggle(playerTab, "Anti-aim", settings.antiAim, function(v) settings.antiAim = v save() end)
addSlider(playerTab, "Anti-aim angle", 10, 180, settings.antiAimAngle, function(v) settings.antiAimAngle = v save() end)
addInfo(playerTab, "Anti-aim jitters your rotation while standing")
addSection(playerTab, "MASS KILL")
addToggle(playerTab, "Mass kill", settings.massKill, function(v) settings.massKill = v save() end)
addSlider(playerTab, "Kill every (s)", 0.5, 10, settings.massKillDelay, function(v) settings.massKillDelay = v save() end)
addButton(playerTab, "Kill all once", function()
for _, other in ipairs(P:GetPlayers()) do
if other ~= player then
telekill(other)
end
end
end)
addInfo(playerTab, "Teleports every player into the void to kill them")
addToggle(playerTab, "Bring all to front", settings.bringAll, function(v) settings.bringAll = v save() end)
addSlider(playerTab, "Bring distance", 5, 40, settings.bringAllDist, function(v) settings.bringAllDist = v save() end)
addButton(playerTab, "Bring all once", function()
bringAllFront()
end)
addInfo(playerTab, "Brings every player in front of you to shoot them")
addSection(playerTab, "STICK BEHIND")
addToggle(playerTab, "Stick behind", settings.stickBehind, function(v) settings.stickBehind = v save() end)
addSlider(playerTab, "Stick distance", 1, 10, settings.stickBehindDist, function(v) settings.stickBehindDist = v save() end)
addInfo(playerTab, "Follows the nearest enemy from behind; switches when they die")
finishTab("Combat")
local movementTab = newContentTab("Movement")
addSection(movementTab, "MOVEMENT")
addToggle(movementTab, "Fly", settings.fly, function(v)
settings.fly = v
if v then
if not setFly(true) then
settings.fly = false
end
else
setFly(false)
end
save()
end)
addSlider(movementTab, "Fly speed", 10, 200, settings.flySpeed, function(v) settings.flySpeed = v save() end)
addToggle(movementTab, "Fly boost", settings.flyBoost, function(v) settings.flyBoost = v save() end)
addSlider(movementTab, "Fly boost mult", 1, 10, settings.flyBoostMult, function(v) settings.flyBoostMult = v save() end)
addToggle(movementTab, "Swim boost", settings.swimBoost, function(v) settings.swimBoost = v save() end)
addSlider(movementTab, "Swim speed", 10, 100, settings.swimSpeed, function(v) settings.swimSpeed = v save() end)
addToggle(movementTab, "Auto sprint", settings.autoSprint, function(v) settings.autoSprint = v save() end)
addToggle(movementTab, "Wall climb", settings.wallClimb, function(v) settings.wallClimb = v save() end)
addToggle(movementTab, "Click TP", settings.clickTp, function(v) settings.clickTp = v save() end)
addKeybind(movementTab, "ClickTP key", settings.clickTpKey, function(k) settings.clickTpKey = k save() end)
addInfo(movementTab, "Click TP teleports you wherever you click")
addToggle(movementTab, "Strafe", settings.strafe, function(v) settings.strafe = v save() end)
addSlider(movementTab, "Strafe speed", 16, 200, settings.strafeSpeed, function(v) settings.strafeSpeed = v save() end)
addToggle(movementTab, "Bhop", settings.bhop, function(v) settings.bhop = v save() end)
addToggle(movementTab, "Strafe V2", settings.strafeV2, function(v) settings.strafeV2 = v save() end)
addSlider(movementTab, "Strafe V2 speed", 16, 250, settings.strafeV2Speed, function(v) settings.strafeV2Speed = v save() end)
addInfo(movementTab, "Strafe boosts A/D speed; Bhop auto-jumps; V2 is hacked movement")
addSlider(movementTab, "Walk speed", 0, 100, settings.walkspeed, function(v) settings.walkspeed = v save() end)
addSlider(movementTab, "Jump power", 0, 200, settings.jumpPower, function(v) settings.jumpPower = v save() end)
addToggle(movementTab, "Infinite jump", settings.infJump, function(v) settings.infJump = v save() end)
addToggle(movementTab, "Noclip", settings.noclip, function(v) settings.noclip = v save() end)
addToggle(movementTab, "Freecam", settings.freecam, function(v)
settings.freecam = v
if v then
if not setFreecam(true) then
settings.freecam = false
end
else
setFreecam(false)
end
save()
end)
addInfo(movementTab, "Use A key + WASD for fly: W/S/A/D, Space up, Ctrl down")
addSection(movementTab, "EXTRA")
addToggle(movementTab, "Third person", settings.thirdPerson, function(v)
settings.thirdPerson = v
if v then
local cam = W.CurrentCamera
local root = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
if cam and root then
local diff = cam.CFrame.Position - (root.Position + Vector3.new(0, 2, 0))
local len = diff.Magnitude
if len > 0.01 then
tpYaw = math.atan2(-diff.X, -diff.Z)
tpPitch = math.asin(math.clamp(diff.Y / len, -1, 1))
end
originalCamType = cam.CameraType
end
else
local cam = W.CurrentCamera
if cam and originalCamType then
cam.CameraType = originalCamType
end
end
save()
end)
addSlider(movementTab, "Third person distance", 5, 40, settings.tpDist, function(v) settings.tpDist = v save() end)
addToggle(movementTab, "Spinbot", settings.spinbot, function(v) settings.spinbot = v save() end)
addSlider(movementTab, "Spin speed", 5, 100, settings.spinSpeed, function(v) settings.spinSpeed = v save() end)
addToggle(movementTab, "TP walk", settings.tpWalk, function(v) settings.tpWalk = v save() end)
addSlider(movementTab, "TP walk speed", 10, 200, settings.tpWalkSpeed, function(v) settings.tpWalkSpeed = v save() end)
addToggle(movementTab, "Gravity changer", settings.gravityChanger, function(v) settings.gravityChanger = v save() end)
addSlider(movementTab, "Gravity", 0, 500, settings.gravity, function(v) settings.gravity = v save() end)
addToggle(movementTab, "Speed hack", settings.speedHack, function(v) settings.speedHack = v save() end)
addSlider(movementTab, "Speed hack mult", 1, 10, settings.speedHackMult, function(v) settings.speedHackMult = v save() end)
addInfo(movementTab, "Speed hack multiplies your velocity, works even when walkspeed is patched")
addToggle(movementTab, "Hitbox extender", settings.hitboxExtend, function(v) settings.hitboxExtend = v save() end)
addSlider(movementTab, "Hitbox scale", 1, 5, settings.hitboxExtendScale, function(v) settings.hitboxExtendScale = v save() end)
addInfo(movementTab, "Hitbox extender grows invisible hitboxes welded to your character")
finishTab("Movement")
local miscTab = newContentTab("Misc")
addSection(miscTab, "MISC")
addToggle(miscTab, "Anti-afk", settings.antiAfk, function(v) settings.antiAfk = v save() end)
addSection(miscTab, "CHAT SPAM")
addToggle(miscTab, "Chat spam", settings.chatSpam, function(v) settings.chatSpam = v save() end)
addSlider(miscTab, "Delay", 0.1, 10, settings.chatDelay, function(v) settings.chatDelay = v save() end)
addTextBox(miscTab, "Message", settings.chatMessage, function(v) settings.chatMessage = v save() end)
addSection(miscTab, "CAMERA")
addToggle(miscTab, "Camera FOV", settings.fovEnabled, function(v) settings.fovEnabled = v save() end)
addSlider(miscTab, "Camera FOV value", 10, 120, settings.camFov, function(v) settings.camFov = v save() end)
addSection(miscTab, "LAG SWITCH")
addToggle(miscTab, "Lag switch", settings.lagSwitch, function(v) settings.lagSwitch = v save() end)
addKeybind(miscTab, "Lag switch key", settings.lagSwitchKey, function(k) settings.lagSwitchKey = k save() end)
addSlider(miscTab, "Lag ms", 500, 10000, settings.lagSwitchMs, function(v) settings.lagSwitchMs = v save() end)
addInfo(miscTab, "Hold the key to freeze incoming replication")
finishTab("Misc")
local worldTab = newContentTab("World")
addSection(worldTab, "WORLD")
addToggle(worldTab, "Override time", settings.clock, function(v) settings.clock = v save() end)
addSlider(worldTab, "Clock time", 0, 24, settings.clockTime, function(v) settings.clockTime = v save() end)
addToggle(worldTab, "Fog override", settings.fog, function(v) settings.fog = v save() end)
addSlider(worldTab, "Fog distance", 100, 1000, settings.fogDistance, function(v) settings.fogDistance = v save() end)
finishTab("World")
local shaderTab = newContentTab("Shader")
addSection(shaderTab, "SHADERS")
addToggle(shaderTab, "Color correction", settings.shaders, function(v) settings.shaders = v save() end)
addSlider(shaderTab, "Brightness", -1, 1, settings.ccBrightness, function(v) settings.ccBrightness = v save() end)
addSlider(shaderTab, "Contrast", -1, 1, settings.ccContrast, function(v) settings.ccContrast = v save() end)
addSlider(shaderTab, "Saturation", -1, 1, settings.ccSaturation, function(v) settings.ccSaturation = v save() end)
addSection(shaderTab, "PRESETS")
addDropdown(shaderTab, "Shader preset", function() return { "Normal", "Sunset", "Pink Sunrise", "Snowy", "Summer Hot", "Toxic" } end, settings.shaderPreset, function(v) settings.shaderPreset = v applyShaderPreset(v) save() end)
addToggle(shaderTab, "Gloom", settings.gloom, function(v) settings.gloom = v applyGloom(v) save() end)
addSection(shaderTab, "EFFECTS")
addToggle(shaderTab, "Depth of field", settings.dof, function(v) settings.dof = v save() end)
addSlider(shaderTab, "DoF focus", 5, 200, settings.dofFocus, function(v) settings.dofFocus = v save() end)
addToggle(shaderTab, "Bloom", settings.bloom, function(v) settings.bloom = v save() end)
addSlider(shaderTab, "Bloom intensity", 0, 5, settings.bloomIntensity, function(v) settings.bloomIntensity = v save() end)
addSection(shaderTab, "TEXTURES")
addDropdown(shaderTab, "Skybox", function() return { "None", "Blue sky", "Sunset", "Night" } end, settings.skybox, function(v) settings.skybox = v applySkybox(v) save() end)
addDropdown(shaderTab, "Materials", function() return { "Normal", "SmoothPlastic", "Neon", "ForceField", "Glass", "Velvet" } end, settings.materials, function(v) settings.materials = v save() end)
addInfo(shaderTab, "Material override is one-way, Normal stops applying")
finishTab("Shader")
local serverTab = newContentTab("Server")
addSection(serverTab, "SERVER")
if settings.serverTarget == "" then
local firstPlayer = P:GetPlayers()[1]
if firstPlayer then
settings.serverTarget = firstPlayer.Name
end
end
addDropdown(serverTab, "Target", function()
local options = {}
for _, other in ipairs(P:GetPlayers()) do
table.insert(options, other.Name)
end
return options
end, settings.serverTarget, function(v) settings.serverTarget = v save() end)
addButton(serverTab, "Teleport to target", function()
local plr = P:FindFirstChild(settings.serverTarget)
if plr then
teleportTo(plr)
end
end)
addButton(serverTab, "Bring target", function()
local plr = P:FindFirstChild(settings.serverTarget)
if plr then
bring(plr)
end
end)
addInfo(serverTab, "Target defaults to the first player in the list")
addSection(serverTab, "PLAYER FINDER")
addTextBox(serverTab, "Player name", settings.playerFinder, function(v) settings.playerFinder = v save() end)
addButton(serverTab, "Find & teleport", function()
local query = string.lower(settings.playerFinder)
if query == "" then
return
end
for _, plr in ipairs(P:GetPlayers()) do
if plr ~= player and string.lower(plr.Name):find(query, 1, true) then
teleportTo(plr)
print("OpenHub: teleported to " .. plr.Name)
return
end
end
print("OpenHub: no player matched '" .. settings.playerFinder .. "'")
end)
addInfo(serverTab, "Partial names work, e.g. 'x1' matches 'x1nematic'")
finishTab("Server")
local playersTab = newContentTab("Players")
addSection(playersTab, "PLAYER LIST")
addTextBox(playersTab, "Search", settings.playerSearch, function(v)
settings.playerSearch = v
save()
if refreshPlayers then
refreshPlayers()
end
end)
local playersListFrame = new("Frame", {
Size = UDim2.new(1, -20, 0, 300),
Position = UDim2.fromOffset(10, cursorOf(playersTab)),
BackgroundColor3 = theme.btn,
BorderSizePixel = 0,
ClipsDescendants = true,
})
playersListFrame.Parent = playersTab
corner(playersListFrame, 6)
playersScroll = new("ScrollingFrame", {
Size = UDim2.new(1, 0, 1, 0),
Position = UDim2.fromOffset(0, 0),
BackgroundTransparency = 1,
ScrollBarThickness = 4,
CanvasSize = UDim2.fromOffset(0, 10),
})
playersScroll.Parent = playersListFrame
advance(playersTab, 300)
addInfo(playersTab, "Kill uses telekill; deactivate AntiCheat scan first")
refreshPlayers = function()
if not playersScroll then
return
end
for _, child in ipairs(playersScroll:GetChildren()) do
if child:IsA("Frame") then
child:Destroy()
end
end
local query = string.lower(settings.playerSearch)
local rows = {}
for _, other in ipairs(P:GetPlayers()) do
if other == player then
continue
end
if query ~= "" and not string.lower(other.Name):find(query, 1, true) then
continue
end
table.insert(rows, other)
end
table.sort(rows, function(a, b)
return a.Name < b.Name
end)
local y = 4
for _, other in ipairs(rows) do
local row = new("Frame", {
Size = UDim2.new(1, -8, 0, 28),
Position = UDim2.fromOffset(4, y),
BackgroundColor3 = theme.bg,
BorderSizePixel = 0,
})
row.Parent = playersScroll
corner(row, 4)
local nameLbl = new("TextLabel", {
Size = UDim2.new(1, -160, 1, 0),
Position = UDim2.fromOffset(8, 0),
BackgroundTransparency = 1,
Text = other.Name,
TextColor3 = theme.text,
TextSize = 12,
Font = Enum.Font.GothamBold,
TextXAlignment = Enum.TextXAlignment.Left,
ClipsDescendants = true,
})
nameLbl.Parent = row
local x = 170
local actions = {
{ "TP", theme.accentDark, function() teleportTo(other) end },
{ "B", theme.accentDark, function() bring(other) end },
{ "K", theme.red, function() telekill(other) end },
{ "S", theme.accentDark, function() spectateTarget = (spectateTarget == other) and nil or other end },
}
for _, act in ipairs(actions) do
local b = new("TextButton", {
Size = UDim2.fromOffset(32, 22),
Position = UDim2.fromOffset(x, 3),
BackgroundColor3 = act[2],
Text = act[1],
TextColor3 = theme.text,
TextSize = 11,
Font = Enum.Font.GothamBold,
})
b.Parent = row
corner(b, 4)
b.Activated:Connect(act[3])
x = x + 36
end
y = y + 32
end
playersScroll.CanvasSize = UDim2.fromOffset(0, y)
end
refreshPlayers()
finishTab("Players")
local chamsTab = newContentTab("Chams")
addSection(chamsTab, "CHAMS")
addToggle(chamsTab, "Chams", settings.chams, function(v) settings.chams = v save() end)
addDropdown(chamsTab, "Chams type", function() return { "Outlines", "Fullbody", "Head", "FullVisible" } end, settings.chamsType, function(v) settings.chamsType = v save() end)
addHexColorPicker(chamsTab, "Chams color", settings.chamsColor, function(c) settings.chamsColor = c save() end)
addToggle(chamsTab, "Rainbow chams", settings.chamsRainbow, function(v) settings.chamsRainbow = v save() end)
addSlider(chamsTab, "RGB speed", 1, 20, settings.chamsRainbowSpeed, function(v) settings.chamsRainbowSpeed = v save() end)
addInfo(chamsTab, "Outlines/FullVisible render through walls")
finishTab("Chams")
local antiTab = newContentTab("AntiCheat")
addSection(antiTab, "ANTI CHEAT")
addToggle(antiTab, "Scan for cheaters", settings.scan, function(v) settings.scan = v save() end)
addSlider(antiTab, "Speed threshold", 40, 400, settings.cheatSpeed, function(v) settings.cheatSpeed = v save() end)
addButton(antiTab, "Clear list", function()
scanSus = {}
for _, row in pairs(cheaterRows) do
row.frame:Destroy()
end
cheaterRows = {}
if cheaterScroll then
cheaterScroll.CanvasSize = UDim2.fromOffset(0, 10)
end
end)
addInfo(antiTab, "Flags speed, teleport, fly, noclip, rapid fire")
addSection(antiTab, "DETECTED")
local cheaterListFrame = new("Frame", {
Size = UDim2.new(1, -20, 0, 210),
Position = UDim2.fromOffset(10, cursorOf(antiTab)),
BackgroundColor3 = theme.btn,
BorderSizePixel = 0,
ClipsDescendants = true,
})
cheaterListFrame.Parent = antiTab
corner(cheaterListFrame, 6)
local cheaterListScroll = new("ScrollingFrame", {
Size = UDim2.new(1, 0, 1, 0),
Position = UDim2.fromOffset(0, 0),
BackgroundTransparency = 1,
ScrollBarThickness = 4,
CanvasSize = UDim2.fromOffset(0, 10),
})
cheaterListScroll.Parent = cheaterListFrame
cheaterList = cheaterListFrame
cheaterScroll = cheaterListScroll
advance(antiTab, 210)
finishTab("AntiCheat")
local settingsTab = newContentTab("Settings")
addSection(settingsTab, "KEY")
addInfo(settingsTab, settings.unlocked and "Hub is unlocked" or "Hub is locked")
addButton(settingsTab, "Reset key", function()
settings.unlocked = false
settings.keyEntry = ""
save()
end)
addInfo(settingsTab, "Re-run the script to enter a new key")
addKeybind(settingsTab, "Hide GUI key", settings.hideKey, function(k) settings.hideKey = k save() end)
addKeybind(settingsTab, "Free mouse key", settings.mouseFreeKey, function(k) settings.mouseFreeKey = k save() end)
addInfo(settingsTab, "Free mouse key toggles the cursor so you can click the menu")
addSection(settingsTab, "SAVE")
addButton(settingsTab, "Save settings", function() save() end)
addInfo(settingsTab, "Settings auto-save on every change")
addButton(settingsTab, "Reset all settings", function()
for key, value in pairs(defaultSettings) do
settings[key] = value
end
save()
end)
addInfo(settingsTab, "Reload the script to refresh UI toggles")
addSection(settingsTab, "UTILITY")
addButton(settingsTab, "Rejoin server", function()
pcall(function()
game:GetService("TeleportService"):Teleport(game.PlaceId, player)
end)
end)
addButton(settingsTab, "Server hop", serverHop)
addButton(settingsTab, "Clear junk GUI", cleanupOldHubs)
addToggle(settingsTab, "FPS cap", settings.fpsCap, function(v) settings.fpsCap = v save() end)
addSlider(settingsTab, "FPS cap value", 30, 240, settings.fpsCapValue, function(v) settings.fpsCapValue = v save() end)
addInfo(settingsTab, "FPS cap applies on supported executors")
addSection(settingsTab, "ABOUT")
addInfo(settingsTab, "OpenHub - Solara loader")
finishTab("Settings")
for n, f in pairs(tabFrames) do
f.Visible = (n == "ESP")
end
for n, b in pairs(tabButtons) do
b.BackgroundColor3 = (n == "ESP") and theme.accentDark or theme.btn
end
print("Hub: gui built")
local loader = Instance.new("Frame")
loader.Size = UDim2.fromOffset(220, 220)
loader.Position = UDim2.new(0.5, -110, 0.5, -110)
loader.BackgroundColor3 = theme.bg2
loader.BackgroundTransparency = 0
loader.BorderSizePixel = 0
loader.ZIndex = 50
loader.Parent = screenGui
local loaderCorner = Instance.new("UICorner")
loaderCorner.CornerRadius = UDim.new(1, 0)
loaderCorner.Parent = loader
local loaderStroke = Instance.new("UIStroke")
loaderStroke.Thickness = 2
loaderStroke.Color = theme.accent
loaderStroke.Parent = loader
local loaderTitle = new("TextLabel", {
Size = UDim2.new(1, 0, 0, 44),
Position = UDim2.fromOffset(0, 64),
BackgroundTransparency = 1,
Text = "OpenHub",
TextColor3 = theme.text,
TextSize = 34,
Font = Enum.Font.GothamBold,
ZIndex = 50,
})
loaderTitle.Parent = loader
local loaderText = new("TextLabel", {
Size = UDim2.new(1, 0, 0, 20),
Position = UDim2.fromOffset(0, 116),
BackgroundTransparency = 1,
Text = "loading",
TextColor3 = theme.dim,
TextSize = 14,
Font = Enum.Font.Gotham,
ZIndex = 50,
})
loaderText.Parent = loader
local loaderDots = new("TextLabel", {
Size = UDim2.new(1, 0, 0, 20),
Position = UDim2.fromOffset(0, 134),
BackgroundTransparency = 1,
Text = "",
TextColor3 = theme.accent,
TextSize = 14,
Font = Enum.Font.Gotham,
ZIndex = 50,
})
loaderDots.Parent = loader
local dotsIndex = 0
spawn(function()
while loader.Parent do
dotsIndex = dotsIndex % 3 + 1
loaderDots.Text = string.rep(".", dotsIndex)
wait(0.25)
end
end)
local KEY = "OpenHubOnTop"
local keyScreenShown = false
local function showKeyScreen()
if keyScreenShown or (main and main.Visible) then
return
end
keyScreenShown = true
local overlay = Instance.new("Frame")
overlay.Size = UDim2.fromScale(1, 1)
overlay.BackgroundColor3 = Color3.fromRGB(8, 8, 12)
overlay.BackgroundTransparency = 0.2
overlay.BorderSizePixel = 0
overlay.ZIndex = 60
overlay.Parent = screenGui
local card = Instance.new("Frame")
card.Size = UDim2.fromOffset(320, 230)
card.Position = UDim2.new(0.5, -160, 0.5, -115)
card.BackgroundColor3 = theme.bg2
card.BorderSizePixel = 0
card.ZIndex = 61
card.Parent = overlay
corner(card, 12)
local cardTitle = new("TextLabel", {
Size = UDim2.new(1, 0, 0, 40),
Position = UDim2.fromOffset(0, 20),
BackgroundTransparency = 1,
Text = "OpenHub",
TextColor3 = theme.text,
TextSize = 26,
Font = Enum.Font.GothamBold,
ZIndex = 61,
})
cardTitle.Parent = card
local cardSub = new("TextLabel", {
Size = UDim2.new(1, 0, 0, 18),
Position = UDim2.fromOffset(0, 60),
BackgroundTransparency = 1,
Text = "Enter key to continue",
TextColor3 = theme.dim,
TextSize = 13,
Font = Enum.Font.Gotham,
ZIndex = 61,
})
cardSub.Parent = card
local keyBox = new("TextBox", {
Size = UDim2.new(1, -40, 0, 36),
Position = UDim2.fromOffset(20, 90),
BackgroundColor3 = theme.btn,
Text = settings.keyEntry,
PlaceholderText = "Key",
TextColor3 = theme.text,
PlaceholderColor3 = theme.dim,
TextSize = 14,
Font = Enum.Font.Gotham,
TextXAlignment = Enum.TextXAlignment.Center,
ClearTextOnFocus = false,
ZIndex = 61,
})
keyBox.Parent = card
corner(keyBox, 6)
local unlockBtn = new("TextButton", {
Size = UDim2.new(1, -40, 0, 36),
Position = UDim2.fromOffset(20, 134),
BackgroundColor3 = theme.accent,
Text = "Unlock",
TextColor3 = Color3.fromRGB(10, 10, 14),
TextSize = 14,
Font = Enum.Font.GothamBold,
ZIndex = 61,
})
unlockBtn.Parent = card
corner(unlockBtn, 6)
local errorLabel = new("TextLabel", {
Size = UDim2.new(1, 0, 0, 16),
Position = UDim2.fromOffset(0, 178),
BackgroundTransparency = 1,
Text = "",
TextColor3 = theme.red,
TextSize = 12,
Font = Enum.Font.Gotham,
ZIndex = 61,
})
errorLabel.Parent = card
local function unlock(entry)
if entry == KEY then
settings.unlocked = true
settings.keyEntry = entry
save()
overlay:Destroy()
if loader then
pcall(function() loader:Destroy() end)
end
main.Visible = true
else
errorLabel.Text = "Invalid key - script locked"
errorLabel.Visible = true
keyBox.Text = ""
spawn(function()
local base = card.Position
for i = 1, 3 do
card.Position = base + UDim2.fromOffset(math.random(-6, 6), 0)
wait(0.05)
card.Position = base
wait(0.05)
end
wait(1.2)
overlay:Destroy()
end)
end
end
keyBox.FocusLost:Connect(function()
unlock(keyBox.Text)
end)
unlockBtn.MouseButton1Click:Connect(function()
unlock(keyBox.Text)
end)
keyBox.CaptureFocus()
end
delay(1.4, function()
pcall(function()
if not loader.Parent then
return
end
loaderTitle.Visible = false
loaderText.Visible = false
loaderDots.Visible = false
loaderStroke.Transparency = 1
tweenProps(loaderCorner, 0.4, { CornerRadius = UDim.new(0, 6) })
tweenProps(loader, 0.4, {
Size = main.Size,
Position = main.Position,
BackgroundColor3 = theme.bg,
}, function()
loader:Destroy()
if settings.unlocked then
main.Visible = true
else
showKeyScreen()
end
end)
end)
end)
delay(4, function()
if main and not main.Visible then
if loader then
loader:Destroy()
end
if settings.unlocked then
main.Visible = true
else
showKeyScreen()
end
end
end)
idk im bored af so i made this arsenal script (Key is OpenHubOnTop)

Universal