Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
UserInputService = :()
Workspace = :()
Lighting = :()
Stats = :()
LocalPlayer = Players.LocalPlayer
Mouse = LocalPlayer:()
Config = {
ESP_Enabled = ,
ESP_Box = ,
ESP_BoxStyle = ,
ESP_BoxFill = ,
ESP_Name = ,
ESP_Distance = ,
ESP_Tracer = ,
ESP_TracerOrigin = ,
ESP_Snapline = ,
ESP_LookDirection = ,
ESP_Velocity = ,
ESP_Offscreen = ,
ESP_DeadCheck = ,
ESP_MaxDist = ,
ESP_Chams = ,
ESP_ChamsStyle = ,
ESP_Heatmap = ,
ESP_TeamCheck = ,
ESP_Rainbow = ,
ESP_CustomColor = .(, , ),
RADAR_Enabled = ,
RADAR_Size = ,
RADAR_Range = ,
RADAR_Edit = ,
AIM_Enabled = ,
AIM_Key = .UserInputType.MouseButton2,
AIM_FOV = ,
AIM_Smooth = ,
AIM_ShowFOV = ,
AIM_TargetPart = ,
AIM_TeamCheck = ,
AIM_ProximityPriority = ,
AIM_StickyFactor = ,
MISC_NoRecoil = ,
MISC_NoSway = ,
MISC_NoSpread = ,
MISC_NoCamShake = ,
MISC_Noclip = ,
MISC_MenuColor = .(, , ),
MISC_FullBright = ,
MENU_Open = ,
MENU_Tab = ,
KEY_Menu = .KeyCode.Insert,
KEY_Panic = .KeyCode.Home
}
Tuning = {
CacheRate = ,
BoxRatio = ,
NameOffset = ,
DistOffset = ,
CornerLen = ,
OffscreenEdge = ,
OffscreenSize = ,
RadarDotSize = ,
RadarArrowSize = ,
HeatmapNear = ,
HeatmapFar = ,
PreviewBoxW = ,
PreviewBoxH =
}
Palette = {
Enemy = .(, , ),
Dead = .(, , ),
Friendly = .(, , ),
Tracer = .(, , ),
Snapline = .(, , ),
LookDirection = .(, , ),
Velocity = .(, , ),
Offscreen = .(, , ),
HeatNear = .(, , ),
HeatFar = .(, , ),
RadarBg = .(, , ),
RadarBorder = .(, , ),
RadarGrid = .(, , ),
RadarYou = .(, , ),
MenuBg = .(, , ),
MenuPanel = .(, , ),
MenuBorder = .(, , ),
MenuAccent = .(, , ),
MenuAccentDim = .(, , ),
MenuText = .(, , ),
MenuTextDim = .(, , ),
MenuOn = .(, , ),
MenuOff = .(, , ),
MenuTab = .(, , ),
MenuTabActive = .(, , ),
MenuScrollbar = .(, , ),
PreviewBg = .(, , ),
PreviewBorder = .(, , )
}
State = {
Unloaded = ,
LastCache = ,
Aiming = ,
AimTarget = ,
RainbowHue = ,
ColorPickerOpen = ,
RadarPos = ,
RadarDragging = ,
RadarDragOffset = .zero
}
Cache = {
Soldiers = {},
Chams = {}
}
DeathTracker = {
}
WeaponPatterns = {
, , , ,
, , , , , ,
, , , , , , , , ,
}
(obj)
obj:() ,
obj.Name == ,
obj.Name:() ,
weaponPos =
isWeapon =
objNameLower = obj.Name:()
_, pattern (WeaponPatterns)
objNameLower:(pattern, , )
isWeapon =
isWeapon
_, child (obj:())
childNameLower = child.Name:()
_, pattern (WeaponPatterns)
childNameLower:(pattern, , )
isWeapon =
child:()
weaponPos = child.Position
child:()
part = child:(, )
part weaponPos = part.Position
isWeapon
isWeapon weaponPos
obj.PrimaryPart
weaponPos = obj.PrimaryPart.Position
part = obj:(, )
part weaponPos = part.Position
isWeapon, weaponPos
(position, radius)
weapons = {}
_, obj (Workspace:())
isWeapon, weaponPos = (obj)
isWeapon weaponPos
dist = (weaponPos - position).Magnitude
dist < radius
weapons[obj] =
weapons
(position, knownWeapons, radius)
_, obj (Workspace:())
isWeapon, weaponPos = (obj)
isWeapon weaponPos
dist = (weaponPos - position).Magnitude
dist < radius knownWeapons[obj]
(model)
root = model:()
root
pos = root.Position
now = ()
DeathTracker[model]
DeathTracker[model] = {
lastPos = pos,
lastMoveTime = now,
wasActive = ,
isDead = ,
frozenTime = ,
knownWeapons = (pos, ),
lastWeaponCheck = now
}
data = DeathTracker[model]
delta = (pos - data.lastPos)
horizontalDelta = .(delta.X, , delta.Z).Magnitude
verticalDelta = .(delta.Y)
isMoving = horizontalDelta > verticalDelta >
isMoving
data.lastMoveTime = now
data.wasActive =
data.frozenTime =
data.knownWeapons = (pos, )
data.lastWeaponCheck = now
data.isDead
data.isDead =
data.frozenTime = now - data.lastMoveTime
data.isDead data.wasActive
data.frozenTime > data.frozenTime <
now - data.lastWeaponCheck >
data.lastWeaponCheck = now
(pos, data.knownWeapons, )
data.isDead =
data.lastPos = pos
data.isDead
()
model, _ (DeathTracker)
model model.Parent
DeathTracker[model] =
OriginalLighting = {
Brightness = Lighting.Brightness,
Ambient = Lighting.Ambient,
FogEnd = Lighting.FogEnd
}
Connections = {}
(model)
model:() ~=
(model)
myChar = LocalPlayer.Character
myChar
model == myChar
myRoot = myChar:()
modelRoot = model:()
myRoot modelRoot
dist = (myRoot.Position - modelRoot.Position).Magnitude
dist <
(model)
model:()
model.Name ~=
(model)
Config.ESP_TeamCheck (model)
(model)
model:()
(model)
model:() model:()
(pos)
char = LocalPlayer.Character
char .huge
root = char:()
root .huge
(pos - root.Position).Magnitude
(pos)
cam = Workspace.CurrentCamera
cam .zero, ,
vp, onScreen = cam:(pos)
.(vp.X, vp.Y), onScreen vp.Z > , vp.Z
(a, b, t)
.(
a.R + (b.R - a.R) * t,
a.G + (b.G - a.G) * t,
a.B + (b.B - a.B) * t
)
(dist)
t = .((dist - Tuning.HeatmapNear) / (Tuning.HeatmapFar - Tuning.HeatmapNear), , )
(Palette.HeatNear, Palette.HeatFar, t)
(h, s, v)
r, g, b
i = .(h * )
f = h * - i
p = v * ( - s)
q = v * ( - f * s)
t = v * ( - ( - f) * s)
i = i %
i == r, g, b = v, t, p
i == r, g, b = q, v, p
i == r, g, b = p, v, t
i == r, g, b = p, q, v
i == r, g, b = t, p, v
i == r, g, b = v, p, q
.(r, g, b)
(color)
r, g, b = color.R, color.G, color.B
max, min = .(r, g, b), .(r, g, b)
h, s, v = , , max
d = max - min
s = max == d / max
max ~= min
max == r h = (g - b) / d + (g < b )
max == g h = (b - r) / d +
max == b h = (r - g) / d +
h = h /
h, s, v
()
Config.ESP_Rainbow
(State.RainbowHue, , )
Config.ESP_CustomColor
ESP = {
cache = {},
lastCleanup = ,
posCache = {},
lastPosUpdate = ,
velocityData = {}
}
ESP.()
box = {}
i = ,
box[i] = .()
box[i].Thickness =
box[i].Visible =
corners = {}
i = ,
corners[i] = .()
corners[i].Thickness =
corners[i].Visible =
deadX = {}
i = ,
deadX[i] = .()
deadX[i].Thickness =
deadX[i].Color = .(, , )
deadX[i].Visible =
boxFill = .()
boxFill.Filled =
boxFill.Visible =
boxFill.Transparency =
snapline = .()
snapline.Thickness =
snapline.Visible =
lookLine = .()
lookLine.Thickness =
lookLine.Visible =
{
Box = box,
BoxFill = boxFill,
Corners = corners,
Name = .(),
Dist = .(),
Tracer = .(),
Snapline = snapline,
LookLine = lookLine,
Offscreen = .(),
DeadX = deadX,
VelLine = .(),
VelArrow = .()
}
ESP.(esp)
esp.Name.Size =
esp.Name.Font = .Fonts.Monospace
esp.Name.Center =
esp.Name.Outline =
esp.Name.Visible =
esp.Dist.Size =
esp.Dist.Font = .Fonts.Monospace
esp.Dist.Center =
esp.Dist.Outline =
esp.Dist.Color = .(, , )
esp.Dist.Visible =
esp.Tracer.Thickness =
esp.Tracer.Visible =
esp.BoxFill.Filled =
esp.BoxFill.Transparency =
esp.BoxFill.Visible =
esp.Snapline.Thickness =
esp.Snapline.Color = Palette.Snapline
esp.Snapline.Transparency =
esp.Snapline.Visible =
esp.LookLine.Thickness =
esp.LookLine.Color = Palette.LookDirection
esp.LookLine.Visible =
esp.Offscreen.Filled =
esp.Offscreen.Visible =
esp.VelLine.Thickness =
esp.VelLine.Color = Palette.Velocity
esp.VelLine.Visible =
esp.VelArrow.Filled =
esp.VelArrow.Color = Palette.Velocity
esp.VelArrow.Visible =
ESP.(esp)
esp
_, l (esp.Box) l.Visible =
esp.BoxFill esp.BoxFill.Visible =
_, l (esp.Corners) l.Visible =
esp.Name.Visible =
esp.Dist.Visible =
esp.Tracer.Visible =
esp.Snapline esp.Snapline.Visible =
esp.LookLine esp.LookLine.Visible =
esp.Offscreen.Visible =
esp.DeadX
_, l (esp.DeadX) l.Visible =
esp.VelLine esp.VelLine.Visible =
esp.VelArrow esp.VelArrow.Visible =
ESP.(esp)
esp
(()
_, l (esp.Box) l:()
esp.BoxFill esp.BoxFill:()
_, l (esp.Corners) l:()
esp.Name:()
esp.Dist:()
esp.Tracer:()
esp.Snapline esp.Snapline:()
esp.LookLine esp.LookLine:()
esp.Offscreen:()
esp.DeadX
_, l (esp.DeadX) l:()
esp.VelLine esp.VelLine:()
esp.VelArrow esp.VelArrow:()
)
ESP.(esp, model, cam, screenSize, screenCenter)
esp model
cam
root = model:()
root root.Parent
ESP.(esp)
isDead = Config.ESP_DeadCheck (model)
rootPos = root.Position
myChar = LocalPlayer.Character
myRoot = myChar myChar:()
dist = myRoot (rootPos - myRoot.Position).Magnitude
dist > Config.ESP_MaxDist
ESP.(esp)
rs = cam:(rootPos)
esp.DeadX
_, l (esp.DeadX) l.Visible =
rs.Z <=
ESP.(esp)
Config.ESP_Offscreen isDead
dx = rs.X - screenCenter.X
dy = rs.Y - screenCenter.Y
angle = .(dy, dx)
edge = Tuning.OffscreenEdge
cosA, sinA = .(angle), .(angle)
ax = .(screenCenter.X + cosA * (screenSize.X/ - edge), edge, screenSize.X - edge)
ay = .(screenCenter.Y + sinA * (screenSize.Y/ - edge), edge, screenSize.Y - edge)
pos = .(ax, ay)
sz = Tuning.OffscreenSize
esp.Offscreen.PointA = pos + .(cosA * sz, sinA * sz)
esp.Offscreen.PointB = pos + .(-cosA * sz/ + sinA * sz/, -sinA * sz/ - cosA * sz/)
esp.Offscreen.PointC = pos + .(-cosA * sz/ - sinA * sz/, -sinA * sz/ + cosA * sz/)
esp.Offscreen.Color = Palette.Offscreen
esp.Offscreen.Visible =
onScreen = rs.X > - rs.X < screenSize.X + rs.Y > - rs.Y < screenSize.Y +
onScreen
ESP.(esp)
baseSize = / .(rs.Z, )
boxHeight = .(baseSize, , screenSize.Y * )
boxWidth = boxHeight * Tuning.BoxRatio
boxWidth = .(boxWidth, , screenSize.X * )
cx = rs.X
cy = rs.Y
boxTop = cy - boxHeight *
boxBottom = cy + boxHeight *
baseCol = isDead Palette.Dead (Config.ESP_Heatmap (dist) ())
esp.Offscreen.Visible =
isDead
_, l (esp.Box) l.Visible =
_, l (esp.Corners) l.Visible =
esp.DeadX
xSize = .(boxWidth, boxHeight) *
xcx, xcy = cx, cy
esp.DeadX[].From = .(xcx - xSize, xcy - xSize)
esp.DeadX[].To = .(xcx + xSize, xcy + xSize)
esp.DeadX[].Color = Palette.Dead
esp.DeadX[].Visible =
esp.DeadX[].From = .(xcx + xSize, xcy - xSize)
esp.DeadX[].To = .(xcx - xSize, xcy + xSize)
esp.DeadX[].Color = Palette.Dead
esp.DeadX[].Visible =
esp.Name.Text =
esp.Name.Position = .(cx, cy - boxHeight * - )
esp.Name.Color = Palette.Dead
esp.Name.Visible =
esp.Dist.Visible =
esp.Tracer.Visible =
Config.ESP_Box
Config.ESP_BoxStyle ==
_, l (esp.Corners) l.Visible =
esp.Box[].From = .(cx - boxWidth/, boxTop)
esp.Box[].To = .(cx + boxWidth/, boxTop)
esp.Box[].From = .(cx + boxWidth/, boxTop)
esp.Box[].To = .(cx + boxWidth/, boxBottom)
esp.Box[].From = .(cx + boxWidth/, boxBottom)
esp.Box[].To = .(cx - boxWidth/, boxBottom)
esp.Box[].From = .(cx - boxWidth/, boxBottom)
esp.Box[].To = .(cx - boxWidth/, boxTop)
_, l (esp.Box)
l.Color = baseCol
l.Visible =
_, l (esp.Box) l.Visible =
x1, y1 = cx - boxWidth/, boxTop
x2, y2 = cx + boxWidth/, boxBottom
cl = Tuning.CornerLen
esp.Corners[].From = .(x1, y1)
esp.Corners[].To = .(x1 + cl, y1)
esp.Corners[].From = .(x1, y1)
esp.Corners[].To = .(x1, y1 + cl)
esp.Corners[].From = .(x2, y1)
esp.Corners[].To = .(x2 - cl, y1)
esp.Corners[].From = .(x2, y1)
esp.Corners[].To = .(x2, y1 + cl)
esp.Corners[].From = .(x1, y2)
esp.Corners[].To = .(x1 + cl, y2)
esp.Corners[].From = .(x1, y2)
esp.Corners[].To = .(x1, y2 - cl)
esp.Corners[].From = .(x2, y2)
esp.Corners[].To = .(x2 - cl, y2)
esp.Corners[].From = .(x2, y2)
esp.Corners[].To = .(x2, y2 - cl)
_, l (esp.Corners)
l.Color = baseCol
l.Visible =
_, l (esp.Box) l.Visible =
_, l (esp.Corners) l.Visible =
Config.ESP_Name
esp.Name.Text =
esp.Name.Position = .(cx, boxTop - Tuning.NameOffset)
esp.Name.Color = baseCol
esp.Name.Visible =
esp.Name.Visible =
Config.ESP_Distance
esp.Dist.Text = .(dist) ..
esp.Dist.Position = .(cx, boxBottom + Tuning.DistOffset)
esp.Dist.Visible =
esp.Dist.Visible =
Config.ESP_Tracer
origin
Config.ESP_TracerOrigin ==
origin = .(screenCenter.X, screenSize.Y)
Config.ESP_TracerOrigin ==
origin = .(screenCenter.X, )
origin = screenCenter
esp.Tracer.From = origin
esp.Tracer.To = .(cx, boxBottom)
esp.Tracer.Color = Palette.Tracer
esp.Tracer.Visible =
esp.Tracer.Visible =
Config.ESP_Snapline esp.Snapline
esp.Snapline.From = .(screenCenter.X, screenSize.Y)
esp.Snapline.To = .(cx, boxBottom)
esp.Snapline.Color = Palette.Snapline
esp.Snapline.Transparency =
esp.Snapline.Visible =
esp.Snapline esp.Snapline.Visible =
Config.ESP_LookDirection esp.LookLine
torso = model:()
torso
lookDir = torso.CFrame.LookVector
lookEndPos = rootPos + lookDir *
lookScreen, lookOn = cam:(lookEndPos)
lookOn lookScreen.Z >
esp.LookLine.From = .(cx, cy)
esp.LookLine.To = .(lookScreen.X, lookScreen.Y)
esp.LookLine.Color = Palette.LookDirection
esp.LookLine.Visible =
esp.LookLine.Visible =
esp.LookLine.Visible =
esp.LookLine esp.LookLine.Visible =
Config.ESP_BoxFill esp.BoxFill
esp.BoxFill.Position = .(cx - boxWidth/, boxTop)
esp.BoxFill.Size = .(boxWidth, boxBottom - boxTop)
esp.BoxFill.Color = baseCol
esp.BoxFill.Transparency =
esp.BoxFill.Visible =
esp.BoxFill esp.BoxFill.Visible =
vd = ESP.velocityData[model]
vd
vd = {pos = rootPos, vel = .zero, time = ()}
ESP.velocityData[model] = vd
now = ()
dt = now - vd.time
dt >
rawVel = (rootPos - vd.pos) / dt
vd.vel = vd.vel * + rawVel *
vd.pos = rootPos
vd.time = now
Config.ESP_Velocity esp.VelLine esp.VelArrow
velFlat = .(vd.vel.X, , vd.vel.Z)
velMag = velFlat.Magnitude
velMag >
futurePos = rootPos + velFlat.Unit * .(velMag * , , )
futureScreen, futureOn = cam:(futurePos)
futureOn futureScreen.Z >
esp.VelLine.From = .(rs.X, rs.Y)
esp.VelLine.To = .(futureScreen.X, futureScreen.Y)
esp.VelLine.Visible =
dx, dy = futureScreen.X - rs.X, futureScreen.Y - rs.Y
len = .(dx*dx + dy*dy)
len >
fx, fy = dx/len, dy/len
esp.VelArrow.PointA = .(futureScreen.X, futureScreen.Y)
esp.VelArrow.PointB = .(futureScreen.X - fx* + fy*, futureScreen.Y - fy* - fx*)
esp.VelArrow.PointC = .(futureScreen.X - fx* - fy*, futureScreen.Y - fy* + fx*)
esp.VelArrow.Visible =
esp.VelArrow.Visible =
esp.VelLine.Visible =
esp.VelArrow.Visible =
esp.VelLine.Visible =
esp.VelArrow.Visible =
esp.VelLine esp.VelLine.Visible =
esp.VelArrow esp.VelArrow.Visible =
ESP.()
toRemove = {}
model, esp (ESP.cache)
model model.Parent model:()
ESP.(esp)
ESP.(esp)
toRemove[#toRemove + ] = model
_, model (toRemove)
ESP.cache[model] =
ESP.posCache[model] =
ESP.velocityData[model] =
DeathTracker[model] =
()
ESP.()
_, esp (ESP.cache)
ESP.(esp)
ESP.()
myChar = LocalPlayer.Character
myRoot = myChar myChar:()
myPos = myRoot myRoot.Position .zero
ESP.posCache = {}
models = Workspace:()
i = , #models
model = models[i]
model model:() model.Name ==
(model)
root = model:()
root
pos = root.Position
dist = (pos - myPos).Magnitude
ESP.posCache[model] = {
pos = pos,
dist = dist
}
ESP.(cam, screenSize, screenCenter)
State.Unloaded
Config.ESP_Enabled
ESP.()
now = ()
now - ESP.lastCleanup >
ESP.lastCleanup = now
ESP.()
now - ESP.lastPosUpdate >
ESP.lastPosUpdate = now
ESP.()
validModels = {}
model, posData (ESP.posCache)
model model.Parent
root = model:()
root
Config.ESP_TeamCheck model:()
ESP.cache[model]
ESP.(ESP.cache[model])
validModels[model] =
ESP.cache[model]
ESP.cache[model] = ESP.()
ESP.(ESP.cache[model])
ESP.(ESP.cache[model], model, cam, screenSize, screenCenter)
model, esp (ESP.cache)
validModels[model]
ESP.(esp)
Chams = {
objects = {}
}
Chams.(model)
Chams.objects[model]
highlight = .()
highlight.Name =
highlight.Adornee = model
highlight.DepthMode = .HighlightDepthMode.AlwaysOnTop
highlight.Parent = model
Chams.objects[model] = highlight
Chams.(model, dist)
highlight = Chams.objects[model]
highlight
isDead = Config.ESP_DeadCheck (model)
isDead
highlight.FillColor = Palette.Dead
highlight.OutlineColor = Palette.Dead
highlight.FillTransparency =
highlight.OutlineTransparency =
Config.ESP_ChamsStyle ==
highlight.FillColor = ()
highlight.OutlineColor = ()
highlight.FillTransparency =
highlight.OutlineTransparency =
Config.ESP_ChamsStyle == Config.ESP_Heatmap
col = (dist)
highlight.FillColor = col
highlight.OutlineColor = col
highlight.FillTransparency =
highlight.OutlineTransparency =
highlight.FillColor = ()
highlight.OutlineColor = .(, , )
highlight.FillTransparency =
highlight.OutlineTransparency =
highlight.Enabled =
Chams.(model)
highlight = Chams.objects[model]
highlight
highlight:()
Chams.objects[model] =
existing = model:()
existing existing:()
Chams.()
model, _ (Chams.objects)
Chams.(model)
Chams.objects = {}
Chams.()
State.Unloaded Config.ESP_Enabled Config.ESP_Chams
Chams.()
validModels = {}
model, posData (ESP.posCache)
model model.Parent
Config.ESP_TeamCheck model:()
Chams.objects[model]
Chams.(model)
validModels[model] =
Chams.objects[model]
Chams.(model)
Chams.(model, posData.dist)
model, _ (Chams.objects)
validModels[model]
Chams.(model)
Radar = {
bg = .(),
border = .(),
cross1 = .(),
cross2 = .(),
center = .(),
dots = {},
deadDots = {}
}
Radar.bg.Filled =
Radar.bg.Color = Palette.RadarBg
Radar.bg.Transparency =
Radar.border.Filled =
Radar.border.Color = Palette.RadarBorder
Radar.border.Thickness =
Radar.cross1.Color = Palette.RadarGrid
Radar.cross1.Thickness =
Radar.cross2.Color = Palette.RadarGrid
Radar.cross2.Thickness =
Radar.center.Filled =
Radar.center.Color = Palette.RadarYou
i = ,
d = .()
d.Filled =
d.Visible =
Radar.dots[i] = d
i = ,
c = .()
c.Filled =
c.Color = Palette.Dead
c.Radius =
c.Visible =
Radar.deadDots[i] = c
Radar.()
Radar.bg.Visible =
Radar.border.Visible =
Radar.cross1.Visible =
Radar.cross2.Visible =
Radar.center.Visible =
_, d (Radar.dots) d.Visible =
_, c (Radar.deadDots) c.Visible =
Radar.(cam)
State.Unloaded Config.RADAR_Enabled
Radar.()
size = Config.RADAR_Size
State.RadarPos
State.RadarPos = .(cam.ViewportSize.X - size - , )
Config.RADAR_Edit
UserInputService:(.UserInputType.MouseButton1)
mouse = UserInputService:()
State.RadarDragging
mouse.X >= State.RadarPos.X mouse.X <= State.RadarPos.X + size
mouse.Y >= State.RadarPos.Y mouse.Y <= State.RadarPos.Y + size
State.RadarDragging =
State.RadarDragOffset = mouse - State.RadarPos
State.RadarPos = mouse - State.RadarDragOffset
State.RadarDragging =
Radar.border.Color = .(, , )
Radar.border.Color = Palette.RadarBorder
pos = State.RadarPos
center = pos + .(size/, size/)
Radar.bg.Position = pos
Radar.bg.Size = .(size, size)
Radar.bg.Visible =
Radar.border.Position = pos
Radar.border.Size = .(size, size)
Radar.border.Visible =
Radar.cross1.From = .(center.X, pos.Y + )
Radar.cross1.To = .(center.X, pos.Y + size - )
Radar.cross1.Visible =
Radar.cross2.From = .(pos.X + , center.Y)
Radar.cross2.To = .(pos.X + size - , center.Y)
Radar.cross2.Visible =
myChar = LocalPlayer.Character
myRoot = myChar myChar:()
myLook = cam.CFrame.LookVector
myRoot
Radar.center.Visible =
_, d (Radar.dots) d.Visible =
_, c (Radar.deadDots) c.Visible =
myAngle = .(-myLook.X, -myLook.Z)
cosA, sinA = .(myAngle), .(myAngle)
scale = (size/ - ) / Config.RADAR_Range
aliveIdx =
deadIdx =
_, model (Workspace:())
(model)
root = (model)
root
rx = root.Position.X - myRoot.Position.X
rz = root.Position.Z - myRoot.Position.Z
dist2D = .(rx^ + rz^)
dist2D < Config.RADAR_Range
rotX = rx * cosA - rz * sinA
rotZ = rx * sinA + rz * cosA
radarX, radarY = rotX * scale, rotZ * scale
maxD = size/ -
rDist = .(radarX^ + radarY^)
rDist > maxD
radarX, radarY = radarX/rDist * maxD, radarY/rDist * maxD
dotPos = center + .(radarX, radarY)
isDead = Config.ESP_DeadCheck (model)
isDead
deadIdx <= #Radar.deadDots
deadDot = Radar.deadDots[deadIdx]
deadDot.Position = dotPos
deadDot.Radius =
deadDot.Color = Palette.Dead
deadDot.Visible =
deadIdx = deadIdx +
aliveIdx <= #Radar.dots
dot = Radar.dots[aliveIdx]
head = (model)
eAngle =
head
eAngle = .(-head.CFrame.LookVector.X, -head.CFrame.LookVector.Z) - myAngle
eFwd = .(-.(eAngle), -.(eAngle))
eRight = .(-eFwd.Y, eFwd.X)
ds = Tuning.RadarDotSize
dot.PointA = dotPos + eFwd * ds
dot.PointB = dotPos - eFwd * ds/ + eRight * ds/
dot.PointC = dotPos - eFwd * ds/ - eRight * ds/
dot.Color = ()
dot.Visible =
aliveIdx = aliveIdx +
i = aliveIdx, #Radar.dots Radar.dots[i].Visible =
i = deadIdx, #Radar.deadDots Radar.deadDots[i].Visible =
as = Tuning.RadarArrowSize
Radar.center.PointA = center + .(, -as)
Radar.center.PointB = center + .(-as/, as/)
Radar.center.PointC = center + .(as/, as/)
Radar.center.Visible =
Aimbot = {
fov = .()
}
Aimbot.fov.Thickness =
Aimbot.fov.NumSides =
Aimbot.fov.Filled =
Aimbot.fov.Transparency =
Aimbot.currentTargetModel =
Aimbot.lastTargetTime =
Aimbot.lastTargetDist =
Aimbot.(cam)
bestTarget =
bestScore = .huge
bestModel =
bestDist =
mousePos = .(Mouse.X, Mouse.Y)
myChar = LocalPlayer.Character
myRoot = myChar myChar:()
myPos = myRoot myRoot.Position cam.CFrame.Position
models = Workspace:()
i = , #models
model = models[i]
model:() model.Name ==
(model)
Config.AIM_TeamCheck model:()
Config.ESP_DeadCheck (model)
hrp = model:()
hrp
worldDist = (hrp.Position - myPos).Magnitude
partsToCheck = {}
distanceOffset = .(, , )
Config.AIM_TargetPart ==
partsToCheck = {
{part = model:(), offset = .(, , )},
{part = model:(), offset = .(, , )},
{part = model:(), offset = .(, , )},
{part = model:(), offset = .(, , )},
{part = model:(), offset = .(, , )}
}
Config.AIM_TargetPart ==
worldDist <
distanceOffset = .(, -, )
worldDist <
distanceOffset = .(, -, )
worldDist <
distanceOffset = .(, -, )
worldDist <
distanceOffset = .(, -, )
worldDist <
distanceOffset = .(, -, )
worldDist <
distanceOffset = .(, -, )
distanceOffset = .(, , )
partsToCheck = {
{part = model:(), offset = distanceOffset},
{part = model:(), offset = distanceOffset},
{part = model:(), offset = distanceOffset}
}
Config.AIM_TargetPart ==
worldDist <
distanceOffset = .(, -, )
worldDist <
distanceOffset = .(, -, )
worldDist <
distanceOffset = .(, -, )
partsToCheck = {
{part = model:(), offset = distanceOffset},
{part = model:(), offset = distanceOffset},
{part = model:(), offset = distanceOffset}
}
worldDist <
distanceOffset = .(, , )
distanceOffset = .(, , )
partsToCheck = {
{part = model:(), offset = distanceOffset}
}
_, info (partsToCheck)
part = info.part
part
offset = info.offset .zero
targetPos = part.Position + offset
screenPos, onScreen = cam:(targetPos)
onScreen screenPos.Z >
screenDist = (.(screenPos.X, screenPos.Y) - mousePos).Magnitude
screenDist <= Config.AIM_FOV
score
Config.AIM_TargetPart ==
normalizedScreen = screenDist / Config.AIM_FOV
normalizedWorld = .(worldDist / , , )
proxWeight = Config.AIM_ProximityPriority *
score = ( - proxWeight) * normalizedScreen + proxWeight * normalizedWorld
model == Aimbot.currentTargetModel
stickyBonus = (Config.AIM_StickyFactor - ) * +
score = score / stickyBonus
normalizedScreen = screenDist / Config.AIM_FOV
normalizedWorld = .(worldDist / , , )
proxWeight = Config.AIM_ProximityPriority
score = ( - proxWeight) * normalizedScreen + proxWeight * normalizedWorld
model == Aimbot.currentTargetModel
score = score / Config.AIM_StickyFactor
score < bestScore
bestScore = score
bestTarget = targetPos
bestModel = model
bestDist = worldDist
Config.AIM_TargetPart ~=
bestModel
Aimbot.currentTargetModel = bestModel
Aimbot.lastTargetTime = ()
Aimbot.lastTargetDist = bestDist
() - Aimbot.lastTargetTime >
Aimbot.currentTargetModel =
Aimbot.lastTargetDist =
bestTarget
Aimbot.(cam, screenCenter)
State.Unloaded
Aimbot.fov Aimbot.fov.Visible =
mousePos = .(Mouse.X, Mouse.Y)
isAiming = State.Aiming
Config.AIM_Key == .UserInputType.MouseButton2
(()
isAiming = isAiming UserInputService:(.UserInputType.MouseButton2)
)
Config.AIM_Key == .UserInputType.MouseButton1
(()
isAiming = isAiming UserInputService:(.UserInputType.MouseButton1)
)
Config.AIM_Key == .UserInputType.MouseButton3
(()
isAiming = isAiming UserInputService:(.UserInputType.MouseButton3)
)
Config.AIM_Enabled Config.AIM_ShowFOV
Aimbot.fov.Position = screenCenter
Aimbot.fov.Radius = Config.AIM_FOV
Aimbot.fov.Color = isAiming Palette.MenuOn .(, , )
Aimbot.fov.Visible =
Aimbot.fov.Visible =
Config.AIM_Enabled isAiming
targetPos = Aimbot.(cam)
targetPos
screenPos = cam:(targetPos)
delta = .(screenPos.X - mousePos.X, screenPos.Y - mousePos.Y)
deltaMag = delta.Magnitude
Config.AIM_TargetPart ==
deltaMag <
(()
mousemoverel
(delta.X * Config.AIM_Smooth, delta.Y * Config.AIM_Smooth)
)
deadzone =
Aimbot.lastTargetDist <
deadzone =
Aimbot.lastTargetDist <
deadzone =
deltaMag < deadzone
smooth = Config.AIM_Smooth
Aimbot.lastTargetDist <
smooth = smooth *
Aimbot.lastTargetDist <
smooth = smooth *
Aimbot.lastTargetDist <
smooth = smooth *
smooth = .(smooth, , )
adjustedDelta = deltaMag - deadzone
adjustedDelta >
normalizedDelta = delta / deltaMag
moveX = normalizedDelta.X * adjustedDelta * smooth
moveY = normalizedDelta.Y * adjustedDelta * smooth
Aimbot.lastTargetDist <
moveX = .(moveX, -, )
moveY = .(moveY, -, )
(()
mousemoverel
(moveX, moveY)
)
Tabs = {
{name = },
{name = },
{name = }
}
MenuItems = {
{tab = , name = , = },
{tab = , name = , key = , = },
{tab = , name = , key = , = },
{tab = , name = , key = , = , options = {, }},
{tab = , name = , key = , = },
{tab = , name = , key = , = },
{tab = , name = , key = , = },
{tab = , name = , key = , = },
{tab = , name = , key = , = , options = {, , }},
{tab = , name = , key = , = },
{tab = , name = , key = , = },
{tab = , name = , key = , = },
{tab = , name = , key = , = },
{tab = , name = , key = , = },
{tab = , name = , key = , = , min = , max = , step = },
{tab = , name = , = },
{tab = , name = , key = , = },
{tab = , name = , key = , = , options = {, , }},
{tab = , name = , key = , = },
{tab = , name = , = },
{tab = , name = , key = , = },
{tab = , name = , key = , = },
{tab = , name = , key = , = },
{tab = , name = , = },
{tab = , name = , key = , = },
{tab = , name = , key = , = , min = , max = , step = },
{tab = , name = , key = , = , min = , max = , step = },
{tab = , name = , key = , = },
{tab = , name = , = },
{tab = , name = , key = , = },
{tab = , name = , key = , = },
{tab = , name = , key = , = , min = , max = , step = },
{tab = , name = , key = , = , min = , max = , step = },
{tab = , name = , key = , = , options = {, , , }},
{tab = , name = , key = , = },
{tab = , name = , = },
{tab = , name = , key = , = , min = , max = , step = },
{tab = , name = , key = , = , min = , max = , step = },
{tab = , name = , = },
{tab = , name = , key = , = },
{tab = , name = , key = , = },
{tab = , name = , key = , = },
{tab = , name = , key = , = },
{tab = , name = , = },
{tab = , name = , key = , = },
{tab = , name = , = },
{tab = , name = , key = , = },
{tab = , name = , key = , = },
{tab = , name = , = },
{tab = , name = , key = , = },
{tab = , name = , key = , = }
}
GUI = {
Drawings = {},
Visible = ,
Position = ,
Dragging = ,
DragOffset = .zero,
TabHover = {},
ItemHover = {},
SelectedItem = ,
ScrollOffset = ,
MaxScroll = ,
ScrollbarDragging = ,
EditingKeybind = ,
AnimProgress = ,
ContentBounds = {},
ScrollbarBounds = {},
ItemPositions = {},
ColorPickerHue = ,
ColorPickerSat = ,
ColorPickerVal = ,
ColorPickerDragging = ,
ColorPickerPos = ,
ColorPickerDragOffset = .zero,
EditingColorKey = ,
Preview = {
Box = {},
Corners = {},
Name = ,
Dist = ,
Tracer = ,
Figure = {}
}
}
KeyNames = {
[.KeyCode.Q] = , [.KeyCode.W] = , [.KeyCode.E] = , [.KeyCode.R] = ,
[.KeyCode.T] = , [.KeyCode.Y] = , [.KeyCode.U] = , [.KeyCode.I] = ,
[.KeyCode.O] = , [.KeyCode.P] = , [.KeyCode.A] = , [.KeyCode.S] = ,
[.KeyCode.D] = , [.KeyCode.F] = , [.KeyCode.G] = , [.KeyCode.H] = ,
[.KeyCode.J] = , [.KeyCode.K] = , [.KeyCode.L] = , [.KeyCode.Z] = ,
[.KeyCode.X] = , [.KeyCode.C] = , [.KeyCode.V] = , [.KeyCode.B] = ,
[.KeyCode.N] = , [.KeyCode.M] = ,
[.KeyCode.Insert] = , [.KeyCode.Home] = , [.KeyCode.End] = ,
[.KeyCode.Delete] = , [.KeyCode.F1] = , [.KeyCode.F2] = ,
[.KeyCode.F3] = , [.KeyCode.F4] = , [.KeyCode.F5] =
}
(keyCode)
KeyNames[keyCode] (keyCode):(, )
GUI.()
GUI.Drawings.Bg = .()
GUI.Drawings.Bg.Filled =
GUI.Drawings.Bg.Color = Palette.MenuBg
GUI.Drawings.Border = .()
GUI.Drawings.Border.Filled =
GUI.Drawings.Border.Color = Palette.MenuBorder
GUI.Drawings.Border.Thickness =
GUI.Drawings.TitleBar = .()
GUI.Drawings.TitleBar.Filled =
GUI.Drawings.TitleBar.Color = Palette.MenuTab
GUI.Drawings.Title = .()
GUI.Drawings.Title.Size =
GUI.Drawings.Title.Font = .Fonts.Monospace
GUI.Drawings.Title.Color = Palette.MenuAccent
GUI.Drawings.Title.Outline =
GUI.Drawings.Title.Text =
GUI.Drawings.Subtitle = .()
GUI.Drawings.Subtitle.Size =
GUI.Drawings.Subtitle.Font = .Fonts.UI
GUI.Drawings.Subtitle.Color = Palette.MenuTextDim
GUI.Drawings.Subtitle.Outline =
GUI.Drawings.Tabs = {}
i = , #Tabs
GUI.Drawings.Tabs[i] = {
Bg = .(),
Label = .(),
Indicator = .()
}
GUI.Drawings.Tabs[i].Bg.Filled =
GUI.Drawings.Tabs[i].Label.Size =
GUI.Drawings.Tabs[i].Label.Font = .Fonts.UI
GUI.Drawings.Tabs[i].Label.Center =
GUI.Drawings.Tabs[i].Label.Outline =
GUI.Drawings.Tabs[i].Indicator.Filled =
GUI.Drawings.Tabs[i].Indicator.Color = Palette.MenuAccent
GUI.Drawings.Items = {}
i = ,
GUI.Drawings.Items[i] = {
Bg = .(),
Label = .(),
Value = .(),
Toggle = .(),
ToggleKnob = .(),
SliderBg = .(),
SliderFill = .()
}
item = GUI.Drawings.Items[i]
item.Bg.Filled =
item.Label.Size =
item.Label.Font = .Fonts.UI
item.Label.Outline =
item.Value.Size =
item.Value.Font = .Fonts.UI
item.Value.Outline =
item.Toggle.Filled =
item.ToggleKnob.Filled =
item.ToggleKnob.Color = .(, , )
item.SliderBg.Filled =
item.SliderBg.Color = Palette.MenuOff
item.SliderFill.Filled =
item.SliderFill.Color = Palette.MenuAccent
GUI.Drawings.ScrollbarBg = .()
GUI.Drawings.ScrollbarBg.Filled =
GUI.Drawings.ScrollbarBg.Color = .(, , )
GUI.Drawings.ScrollbarThumb = .()
GUI.Drawings.ScrollbarThumb.Filled =
GUI.Drawings.ScrollbarThumb.Color = Palette.MenuScrollbar
GUI.Drawings.PreviewBg = .()
GUI.Drawings.PreviewBg.Filled =
GUI.Drawings.PreviewBg.Color = Palette.PreviewBg
GUI.Drawings.PreviewBorder = .()
GUI.Drawings.PreviewBorder.Filled =
GUI.Drawings.PreviewBorder.Color = Palette.PreviewBorder
GUI.Drawings.PreviewBorder.Thickness =
GUI.Drawings.PreviewTitle = .()
GUI.Drawings.PreviewTitle.Size =
GUI.Drawings.PreviewTitle.Font = .Fonts.UI
GUI.Drawings.PreviewTitle.Color = Palette.MenuTextDim
GUI.Drawings.PreviewTitle.Center =
GUI.Drawings.PreviewTitle.Outline =
GUI.Drawings.PreviewTitle.Text =
i = ,
GUI.Preview.Box[i] = .()
GUI.Preview.Box[i].Thickness =
i = ,
GUI.Preview.Corners[i] = .()
GUI.Preview.Corners[i].Thickness =
GUI.Preview.Name = .()
GUI.Preview.Name.Size =
GUI.Preview.Name.Font = .Fonts.Monospace
GUI.Preview.Name.Center =
GUI.Preview.Name.Outline =
GUI.Preview.Name.Text =
GUI.Preview.Dist = .()
GUI.Preview.Dist.Size =
GUI.Preview.Dist.Font = .Fonts.Monospace
GUI.Preview.Dist.Center =
GUI.Preview.Dist.Outline =
GUI.Preview.Dist.Color = .(, , )
GUI.Preview.Dist.Text =
GUI.Preview.Tracer = .()
GUI.Preview.Tracer.Thickness =
GUI.Preview.Tracer.Color = Palette.Tracer
GUI.Preview.Snapline = .()
GUI.Preview.Snapline.Thickness =
GUI.Preview.Snapline.Color = Palette.Snapline
GUI.Preview.Snapline.Transparency =
GUI.Preview.LookLine = .()
GUI.Preview.LookLine.Thickness =
GUI.Preview.LookLine.Color = Palette.LookDirection
GUI.Preview.BoxFill = .()
GUI.Preview.BoxFill.Filled =
GUI.Preview.BoxFill.Transparency =
GUI.Preview.VelLine = .()
GUI.Preview.VelLine.Thickness =
GUI.Preview.VelLine.Color = Palette.Velocity
GUI.Preview.VelArrow = .()
GUI.Preview.VelArrow.Filled =
GUI.Preview.VelArrow.Color = Palette.Velocity
GUI.Preview.Figure = {}
GUI.Preview.Figure.Head = .()
GUI.Preview.Figure.Head.Filled =
GUI.Preview.Figure.Head.Color = .(, , )
GUI.Preview.Figure.Head.NumSides =
GUI.Preview.Figure.Torso = .()
GUI.Preview.Figure.Torso.Filled =
GUI.Preview.Figure.Torso.Color = Color3.fromRGB(50, 50, 55)
GUI.Preview.Figure.ArmL = Drawing.new("Square")
GUI.Preview.Figure.ArmL.Filled = true
GUI.Preview.Figure.ArmL.Color = Color3.fromRGB(50, 50, 55)
GUI.Preview.Figure.ArmR = Drawing.new("Square")
GUI.Preview.Figure.ArmR.Filled = true
GUI.Preview.Figure.ArmR.Color = Color3.fromRGB(50, 50, 55)
GUI.Preview.Figure.LegL = Drawing.new("Square")
GUI.Preview.Figure.LegL.Filled = true
GUI.Preview.Figure.LegL.Color = Color3.fromRGB(45, 45, 50)
GUI.Preview.Figure.LegR = Drawing.new("Square")
GUI.Preview.Figure.LegR.Filled = true
GUI.Preview.Figure.LegR.Color = Color3.fromRGB(45, 45, 50)
GUI.Drawings.Footer = Drawing.new("Text")
GUI.Drawings.Footer.Size = 13
GUI.Drawings.Footer.Font = Drawing.Fonts.UI
GUI.Drawings.Footer.Color = Palette.MenuTextDim
GUI.Drawings.Footer.Outline = true
GUI.Drawings.Credit = Drawing.new("Text")
GUI.Drawings.Credit.Size = 12
GUI.Drawings.Credit.Font = Drawing.Fonts.UI
GUI.Drawings.Credit.Color = Color3.fromRGB(120, 120, 130)
GUI.Drawings.Credit.Outline = true
GUI.Drawings.Credit.Text = "made by leet"
GUI.Drawings.ColorPicker = {
Bg = Drawing.new("Square"),
Border = Drawing.new("Square"),
TitleBar = Drawing.new("Square"),
Title = Drawing.new("Text"),
HueBar = Drawing.new("Square"),
HueSelector = Drawing.new("Square"),
SatValBox = Drawing.new("Square"),
Selector = Drawing.new("Circle"),
Preview = Drawing.new("Square"),
PreviewBorder = Drawing.new("Square"),
CloseBtn = Drawing.new("Square"),
CloseTxt = Drawing.new("Text")
}
local cp = GUI.Drawings.ColorPicker
cp.Bg.Filled = true
cp.Bg.Color = Palette.MenuBg
cp.Border.Filled = false
cp.Border.Color = Palette.MenuAccent
cp.Border.Thickness = 1
cp.TitleBar.Filled = true
cp.TitleBar.Color = Palette.MenuTab
cp.Title.Size = 12
cp.Title.Font = Drawing.Fonts.UI
cp.Title.Color = Palette.MenuText
cp.Title.Center = true
cp.Title.Outline = true
cp.Title.Text = "SELECT COLOR"
cp.HueBar.Filled = true
cp.HueSelector.Filled = true
cp.HueSelector.Color = Color3.new(1, 1, 1)
cp.SatValBox.Filled = true
cp.Selector.Filled = true
cp.Selector.Color = Color3.new(1, 1, 1)
cp.Selector.NumSides = 16
cp.Selector.Radius = 5
cp.Preview.Filled = true
cp.PreviewBorder.Filled = false
cp.PreviewBorder.Color = Palette.MenuBorder
cp.PreviewBorder.Thickness = 1
cp.CloseBtn.Filled = true
cp.CloseBtn.Color = Palette.MenuAccent
cp.CloseTxt.Size = 11
cp.CloseTxt.Font = Drawing.Fonts.UI
cp.CloseTxt.Color = Color3.new(1, 1, 1)
cp.CloseTxt.Center = true
cp.CloseTxt.Text = "DONE"
end
function GUI.Hide()
for name, drawing in pairs(GUI.Drawings) do
if type(drawing) == "table" then
for _, subDrawing in pairs(drawing) do
if type(subDrawing) == "table" then
for _, d in pairs(subDrawing) do
if d.Visible ~= nil then d.Visible = false end
end
elseif subDrawing.Visible ~= nil then
subDrawing.Visible = false
end
end
elseif drawing.Visible ~= nil then
drawing.Visible = false
end
end
for _, l in ipairs(GUI.Preview.Box) do l.Visible = false end
for _, l in ipairs(GUI.Preview.Corners) do l.Visible = false end
if GUI.Preview.BoxFill then GUI.Preview.BoxFill.Visible = false end
if GUI.Preview.Name then GUI.Preview.Name.Visible = false end
if GUI.Preview.Dist then GUI.Preview.Dist.Visible = false end
if GUI.Preview.Tracer then GUI.Preview.Tracer.Visible = false end
if GUI.Preview.Snapline then GUI.Preview.Snapline.Visible = false end
if GUI.Preview.LookLine then GUI.Preview.LookLine.Visible = false end
if GUI.Preview.VelLine then GUI.Preview.VelLine.Visible = false end
if GUI.Preview.VelArrow then GUI.Preview.VelArrow.Visible = false end
if GUI.Preview.Figure then
for _, part in pairs(GUI.Preview.Figure) do
if part and part.Visible ~= nil then part.Visible = false end
end
end
end
function GUI.RenderPreview(x, y, w, h)
local pw, ph = Tuning.PreviewBoxW, Tuning.PreviewBoxH
local cx = x + w/2
local cy = y + h/2 + 10
local boxTop = cy - ph/2
local boxBottom = cy + ph/2
local boxLeft = cx - pw/2
local boxRight = cx + pw/2
local animCycle = tick() % 3
local animDist
if animCycle < 1.5 then
animDist = 20 + (animCycle / 1.5) * 80
else
animDist = 100 - ((animCycle - 1.5) / 1.5) * 80
end
animDist = math.floor(animDist)
local espColor, figFillColor, figOutlineColor
local useHeatmap = Config.ESP_Heatmap or (Config.ESP_Chams and Config.ESP_ChamsStyle == "Heatmap")
local useOutline = Config.ESP_Chams and Config.ESP_ChamsStyle == "Outline"
if useHeatmap then
espColor = GetHeatmapColor(animDist)
figFillColor = espColor
figOutlineColor = Color3.fromRGB(
math.min(255, espColor.R * 255 + 40),
math.min(255, espColor.G * 255 + 40),
math.min(255, espColor.B * 255 + 40)
)
elseif useOutline then
espColor = GetEspColor()
figFillColor = Color3.fromRGB(60, 60, 65)
figOutlineColor = GetEspColor()
elseif Config.ESP_Chams then
espColor = GetEspColor()
figFillColor = GetEspColor()
figOutlineColor = Color3.fromRGB(255, 120, 120)
else
espColor = GetEspColor()
figFillColor = Color3.fromRGB(60, 60, 65)
figOutlineColor = Color3.fromRGB(80, 80, 85)
end
local fig = GUI.Preview.Figure
local headRadius = 10
local headY = cy - ph * 0.32
fig.Head.Position = Vector2.new(cx, headY)
fig.Head.Radius = headRadius
fig.Head.Color = Config.ESP_Chams and (useOutline and figOutlineColor or figFillColor) or Color3.fromRGB(60, 60, 65)
fig.Head.Filled = not useOutline
fig.Head.Thickness = useOutline and 2 or 1
fig.Head.Visible = true
local torsoW, torsoH = 24, 40
local torsoTop = headY + headRadius + 2
fig.Torso.Position = Vector2.new(cx - torsoW/2, torsoTop)
fig.Torso.Size = Vector2.new(torsoW, torsoH)
fig.Torso.Color = Config.ESP_Chams and (useOutline and figOutlineColor or figFillColor) or Color3.fromRGB(50, 50, 55)
fig.Torso.Filled = not useOutline
fig.Torso.Thickness = useOutline and 2 or 1
fig.Torso.Visible = true
local armW, armH = 8, 38
fig.ArmL.Position = Vector2.new(cx - torsoW/2 - armW - 2, torsoTop + 2)
fig.ArmL.Size = Vector2.new(armW, armH)
fig.ArmL.Color = Config.ESP_Chams and (useOutline and figOutlineColor or figFillColor) or Color3.fromRGB(50, 50, 55)
fig.ArmL.Filled = not useOutline
fig.ArmL.Thickness = useOutline and 2 or 1
fig.ArmL.Visible = true
fig.ArmR.Position = Vector2.new(cx + torsoW/2 + 2, torsoTop + 2)
fig.ArmR.Size = Vector2.new(armW, armH)
fig.ArmR.Color = Config.ESP_Chams and (useOutline and figOutlineColor or figFillColor) or Color3.fromRGB(50, 50, 55)
fig.ArmR.Filled = not useOutline
fig.ArmR.Thickness = useOutline and 2 or 1
fig.ArmR.Visible = true
local legW, legH = 10, 45
local legTop = torsoTop + torsoH + 2
fig.LegL.Position = Vector2.new(cx - legW - 2, legTop)
fig.LegL.Size = Vector2.new(legW, legH)
fig.LegL.Color = Config.ESP_Chams and (useOutline and figOutlineColor or figFillColor) or Color3.fromRGB(45, 45, 50)
fig.LegL.Filled = not useOutline
fig.LegL.Thickness = useOutline and 2 or 1
fig.LegL.Visible = true
fig.LegR.Position = Vector2.new(cx + 2, legTop)
fig.LegR.Size = Vector2.new(legW, legH)
fig.LegR.Color = Config.ESP_Chams and (useOutline and figOutlineColor or figFillColor) or Color3.fromRGB(45, 45, 50)
fig.LegR.Filled = not useOutline
fig.LegR.Thickness = useOutline and 2 or 1
fig.LegR.Visible = true
if Config.ESP_Box then
if Config.ESP_BoxStyle == "Full" then
for _, l in ipairs(GUI.Preview.Corners) do l.Visible = false end
GUI.Preview.Box[1].From = Vector2.new(boxLeft, boxTop)
GUI.Preview.Box[1].To = Vector2.new(boxRight, boxTop)
GUI.Preview.Box[2].From = Vector2.new(boxRight, boxTop)
GUI.Preview.Box[2].To = Vector2.new(boxRight, boxBottom)
GUI.Preview.Box[3].From = Vector2.new(boxRight, boxBottom)
GUI.Preview.Box[3].To = Vector2.new(boxLeft, boxBottom)
GUI.Preview.Box[4].From = Vector2.new(boxLeft, boxBottom)
GUI.Preview.Box[4].To = Vector2.new(boxLeft, boxTop)
for _, l in ipairs(GUI.Preview.Box) do
l.Color = espColor
l.Visible = true
end
else
for _, l in ipairs(GUI.Preview.Box) do l.Visible = false end
local cl = 12
GUI.Preview.Corners[1].From = Vector2.new(boxLeft, boxTop)
GUI.Preview.Corners[1].To = Vector2.new(boxLeft + cl, boxTop)
GUI.Preview.Corners[2].From = Vector2.new(boxLeft, boxTop)
GUI.Preview.Corners[2].To = Vector2.new(boxLeft, boxTop + cl)
GUI.Preview.Corners[3].From = Vector2.new(boxRight, boxTop)
GUI.Preview.Corners[3].To = Vector2.new(boxRight - cl, boxTop)
GUI.Preview.Corners[4].From = Vector2.new(boxRight, boxTop)
GUI.Preview.Corners[4].To = Vector2.new(boxRight, boxTop + cl)
GUI.Preview.Corners[5].From = Vector2.new(boxLeft, boxBottom)
GUI.Preview.Corners[5].To = Vector2.new(boxLeft + cl, boxBottom)
GUI.Preview.Corners[6].From = Vector2.new(boxLeft, boxBottom)
GUI.Preview.Corners[6].To = Vector2.new(boxLeft, boxBottom - cl)
GUI.Preview.Corners[7].From = Vector2.new(boxRight, boxBottom)
GUI.Preview.Corners[7].To = Vector2.new(boxRight - cl, boxBottom)
GUI.Preview.Corners[8].From = Vector2.new(boxRight, boxBottom)
GUI.Preview.Corners[8].To = Vector2.new(boxRight, boxBottom - cl)
for _, l in ipairs(GUI.Preview.Corners) do
l.Color = espColor
l.Visible = true
end
end
else
for _, l in ipairs(GUI.Preview.Box) do l.Visible = false end
for _, l in ipairs(GUI.Preview.Corners) do l.Visible = false end
end
if Config.ESP_BoxFill and GUI.Preview.BoxFill then
GUI.Preview.BoxFill.Position = Vector2.new(boxLeft, boxTop)
GUI.Preview.BoxFill.Size = Vector2.new(pw, ph)
GUI.Preview.BoxFill.Color = espColor
GUI.Preview.BoxFill.Transparency = 0.15
GUI.Preview.BoxFill.Visible = true
else
if GUI.Preview.BoxFill then GUI.Preview.BoxFill.Visible = false end
end
if Config.ESP_Name then
GUI.Preview.Name.Position = Vector2.new(cx, boxTop - 16)
GUI.Preview.Name.Color = espColor
GUI.Preview.Name.Visible = true
else
GUI.Preview.Name.Visible = false
end
if Config.ESP_Distance then
GUI.Preview.Dist.Position = Vector2.new(cx, boxBottom + 4)
GUI.Preview.Dist.Text = animDist .. "m"
GUI.Preview.Dist.Visible = true
else
GUI.Preview.Dist.Visible = false
end
if Config.ESP_Tracer then
local fromY, toY
toY = boxBottom
if Config.ESP_TracerOrigin == "Bottom" then
fromY = y + h - 5
elseif Config.ESP_TracerOrigin == "Top" then
fromY = y + 5
else
fromY = y + h/2
end
GUI.Preview.Tracer.From = Vector2.new(cx, fromY)
GUI.Preview.Tracer.To = Vector2.new(cx, toY)
GUI.Preview.Tracer.Color = Palette.Tracer
GUI.Preview.Tracer.Visible = true
else
GUI.Preview.Tracer.Visible = false
end
if Config.ESP_Snapline and GUI.Preview.Snapline then
GUI.Preview.Snapline.From = Vector2.new(cx, y + h - 5)
GUI.Preview.Snapline.To = Vector2.new(cx, boxBottom)
GUI.Preview.Snapline.Color = Palette.Snapline
GUI.Preview.Snapline.Transparency = 0.5
GUI.Preview.Snapline.Visible = true
else
if GUI.Preview.Snapline then GUI.Preview.Snapline.Visible = false end
end
if Config.ESP_LookDirection and GUI.Preview.LookLine then
local lookEndX = cx + 35
local lookEndY = cy - 5
GUI.Preview.LookLine.From = Vector2.new(cx, cy)
GUI.Preview.LookLine.To = Vector2.new(lookEndX, lookEndY)
GUI.Preview.LookLine.Color = Palette.LookDirection
GUI.Preview.LookLine.Visible = true
else
if GUI.Preview.LookLine then GUI.Preview.LookLine.Visible = false end
end
if Config.ESP_Velocity and GUI.Preview.VelLine and GUI.Preview.VelArrow then
local velStartX = cx + pw/2 - 15
local velStartY = cy
local velEndX = velStartX + 28
local velEndY = cy - 10
GUI.Preview.VelLine.From = Vector2.new(velStartX, velStartY)
GUI.Preview.VelLine.To = Vector2.new(velEndX, velEndY)
GUI.Preview.VelLine.Color = Palette.Velocity
GUI.Preview.VelLine.Thickness = 2
GUI.Preview.VelLine.Visible = true
local dx, dy = velEndX - velStartX, velEndY - velStartY
local len = math.sqrt(dx*dx + dy*dy)
local fx, fy = dx/len, dy/len
local arrowSize = 12
GUI.Preview.VelArrow.PointA = Vector2.new(velEndX + fx*2, velEndY + fy*2)
GUI.Preview.VelArrow.PointB = Vector2.new(velEndX - fx*arrowSize + fy*arrowSize/2, velEndY - fy*arrowSize - fx*arrowSize/2)
GUI.Preview.VelArrow.PointC = Vector2.new(velEndX - fx*arrowSize - fy*arrowSize/2, velEndY - fy*arrowSize + fx*arrowSize/2)
GUI.Preview.VelArrow.Color = Palette.Velocity
GUI.Preview.VelArrow.Visible = true
else
if GUI.Preview.VelLine then GUI.Preview.VelLine.Visible = false end
if GUI.Preview.VelArrow then GUI.Preview.VelArrow.Visible = false end
end
if Config.ESP_Offscreen then
local arrowX = boxRight + 15
local arrowY = cy
local arrowSize = 8
end
end
function GUI.Render()
if State.Unloaded or not Config.MENU_Open then
GUI.Hide()
return
end
local cam = Workspace.CurrentCamera
if not cam then return end
local screenSize = cam.ViewportSize
local menuW, menuH = 320, 400
local previewW, previewH = 160, 240
local titleH = 24
local tabH = 28
local footerH = 24
local scrollbarW = 5
if not GUI.Position then
GUI.Position = Vector2.new(20, screenSize.Y/2 - menuH/2)
end
if GUI.Dragging then
local mouse = UserInputService:GetMouseLocation()
GUI.Position = mouse - GUI.DragOffset
GUI.Position = Vector2.new(
math.clamp(GUI.Position.X, 0, screenSize.X - menuW),
math.clamp(GUI.Position.Y, 0, screenSize.Y - menuH)
)
end
local x, y = GUI.Position.X, GUI.Position.Y
GUI.Drawings.Bg.Position = Vector2.new(x, y)
GUI.Drawings.Bg.Size = Vector2.new(menuW, menuH)
GUI.Drawings.Bg.Transparency = 0.96
GUI.Drawings.Bg.Visible = true
GUI.Drawings.Border.Position = Vector2.new(x, y)
GUI.Drawings.Border.Size = Vector2.new(menuW, menuH)
GUI.Drawings.Border.Visible = true
GUI.Drawings.TitleBar.Position = Vector2.new(x, y)
GUI.Drawings.TitleBar.Size = Vector2.new(menuW, titleH)
GUI.Drawings.TitleBar.Visible = true
GUI.Drawings.Title.Position = Vector2.new(x + 10, y + 5)
GUI.Drawings.Title.Color = Palette.MenuAccent
GUI.Drawings.Title.Visible = true
local menuKey = GetKeyName(Config.KEY_Menu)
local panicKey = GetKeyName(Config.KEY_Panic)
GUI.Drawings.Subtitle.Text = "[" .. menuKey .. "] menu [" .. panicKey .. "] panic"
GUI.Drawings.Subtitle.Position = Vector2.new(x + 105, y + 6)
GUI.Drawings.Subtitle.Visible = true
local tabY = y + titleH
local tabWidth = menuW / #Tabs
for i, tab in ipairs(Tabs) do
local tabX = x + (i - 1) * tabWidth
local isSelected = (i == Config.MENU_Tab)
GUI.Drawings.Tabs[i].Bg.Position = Vector2.new(tabX, tabY)
GUI.Drawings.Tabs[i].Bg.Size = Vector2.new(tabWidth, tabH)
GUI.Drawings.Tabs[i].Bg.Color = isSelected and Palette.MenuTabActive or Palette.MenuTab
GUI.Drawings.Tabs[i].Bg.Transparency = isSelected and 0.3 or 0.7
GUI.Drawings.Tabs[i].Bg.Visible = true
GUI.Drawings.Tabs[i].Label.Position = Vector2.new(tabX + tabWidth/2, tabY + 8)
GUI.Drawings.Tabs[i].Label.Text = tab.name
GUI.Drawings.Tabs[i].Label.Color = isSelected and Color3.new(1, 1, 1) or Palette.MenuTextDim
GUI.Drawings.Tabs[i].Label.Visible = true
if isSelected then
GUI.Drawings.Tabs[i].Indicator.Position = Vector2.new(tabX, tabY + tabH - 2)
GUI.Drawings.Tabs[i].Indicator.Size = Vector2.new(tabWidth, 2)
GUI.Drawings.Tabs[i].Indicator.Visible = true
else
GUI.Drawings.Tabs[i].Indicator.Visible = false
end
end
local contentY = y + titleH + tabH + 6
local contentH = menuH - titleH - tabH - footerH - 12
local itemH = 26
local itemSpacing = 2
GUI.ContentBounds = {x = x + 8, y = contentY, w = menuW - 16 - scrollbarW - 4, h = contentH}
local tabItemCount = 0
for _, item in ipairs(MenuItems) do
if item.tab == Config.MENU_Tab then tabItemCount = tabItemCount + 1 end
end
local totalContentH = tabItemCount * (itemH + itemSpacing)
GUI.MaxScroll = math.max(0, totalContentH - contentH)
GUI.ScrollOffset = math.clamp(GUI.ScrollOffset, 0, GUI.MaxScroll)
local scrollbarX = x + menuW - scrollbarW - 6
local scrollbarY = contentY
local scrollbarH = contentH
GUI.Drawings.ScrollbarBg.Position = Vector2.new(scrollbarX, scrollbarY)
GUI.Drawings.ScrollbarBg.Size = Vector2.new(scrollbarW, scrollbarH)
GUI.Drawings.ScrollbarBg.Transparency = 0.7
GUI.Drawings.ScrollbarBg.Visible = true
GUI.ScrollbarBounds = {x = scrollbarX, y = scrollbarY, w = scrollbarW, h = scrollbarH}
if GUI.MaxScroll > 0 then
local thumbH = math.max(25, scrollbarH * (contentH / totalContentH))
local thumbY = scrollbarY + (GUI.ScrollOffset / GUI.MaxScroll) * (scrollbarH - thumbH)
GUI.Drawings.ScrollbarThumb.Position = Vector2.new(scrollbarX, thumbY)
GUI.Drawings.ScrollbarThumb.Size = Vector2.new(scrollbarW, thumbH)
GUI.Drawings.ScrollbarThumb.Color = Palette.MenuScrollbar
GUI.Drawings.ScrollbarThumb.Visible = true
GUI.ScrollbarBounds.thumbH = thumbH
else
GUI.Drawings.ScrollbarThumb.Visible = false
GUI.ScrollbarBounds.thumbH = 0
end
GUI.ItemPositions = {}
local itemIdx = 0
local currentTabItemIdx = 0
for _, menuItem in ipairs(MenuItems) do
if menuItem.tab == Config.MENU_Tab then
currentTabItemIdx = currentTabItemIdx + 1
local rawY = contentY + (currentTabItemIdx - 1) * (itemH + itemSpacing) - GUI.ScrollOffset
local isVisible = rawY >= contentY - 2 and rawY <= contentY + contentH - itemH + 5
if isVisible then
itemIdx = itemIdx + 1
if itemIdx > 20 then break end
local itemY = rawY
local item = GUI.Drawings.Items[itemIdx]
GUI.ItemPositions[itemIdx] = {x = x + 8, y = itemY, w = menuW - 16 - scrollbarW - 4, h = itemH, idx = currentTabItemIdx}
item.Bg.Position = Vector2.new(x + 8, itemY)
item.Bg.Size = Vector2.new(menuW - 16 - scrollbarW - 4, itemH - 2)
item.Bg.Color = Palette.MenuPanel
item.Bg.Transparency = 0.9
item.Bg.Visible = true
item.Label.Position = Vector2.new(x + 14, itemY + 5)
item.Label.Text = menuItem.name
item.Label.Visible = true
if menuItem.type == "label" then
item.Label.Color = Palette.MenuAccent
item.Bg.Color = Palette.MenuBg
item.Value.Visible = false
item.Toggle.Visible = false
item.ToggleKnob.Visible = false
item.SliderBg.Visible = false
item.SliderFill.Visible = false
elseif menuItem.type == "toggle" then
item.Label.Color = Palette.MenuText
local isOn = Config[menuItem.key]
local toggleX = x + menuW - 50 - scrollbarW - 4
local toggleY = itemY + 5
item.Toggle.Position = Vector2.new(toggleX, toggleY)
item.Toggle.Size = Vector2.new(28, 14)
item.Toggle.Color = isOn and Palette.MenuOn or Palette.MenuOff
item.Toggle.Filled = true
item.Toggle.Visible = true
local knobX = isOn and (toggleX + 28 - 12) or (toggleX + 2)
item.ToggleKnob.Position = Vector2.new(knobX, toggleY + 2)
item.ToggleKnob.Size = Vector2.new(10, 10)
item.ToggleKnob.Color = Color3.new(1, 1, 1)
item.ToggleKnob.Filled = true
item.ToggleKnob.Visible = true
item.Value.Visible = false
item.SliderBg.Visible = false
item.SliderFill.Visible = false
elseif menuItem.type == "slider" then
item.Label.Color = Palette.MenuText
local val = Config[menuItem.key]
local pct = (val - menuItem.min) / (menuItem.max - menuItem.min)
local valText = menuItem.step < 1 and string.format("%.2f", val) or tostring(math.floor(val))
item.Value.Position = Vector2.new(x + menuW - 50 - scrollbarW, itemY + 5)
item.Value.Text = valText
item.Value.Color = Palette.MenuTextDim
item.Value.Visible = true
local sliderW = menuW - 75 - scrollbarW
item.SliderBg.Position = Vector2.new(x + 14, itemY + itemH - 6)
item.SliderBg.Size = Vector2.new(sliderW, 3)
item.SliderBg.Color = Palette.MenuOff
item.SliderBg.Filled = true
item.SliderBg.Visible = true
item.SliderFill.Position = Vector2.new(x + 14, itemY + itemH - 6)
item.SliderFill.Size = Vector2.new(sliderW * pct, 3)
item.SliderFill.Color = Palette.MenuAccent
item.SliderFill.Filled = true
item.SliderFill.Visible = true
item.Toggle.Visible = false
item.ToggleKnob.Visible = false
elseif menuItem.type == "dropdown" then
item.Label.Color = Palette.MenuText
local currentVal = Config[menuItem.key]
item.Value.Position = Vector2.new(x + menuW - 75 - scrollbarW, itemY + 5)
item.Value.Text = "[" .. tostring(currentVal) .. "]"
item.Value.Color = Palette.MenuAccent
item.Value.Visible = true
item.Toggle.Visible = false
item.ToggleKnob.Visible = false
item.SliderBg.Visible = false
item.SliderFill.Visible = false
elseif menuItem.type == "keybind" then
item.Label.Color = Palette.MenuText
local keyCode = Config[menuItem.key]
local keyText = GUI.EditingKeybind == menuItem.key and "[...]" or ("[" .. GetKeyName(keyCode) .. "]")
item.Value.Position = Vector2.new(x + menuW - 60 - scrollbarW, itemY + 5)
item.Value.Text = keyText
item.Value.Color = GUI.EditingKeybind == menuItem.key and Palette.MenuAccent or Palette.MenuText
item.Value.Visible = true
item.Toggle.Visible = false
item.ToggleKnob.Visible = false
item.SliderBg.Visible = false
item.SliderFill.Visible = false
elseif menuItem.type == "color" then
item.Label.Color = Palette.MenuText
local col = Config[menuItem.key] or Color3.fromRGB(220, 60, 60)
local swatchX = x + menuW - 50 - scrollbarW - 4
local swatchY = itemY + 4
item.SliderBg.Position = Vector2.new(swatchX - 1, swatchY - 1)
item.SliderBg.Size = Vector2.new(34, 18)
item.SliderBg.Color = State.ColorPickerOpen and Palette.MenuAccent or Palette.MenuBorder
item.SliderBg.Filled = true
item.SliderBg.Visible = true
item.SliderFill.Position = Vector2.new(swatchX, swatchY)
item.SliderFill.Size = Vector2.new(32, 16)
item.SliderFill.Color = col
item.SliderFill.Filled = true
item.SliderFill.Visible = true
item.Value.Visible = false
item.Toggle.Visible = false
item.ToggleKnob.Visible = false
end
end
end
end
for i = itemIdx + 1, 20 do
local item = GUI.Drawings.Items[i]
item.Bg.Visible = false
item.Label.Visible = false
item.Value.Visible = false
item.Toggle.Visible = false
item.ToggleKnob.Visible = false
item.SliderBg.Visible = false
item.SliderFill.Visible = false
end
if Config.MENU_Tab == 1 then
local previewX = x + menuW + 10
local previewY = y
GUI.Drawings.PreviewBg.Position = Vector2.new(previewX, previewY)
GUI.Drawings.PreviewBg.Size = Vector2.new(previewW, previewH)
GUI.Drawings.PreviewBg.Transparency = 0.96
GUI.Drawings.PreviewBg.Visible = true
GUI.Drawings.PreviewBorder.Position = Vector2.new(previewX, previewY)
GUI.Drawings.PreviewBorder.Size = Vector2.new(previewW, previewH)
GUI.Drawings.PreviewBorder.Color = Palette.PreviewBorder
GUI.Drawings.PreviewBorder.Visible = true
GUI.Drawings.PreviewTitle.Position = Vector2.new(previewX + previewW/2, previewY + 8)
GUI.Drawings.PreviewTitle.Visible = true
GUI.RenderPreview(previewX, previewY + 20, previewW, previewH - 20)
else
GUI.Drawings.PreviewBg.Visible = false
GUI.Drawings.PreviewBorder.Visible = false
GUI.Drawings.PreviewTitle.Visible = false
for _, l in ipairs(GUI.Preview.Box) do l.Visible = false end
for _, l in ipairs(GUI.Preview.Corners) do l.Visible = false end
if GUI.Preview.BoxFill then GUI.Preview.BoxFill.Visible = false end
GUI.Preview.Name.Visible = false
GUI.Preview.Dist.Visible = false
GUI.Preview.Tracer.Visible = false
if GUI.Preview.Snapline then GUI.Preview.Snapline.Visible = false end
if GUI.Preview.LookLine then GUI.Preview.LookLine.Visible = false end
if GUI.Preview.VelLine then GUI.Preview.VelLine.Visible = false end
if GUI.Preview.VelArrow then GUI.Preview.VelArrow.Visible = false end
for _, part in pairs(GUI.Preview.Figure) do
if part and part.Visible ~= nil then part.Visible = false end
end
end
local ping = 0
pcall(function()
ping = math.floor(Stats.Network.ServerStatsItem["Data Ping"]:GetValue())
end)
GUI.Drawings.Footer.Text = "Ping: " .. ping .. "ms"
GUI.Drawings.Footer.Position = Vector2.new(x + 10, y + menuH - footerH + 5)
GUI.Drawings.Footer.Visible = true
GUI.Drawings.Credit.Position = Vector2.new(x + menuW - 85, y + menuH - footerH + 6)
GUI.Drawings.Credit.Visible = true
if State.ColorPickerOpen and GUI.Drawings.ColorPicker then
local cp = GUI.Drawings.ColorPicker
local cpW, cpH = 180, 220
local titleH = 24
if not GUI.ColorPickerPos then
GUI.ColorPickerPos = Vector2.new(x + menuW + 10, y + menuH/2 - cpH/2)
end
local cpX, cpY = GUI.ColorPickerPos.X, GUI.ColorPickerPos.Y
cp.Bg.Position = Vector2.new(cpX, cpY)
cp.Bg.Size = Vector2.new(cpW, cpH)
cp.Bg.Visible = true
cp.Border.Position = Vector2.new(cpX, cpY)
cp.Border.Size = Vector2.new(cpW, cpH)
cp.Border.Visible = true
cp.TitleBar.Position = Vector2.new(cpX, cpY)
cp.TitleBar.Size = Vector2.new(cpW, titleH)
cp.TitleBar.Visible = true
cp.Title.Position = Vector2.new(cpX + cpW/2, cpY + 6)
cp.Title.Visible = true
local satValX, satValY = cpX + 10, cpY + titleH + 8
local satValW, satValH = cpW - 40, 100
cp.SatValBox.Position = Vector2.new(satValX, satValY)
cp.SatValBox.Size = Vector2.new(satValW, satValH)
cp.SatValBox.Color = HSVtoRGB(GUI.ColorPickerHue, 1, 1)
cp.SatValBox.Visible = true
local selX = satValX + GUI.ColorPickerSat * satValW
local selY = satValY + (1 - GUI.ColorPickerVal) * satValH
cp.Selector.Position = Vector2.new(selX, selY)
cp.Selector.Visible = true
local hueX, hueY = cpX + cpW - 25, cpY + titleH + 8
local hueW, hueH = 15, 100
cp.HueBar.Position = Vector2.new(hueX, hueY)
cp.HueBar.Size = Vector2.new(hueW, hueH)
cp.HueBar.Color = HSVtoRGB(GUI.ColorPickerHue, 1, 1)
cp.HueBar.Visible = true
local hueSelectorY = hueY + GUI.ColorPickerHue * hueH
cp.HueSelector.Position = Vector2.new(hueX - 2, hueSelectorY - 2)
cp.HueSelector.Size = Vector2.new(hueW + 4, 4)
cp.HueSelector.Visible = true
local previewY = cpY + titleH + satValH + 18
local currentColor = HSVtoRGB(GUI.ColorPickerHue, GUI.ColorPickerSat, GUI.ColorPickerVal)
cp.Preview.Position = Vector2.new(cpX + 10, previewY)
cp.Preview.Size = Vector2.new(cpW - 20, 25)
cp.Preview.Color = currentColor
cp.Preview.Visible = true
cp.PreviewBorder.Position = Vector2.new(cpX + 10, previewY)
cp.PreviewBorder.Size = Vector2.new(cpW - 20, 25)
cp.PreviewBorder.Visible = true
local btnY = cpY + cpH - 28
cp.CloseBtn.Position = Vector2.new(cpX + 10, btnY)
cp.CloseBtn.Size = Vector2.new(cpW - 20, 20)
cp.CloseBtn.Visible = true
cp.CloseTxt.Position = Vector2.new(cpX + cpW/2, btnY + 4)
cp.CloseTxt.Visible = true
GUI.ColorPickerBounds = {
x = cpX, y = cpY, w = cpW, h = cpH,
titleBar = {x = cpX, y = cpY, w = cpW, h = titleH},
satVal = {x = satValX, y = satValY, w = satValW, h = satValH},
hue = {x = hueX, y = hueY, w = hueW, h = hueH},
closeBtn = {x = cpX + 10, y = btnY, w = cpW - 20, h = 20}
}
else
if GUI.Drawings.ColorPicker then
local cp = GUI.Drawings.ColorPicker
cp.Bg.Visible = false
cp.Border.Visible = false
cp.TitleBar.Visible = false
cp.Title.Visible = false
cp.SatValBox.Visible = false
cp.Selector.Visible = false
cp.HueBar.Visible = false
cp.HueSelector.Visible = false
cp.Preview.Visible = false
cp.PreviewBorder.Visible = false
cp.CloseBtn.Visible = false
cp.CloseTxt.Visible = false
end
end
end
local Unload
local function HandleInput(input, gameProcessed)
if State.Unloaded then return end
if input.UserInputType == Enum.UserInputType.Keyboard then
if input.KeyCode == Config.KEY_Panic then
if Unload then
Unload()
end
return
end
end
if GUI.EditingKeybind and input.UserInputType == Enum.UserInputType.Keyboard then
if input.KeyCode ~= Enum.KeyCode.Escape then
Config[GUI.EditingKeybind] = input.KeyCode
end
GUI.EditingKeybind = nil
return
end
if input.UserInputType == Enum.UserInputType.Keyboard then
if input.KeyCode == Config.KEY_Menu and not gameProcessed then
Config.MENU_Open = not Config.MENU_Open
GUI.ScrollOffset = 0
return
end
end
if input.UserInputType == Config.AIM_Key then
State.Aiming = true
end
if input.UserInputType == Enum.UserInputType.MouseButton1 and Config.MENU_Open then
local mouse = UserInputService:GetMouseLocation()
local menuW, menuH = 320, 400
local titleH = 24
local tabH = 28
local footerH = 24
local scrollbarW = 5
local x, y = GUI.Position.X, GUI.Position.Y
if State.ColorPickerOpen and GUI.ColorPickerBounds then
local cpb = GUI.ColorPickerBounds
local inPicker = mouse.X >= cpb.x and mouse.X <= cpb.x + cpb.w and
mouse.Y >= cpb.y and mouse.Y <= cpb.y + cpb.h
if inPicker then
local tb = cpb.titleBar
if tb and mouse.X >= tb.x and mouse.X <= tb.x + tb.w and
mouse.Y >= tb.y and mouse.Y <= tb.y + tb.h then
GUI.ColorPickerDragging = "move"
GUI.ColorPickerDragOffset = mouse - GUI.ColorPickerPos
return
end
local btn = cpb.closeBtn
if mouse.X >= btn.x and mouse.X <= btn.x + btn.w and
mouse.Y >= btn.y and mouse.Y <= btn.y + btn.h then
local col = HSVtoRGB(GUI.ColorPickerHue, GUI.ColorPickerSat, GUI.ColorPickerVal)
if GUI.EditingColorKey then
Config[GUI.EditingColorKey] = col
if GUI.EditingColorKey == "MISC_MenuColor" then
Palette.MenuAccent = col
Palette.RadarBorder = col
Palette.PreviewBorder = col
Palette.MenuScrollbar = col
Palette.MenuTabActive = col
end
end
State.ColorPickerOpen = false
GUI.ColorPickerDragging = nil
GUI.ColorPickerPos = nil
GUI.EditingColorKey = nil
return
end
local sv = cpb.satVal
if mouse.X >= sv.x and mouse.X <= sv.x + sv.w and
mouse.Y >= sv.y and mouse.Y <= sv.y + sv.h then
GUI.ColorPickerDragging = "satval"
GUI.ColorPickerSat = math.clamp((mouse.X - sv.x) / sv.w, 0, 1)
GUI.ColorPickerVal = math.clamp(1 - (mouse.Y - sv.y) / sv.h, 0, 1)
local col = HSVtoRGB(GUI.ColorPickerHue, GUI.ColorPickerSat, GUI.ColorPickerVal)
if GUI.EditingColorKey then
Config[GUI.EditingColorKey] = col
if GUI.EditingColorKey == "MISC_MenuColor" then
Palette.MenuAccent = col
Palette.RadarBorder = col
Palette.PreviewBorder = col
Palette.MenuScrollbar = col
Palette.MenuTabActive = col
end
end
return
end
local hb = cpb.hue
if mouse.X >= hb.x and mouse.X <= hb.x + hb.w and
mouse.Y >= hb.y and mouse.Y <= hb.y + hb.h then
GUI.ColorPickerDragging = "hue"
GUI.ColorPickerHue = math.clamp((mouse.Y - hb.y) / hb.h, 0, 1)
Config.ESP_CustomColor = HSVtoRGB(GUI.ColorPickerHue, GUI.ColorPickerSat, GUI.ColorPickerVal)
return
end
return
else
Config.ESP_CustomColor = HSVtoRGB(GUI.ColorPickerHue, GUI.ColorPickerSat, GUI.ColorPickerVal)
State.ColorPickerOpen = false
GUI.ColorPickerDragging = nil
GUI.ColorPickerPos = nil
end
end
if mouse.X >= x and mouse.X <= x + menuW and mouse.Y >= y and mouse.Y <= y + titleH then
GUI.Dragging = true
GUI.DragOffset = mouse - GUI.Position
return
end
local sb = GUI.ScrollbarBounds
if sb and sb.x and sb.thumbH and sb.thumbH > 0 and
mouse.X >= sb.x and mouse.X <= sb.x + sb.w + 4 and
mouse.Y >= sb.y and mouse.Y <= sb.y + sb.h then
GUI.ScrollbarDragging = true
local scrollbarTrack = sb.h - sb.thumbH
if scrollbarTrack > 0 then
local relY = math.clamp(mouse.Y - sb.y - sb.thumbH/2, 0, scrollbarTrack)
GUI.ScrollOffset = (relY / scrollbarTrack) * GUI.MaxScroll
end
return
end
local tabWidth = menuW / #Tabs
for i = 1, #Tabs do
local tabX = x + (i - 1) * tabWidth
if mouse.X >= tabX and mouse.X <= tabX + tabWidth and
mouse.Y >= y + titleH and mouse.Y <= y + titleH + tabH then
Config.MENU_Tab = i
GUI.ScrollOffset = 0
return
end
end
local contentY = y + titleH + tabH + 6
local contentH = menuH - titleH - tabH - footerH - 12
local itemH = 26
local itemSpacing = 2
local currentTabItemIdx = 0
for _, menuItem in ipairs(MenuItems) do
if menuItem.tab == Config.MENU_Tab then
currentTabItemIdx = currentTabItemIdx + 1
local rawY = contentY + (currentTabItemIdx - 1) * (itemH + itemSpacing) - GUI.ScrollOffset
if rawY >= contentY - 2 and rawY <= contentY + contentH - itemH + 5 then
if mouse.X >= x + 8 and mouse.X <= x + menuW - scrollbarW - 12 and
mouse.Y >= rawY and mouse.Y <= rawY + itemH then
if menuItem.type == "toggle" then
Config[menuItem.key] = not Config[menuItem.key]
if menuItem.key == "MISC_NoRecoil" or menuItem.key == "MISC_NoSway" or
menuItem.key == "MISC_NoSpread" or menuItem.key == "MISC_NoCamShake" then
ToggleGunMods()
end
elseif menuItem.type == "color" then
State.ColorPickerOpen = true
GUI.EditingColorKey = menuItem.key
local h, s, v = RGBtoHSV(Config[menuItem.key])
GUI.ColorPickerHue = h
GUI.ColorPickerSat = s
GUI.ColorPickerVal = v
return
elseif menuItem.type == "dropdown" then
local opts = menuItem.options
local current = Config[menuItem.key]
local idx = 1
for i, opt in ipairs(opts) do
if opt == current then idx = i break end
end
idx = idx + 1
if idx > #opts then idx = 1 end
Config[menuItem.key] = opts[idx]
elseif menuItem.type == "slider" then
local sliderX = x + 14
local sliderW = menuW - 75 - scrollbarW
local pct = math.clamp((mouse.X - sliderX) / sliderW, 0, 1)
local val = menuItem.min + pct * (menuItem.max - menuItem.min)
val = math.floor(val / menuItem.step + 0.5) * menuItem.step
Config[menuItem.key] = math.clamp(val, menuItem.min, menuItem.max)
elseif menuItem.type == "keybind" then
GUI.EditingKeybind = menuItem.key
end
return
end
end
end
end
end
end
local function HandleInputEnd(input)
if State.Unloaded then return end
if input.UserInputType == Enum.UserInputType.MouseButton1 then
GUI.Dragging = false
GUI.ScrollbarDragging = false
GUI.ColorPickerDragging = nil
end
if input.UserInputType == Config.AIM_Key then
State.Aiming = false
end
end
local function HandleInputChanged(input)
if State.Unloaded then return end
if input.UserInputType == Enum.UserInputType.MouseWheel and Config.MENU_Open then
local mouse = UserInputService:GetMouseLocation()
local x, y = GUI.Position.X, GUI.Position.Y
local w, h = 320, 400
if mouse.X >= x and mouse.X <= x + w and mouse.Y >= y and mouse.Y <= y + h then
local scrollAmount = -input.Position.Z * 40
GUI.ScrollOffset = math.clamp(GUI.ScrollOffset + scrollAmount, 0, GUI.MaxScroll)
end
end
if input.UserInputType == Enum.UserInputType.MouseMovement then
local mouse = UserInputService:GetMouseLocation()
if GUI.ScrollbarDragging then
local sb = GUI.ScrollbarBounds
if sb and sb.thumbH and sb.thumbH > 0 then
local scrollbarTrack = sb.h - sb.thumbH
if scrollbarTrack > 0 then
local relY = math.clamp(mouse.Y - sb.y - sb.thumbH/2, 0, scrollbarTrack)
GUI.ScrollOffset = (relY / scrollbarTrack) * GUI.MaxScroll
end
end
end
if GUI.ColorPickerDragging and GUI.ColorPickerBounds then
local cpb = GUI.ColorPickerBounds
if GUI.ColorPickerDragging == "move" then
if GUI.ColorPickerDragOffset then
GUI.ColorPickerPos = mouse - GUI.ColorPickerDragOffset
end
elseif GUI.ColorPickerDragging == "satval" then
local sv = cpb.satVal
GUI.ColorPickerSat = math.clamp((mouse.X - sv.x) / sv.w, 0, 1)
GUI.ColorPickerVal = math.clamp(1 - (mouse.Y - sv.y) / sv.h, 0, 1)
local col = HSVtoRGB(GUI.ColorPickerHue, GUI.ColorPickerSat, GUI.ColorPickerVal)
if GUI.EditingColorKey then
Config[GUI.EditingColorKey] = col
if GUI.EditingColorKey == "MISC_MenuColor" then
Palette.MenuAccent = col
Palette.RadarBorder = col
Palette.PreviewBorder = col
end
end
elseif GUI.ColorPickerDragging == "hue" then
local hb = cpb.hue
GUI.ColorPickerHue = math.clamp((mouse.Y - hb.y) / hb.h, 0, 1)
local col = HSVtoRGB(GUI.ColorPickerHue, GUI.ColorPickerSat, GUI.ColorPickerVal)
if GUI.EditingColorKey then
Config[GUI.EditingColorKey] = col
if GUI.EditingColorKey == "MISC_MenuColor" then
Palette.MenuAccent = col
Palette.RadarBorder = col
Palette.PreviewBorder = col
end
end
end
end
end
end
local GunModConnection = nil
local function ApplyGunModsFrame()
if Config.MISC_NoRecoil or Config.MISC_NoSway or Config.MISC_NoSpread or Config.MISC_NoCamShake then
for _, v in pairs(getgc(true)) do
if type(v) == "table" then
if Config.MISC_NoRecoil and rawget(v, "recoil") then v.recoil = 0 end
if Config.MISC_NoSway and rawget(v, "sway") then v.sway = 0 end
if Config.MISC_NoSpread and rawget(v, "spread") then v.spread = 0 end
if Config.MISC_NoCamShake and rawget(v, "shake") then v.shake = 0 end
end
end
end
end
local function ToggleGunMods()
local anyEnabled = Config.MISC_NoRecoil or Config.MISC_NoSway or Config.MISC_NoSpread or Config.MISC_NoCamShake
if anyEnabled then
if not GunModConnection then
GunModConnection = RunService.RenderStepped:Connect(ApplyGunModsFrame)
end
else
if GunModConnection then
GunModConnection:Disconnect()
GunModConnection = nil
end
end
end
local Noclip = {
Initialized = false,
SpawnConnection = nil
}
-- Noclip code credited to /u/transdimensional on scriptblox.com
function Noclip.DisableCollision(model)
for _, part in pairs(model:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = false
end
end
end
function Noclip.Init()
if Noclip.Initialized then return end
Noclip.Initialized = true
for _, obj in pairs(Workspace:GetDescendants()) do
if obj.Name:find("soldier") then
Noclip.DisableCollision(obj)
end
end
Noclip.SpawnConnection = Workspace.DescendantAdded:Connect(function(obj)
if not Config.MISC_Noclip then return end
task.wait(0.3)
if obj.Name:find("soldier") then
repeat task.wait() until obj:FindFirstChild("HumanoidRootPart")
Noclip.DisableCollision(obj)
end
end)
Connections.Noclip = Noclip.SpawnConnection
end
function Noclip.Step()
if not Config.MISC_Noclip then return end
if not Noclip.Initialized then
Noclip.Init()
end
end
--[[
OPTIONAL: Alternative noclip implementation using interval based scanning. Differs from transdimensionals take
If you prefer this approach over the original, replace the Noclip table and functions above with this:
local Noclip = {
Handled = {},
ScanTick = 0,
SpawnWatcher = nil
}
function Noclip.Strip(model)
if Noclip.Handled[model] then return end
local children = model:GetDescendants()
for idx = 1, #children do
local obj = children[idx]
if obj:IsA("BasePart") then
obj.CanCollide = false
end
end
Noclip.Handled[model] = true
end
function Noclip.Sweep()
local objects = Workspace:GetDescendants()
for idx = 1, #objects do
local obj = objects[idx]
if obj:IsA("Model") and obj.Name:match("soldier") then
if obj:FindFirstChild("HumanoidRootPart") and not Noclip.Handled[obj] then
Noclip.Strip(obj)
end
end
end
end
function Noclip.OnSpawn(obj)
if not Config.MISC_Noclip then return end
if not obj:IsA("Model") then return end
if not obj.Name:match("soldier") then return end
task.defer(function()
local hrp = obj:WaitForChild("HumanoidRootPart", 3)
if hrp and Config.MISC_Noclip then
Noclip.Strip(obj)
end
end)
end
function Noclip.Step()
if not Config.MISC_Noclip then return end
local now = tick()
if now - Noclip.ScanTick < 0.4 then return end
Noclip.ScanTick = now
Noclip.Sweep()
if not Noclip.SpawnWatcher then
Noclip.SpawnWatcher = Workspace.DescendantAdded:Connect(Noclip.OnSpawn)
Connections.Noclip = Noclip.SpawnWatcher
end
end
And update unload cleanup to:
if Noclip.SpawnWatcher then
pcall(function() Noclip.SpawnWatcher:Disconnect() end)
Noclip.SpawnWatcher = nil
end
Noclip.Handled = {}
]]
local function ApplyMiscSettings()
if Config.MISC_FullBright then
Lighting.Brightness = 2
Lighting.Ambient = Color3.new(1, 1, 1)
else
Lighting.Brightness = OriginalLighting.Brightness
Lighting.Ambient = OriginalLighting.Ambient
end
end
local function MainLoop()
if State.Unloaded then
if Connections.Render then
pcall(function() Connections.Render:Disconnect() end)
Connections.Render = nil
end
return
end
if Config.ESP_Rainbow then
State.RainbowHue = (State.RainbowHue + 0.002) % 1
end
local cam = Workspace.CurrentCamera
if not cam then return end
local screenSize = cam.ViewportSize
local screenCenter = Vector2.new(screenSize.X/2, screenSize.Y/2)
pcall(ApplyMiscSettings)
pcall(Noclip.Step)
pcall(function() ESP.Step(cam, screenSize, screenCenter) end)
pcall(function() Chams.Step() end)
pcall(function() Radar.Step(cam) end)
pcall(function() Aimbot.Step(cam, screenCenter) end)
pcall(function() GUI.Render() end)
end
Unload = function()
if State.Unloaded then return end
State.Unloaded = true
Config.MENU_Open = false
if GunModConnection then
pcall(function() GunModConnection:Disconnect() end)
GunModConnection = nil
end
if Noclip.SpawnConnection then
pcall(function() Noclip.SpawnConnection:Disconnect() end)
Noclip.SpawnConnection = nil
end
Noclip.Initialized = false
for name, conn in pairs(Connections) do
pcall(function()
if conn and conn.Disconnect then
conn:Disconnect()
end
end)
Connections[name] = nil
end
for model, esp in pairs(ESP.cache) do
pcall(function() ESP.Hide(esp) end)
pcall(function() ESP.Destroy(esp) end)
end
ESP.cache = {}
pcall(function() Chams.ClearAll() end)
pcall(function()
if Radar.bg then Radar.bg:Remove() end
if Radar.border then Radar.border:Remove() end
if Radar.cross1 then Radar.cross1:Remove() end
if Radar.cross2 then Radar.cross2:Remove() end
if Radar.center then Radar.center:Remove() end
if Radar.dots then
for _, d in ipairs(Radar.dots) do
if d then d:Remove() end
end
end
end)
pcall(function()
if Aimbot.fov then Aimbot.fov:Remove() end
end)
pcall(function()
for name, drawing in pairs(GUI.Drawings) do
if type(drawing) == "table" then
for _, subDrawing in pairs(drawing) do
if type(subDrawing) == "table" then
for _, d in pairs(subDrawing) do
if d and d.Remove then d:Remove() end
end
elseif subDrawing and subDrawing.Remove then
subDrawing:Remove()
end
end
elseif drawing and drawing.Remove then
drawing:Remove()
end
end
end)
pcall(function()
if GUI.Preview.Box then
for _, l in ipairs(GUI.Preview.Box) do if l then l:Remove() end end
end
if GUI.Preview.Corners then
for _, l in ipairs(GUI.Preview.Corners) do if l then l:Remove() end end
end
if GUI.Preview.BoxFill then GUI.Preview.BoxFill:Remove() end
if GUI.Preview.Name then GUI.Preview.Name:Remove() end
if GUI.Preview.Dist then GUI.Preview.Dist:Remove() end
if GUI.Preview.Tracer then GUI.Preview.Tracer:Remove() end
if GUI.Preview.Snapline then GUI.Preview.Snapline:Remove() end
if GUI.Preview.LookLine then GUI.Preview.LookLine:Remove() end
if GUI.Preview.VelLine then GUI.Preview.VelLine:Remove() end
if GUI.Preview.VelArrow then GUI.Preview.VelArrow:Remove() end
if GUI.Preview.Figure then
for _, part in pairs(GUI.Preview.Figure) do
if part and part.Remove then part:Remove() end
end
end
end)
pcall(function()
Lighting.Brightness = OriginalLighting.Brightness
Lighting.Ambient = OriginalLighting.Ambient
Lighting.FogEnd = OriginalLighting.FogEnd
end)
end
local function Init()
GUI.Create()
Connections.Input = UserInputService.InputBegan:Connect(HandleInput)
Connections.InputEnd = UserInputService.InputEnded:Connect(HandleInputEnd)
Connections.InputChanged = UserInputService.InputChanged:Connect(HandleInputChanged)
Connections.Render = RunService.RenderStepped:Connect(MainLoop)
Connections.PlayerRemoving = Players.PlayerRemoving:Connect(function(player)
end)
end
Init()
This is open source, so if something is missing or could be better, change it or request it in the comments. NO MOBILE right now. this is a PC script. I'll release a separate mobile script later. This is open source, so you can always make your own. This is a ready to go polished and unique script. NOT FOR XENO USE HIGHER UNC EXECUTOR. I will see if I make a xeno script but the drawing apis are limited.. Features: ESP: Boxes (Full / Corner/Filled) Names Distance Tracers (Top / Center / Bottom) Snaplines Looking Direction Velocity/Prediction Offscreen Arrows Dead Check (Marks bodies with X) Chams (Solid / Outline) Team Check Custom Colors & Rainbow Radar: Clean Square Design Shows enemies & dead players Draggable Layout (Move anywhere) Configurable Size & Range Aimbot: RMB Aimbot (Bindable) FOV Circle Smoothing Smart "Auto" Targeting Sticky Targeting Proximity Priority Dynamic Deadzones Team Check Misc: No Recoil No Sway No Spread No Camera Shake Full Bright Custom Menu Colors Panic Key

Universal