Run it
Copy the script and paste it into your executor.
Players2 = :()
RunService = :()
UserInputService = :()
Workspace = :()
GuiService = :()
HttpService = :()
LocalPlayer = Players2.LocalPlayer
Mouse = LocalPlayer:()
BRAND =
CurrentLang =
L = {
ru = { tab_aim=, tab_wallhack=, tab_world=, tab_misc=, tab_customize=,
grp_aimbot=, grp_target=,
grp_players=, grp_skeleton=, grp_drones=, grp_radar=,
grp_camera=, grp_speed=, grp_freecam=, grp_ui=,
grp_colors=, grp_config=, grp_colors_player=,
grp_colors_other=, grp_binds=,
cfg_name=, cfg_save=, cfg_load=,
picks=,
no_binds=,
lang=,
bind_title=, bind_hint=,
bind_key=, bind_mode=,
bind_toggle=, bind_hold=,
bind_save=, bind_cancel=, bind_clear= },
en = { tab_aim=, tab_wallhack=, tab_world=, tab_misc=, tab_customize=,
grp_aimbot=, grp_target=,
grp_players=, grp_skeleton=, grp_drones=, grp_radar=,
grp_camera=, grp_speed=, grp_freecam=, grp_ui=,
grp_colors=, grp_config=, grp_colors_player=,
grp_colors_other=, grp_binds=,
cfg_name=, cfg_save=, cfg_load=,
picks=,
no_binds=,
lang=,
bind_title=, bind_hint=,
bind_key=, bind_mode=,
bind_toggle=, bind_hold=,
bind_save=, bind_cancel=, bind_clear= }
}
(k) (L[CurrentLang] L[CurrentLang][k]) k
ITEM_NAME = {
AIM_Enabled={en=,ru=},
AIM_WallCheck={en=,ru=},
AIM_ShowFOV={en=,ru=},
AIM_DynamicSmooth={en=,ru=},
AIM_AimKey={en=,ru=}, AIM_FOV={en=,ru=},
AIM_Smooth={en=,ru=}, AIM_TeamCheck={en=,ru=},
AIM_TargetBone={en=,ru=},
ESP_Enabled={en=,ru=}, ESP_Boxes={en=,ru=},
ESP_Names={en=,ru=}, ESP_Distance={en=,ru=},
ESP_Health={en=,ru=}, ESP_Skeleton={en=,ru=},
ESP_TeamCheck={en=,ru=},
ESP_MaxDist={en=,ru=},
ESP_Drones={en=,ru=},
ESP_DronesTeamCheck={en=,ru=},
SPEED_Enabled={en=,ru=},
SPEED_Value={en=,ru=},
JUMP_Enabled={en=,ru=},
JUMP_Value={en=,ru=},
RADAR_Enabled={en=,ru=},
RADAR_Size={en=,ru=},
FREECAM_Enabled={en=,ru=},
FREECAM_Speed={en=,ru=},
FREECAM_Sensitivity={en=,ru=},
UI_Watermark={en=,ru=},
C_Enemy={en=,ru=}, C_Team={en=,ru=},
C_DroneEnemy={en=,ru=},
C_DroneTeam={en=,ru=},
C_Box={en=,ru=}, C_Name={en=,ru=},
C_Distance={en=,ru=}, C_Skeleton={en=,ru=},
C_HealthBg={en=,ru=}, C_HealthHigh={en=,ru=},
C_HealthMid={en=,ru=}, C_HealthLow={en=,ru=},
C_RadarBg={en=,ru=}, C_RadarBorder={en=,ru=},
C_RadarYou={en=,ru=}, C_RadarEnemy={en=,ru=},
C_FOVCircle={en=,ru=}, C_FOVActive={en=,ru=},
C_Accent={en=,ru=}
}
(key, fallback)
n = ITEM_NAME[key]; n fallback key
n[CurrentLang] n.en fallback key
DESC = {
AIM_Enabled={en=,
ru=},
AIM_WallCheck={en=,
ru=},
AIM_ShowFOV={en=,
ru=},
AIM_DynamicSmooth={en=,
ru=},
AIM_AimKey={en=,
ru=},
AIM_FOV={en=,
ru=},
AIM_Smooth={en=,
ru=},
AIM_TeamCheck={en=,
ru=},
AIM_TargetBone={en=,
ru=},
ESP_Enabled={en=,
ru=},
ESP_Boxes={en=,
ru=},
ESP_Names={en=,
ru=},
ESP_Distance={en=,
ru=},
ESP_Health={en=,
ru=},
ESP_Skeleton={en=,
ru=},
ESP_TeamCheck={en=,
ru=},
ESP_MaxDist={en=,
ru=},
ESP_Drones={en=,
ru=},
ESP_DronesTeamCheck={en=,
ru=},
SPEED_Enabled={en=,
ru=},
SPEED_Value={en=,
ru=},
JUMP_Enabled={en=,
ru=},
JUMP_Value={en=,
ru=},
RADAR_Enabled={en=,
ru=},
RADAR_Size={en=,
ru=},
FREECAM_Enabled={en=,
ru=},
FREECAM_Speed={en=,
ru=},
FREECAM_Sensitivity={en=,
ru=},
UI_Watermark={en=,
ru=},
C_Enemy={en=,
ru=},
C_Team={en=,
ru=},
C_DroneEnemy={en=,
ru=},
C_DroneTeam={en=,
ru=},
C_Box={en=,
ru=},
C_Name={en=,
ru=},
C_Distance={en=,
ru=},
C_Skeleton={en=,
ru=},
C_HealthBg={en=,
ru=},
C_HealthHigh={en=,
ru=},
C_HealthMid={en=,
ru=},
C_HealthLow={en=,
ru=},
C_RadarBg={en=,
ru=},
C_RadarBorder={en=,
ru=},
C_RadarYou={en=,
ru=},
C_RadarEnemy={en=,
ru=},
C_FOVCircle={en=,
ru=},
C_FOVActive={en=,
ru=},
C_Accent={en=,
ru=},
}
(key)
d = DESC[key]; d
d[CurrentLang] d.en
DefaultColors = {
C_Enemy = .(,,),
C_Team = .(,,),
C_DroneEnemy = .(,,),
C_DroneTeam = .(,,),
C_Box = .(,,),
C_Name = .(,,),
C_Distance = .(,,),
C_Skeleton = .(,,),
C_HealthBg = .(,,),
C_HealthHigh = .(,,),
C_HealthMid = .(,,),
C_HealthLow = .(,,),
C_RadarBg = .(,,),
C_RadarBorder = .(,,),
C_RadarYou = .(,,),
C_RadarEnemy = .(,,),
C_FOVCircle = .(,,),
C_FOVActive = .(,,),
C_Accent = .(,,),
}
Colors = {}
k, v (DefaultColors) Colors[k] = v
(k) Colors[k] .(,,)
(k, c) Colors[k] = c
Config = {
ESP_Enabled=, ESP_Boxes=, ESP_Names=, ESP_Distance=,
ESP_Skeleton=, ESP_Health=, ESP_TeamCheck=, ESP_MaxDist=,
ESP_Drones=, ESP_DronesTeamCheck=,
SPEED_Enabled=, SPEED_Value=, JUMP_Enabled=, JUMP_Value=,
RADAR_Enabled=, RADAR_Size=,
AIM_Enabled=, AIM_FOV=, AIM_Smooth=, AIM_ShowFOV=,
AIM_TeamCheck=, AIM_WallCheck=, AIM_TargetBone=,
AIM_AimKey=, AIM_DynamicSmooth=,
FREECAM_Enabled=, FREECAM_Speed=, FREECAM_Sensitivity=,
UI_Watermark=,
MENU_Open=, MENU_Tab=
}
Tuning = {
RefreshRate=, DroneRefreshRate=,
NameOffset=, DistOffset=,
RadarRange=, RadarDotSize=, HealthBarWidth=, HealthBarOffset=,
SpeedStepPerFrame=,
}
Cache = {
targets={}, humanoids={}, teamStatus={}, names={}, myRoot=,
count=, drawn=,
roleRoot=, myRole=, playerRoles={},
drones={}, droneCount=, droneDrawn=,
lastRefresh=, lastDroneRefresh=,
}
AimBones = {,,}
AimKeys = {,,}
Binds = {}
HoldActive = {}
Conn = {}
Unloaded =
ConfigSystem = { Folder=, CurrentName= }
CONFIG_SKIP = { ESP_TeamCheck=, AIM_TeamCheck=, MENU_Open=, MENU_Tab= }
(p)
isfolder makefolder
(() (p) (p) )
(c) .(, .(c.R*+), .(c.G*+), .(c.B*+))
(hex)
hex = (hex):(,):(,)
#hex ~=
r,g,b = (hex:(,),), (hex:(,),), (hex:(,),)
(r g b)
.(r,g,b)
ConfigSystem.(n) ConfigSystem.Folder .. .. n ..
ConfigSystem.(name)
writefile isfolder
name = name ConfigSystem.CurrentName
(ConfigSystem.Folder)
data = { config = {}, colors = {}, binds = {}, lang = CurrentLang }
k,v (Config)
tp = (v)
tp == tp == tp == data.config[k] = v
k,c (Colors) data.colors[k] = (c)
k,b (Binds)
b b.key data.binds[k] = { key = b.key.Name, mode = b.mode }
ok, json = (HttpService.JSONEncode, HttpService, data)
ok
(writefile, ConfigSystem.(name), json)
ConfigSystem.CurrentName = name
ConfigSystem.(name)
readfile isfile
name = name ConfigSystem.CurrentName
path = ConfigSystem.(name)
(path)
ok, content = (readfile, path)
ok content content ==
dok, data = (HttpService.JSONDecode, HttpService, content)
dok (data) ~=
(data.config) ==
k,v (data.config)
Config[k] ~= CONFIG_SKIP[k] (v) == (Config[k]) Config[k] = v
(data.colors) ==
k,hex (data.colors)
c = (hex); c Colors[k] = c
Binds = {}
(data.binds) ==
k,b (data.binds)
(b) == b.key
kc = .KeyCode[b.key]
kc Binds[k] = { key = kc, mode = b.mode }
(data.lang) == (data.lang == data.lang == )
CurrentLang = data.lang
ConfigSystem.CurrentName = name
UI = .()
UI.Name = .. (.(, ))
UI.ResetOnSpawn =
UI.ZIndexBehavior = .ZIndexBehavior.Sibling
UI.DisplayOrder =
UI.IgnoreGuiInset =
(() UI.Parent = :() )
UI.Parent UI.Parent = LocalPlayer:()
ESPGui = .()
ESPGui.Name = .. (.(, ))
ESPGui.ResetOnSpawn =
ESPGui.ZIndexBehavior = .ZIndexBehavior.Sibling
ESPGui.DisplayOrder =
ESPGui.IgnoreGuiInset =
(() ESPGui.Parent = :() )
ESPGui.Parent ESPGui.Parent = LocalPlayer:()
WM = .(, UI)
WM.BackgroundColor3 = .(,,); WM.BackgroundTransparency =
WM.BorderSizePixel = ; WM.Position = .(, , , )
WM.Size = .(, , , ); WM.ZIndex =
.(, WM).CornerRadius = .(, )
WMStroke = .(, WM)
WMStroke.Color = (); WMStroke.Thickness = ; WMStroke.Transparency =
WMBrand = .(, WM)
WMBrand.BackgroundTransparency = ; WMBrand.Position = .(, , , )
WMBrand.Size = .(, , , )
WMBrand.Font = .Font.GothamBold; WMBrand.TextSize =
WMBrand.TextColor3 = (); WMBrand.Text = BRAND
WMBrand.TextXAlignment = .TextXAlignment.Left
WmInfo = .(, WM)
WmInfo.BackgroundTransparency = ; WmInfo.Position = .(, , , )
WmInfo.Size = .(, -, , )
WmInfo.Font = .Font.GothamMedium; WmInfo.TextSize =
WmInfo.TextColor3 = .(,,); WmInfo.TextXAlignment = .TextXAlignment.Left
WmInfo.Text =
Tooltip = { frame = , conn = }
()
Tooltip.frame (() Tooltip.frame:() ); Tooltip.frame =
Tooltip.conn (() Tooltip.conn:() ); Tooltip.conn =
(text)
()
f = .(, UI)
f.BackgroundColor3 = .(,,)
f.BackgroundTransparency =
f.BorderSizePixel = ; f.Size = .(, , , )
f.ZIndex = ; f.Active =
.(, f).CornerRadius = .(, )
st = .(, f)
st.Color = (); st.Thickness = ; st.Transparency =
lbl = .(, f)
lbl.BackgroundTransparency =
lbl.Position = .(, , , ); lbl.Size = .(, -, , -)
lbl.Font = .Font.GothamMedium; lbl.TextSize =
lbl.TextColor3 = .(,,)
lbl.TextXAlignment = .TextXAlignment.Left
lbl.TextYAlignment = .TextYAlignment.Top
lbl.TextWrapped = ; lbl.Text = text; lbl.ZIndex =
Tooltip.frame = f
Tooltip.conn = RunService.RenderStepped:(()
f.Parent Tooltip.conn Tooltip.conn:(); Tooltip.conn = ;
mp = UserInputService:()
cam = Workspace.CurrentCamera
vp = cam cam.ViewportSize .(, )
fw, fh = f.AbsoluteSize.X, f.AbsoluteSize.Y
tx = .(mp.X + , , .(, vp.X - fw - ))
ty = .(mp.Y + , , .(, vp.Y - fh - ))
f.Position = .(, tx, , ty)
)
()
Cache.roleRoot Cache.roleRoot.Parent Cache.roleRoot
myChar = LocalPlayer.Character
myChar myChar.Parent myChar.Parent:()
Cache.roleRoot = myChar.Parent.Parent
Cache.myRole = myChar.Parent
Cache.roleRoot
()
root = ()
root Cache.playerRoles = {};
myChar = LocalPlayer.Character
myRole = (myChar myChar.Parent) Cache.myRole
found = {}
_, roleContainer (root:())
roleContainer:()
_, model (roleContainer:())
model:()
hum = model:()
hum hum.Health >
found[model.Name] = {
char = model, role = roleContainer, hum = hum,
isMyTeam = (roleContainer == myRole),
}
Cache.playerRoles = found
Cache.myRole = myRole
(model)
model model:()
model:()
model:() ~=
model:() ~=
model:() ~=
(model)
r = model:()
r
br = r:() r:()
r:() r:()
br br
ex = model:()
ex
e = ex:()
e e
_, c (model:())
c:() c
()
root = ()
root Cache.drones = {};
myChar = LocalPlayer.Character
myRole = (myChar myChar.Parent) Cache.myRole
drones = {}
_, roleContainer (root:())
roleContainer:()
isMyTeam = (roleContainer == myRole)
_, model (roleContainer:())
model:() (model)
part = (model)
part
drones[model] = { model = model, part = part, isMyTeam = isMyTeam }
Cache.drones = drones
Cache.droneCount =
_ (drones) Cache.droneCount = Cache.droneCount +
(char)
char:()
char:()
char:()
char:()
char.PrimaryPart
Targets = {}
Targets.()
()
new, newHum, newTeam = {}, {}, {}
myChar = LocalPlayer.Character
Cache.myRoot = myChar (myChar)
_, plr (Players2:())
plr ~= LocalPlayer
entry = Cache.playerRoles[plr.Name]
entry
char = entry.char
root = (char)
root entry.hum entry.hum.Health >
new[root] = char
newHum[root] = entry.hum
newTeam[root] = entry.isMyTeam
Cache.targets = new; Cache.humanoids = newHum; Cache.teamStatus = newTeam
Cache.count =
_ (new) Cache.count = Cache.count +
Util = {}
Util.(char)
plr = Players2:(char)
plr plr.Name char.Name
ESP = { cache = {} }
(color, thickness)
f = .(, ESPGui)
f.BackgroundColor3 = color .(,,); f.BorderSizePixel =
f.AnchorPoint = .(, )
f.Size = .(, , , thickness )
f.ZIndex = ; f.Visible =
f
(line, x1, y1, x2, y2, color, thickness)
thickness = thickness
dx, dy = x2 - x1, y2 - y1
len = .(dx*dx + dy*dy)
len < line.Visible = ;
line.Position = .(, x1, , y1)
line.Size = .(, len, , thickness)
line.Rotation = .(.(dy, dx))
color line.BackgroundColor3 = color
line.Visible =
SKEL_R6 = {{,},{,},{,},{,},{,}}
SKEL_R15 = {
{,},{,},
{,},{,},{,},
{,},{,},{,},
{,},{,},{,},
{,},{,},{,},
}
(char)
char:() char:() SKEL_R15
SKEL_R6
ESP.(root)
ESP.cache[root]
box = .(, ESPGui)
box.BackgroundTransparency = ; box.BorderSizePixel = ; box.Visible = ; box.ZIndex =
boxStroke = .(, box); boxStroke.Thickness =
name = .(, ESPGui)
name.BackgroundTransparency = ; name.Font = .Font.GothamBold
name.TextSize = ; name.TextColor3 = .(,,)
name.TextStrokeTransparency = ; name.TextStrokeColor3 = .(,,)
name.Size = .(,,,); name.TextXAlignment = .TextXAlignment.Center
name.Visible = ; name.ZIndex =
dist = .(, ESPGui)
dist.BackgroundTransparency = ; dist.Font = .Font.GothamMedium
dist.TextSize = ; dist.TextColor3 = .(,,)
dist.TextStrokeTransparency = ; dist.TextStrokeColor3 = .(,,)
dist.Size = .(,,,); dist.TextXAlignment = .TextXAlignment.Center
dist.Visible = ; dist.ZIndex =
hBg = .(, ESPGui)
hBg.BackgroundColor3 = (); hBg.BorderSizePixel = ; hBg.Visible = ; hBg.ZIndex =
hBar = .(, ESPGui)
hBar.BackgroundColor3 = (); hBar.BorderSizePixel = ; hBar.Visible = ; hBar.ZIndex =
skel = {}
i = , skel[i] = ((), )
ESP.cache[root] = { Box=box, BoxStroke=boxStroke, Name=name, Dist=dist,
HealthBg=hBg, HealthBar=hBar, Skel=skel }
ESP.(esp)
esp
_, k ({,,,,})
esp[k] esp[k].Visible =
esp.Skel _, l (esp.Skel) l.Visible =
ESP.(esp)
esp
_, k ({,,,,})
esp[k] (() esp[k]:() )
esp.Skel _, l (esp.Skel) (() l:() )
ESP.()
r = {}
root, e (ESP.cache)
Cache.targets[root] ESP.(e); ESP.(e); r[#r+]=root
_, k (r) ESP.cache[k]=
(char, cam)
ok, cf, size = (() char:() )
ok cf size
hs = size *
corners = {
cf * .(-hs.X,-hs.Y,-hs.Z), cf * .(-hs.X,-hs.Y, hs.Z),
cf * .(-hs.X, hs.Y,-hs.Z), cf * .(-hs.X, hs.Y, hs.Z),
cf * .( hs.X,-hs.Y,-hs.Z), cf * .( hs.X,-hs.Y, hs.Z),
cf * .( hs.X, hs.Y,-hs.Z), cf * .( hs.X, hs.Y, hs.Z),
}
minX, minY, maxX, maxY = .huge, .huge, -.huge, -.huge
any =
_, c (corners)
sp = cam:(c)
sp.Z >
any =
sp.X < minX minX = sp.X
sp.X > maxX maxX = sp.X
sp.Y < minY minY = sp.Y
sp.Y > maxY maxY = sp.Y
any maxX - minX < maxY - minY <
minX, minY, maxX, maxY
ESP.(esp, root, char, hum, cam, screenSize, screenCenter, dist, giY)
minX, minY, maxX, maxY = (char, cam)
minX ESP.(esp);
minY = minY + giY; maxY = maxY + giY
boxTop, boxBottom, boxLeft, boxRight = minY, maxY, minX, maxX
boxHeight = boxBottom - boxTop
boxWidth = boxRight - boxLeft
cx = (boxLeft + boxRight) *
isTeam = Cache.teamStatus[root]
col = isTeam () ()
Config.ESP_Boxes boxHeight > boxWidth >
esp.Box.Position = .(, boxLeft, , boxTop)
esp.Box.Size = .(, boxWidth, , boxHeight)
esp.BoxStroke.Color = col
esp.Box.Visible =
esp.Box.Visible =
Config.ESP_Names
esp.Name.Text = Util.(char)
esp.Name.Position = .(, cx - , , boxTop - Tuning.NameOffset)
esp.Name.TextColor3 = col; esp.Name.Visible =
esp.Name.Visible =
Config.ESP_Distance
esp.Dist.Text = .(, .(dist))
esp.Dist.Position = .(, cx - , , boxBottom + Tuning.DistOffset)
esp.Dist.TextColor3 = ()
esp.Dist.Visible =
esp.Dist.Visible =
Config.ESP_Health
pct = .(hum.Health / .(hum.MaxHealth,), , )
barX = boxLeft - Tuning.HealthBarOffset
esp.HealthBg.Position = .(, barX - , , boxTop - )
esp.HealthBg.Size = .(, Tuning.HealthBarWidth + , , boxHeight + )
esp.HealthBg.BackgroundColor3 = ()
esp.HealthBg.Visible =
hh = boxHeight * pct
esp.HealthBar.Position = .(, barX, , boxBottom - hh)
esp.HealthBar.Size = .(, Tuning.HealthBarWidth, , hh)
esp.HealthBar.BackgroundColor3 = pct > ()
pct > ()
()
esp.HealthBar.Visible =
esp.HealthBg.Visible = ; esp.HealthBar.Visible =
Config.ESP_Skeleton
pairs_ = (char)
idx =
i, b (pairs_)
i > #esp.Skel
idx = i
p1, p2 = char:(b[]), char:(b[])
p1 p2
s1, o1 = cam:(p1.Position)
s2, o2 = cam:(p2.Position)
o1 o2 s1.Z > s2.Z >
(esp.Skel[i], s1.X, s1.Y + giY, s2.X, s2.Y + giY, (), )
esp.Skel[i].Visible =
esp.Skel[i].Visible =
i = idx + , #esp.Skel esp.Skel[i].Visible =
_, l (esp.Skel) l.Visible =
ESP.(cam, screenSize, screenCenter)
Config.ESP_Enabled
_, e (ESP.cache) ESP.(e)
Cache.drawn = ;
ESP.()
myRoot = Cache.myRoot
giY = -GuiService:().Y
drawn =
root, char (Cache.targets)
root root.Parent char char.Parent
ESP.cache[root] ESP.(ESP.cache[root])
hum = Cache.humanoids[root]
hum hum.Parent hum.Health <=
ESP.cache[root] ESP.(ESP.cache[root])
Config.ESP_TeamCheck Cache.teamStatus[root]
ESP.cache[root] ESP.(ESP.cache[root])
ESP.cache[root] ESP.(root)
esp = ESP.cache[root]
dist = myRoot (root.Position - myRoot.Position).Magnitude
dist > Config.ESP_MaxDist ESP.(esp)
ok, res = (ESP.Render, esp, root, char, hum, cam, screenSize, screenCenter, dist, giY)
ok res drawn = drawn +
Cache.drawn = drawn
DroneESP = { cache = {} }
DroneESP.(model)
DroneESP.cache[model]
box = .(, ESPGui)
box.BackgroundTransparency = ; box.BorderSizePixel = ; box.Visible = ; box.ZIndex =
boxStroke = .(, box); boxStroke.Thickness =
name = .(, ESPGui)
name.BackgroundTransparency = ; name.Font = .Font.GothamBold
name.TextSize = ; name.TextColor3 = .(,,)
name.TextStrokeTransparency = ; name.TextStrokeColor3 = .(,,)
name.Size = .(,,,); name.TextXAlignment = .TextXAlignment.Center
name.Text = ; name.Visible = ; name.ZIndex =
dist = .(, ESPGui)
dist.BackgroundTransparency = ; dist.Font = .Font.GothamMedium
dist.TextSize = ; dist.TextColor3 = .(,,)
dist.TextStrokeTransparency = ; dist.TextStrokeColor3 = .(,,)
dist.Size = .(,,,); dist.TextXAlignment = .TextXAlignment.Center
dist.Visible = ; dist.ZIndex =
DroneESP.cache[model] = { Box=box, BoxStroke=boxStroke, Name=name, Dist=dist }
DroneESP.(esp)
esp
_, k ({,,})
esp[k] esp[k].Visible =
DroneESP.(esp)
esp
_, k ({,,})
esp[k] (() esp[k]:() )
DroneESP.()
r = {}
m, e (DroneESP.cache)
Cache.drones[m] DroneESP.(e); DroneESP.(e); r[#r+]=m
_, k (r) DroneESP.cache[k]=
DroneESP.(cam, screenSize, screenCenter)
Config.ESP_Enabled Config.ESP_Drones
_, e (DroneESP.cache) DroneESP.(e)
Cache.droneDrawn =
DroneESP.()
myRoot = Cache.myRoot
giY = -GuiService:().Y
drawn =
model, info (Cache.drones)
model.Parent info.part info.part.Parent
DroneESP.cache[model] DroneESP.(DroneESP.cache[model])
Config.ESP_DronesTeamCheck info.isMyTeam
DroneESP.cache[model] DroneESP.(DroneESP.cache[model])
DroneESP.cache[model] DroneESP.(model)
esp = DroneESP.cache[model]
pos = info.part.Position
dist = myRoot (pos - myRoot.Position).Magnitude
dist > Config.ESP_MaxDist
DroneESP.(esp)
sp, on = cam:(pos)
on sp.Z >
size = .( / sp.Z, , )
x = sp.X - size/
y = sp.Y - size/ + giY
esp.Box.Position = .(, x, , y)
esp.Box.Size = .(, size, , size)
esp.BoxStroke.Color = info.isMyTeam () ()
esp.Box.Visible =
esp.Name.Position = .(, sp.X - , , y - )
esp.Name.TextColor3 = info.isMyTeam () ()
esp.Name.Visible =
esp.Dist.Position = .(, sp.X - , , y + size + )
esp.Dist.Text = .(, .(dist))
esp.Dist.Visible =
drawn = drawn +
DroneESP.(esp)
Cache.droneDrawn = drawn
RadarFrame = .(, UI)
RadarFrame.BackgroundColor3 = (); RadarFrame.BackgroundTransparency =
RadarFrame.BorderSizePixel = ; RadarFrame.AnchorPoint = .(, )
.(, RadarFrame).CornerRadius = .(, )
RStroke = .(, RadarFrame)
RStroke.Color = (); RStroke.Thickness = ; RStroke.Transparency =
RadarCenter = .(, RadarFrame)
RadarCenter.BackgroundColor3 = (); RadarCenter.BorderSizePixel =
RadarCenter.AnchorPoint = .(, ); RadarCenter.Size = .(, , , )
.(, RadarCenter).CornerRadius = .(, )
radarDots = {}
i = ,
d = .(, RadarFrame)
d.BackgroundColor3 = (); d.BorderSizePixel =
d.AnchorPoint = .(, )
d.Size = .(, Tuning.RadarDotSize, , Tuning.RadarDotSize); d.Visible =
.(, d).CornerRadius = .(, )
radarDots[i] = d
(cam)
Config.RADAR_Enabled RadarFrame.Visible = ;
myRoot = Cache.myRoot
myRoot myRoot.Parent RadarFrame.Visible = ;
size = Config.RADAR_Size
RadarFrame.Position = .(, -, , )
RadarFrame.Size = .(, size, , size); RadarFrame.Visible =
RadarCenter.Position = .(, , , )
myLook = cam.CFrame.LookVector
ang = .(-myLook.X, -myLook.Z)
ca, sa = .(ang), .(ang)
scale = (size/ - ) / Tuning.RadarRange
idx =
root (Cache.targets)
idx > #radarDots
root root.Parent
isTeam = Cache.teamStatus[root]
(Config.ESP_TeamCheck isTeam)
rx, rz = root.Position.X - myRoot.Position.X, root.Position.Z - myRoot.Position.Z
d2 = .(rx^ + rz^)
d2 < Tuning.RadarRange
rotX = rx * ca - rz * sa
rotZ = rx * sa + rz * ca
rX, rY = rotX * scale, rotZ * scale
maxD = size/ -
rD = .(rX^ + rY^)
rD > maxD rX, rY = rX/rD*maxD, rY/rD*maxD
radarDots[idx].Position = .(, rX, , rY)
radarDots[idx].BackgroundColor3 = isTeam () ()
radarDots[idx].Visible = ; idx = idx +
i = idx, #radarDots radarDots[i].Visible =
Aim = { aiming=, locked= }
Conn.mb2down = Mouse.Button2Down:(() Aim.aiming= )
Conn.mb2up = Mouse.Button2Up:(() Aim.aiming=; Aim.locked= )
()
k = Config.AIM_AimKey
k ==
k == Aim.aiming UserInputService:(.UserInputType.MouseButton2)
k == UserInputService:(.UserInputType.MouseButton1)
(cam)
center = .(cam.ViewportSize.X/, cam.ViewportSize.Y/)
best, bestScore = , .huge
root, char (Cache.targets)
root root.Parent char
skip =
Config.AIM_TeamCheck Cache.teamStatus[root] skip =
skip
head = char:() root
sp, on = cam:(head.Position)
on sp.Z >
d = (.(sp.X, sp.Y) - center).Magnitude
d <= Config.AIM_FOV d < bestScore bestScore = d; best = char
best
(char, cam)
bone = Config.AIM_TargetBone
bone == bone == bone ==
p = char:(bone); p p.Position
p = char:() char:()
p p.Position
FOVCircle = .(, UI)
FOVCircle.BackgroundTransparency = ; FOVCircle.BorderSizePixel =
FOVCircle.AnchorPoint = .(, ); FOVCircle.ZIndex =
FOVS = .(, FOVCircle)
FOVS.Color = (); FOVS.Thickness =
.(, FOVCircle).CornerRadius = .(, )
lastAimWarn =
.(()
Unloaded
RunService.RenderStepped:()
Config.AIM_Enabled
cam = Workspace.CurrentCamera
cam
ok, err = (()
() Aim.locked=;
Aim.locked Aim.locked.Parent Aim.locked = (cam)
Aim.locked
hum = Aim.locked:()
hum hum.Health <= Aim.locked=;
pos = (Aim.locked, cam)
pos
sp, on = cam:(pos)
on sp.Z <=
dx = sp.X - cam.ViewportSize.X/
dy = sp.Y - cam.ViewportSize.Y/
.(dx) < .(dy) <
sm = Config.AIM_Smooth
Config.AIM_DynamicSmooth
d3 = (pos - cam.CFrame.Position).Magnitude
sm = .(Config.AIM_Smooth * .(d3/, ), , Config.AIM_Smooth)
mx, my
sm <= mx, my = dx, dy mx, my = dx/sm, dy/sm
mx = mx + (.() - ) *
my = my + (.() - ) *
(mousemoverel, mx, my)
)
ok () - lastAimWarn >
lastAimWarn = (); (, err)
)
Speed = { active=, sw=, sj=, sjh= }
()
char = LocalPlayer.Character; char
hum = char:(); hum
wantS, wantJ = Config.SPEED_Enabled, Config.JUMP_Enabled
(wantS wantJ) Speed.active
Speed.active =
Speed.sw = hum.WalkSpeed
Speed.sj = hum.UseJumpPower hum.JumpPower
Speed.sjh = ( hum.UseJumpPower) hum.JumpHeight
wantS
v = .(.(Config.SPEED_Value), , )
cur = hum.WalkSpeed
cur < v hum.WalkSpeed = .(cur + Tuning.SpeedStepPerFrame, v)
cur > v hum.WalkSpeed = .(cur - Tuning.SpeedStepPerFrame, v)
wantJ
v = .(.(Config.JUMP_Value), , )
hum.UseJumpPower
cur = hum.JumpPower
cur < v hum.JumpPower = .(cur + Tuning.SpeedStepPerFrame, v)
cur > v hum.JumpPower = .(cur - Tuning.SpeedStepPerFrame, v)
jh = v *
cur = hum.JumpHeight
step = Tuning.SpeedStepPerFrame *
cur < jh hum.JumpHeight = .(cur + step, jh)
cur > jh hum.JumpHeight = .(cur - step, jh)
wantS wantJ Speed.active
Speed.active =
Speed.sw hum.WalkSpeed = Speed.sw
Speed.sj hum.UseJumpPower hum.JumpPower = Speed.sj
Speed.sjh hum.UseJumpPower hum.JumpHeight = Speed.sjh
Speed.sw=; Speed.sj=; Speed.sjh=
FC = { enabled=, savedCT=, savedSub=, savedFOV=,
rot=.zero, pos=.zero, inputs={} }
Conn.fcKeyDown = UserInputService.InputBegan:((i)
FC.enabled
i.UserInputType ~= .UserInputType.Keyboard
FC.inputs[i.KeyCode] =
)
Conn.fcKeyUp = UserInputService.InputEnded:((i)
FC.enabled
i.UserInputType ~= .UserInputType.Keyboard
FC.inputs[i.KeyCode] =
)
Conn.fcMouse = UserInputService.InputChanged:((i)
FC.enabled
i.UserInputType == .UserInputType.MouseMovement
s = Config.FREECAM_Sensitivity *
FC.rot = .(FC.rot.X - i.Delta.X * s,
.(FC.rot.Y - i.Delta.Y * s, -.(), .()))
)
(dt)
Config.FREECAM_Enabled ~= FC.enabled
cam = Workspace.CurrentCamera
Config.FREECAM_Enabled
cam
FC.enabled =
FC.savedCT = cam.CameraType; FC.savedSub = cam.CameraSubject; FC.savedFOV = cam.FieldOfView
FC.pos = cam.CFrame.Position
lk = cam.CFrame.LookVector
FC.rot = .(.(-lk.X, -lk.Z), .(.(lk.Y, -, )))
FC.inputs = {}
cam.CameraType = .CameraType.Scriptable
FC.enabled =
cam
cam.CameraType = FC.savedCT .CameraType.Custom
FC.savedSub cam.CameraSubject = FC.savedSub
FC.savedFOV cam.FieldOfView = FC.savedFOV
FC.enabled
cam = Workspace.CurrentCamera; cam
rot = .(FC.rot.Y, FC.rot.X, )
speed = Config.FREECAM_Speed
FC.inputs[.KeyCode.LeftShift] speed = speed *
FC.inputs[.KeyCode.LeftControl] speed = speed *
fwd, right = rot.LookVector, rot.RightVector
move = .zero
FC.inputs[.KeyCode.W] move = move + fwd
FC.inputs[.KeyCode.S] move = move - fwd
FC.inputs[.KeyCode.D] move = move + right
FC.inputs[.KeyCode.A] move = move - right
FC.inputs[.KeyCode.Space] FC.inputs[.KeyCode.E] move = move + .(,,)
FC.inputs[.KeyCode.Q] move = move - .(,,)
move.Magnitude > FC.pos = FC.pos + move.Unit * speed * dt
cam.CFrame = .(FC.pos) * rot
ColorPicker = { frame=, conns={} }
ColorPicker.()
_, c (ColorPicker.conns) (() c:() )
ColorPicker.conns = {}
ColorPicker.frame (() ColorPicker.frame:() ); ColorPicker.frame=
ColorPicker.(key)
ColorPicker.()
startCol = (key)
h, s, v = .(startCol)
W, H = ,
f = .(, UI)
f.BackgroundColor3 = .(,,); f.BorderSizePixel =
f.Size = .(, W, , H); f.Position = .(, -W/, , -H/)
f.ZIndex = ; f.Active =
.(, f).CornerRadius = .(, )
st = .(, f); st.Color = (); st.Thickness =
ColorPicker.frame = f
title = .(, f)
title.BackgroundTransparency =
title.Position = .(, , , ); title.Size = .(, -, , )
title.Font = .Font.GothamBold; title.TextSize =
title.TextColor3 = (); title.TextXAlignment = .TextXAlignment.Left
title.Text = (key, key); title.ZIndex =
prev = .(, f)
prev.BackgroundColor3 = startCol; prev.BorderSizePixel =
prev.Position = .(, , , ); prev.Size = .(, , , )
.(, prev).CornerRadius = .(, ); prev.ZIndex =
hueSlider = .(, f)
hueSlider.BackgroundColor3 = .(,,); hueSlider.BorderSizePixel =
hueSlider.Position = .(, , , ); hueSlider.Size = .(, -, , )
.(, hueSlider).CornerRadius = .(, )
hueSlider.ClipsDescendants = ; hueSlider.ZIndex =
hg = .(, hueSlider); hg.Rotation =
hg.Color = ColorSequence.({
ColorSequenceKeypoint.(, .(,,)),
ColorSequenceKeypoint.(, .(,,)),
ColorSequenceKeypoint.(, .(,,)),
ColorSequenceKeypoint.(, .(,,)),
ColorSequenceKeypoint.(, .(,,)),
ColorSequenceKeypoint.(, .(,,)),
ColorSequenceKeypoint.(, .(,,))
})
hueCursor = .(, hueSlider)
hueCursor.BackgroundColor3 = .(,,); hueCursor.BorderSizePixel =
hueCursor.AnchorPoint = .(, )
hueCursor.Size = .(, , , ); hueCursor.ZIndex =
hueCursor.Position = .(h, , , )
svCanvas = .(, f)
svCanvas.BackgroundColor3 = .(h, , ); svCanvas.BorderSizePixel =
svCanvas.Position = .(, , , ); svCanvas.Size = .(, , , )
.(, svCanvas).CornerRadius = .(, )
svCanvas.ClipsDescendants = ; svCanvas.ZIndex =
gw = .(, svCanvas)
gw.BackgroundColor3 = .(,,); gw.BorderSizePixel =
gw.Size = .(, , , ); gw.ZIndex =
gwg = .(, gw)
gwg.Transparency = NumberSequence.({NumberSequenceKeypoint.(,), NumberSequenceKeypoint.(,)})
gb = .(, svCanvas)
gb.BackgroundColor3 = .(,,); gb.BorderSizePixel =
gb.Size = .(, , , ); gb.ZIndex =
gbg = .(, gb); gbg.Rotation =
gbg.Transparency = NumberSequence.({NumberSequenceKeypoint.(,), NumberSequenceKeypoint.(,)})
svCursor = .(, svCanvas)
svCursor.BackgroundTransparency = ; svCursor.AnchorPoint = .(, )
svCursor.Size = .(, , , ); svCursor.ZIndex =
svcStroke = .(, svCursor); svcStroke.Color = .(,,); svcStroke.Thickness =
.(, svCursor).CornerRadius = .(, )
svCursor.Position = .(s, , - v, )
curH, curS, curV = h, s, v
()
prev.BackgroundColor3 = .(curH, curS, curV)
svCanvas.BackgroundColor3 = .(curH, , )
svCursor.Position = .(curS, , - curV, )
hueCursor.Position = .(curH, , , )
()
applyBtn = .(, f)
applyBtn.BackgroundColor3 = (); applyBtn.BorderSizePixel =
applyBtn.Position = .(, , , -); applyBtn.Size = .(, -, , )
applyBtn.Font = .Font.GothamBold; applyBtn.TextSize =
applyBtn.TextColor3 = .(,,); applyBtn.Text = ; applyBtn.ZIndex =
.(, applyBtn).CornerRadius = .(, )
cancelBtn = .(, f)
cancelBtn.BackgroundColor3 = .(,,); cancelBtn.BorderSizePixel =
cancelBtn.Position = .(, , , -); cancelBtn.Size = .(, -, , )
cancelBtn.Font = .Font.GothamBold; cancelBtn.TextSize =
cancelBtn.TextColor3 = .(,,); cancelBtn.Text = ; cancelBtn.ZIndex =
.(, cancelBtn).CornerRadius = .(, )
svDrag =
svCanvas.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1 svDrag =
)
.(ColorPicker.conns, UserInputService.InputEnded:((input)
input.UserInputType == .UserInputType.MouseButton1 svDrag =
))
svConn = RunService.RenderStepped:(()
f.Parent svConn:();
svDrag
mp = UserInputService:()
ap = svCanvas.AbsolutePosition; asz = svCanvas.AbsoluteSize
asz.X <= asz.Y <=
curS = .((mp.X - ap.X)/asz.X, , )
curV = - .((mp.Y - ap.Y)/asz.Y, , )
()
)
.(ColorPicker.conns, svConn)
hDrag =
hueSlider.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1 hDrag =
end)
table.insert(ColorPicker.conns, UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then hDrag = false end
end))
local hConn = RunService.RenderStepped:Connect(function()
if not f.Parent then hConn:Disconnect(); return end
if hDrag then
local mp = UserInputService:GetMouseLocation()
local ap = hueSlider.AbsolutePosition; local asz = hueSlider.AbsoluteSize
if asz.X <= 0 then return end
curH = math.clamp((mp.X - ap.X)/asz.X, 0, 1)
sync()
end
end)
table.insert(ColorPicker.conns, hConn)
applyBtn.MouseButton1Click:Connect(function()
setColor(key, Color3.fromHSV(curH, curS, curV))
ColorPicker.Close()
end)
cancelBtn.MouseButton1Click:Connect(function() ColorPicker.Close() end)
end
-- ============================================================
-- BIND EDITOR
-- ============================================================
local BindEditor = { frame=nil, targetKey=nil, mode="Toggle", pendingKey=nil, conn=nil }
function BindEditor.Close()
if BindEditor.conn then pcall(function() BindEditor.conn:Disconnect() end); BindEditor.conn=nil end
if BindEditor.frame then pcall(function() BindEditor.frame:Destroy() end); BindEditor.frame=nil end
BindEditor.targetKey = nil; BindEditor.pendingKey = nil
end
function BindEditor.Open(configKey, displayName)
BindEditor.Close()
local existing = Binds[configKey]
BindEditor.targetKey = configKey
BindEditor.mode = existing and existing.mode or "Toggle"
BindEditor.pendingKey = existing and existing.key or nil
local frame = Instance.new("Frame", UI)
frame.BackgroundColor3 = Color3.fromRGB(10,10,12); frame.BorderSizePixel = 0
frame.Size = UDim2.new(0, 300, 0, 210)
frame.Position = UDim2.new(0.5, -150, 0.5, -105); frame.ZIndex = 999
BindEditor.frame = frame
Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 8)
local stroke = Instance.new("UIStroke", frame)
stroke.Color = getColor("C_Accent"); stroke.Thickness = 1
local title = Instance.new("TextLabel", frame)
title.BackgroundTransparency = 1
title.Position = UDim2.new(0, 14, 0, 12); title.Size = UDim2.new(1, -28, 0, 20)
title.Font = Enum.Font.GothamBold; title.TextSize = 13
title.TextColor3 = getColor("C_Accent"); title.TextXAlignment = Enum.TextXAlignment.Left
title.Text = t("bind_title") .. displayName; title.ZIndex = 1000
local hint = Instance.new("TextLabel", frame)
hint.BackgroundTransparency = 1
hint.Position = UDim2.new(0, 14, 0, 38); hint.Size = UDim2.new(1, -28, 0, 24)
hint.Font = Enum.Font.GothamMedium; hint.TextSize = 12
hint.TextColor3 = BindEditor.pendingKey and getColor("C_Accent") or Color3.fromRGB(130,130,140)
hint.TextXAlignment = Enum.TextXAlignment.Center
hint.Text = BindEditor.pendingKey and (t("bind_key") .. BindEditor.pendingKey.Name) or t("bind_hint")
hint.ZIndex = 1000
local modeFrame = Instance.new("Frame", frame)
modeFrame.BackgroundTransparency = 1
modeFrame.Position = UDim2.new(0, 14, 0, 70); modeFrame.Size = UDim2.new(1, -28, 0, 30); modeFrame.ZIndex = 1000
local togBtn = Instance.new("TextButton", modeFrame)
togBtn.BackgroundColor3 = BindEditor.mode == "Toggle" and getColor("C_Accent") or Color3.fromRGB(24,24,28)
togBtn.BorderSizePixel = 0; togBtn.Size = UDim2.new(0.5, -3, 1, 0)
togBtn.Font = Enum.Font.GothamBold; togBtn.TextSize = 12
togBtn.TextColor3 = BindEditor.mode == "Toggle" and Color3.new(0,0,0) or Color3.fromRGB(240,240,245)
togBtn.Text = t("bind_toggle"); togBtn.AutoButtonColor = false; togBtn.ZIndex = 1000
Instance.new("UICorner", togBtn).CornerRadius = UDim.new(0, 5)
local holdBtn = Instance.new("TextButton", modeFrame)
holdBtn.BackgroundColor3 = BindEditor.mode == "Hold" and getColor("C_Accent") or Color3.fromRGB(24,24,28)
holdBtn.BorderSizePixel = 0; holdBtn.Position = UDim2.new(0.5, 3, 0, 0); holdBtn.Size = UDim2.new(0.5, -3, 1, 0)
holdBtn.Font = Enum.Font.GothamBold; holdBtn.TextSize = 12
holdBtn.TextColor3 = BindEditor.mode == "Hold" and Color3.new(0,0,0) or Color3.fromRGB(240,240,245)
holdBtn.Text = t("bind_hold"); holdBtn.AutoButtonColor = false; holdBtn.ZIndex = 1000
Instance.new("UICorner", holdBtn).CornerRadius = UDim.new(0, 5)
togBtn.MouseButton1Click:Connect(function()
BindEditor.mode = "Toggle"
togBtn.BackgroundColor3 = getColor("C_Accent"); togBtn.TextColor3 = Color3.new(0,0,0)
holdBtn.BackgroundColor3 = Color3.fromRGB(24,24,28); holdBtn.TextColor3 = Color3.fromRGB(240,240,245)
end)
holdBtn.MouseButton1Click:Connect(function()
BindEditor.mode = "Hold"
holdBtn.BackgroundColor3 = getColor("C_Accent"); holdBtn.TextColor3 = Color3.new(0,0,0)
togBtn.BackgroundColor3 = Color3.fromRGB(24,24,28); togBtn.TextColor3 = Color3.fromRGB(240,240,245)
end)
local actFrame = Instance.new("Frame", frame)
actFrame.BackgroundTransparency = 1
actFrame.Position = UDim2.new(0, 14, 1, -40); actFrame.Size = UDim2.new(1, -28, 0, 28); actFrame.ZIndex = 1000
local function mkBtn(txt, xPos, bg, fg, cb)
local b = Instance.new("TextButton", actFrame)
b.BackgroundColor3 = bg; b.BorderSizePixel = 0
b.Position = UDim2.new(xPos, 0, 0, 0); b.Size = UDim2.new(0.33, -3, 1, 0)
b.Font = Enum.Font.GothamBold; b.TextSize = 11; b.TextColor3 = fg; b.Text = txt
b.AutoButtonColor = false; b.ZIndex = 1000
Instance.new("UICorner", b).CornerRadius = UDim.new(0, 5)
b.MouseButton1Click:Connect(cb)
return b
end
mkBtn(t("bind_clear"), 0, Color3.fromRGB(60,25,25), Color3.fromRGB(255,180,180), function()
Binds[BindEditor.targetKey] = nil
HoldActive[BindEditor.targetKey] = nil
if GUI then GUI.RefreshItemVisual(BindEditor.targetKey) end
BindEditor.Close()
end)
mkBtn(t("bind_save"), 0.34, getColor("C_Accent"), Color3.new(0,0,0), function()
if not BindEditor.pendingKey then return end
Binds[BindEditor.targetKey] = { key = BindEditor.pendingKey, mode = BindEditor.mode }
if GUI then GUI.RefreshItemVisual(BindEditor.targetKey) end
BindEditor.Close()
end)
mkBtn(t("bind_cancel"), 0.67, Color3.fromRGB(24,24,28), Color3.fromRGB(240,240,245), function()
BindEditor.Close()
end)
BindEditor.conn = UserInputService.InputBegan:Connect(function(input)
if not BindEditor.frame then return end
if input.UserInputType ~= Enum.UserInputType.Keyboard then return end
if input.KeyCode == Enum.KeyCode.Unknown then return end
if input.KeyCode == Enum.KeyCode.Escape then BindEditor.Close(); return end
if input.KeyCode == Enum.KeyCode.Insert or input.KeyCode == Enum.KeyCode.Home then return end
BindEditor.pendingKey = input.KeyCode
hint.Text = t("bind_key") .. input.KeyCode.Name
hint.TextColor3 = getColor("C_Accent")
end)
end
-- ============================================================
-- МЕНЮ
-- ============================================================
local Tabs = {
{ id="Aim", icon="*", langKey="tab_aim" },
{ id="Wallhack", icon="o", langKey="tab_wallhack" },
{ id="World", icon="+", langKey="tab_world" },
{ id="Misc", icon="#", langKey="tab_misc" },
{ id="Customize", icon="~", langKey="tab_customize" },
}
local Layout = {
Aim = {
col1 = {
{ titleKey="grp_aimbot", items = {
{name="Enable", key="AIM_Enabled", type="toggle"},
{name="Visible Check", key="AIM_WallCheck", type="toggle"},
{name="Show FOV", key="AIM_ShowFOV", type="toggle"},
{name="Dynamic Smooth", key="AIM_DynamicSmooth", type="toggle"},
{name="Aim Key", key="AIM_AimKey", type="dropdown", list=AimKeys},
{name="Aim Fov", key="AIM_FOV", type="slider", min=50, max=500, step=25},
{name="Smooth Value", key="AIM_Smooth", type="slider", min=1, max=100, step=1},
{name="Bone", key="AIM_TargetBone", type="dropdown", list=AimBones}
}}
},
col2 = {
{ titleKey="grp_target", items = {
{name="Team Check", key="AIM_TeamCheck", type="toggle"}
}}
}
},
Wallhack = {
col1 = {
{ titleKey="grp_players", items = {
{name="Enable ESP", key="ESP_Enabled", type="toggle"},
{name="Boxes", key="ESP_Boxes", type="toggle"},
{name="Names", key="ESP_Names", type="toggle"},
{name="Distance", key="ESP_Distance", type="toggle"},
{name="Health Bar", key="ESP_Health", type="toggle"},
{name="Team Check", key="ESP_TeamCheck", type="toggle"},
{name="Max Distance", key="ESP_MaxDist", type="slider", min=500, max=5000, step=100}
}},
{ titleKey="grp_skeleton", items = {
{name="Skeleton", key="ESP_Skeleton", type="toggle"}
}}
},
col2 = {
{ titleKey="grp_drones", items = {
{name="Drone ESP", key="ESP_Drones", type="toggle"},
{name="Drone Team Check", key="ESP_DronesTeamCheck", type="toggle"}
}},
{ titleKey="grp_radar", items = {
{name="Enable Radar", key="RADAR_Enabled", type="toggle"},
{name="Radar Size", key="RADAR_Size", type="slider", min=80, max=200, step=10}
}}
}
},
World = {
col1 = {
{ titleKey="grp_freecam", items = {
{name="Enable Freecam", key="FREECAM_Enabled", type="toggle"},
{name="Speed", key="FREECAM_Speed", type="slider", min=5, max=300, step=5},
{name="Sensitivity", key="FREECAM_Sensitivity", type="slider", min=0.1, max=5, step=0.1}
}}
},
col2 = {
{ titleKey="grp_ui", items = {
{name="Watermark", key="UI_Watermark", type="toggle"}
}}
}
},
Misc = {
col1 = {
{ titleKey="grp_speed", items = {
{name="Speed Hack", key="SPEED_Enabled", type="toggle"},
{name="Speed Value", key="SPEED_Value", type="slider", min=16, max=250, step=2},
{name="Jump Power", key="JUMP_Enabled", type="toggle"},
{name="Jump Value", key="JUMP_Value", type="slider", min=50, max=300, step=5}
}}
},
col2 = {
{ titleKey="grp_binds", items = { {name="Binds", key="__BINDS_UI", type="binds"} } }
}
},
Customize = {
col1 = {
{ titleKey="grp_config", items = { {name="Config", key="__CFG_UI", type="configui"} }},
{ titleKey="grp_colors_player", items = {
{name="Enemy", key="C_Enemy", type="color"},
{name="Teammate", key="C_Team", type="color"},
{name="Drone (enemy)", key="C_DroneEnemy", type="color"},
{name="Drone (team)", key="C_DroneTeam", type="color"},
{name="Box", key="C_Box", type="color"},
{name="Name", key="C_Name", type="color"},
{name="Distance", key="C_Distance", type="color"},
{name="Skeleton", key="C_Skeleton", type="color"}
}}
},
col2 = {
{ titleKey="grp_colors", items = {
{name="HP bg", key="C_HealthBg", type="color"},
{name="HP high", key="C_HealthHigh", type="color"},
{name="HP mid", key="C_HealthMid", type="color"},
{name="HP low", key="C_HealthLow", type="color"},
{name="Radar bg", key="C_RadarBg", type="color"},
{name="Radar border", key="C_RadarBorder", type="color"},
{name="Radar you", key="C_RadarYou", type="color"},
{name="Radar enemy", key="C_RadarEnemy", type="color"},
{name="FOV circle", key="C_FOVCircle", type="color"},
{name="FOV active", key="C_FOVActive", type="color"},
{name="Accent", key="C_Accent", type="color"}
}}
}
}
}
local GUI = { Frame=nil, Dragging=false, DragOffset=Vector2.zero, ContentArea=nil,
ItemVisuals={}, TabsButtons={}, LangButtons={}, TabConnections={} }
local function getBindString(key)
local b = Binds[key]
if not b or not b.key then return "" end
return "[" .. b.key.Name .. "]"
end
local function triggerBind(configKey)
local b = Binds[configKey]; if not b then return end
local tt = type(Config[configKey])
if b.mode == "Hold" then
if not HoldActive[configKey] then
HoldActive[configKey] = true
if tt == "boolean" then Config[configKey] = true; if GUI then GUI.RefreshItemVisual(configKey) end end
end
else
if tt == "boolean" then
Config[configKey] = not Config[configKey]
if GUI then GUI.RefreshItemVisual(configKey) end
end
end
end
local function attachRMB(obj, key, name)
if obj:IsA("GuiButton") then
obj.MouseButton2Down:Connect(function() BindEditor.Open(key, name) end)
else
obj.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton2 then BindEditor.Open(key, name) end
end)
end
end
local function addHelpIcon(row, key, xOffset)
local desc = getDesc(key)
if not desc then return nil end
local q = Instance.new("TextButton", row)
q.BackgroundColor3 = Color3.fromRGB(28,28,34); q.BorderSizePixel = 0
q.Position = UDim2.new(1, -(xOffset or 145), 0.5, -9)
q.Size = UDim2.new(0, 18, 0, 18)
q.Font = Enum.Font.GothamBold; q.TextSize = 11
q.TextColor3 = getColor("C_Accent"); q.Text = "?"
q.AutoButtonColor = false; q.ZIndex = 6
Instance.new("UICorner", q).CornerRadius = UDim.new(1, 0)
local qStroke = Instance.new("UIStroke", q)
qStroke.Color = getColor("C_Accent"); qStroke.Thickness = 1; qStroke.Transparency = 0.5
q.MouseEnter:Connect(function() showTooltip(desc) end)
q.MouseLeave:Connect(function() hideTooltip() end)
return q
end
local function buildToggle(parent, item)
local row = Instance.new("Frame", parent)
row.BackgroundTransparency = 1; row.Size = UDim2.new(1, 0, 0, 26)
local box = Instance.new("Frame", row)
box.BackgroundColor3 = Config[item.key] and getColor("C_Accent") or Color3.fromRGB(28,28,32)
box.BorderSizePixel = 0; box.Position = UDim2.new(0, 0, 0.5, -9); box.Size = UDim2.new(0, 18, 0, 18)
Instance.new("UICorner", box).CornerRadius = UDim.new(0, 4)
local bs = Instance.new("UIStroke", box)
bs.Color = Config[item.key] and getColor("C_Accent") or Color3.fromRGB(50,50,58); bs.Thickness = 1
local check = Instance.new("TextLabel", box)
check.BackgroundTransparency = 1; check.Size = UDim2.new(1,0,1,0)
check.Font = Enum.Font.GothamBold; check.TextSize = 14
check.TextColor3 = Color3.new(0,0,0); check.Text = "v"; check.Visible = Config[item.key]
local lbl = Instance.new("TextLabel", row)
lbl.BackgroundTransparency = 1; lbl.Position = UDim2.new(0, 28, 0, 0); lbl.Size = UDim2.new(1, -170, 1, 0)
lbl.Font = Enum.Font.GothamMedium; lbl.TextSize = 13
lbl.TextColor3 = Color3.fromRGB(240,240,245); lbl.TextXAlignment = Enum.TextXAlignment.Left
lbl.TextTruncate = Enum.TextTruncate.AtEnd
lbl.Text = tItem(item.key, item.name)
addHelpIcon(row, item.key, 145)
local bindLbl = Instance.new("TextLabel", row)
bindLbl.BackgroundTransparency = 1; bindLbl.Position = UDim2.new(1, -120, 0, 0); bindLbl.Size = UDim2.new(0, 95, 1, 0)
bindLbl.Font = Enum.Font.GothamMedium; bindLbl.TextSize = 11
bindLbl.TextColor3 = getColor("C_Accent"); bindLbl.TextXAlignment = Enum.TextXAlignment.Right
bindLbl.Text = getBindString(item.key)
local hit = Instance.new("TextButton", row)
hit.BackgroundTransparency = 1; hit.Size = UDim2.new(1, -125, 1, 0)
hit.Text = ""; hit.AutoButtonColor = false
hit.MouseButton1Click:Connect(function()
Config[item.key] = not Config[item.key]
box.BackgroundColor3 = Config[item.key] and getColor("C_Accent") or Color3.fromRGB(28,28,32)
bs.Color = Config[item.key] and getColor("C_Accent") or Color3.fromRGB(50,50,58)
check.Visible = Config[item.key]
end)
attachRMB(hit, item.key, tItem(item.key, item.name))
GUI.ItemVisuals[item.key] = function()
local v = Config[item.key]
box.BackgroundColor3 = v and getColor("C_Accent") or Color3.fromRGB(28,28,32)
bs.Color = v and getColor("C_Accent") or Color3.fromRGB(50,50,58)
check.Visible = v
bindLbl.Text = getBindString(item.key)
end
return row
end
local function buildSlider(parent, item)
local fmt = function(v) if item.step < 1 then return string.format("%.1f", v) end; return tostring(math.floor(v)) end
local row = Instance.new("Frame", parent)
row.BackgroundTransparency = 1; row.Size = UDim2.new(1, 0, 0, 42)
local lbl = Instance.new("TextLabel", row)
lbl.BackgroundTransparency = 1; lbl.Position = UDim2.new(0, 0, 0, 0); lbl.Size = UDim2.new(0.6, -22, 0, 20)
lbl.Font = Enum.Font.GothamMedium; lbl.TextSize = 13
lbl.TextColor3 = Color3.fromRGB(240,240,245); lbl.TextXAlignment = Enum.TextXAlignment.Left
lbl.TextTruncate = Enum.TextTruncate.AtEnd
lbl.Text = tItem(item.key, item.name)
addHelpIcon(row, item.key, 145)
for _, c in ipairs(row:GetChildren()) do
if c:IsA("TextButton") and c.Text == "?" then
c.Position = UDim2.new(0.6, 0, 0, 1)
end
end
local valLbl = Instance.new("TextLabel", row)
valLbl.BackgroundTransparency = 1; valLbl.Position = UDim2.new(0.6, 22, 0, 0); valLbl.Size = UDim2.new(0.4, -22, 0, 20)
valLbl.Font = Enum.Font.GothamMedium; valLbl.TextSize = 13
valLbl.TextColor3 = Color3.fromRGB(240,240,245); valLbl.TextXAlignment = Enum.TextXAlignment.Right
valLbl.Text = fmt(Config[item.key])
local track = Instance.new("Frame", row)
track.BackgroundColor3 = Color3.fromRGB(28,28,32); track.BorderSizePixel = 0
track.Position = UDim2.new(0, 0, 0, 26); track.Size = UDim2.new(1, 0, 0, 4)
Instance.new("UICorner", track).CornerRadius = UDim.new(1, 0)
local pct0 = (Config[item.key] - item.min) / (item.max - item.min)
local fill = Instance.new("Frame", track)
fill.BackgroundColor3 = Color3.fromRGB(139,127,255); fill.BorderSizePixel = 0
fill.Size = UDim2.new(pct0, 0, 1, 0); Instance.new("UICorner", fill).CornerRadius = UDim.new(1, 0)
local knob = Instance.new("Frame", track)
knob.BackgroundColor3 = Color3.new(1,1,1); knob.BorderSizePixel = 0
knob.AnchorPoint = Vector2.new(0.5, 0.5)
knob.Position = UDim2.new(pct0, 0, 0.5, 0); knob.Size = UDim2.new(0, 14, 0, 14)
Instance.new("UICorner", knob).CornerRadius = UDim.new(1, 0)
local dragging = false
track.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true end
end)
track.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end
end)
table.insert(GUI.TabConnections, UserInputService.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end
end))
table.insert(GUI.TabConnections, RunService.RenderStepped:Connect(function()
if not dragging then return end
if not track.Parent or not fill.Parent or not knob.Parent then dragging = false; return end
local tw = track.AbsoluteSize.X; if tw <= 0 then return end
local tx = track.AbsolutePosition.X
local mx = UserInputService:GetMouseLocation().X
local p = math.clamp((mx-tx)/tw, 0, 1)
local v = item.min + p * (item.max - item.min)
v = math.floor(v / item.step + 0.5) * item.step
Config[item.key] = math.clamp(v, item.min, item.max)
local np = (Config[item.key] - item.min) / (item.max - item.min)
fill.Size = UDim2.new(np, 0, 1, 0)
knob.Position = UDim2.new(np, 0, 0.5, 0)
valLbl.Text = fmt(Config[item.key])
end))
attachRMB(lbl, item.key, tItem(item.key, item.name))
GUI.ItemVisuals[item.key] = function()
local v = Config[item.key]
local np = (v - item.min) / (item.max - item.min)
fill.Size = UDim2.new(np, 0, 1, 0)
knob.Position = UDim2.new(np, 0, 0.5, 0)
valLbl.Text = fmt(v)
end
return row
end
local function buildDropdown(parent, item)
local row = Instance.new("Frame", parent)
row.BackgroundTransparency = 1; row.Size = UDim2.new(1, 0, 0, 46)
local lbl = Instance.new("TextLabel", row)
lbl.BackgroundTransparency = 1; lbl.Position = UDim2.new(0, 0, 0, 0); lbl.Size = UDim2.new(1, -30, 0, 18)
lbl.Font = Enum.Font.GothamMedium; lbl.TextSize = 12
lbl.TextColor3 = Color3.fromRGB(130,130,140); lbl.TextXAlignment = Enum.TextXAlignment.Left
lbl.Text = tItem(item.key, item.name)
addHelpIcon(row, item.key, 4)
local btn = Instance.new("TextButton", row)
btn.BackgroundColor3 = Color3.fromRGB(24,24,28); btn.BorderSizePixel = 0
btn.Position = UDim2.new(0, 0, 0, 20); btn.Size = UDim2.new(1, 0, 0, 26)
btn.Text = ""; btn.AutoButtonColor = false
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 5)
local bs = Instance.new("UIStroke", btn); bs.Color = Color3.fromRGB(30,30,34); bs.Thickness = 1
local btnLbl = Instance.new("TextLabel", btn)
btnLbl.BackgroundTransparency = 1; btnLbl.Position = UDim2.new(0, 10, 0, 0); btnLbl.Size = UDim2.new(1, -30, 1, 0)
btnLbl.Font = Enum.Font.GothamMedium; btnLbl.TextSize = 13
btnLbl.TextColor3 = Color3.fromRGB(240,240,245); btnLbl.TextXAlignment = Enum.TextXAlignment.Left
btnLbl.Text = tostring(Config[item.key])
local listFrame = Instance.new("Frame", UI)
listFrame.BackgroundColor3 = Color3.fromRGB(19,19,22); listFrame.BorderSizePixel = 0
listFrame.Visible = false; listFrame.ZIndex = 500
Instance.new("UICorner", listFrame).CornerRadius = UDim.new(0, 5)
local ls = Instance.new("UIStroke", listFrame); ls.Color = Color3.fromRGB(30,30,34); ls.Thickness = 1
local listLayout = Instance.new("UIListLayout", listFrame); listLayout.Padding = UDim.new(0, 0)
for i, opt in ipairs(item.list) do
local optBtn = Instance.new("TextButton", listFrame)
optBtn.BackgroundColor3 = Color3.fromRGB(19,19,22); optBtn.BorderSizePixel = 0
optBtn.Size = UDim2.new(1, 0, 0, 26)
optBtn.Font = Enum.Font.GothamMedium; optBtn.TextSize = 13
optBtn.TextColor3 = Color3.fromRGB(240,240,245); optBtn.Text = " " .. opt
optBtn.TextXAlignment = Enum.TextXAlignment.Left
optBtn.AutoButtonColor = false; optBtn.LayoutOrder = i; optBtn.ZIndex = 501
optBtn.MouseButton1Click:Connect(function()
Config[item.key] = opt; btnLbl.Text = opt
listFrame.Visible = false
end)
end
btn.MouseButton1Click:Connect(function()
if not btn.Parent or not listFrame.Parent then return end
local willOpen = not listFrame.Visible
listFrame.Visible = false
if not willOpen then return end
listFrame.Size = UDim2.new(0, btn.AbsoluteSize.X, 0, 26 * #item.list)
listFrame.Position = UDim2.new(0, btn.AbsolutePosition.X, 0, btn.AbsolutePosition.Y + btn.AbsoluteSize.Y + 2)
listFrame.Visible = true
end)
attachRMB(lbl, item.key, tItem(item.key, item.name))
GUI.ItemVisuals[item.key] = function() btnLbl.Text = tostring(Config[item.key]) end
return row
end
local function buildColorRow(parent, item)
local row = Instance.new("Frame", parent)
row.BackgroundTransparency = 1; row.Size = UDim2.new(1, 0, 0, 28)
local swatch = Instance.new("Frame", row)
swatch.BackgroundColor3 = getColor(item.key); swatch.BorderSizePixel = 0
swatch.Position = UDim2.new(0, 0, 0.5, -8); swatch.Size = UDim2.new(0, 16, 0, 16)
Instance.new("UICorner", swatch).CornerRadius = UDim.new(0, 3)
local lbl = Instance.new("TextLabel", row)
lbl.BackgroundTransparency = 1; lbl.Position = UDim2.new(0, 24, 0, 0); lbl.Size = UDim2.new(1, -115, 1, 0)
lbl.Font = Enum.Font.GothamMedium; lbl.TextSize = 13
lbl.TextColor3 = Color3.fromRGB(240,240,245); lbl.TextXAlignment = Enum.TextXAlignment.Left
lbl.TextTruncate = Enum.TextTruncate.AtEnd
lbl.Text = tItem(item.key, item.name)
addHelpIcon(row, item.key, 90)
local btn = Instance.new("TextButton", row)
btn.BackgroundColor3 = getColor("C_Accent"); btn.BorderSizePixel = 0
btn.Position = UDim2.new(1, -60, 0.5, -11); btn.Size = UDim2.new(0, 60, 0, 22)
btn.Font = Enum.Font.GothamBold; btn.TextSize = 10
btn.TextColor3 = Color3.new(0,0,0); btn.Text = t("picks"); btn.AutoButtonColor = false
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 4)
btn.MouseButton1Click:Connect(function()
ColorPicker.Open(item.key)
task.spawn(function()
while ColorPicker.frame and ColorPicker.frame.Parent do task.wait(0.1) end
swatch.BackgroundColor3 = getColor(item.key)
end)
end)
GUI.ItemVisuals[item.key] = function() swatch.BackgroundColor3 = getColor(item.key) end
return row
end
local function buildConfigUI(parent)
local wrap = Instance.new("Frame", parent)
wrap.BackgroundTransparency = 1; wrap.Size = UDim2.new(1, 0, 0, 90)
local nameBox = Instance.new("TextBox", wrap)
nameBox.BackgroundColor3 = Color3.fromRGB(24,24,28); nameBox.BorderSizePixel = 0
nameBox.Position = UDim2.new(0, 0, 0, 18); nameBox.Size = UDim2.new(1, 0, 0, 28)
nameBox.Font = Enum.Font.GothamMedium; nameBox.TextSize = 13
nameBox.TextColor3 = Color3.fromRGB(240,240,245)
nameBox.PlaceholderText = "default"; nameBox.PlaceholderColor3 = Color3.fromRGB(130,130,140)
nameBox.Text = ConfigSystem.CurrentName or "default"
nameBox.ClearTextOnFocus = false; nameBox.TextXAlignment = Enum.TextXAlignment.Left
Instance.new("UICorner", nameBox).CornerRadius = UDim.new(0, 5)
local lbl = Instance.new("TextLabel", wrap)
lbl.BackgroundTransparency = 1; lbl.Position = UDim2.new(0, 0, 0, 0); lbl.Size = UDim2.new(1, 0, 0, 14)
lbl.Font = Enum.Font.GothamBold; lbl.TextSize = 10
lbl.TextColor3 = Color3.fromRGB(130,130,140); lbl.TextXAlignment = Enum.TextXAlignment.Left
lbl.Text = t("cfg_name")
local btnRow = Instance.new("Frame", wrap)
btnRow.BackgroundTransparency = 1
btnRow.Position = UDim2.new(0, 0, 0, 52); btnRow.Size = UDim2.new(1, 0, 0, 30)
local saveBtn = Instance.new("TextButton", btnRow)
saveBtn.BackgroundColor3 = getColor("C_Accent"); saveBtn.BorderSizePixel = 0
saveBtn.Position = UDim2.new(0, 0, 0, 0); saveBtn.Size = UDim2.new(0.5, -3, 1, 0)
saveBtn.Font = Enum.Font.GothamBold; saveBtn.TextSize = 12
saveBtn.TextColor3 = Color3.new(0,0,0); saveBtn.Text = t("cfg_save"); saveBtn.AutoButtonColor = false
Instance.new("UICorner", saveBtn).CornerRadius = UDim.new(0, 5)
local loadBtn = Instance.new("TextButton", btnRow)
loadBtn.BackgroundColor3 = Color3.fromRGB(24,24,28); loadBtn.BorderSizePixel = 0
loadBtn.Position = UDim2.new(0.5, 3, 0, 0); loadBtn.Size = UDim2.new(0.5, -3, 1, 0)
loadBtn.Font = Enum.Font.GothamBold; loadBtn.TextSize = 12
loadBtn.TextColor3 = Color3.fromRGB(240,240,245); loadBtn.Text = t("cfg_load"); loadBtn.AutoButtonColor = false
Instance.new("UICorner", loadBtn).CornerRadius = UDim.new(0, 5)
saveBtn.MouseButton1Click:Connect(function()
local nm = nameBox.Text ~= "" and nameBox.Text or "default"
local ok = ConfigSystem.Save(nm)
saveBtn.Text = ok and "OK!" or "FAIL"
task.delay(1.5, function() saveBtn.Text = t("cfg_save") end)
end)
loadBtn.MouseButton1Click:Connect(function()
local nm = nameBox.Text ~= "" and nameBox.Text or "default"
local ok = ConfigSystem.Load(nm)
loadBtn.Text = ok and "OK!" or "FAIL"
task.delay(1.5, function() loadBtn.Text = t("cfg_load") end)
if ok and GUI then
for k in pairs(GUI.ItemVisuals) do pcall(GUI.ItemVisuals[k]) end
end
end)
return wrap
end
local function buildBindsUI(parent)
local wrap = Instance.new("Frame", parent)
wrap.BackgroundTransparency = 1; wrap.Size = UDim2.new(1, 0, 0, 30)
local lbl = Instance.new("TextLabel", wrap)
lbl.BackgroundTransparency = 1; lbl.Size = UDim2.new(1, 0, 1, 0)
lbl.Font = Enum.Font.GothamMedium; lbl.TextSize = 11
lbl.TextColor3 = Color3.fromRGB(130,130,140); lbl.TextXAlignment = Enum.TextXAlignment.Left
lbl.Text = t("no_binds")
return wrap
end
local ITEM_H = {toggle=26, slider=42, dropdown=46, color=28, configui=90, binds=30}
local function estimateCardHeight(section)
local h = 18
for _, it in ipairs(section.items) do h = h + (ITEM_H[it.type] or 26) + 6 end
return h + 24
end
local function estimateColumnHeight(column)
local total = 0
for _, sec in ipairs(column) do total = total + estimateCardHeight(sec) + 10 end
return total
end
local function buildCard(parent, section, order)
local card = Instance.new("Frame", parent)
card.BackgroundColor3 = Color3.fromRGB(19,19,22); card.BorderSizePixel = 0
card.Size = UDim2.new(1, -12, 0, estimateCardHeight(section)); card.LayoutOrder = order
Instance.new("UICorner", card).CornerRadius = UDim.new(0, 8)
local cs = Instance.new("UIStroke", card); cs.Color = Color3.fromRGB(30,30,34); cs.Thickness = 1
local inner = Instance.new("Frame", card)
inner.BackgroundTransparency = 1
inner.Position = UDim2.new(0, 12, 0, 12); inner.Size = UDim2.new(1, -24, 1, -24)
local il = Instance.new("UIListLayout", inner)
il.SortOrder = Enum.SortOrder.LayoutOrder; il.Padding = UDim.new(0, 6)
local title = Instance.new("TextLabel", inner)
title.BackgroundTransparency = 1; title.Size = UDim2.new(1, 0, 0, 18)
title.Font = Enum.Font.GothamBold; title.TextSize = 12
title.TextColor3 = getColor("C_Accent"); title.TextXAlignment = Enum.TextXAlignment.Center
title.Text = ". " .. t(section.titleKey) .. " ."; title.LayoutOrder = 0
local orderIdx = 1
for _, it in ipairs(section.items) do
local row
if it.type == "toggle" then row = buildToggle(inner, it)
elseif it.type == "slider" then row = buildSlider(inner, it)
elseif it.type == "dropdown" then row = buildDropdown(inner, it)
elseif it.type == "color" then row = buildColorRow(inner, it)
elseif it.type == "configui" then row = buildConfigUI(inner)
elseif it.type == "binds" then row = buildBindsUI(inner) end
if row then row.LayoutOrder = orderIdx; orderIdx = orderIdx + 1 end
end
return card
end
function GUI.RenderTab(tabId)
if not GUI.ContentArea or not GUI.ContentArea.Parent then return end
for _, c in ipairs(GUI.ContentArea:GetChildren()) do
if c:IsA("Frame") then pcall(function() c:Destroy() end) end
end
if GUI.TabConnections then
for _, c in ipairs(GUI.TabConnections) do pcall(function() c:Disconnect() end) end
end
GUI.TabConnections = {}
GUI.ItemVisuals = {}
local data = Layout[tabId]; if not data then return end
local grid = Instance.new("Frame", GUI.ContentArea)
grid.BackgroundTransparency = 1; grid.Size = UDim2.new(1, 0, 1, 0)
local col1 = Instance.new("Frame", grid)
col1.BackgroundTransparency = 1
col1.Size = UDim2.new(0.5, -4, 0, 0); col1.AutomaticSize = Enum.AutomaticSize.Y
local l1 = Instance.new("UIListLayout", col1)
l1.SortOrder = Enum.SortOrder.LayoutOrder; l1.Padding = UDim.new(0, 10)
local col2 = Instance.new("Frame", grid)
col2.BackgroundTransparency = 1
col2.Position = UDim2.new(0.5, 4, 0, 0); col2.Size = UDim2.new(0.5, -4, 0, 0)
col2.AutomaticSize = Enum.AutomaticSize.Y
local l2 = Instance.new("UIListLayout", col2)
l2.SortOrder = Enum.SortOrder.LayoutOrder; l2.Padding = UDim.new(0, 10)
if data.col1 then for i, sec in ipairs(data.col1) do buildCard(col1, sec, i) end end
if data.col2 then for i, sec in ipairs(data.col2) do buildCard(col2, sec, i) end end
local h1 = data.col1 and estimateColumnHeight(data.col1) or 0
local h2 = data.col2 and estimateColumnHeight(data.col2) or 0
GUI.ContentArea.CanvasSize = UDim2.new(0, 0, 0, math.max(h1, h2) + 24)
end
function GUI.RefreshTabLabels()
for _, b in pairs(GUI.TabsButtons) do b.Label.Text = t(b.langKey) end
GUI.RenderTab(Config.MENU_Tab)
end
function GUI.SwitchLang(lang)
CurrentLang = lang
for _, lb in pairs(GUI.LangButtons) do
local active = lb.lang == lang
lb.Button.BackgroundColor3 = active and getColor("C_Accent") or Color3.fromRGB(24,24,28)
lb.Button.TextColor3 = active and Color3.new(0,0,0) or Color3.fromRGB(130,130,140)
end
GUI.RefreshTabLabels()
end
function GUI.SwitchTab(tabId)
Config.MENU_Tab = tabId
for _, b in pairs(GUI.TabsButtons) do
if b.tabId == tabId then
b.Label.TextColor3 = Color3.new(1,1,1)
b.Icon.TextColor3 = getColor("C_Accent")
else
b.Label.TextColor3 = Color3.fromRGB(130,130,140)
b.Icon.TextColor3 = Color3.fromRGB(80,80,90)
end
end
GUI.RenderTab(tabId)
end
function GUI.Create()
local W, H = 720, 500
local headerH, footerH = 46, 32
local main = Instance.new("Frame", UI)
main.BackgroundColor3 = Color3.fromRGB(10,10,12); main.BorderSizePixel = 0
main.Size = UDim2.new(0, W, 0, H); main.Position = UDim2.new(0.5, -W/2, 0.5, -H/2)
main.Active = true; GUI.Frame = main
Instance.new("UICorner", main).CornerRadius = UDim.new(0, 10)
local mStroke = Instance.new("UIStroke", main)
mStroke.Color = Color3.fromRGB(30,30,34); mStroke.Thickness = 1
local header = Instance.new("Frame", main)
header.BackgroundTransparency = 1; header.Size = UDim2.new(1, 0, 0, headerH)
local logo = Instance.new("TextLabel", header)
logo.BackgroundTransparency = 1; logo.Position = UDim2.new(0, 18, 0, 0); logo.Size = UDim2.new(0, 22, 1, 0)
logo.Font = Enum.Font.GothamBold; logo.TextSize = 18
logo.TextColor3 = getColor("C_Accent"); logo.Text = "*"; logo.TextXAlignment = Enum.TextXAlignment.Left
local brandLbl = Instance.new("TextLabel", header)
brandLbl.BackgroundTransparency = 1; brandLbl.Position = UDim2.new(0, 42, 0, 0); brandLbl.Size = UDim2.new(0, 80, 1, 0)
brandLbl.Font = Enum.Font.GothamBold; brandLbl.TextSize = 14
brandLbl.TextColor3 = Color3.new(1,1,1); brandLbl.Text = BRAND
brandLbl.TextXAlignment = Enum.TextXAlignment.Left
local tabsFrame = Instance.new("Frame", header)
tabsFrame.BackgroundTransparency = 1
tabsFrame.Position = UDim2.new(0, 130, 0, 0); tabsFrame.Size = UDim2.new(1, -140, 1, 0)
local tl = Instance.new("UIListLayout", tabsFrame)
tl.FillDirection = Enum.FillDirection.Horizontal; tl.SortOrder = Enum.SortOrder.LayoutOrder
tl.Padding = UDim.new(0, 14); tl.VerticalAlignment = Enum.VerticalAlignment.Center
for i, tab in ipairs(Tabs) do
local tabBtn = Instance.new("TextButton", tabsFrame)
tabBtn.BackgroundTransparency = 1
tabBtn.Size = UDim2.new(0, 100, 1, 0); tabBtn.Text = ""; tabBtn.AutoButtonColor = false
tabBtn.LayoutOrder = i
local icon = Instance.new("TextLabel", tabBtn)
icon.BackgroundTransparency = 1; icon.Position = UDim2.new(0, 0, 0.5, -9)
icon.Size = UDim2.new(0, 18, 0, 18)
icon.Font = Enum.Font.GothamBold; icon.TextSize = 16
icon.TextColor3 = i == 1 and getColor("C_Accent") or Color3.fromRGB(80,80,90)
icon.Text = tab.icon; icon.TextXAlignment = Enum.TextXAlignment.Left
local lbl = Instance.new("TextLabel", tabBtn)
lbl.BackgroundTransparency = 1; lbl.Position = UDim2.new(0, 22, 0, 0); lbl.Size = UDim2.new(1, -22, 1, 0)
lbl.Font = Enum.Font.GothamBold; lbl.TextSize = 13
lbl.TextColor3 = i == 1 and Color3.new(1,1,1) or Color3.fromRGB(130,130,140)
lbl.TextXAlignment = Enum.TextXAlignment.Left
lbl.Text = t(tab.langKey)
tabBtn.MouseButton1Click:Connect(function() GUI.SwitchTab(tab.id) end)
GUI.TabsButtons[#GUI.TabsButtons+1] = {Button=tabBtn, Icon=icon, Label=lbl, tabId=tab.id, langKey=tab.langKey}
end
local div = Instance.new("Frame", main)
div.BackgroundColor3 = Color3.fromRGB(30,30,34); div.BorderSizePixel = 0
div.Position = UDim2.new(0, 0, 0, headerH); div.Size = UDim2.new(1, 0, 0, 1)
local contentHolder = Instance.new("Frame", main)
contentHolder.BackgroundTransparency = 1
contentHolder.Position = UDim2.new(0, 0, 0, headerH + 1)
contentHolder.Size = UDim2.new(1, 0, 1, -headerH - footerH - 1)
local scroll = Instance.new("ScrollingFrame", contentHolder)
scroll.BackgroundTransparency = 1
scroll.Position = UDim2.new(0, 12, 0, 12); scroll.Size = UDim2.new(1, -24, 1, -24)
scroll.BorderSizePixel = 0; scroll.ScrollBarThickness = 3
scroll.ScrollBarImageColor3 = getColor("C_Accent"); scroll.CanvasSize = UDim2.new(0, 0, 0, 0)
GUI.ContentArea = scroll
local footer = Instance.new("Frame", main)
footer.BackgroundTransparency = 1
footer.Position = UDim2.new(0, 0, 1, -footerH); footer.Size = UDim2.new(1, 0, 0, footerH)
local langLabel = Instance.new("TextLabel", footer)
langLabel.BackgroundTransparency = 1; langLabel.Position = UDim2.new(0, 14, 0, 0)
langLabel.Size = UDim2.new(0, 40, 1, 0)
langLabel.Font = Enum.Font.GothamBold; langLabel.TextSize = 10
langLabel.TextColor3 = Color3.fromRGB(130,130,140); langLabel.TextXAlignment = Enum.TextXAlignment.Left
langLabel.Text = t("lang") .. ":"
local langFrame = Instance.new("Frame", footer)
langFrame.BackgroundTransparency = 1
langFrame.Position = UDim2.new(0, 60, 0.5, -11); langFrame.Size = UDim2.new(0, 80, 0, 22)
local ll = Instance.new("UIListLayout", langFrame)
ll.FillDirection = Enum.FillDirection.Horizontal; ll.Padding = UDim.new(0, 4)
ll.VerticalAlignment = Enum.VerticalAlignment.Center
for _, code in ipairs({"en", "ru"}) do
local btn = Instance.new("TextButton", langFrame)
btn.BackgroundColor3 = code == CurrentLang and getColor("C_Accent") or Color3.fromRGB(24,24,28)
btn.BorderSizePixel = 0; btn.Size = UDim2.new(0, 34, 0, 22)
btn.Font = Enum.Font.GothamBold; btn.TextSize = 11
btn.TextColor3 = code == CurrentLang and Color3.new(0,0,0) or Color3.fromRGB(130,130,140)
btn.Text = code:upper(); btn.AutoButtonColor = false
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 4)
btn.MouseButton1Click:Connect(function() GUI.SwitchLang(code) end)
GUI.LangButtons[#GUI.LangButtons+1] = {Button=btn, lang=code}
end
local footerRight = Instance.new("TextLabel", footer)
footerRight.BackgroundTransparency = 1
footerRight.Position = UDim2.new(0, 0, 0, 0); footerRight.Size = UDim2.new(1, -14, 1, 0)
footerRight.Font = Enum.Font.GothamMedium; footerRight.TextSize = 10
footerRight.TextColor3 = Color3.fromRGB(130,130,140); footerRight.TextXAlignment = Enum.TextXAlignment.Right
footerRight.Text = "by " .. BRAND .. " v7.5"
local function startDrag(input)
if input.UserInputType ~= Enum.UserInputType.MouseButton1 then return end
GUI.Dragging = true
local m = UserInputService:GetMouseLocation()
GUI.DragOffset = m - Vector2.new(main.AbsolutePosition.X, main.AbsolutePosition.Y)
end
local function endDrag(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then GUI.Dragging = false end
end
header.InputBegan:Connect(startDrag); logo.InputBegan:Connect(startDrag); brandLbl.InputBegan:Connect(startDrag)
UserInputService.InputEnded:Connect(endDrag)
GUI.SwitchTab(Config.MENU_Tab)
end
function GUI.Step()
if not GUI.Frame or not GUI.Frame.Parent then return end
if GUI.Dragging then
local m = UserInputService:GetMouseLocation()
local p = m - GUI.DragOffset
GUI.Frame.Position = UDim2.new(0, p.X, 0, p.Y)
end
end
GUI.Create()
-- ============================================================
-- BIND INPUT
-- ============================================================
Conn.bindDown = UserInputService.InputBegan:Connect(function(input, gp)
if Unloaded or gp then return end
if input.UserInputType ~= Enum.UserInputType.Keyboard then return end
if input.KeyCode == Enum.KeyCode.Insert or input.KeyCode == Enum.KeyCode.Home then return end
for configKey, bind in pairs(Binds) do
if bind.key == input.KeyCode then
if bind.mode == "Hold" then
if not HoldActive[configKey] then
HoldActive[configKey] = true
if type(Config[configKey]) == "boolean" then
Config[configKey] = true
if GUI then GUI.RefreshItemVisual(configKey) end
end
end
else triggerBind(configKey) end
end
end
end)
Conn.bindUp = UserInputService.InputEnded:Connect(function(input)
if Unloaded then return end
if input.UserInputType ~= Enum.UserInputType.Keyboard then return end
for configKey, bind in pairs(Binds) do
if bind.key == input.KeyCode and bind.mode == "Hold" then
if HoldActive[configKey] then
HoldActive[configKey] = false
if type(Config[configKey]) == "boolean" then
Config[configKey] = false
if GUI then GUI.RefreshItemVisual(configKey) end
end
end
end
end
end)
-- ============================================================
-- MAIN LOOP
-- ============================================================
local lastFps = tick()
local fpsFrames, fps = 0, 0
Conn.render = RunService.RenderStepped:Connect(function(dt)
if Unloaded then return end
local ok, err = pcall(function()
local cam = Workspace.CurrentCamera; if not cam then return end
local screenSize = cam.ViewportSize
local screenCenter = Vector2.new(screenSize.X/2, screenSize.Y/2)
local now = tick()
fpsFrames = fpsFrames + 1
if now - lastFps >= 0.5 then
fps = math.floor(fpsFrames / (now - lastFps))
fpsFrames = 0; lastFps = now
end
if now - Cache.lastRefresh > Tuning.RefreshRate then
Cache.lastRefresh = now
pcall(Targets.refresh)
end
if now - Cache.lastDroneRefresh > Tuning.DroneRefreshRate then
Cache.lastDroneRefresh = now
pcall(scanDrones)
end
pcall(function() ESP.Step(cam, screenSize, screenCenter) end)
pcall(function() DroneESP.Step(cam, screenSize, screenCenter) end)
pcall(function() UpdateRadar(cam) end)
pcall(speedStep)
pcall(function() freecamTick(dt) end)
pcall(GUI.Step)
WMStroke.Color = getColor("C_Accent")
WMBrand.TextColor3 = getColor("C_Accent")
RStroke.Color = getColor("C_RadarBorder")
RadarCenter.BackgroundColor3 = getColor("C_RadarYou")
RadarFrame.BackgroundColor3 = getColor("C_RadarBg")
if Config.AIM_Enabled and Config.AIM_ShowFOV then
local gi = GuiService:GetGuiInset()
FOVCircle.Position = UDim2.new(0, screenCenter.X, 0, screenCenter.Y + gi.Y)
FOVCircle.Size = UDim2.new(0, Config.AIM_FOV*2, 0, Config.AIM_FOV*2)
FOVS.Color = (Aim.aiming and Aim.locked) and getColor("C_FOVActive") or getColor("C_FOVCircle")
FOVCircle.Visible = true
else FOVCircle.Visible = false end
if Config.UI_Watermark then
WM.Visible = true
local myRoleName = Cache.myRole and Cache.myRole.Name or "?"
local myTeamCount = 0
for _, e in pairs(Cache.playerRoles) do
if e.isMyTeam then myTeamCount = myTeamCount + 1 end
end
local bindCount = 0
for _ in pairs(Binds) do bindCount = bindCount + 1 end
WmInfo.Text = string.format("%d fps | esp %d/%d | drones %d/%d | role %s | team %d | binds %d",
fps, Cache.drawn, Cache.count, Cache.droneDrawn, Cache.droneCount,
myRoleName, myTeamCount, bindCount)
else WM.Visible = false end
end)
if not ok then warn("[MORTY]", err) end
end)
Conn.input = UserInputService.InputBegan:Connect(function(i, gp)
if Unloaded then return end
if i.UserInputType ~= Enum.UserInputType.Keyboard then return end
if i.KeyCode == Enum.KeyCode.Insert and not gp then
GUI.Frame.Visible = not GUI.Frame.Visible
if not GUI.Frame.Visible then
pcall(ColorPicker.Close)
pcall(BindEditor.Close)
hideTooltip()
end
elseif i.KeyCode == Enum.KeyCode.Home then
Unloaded = true
for _, c in pairs(Conn) do pcall(function() c:Disconnect() end) end
if GUI.TabConnections then
for _, c in ipairs(GUI.TabConnections) do pcall(function() c:Disconnect() end) end
end
for _, e in pairs(ESP.cache) do ESP.Destroy(e) end
for _, e in pairs(DroneESP.cache) do DroneESP.Destroy(e) end
pcall(ColorPicker.Close)
pcall(BindEditor.Close)
hideTooltip()
pcall(function() UI:Destroy() end)
pcall(function() ESPGui:Destroy() end)
print("[MORTY] Выгружен (HOME)")
end
end)
-- Автозагрузка конфига
task.spawn(function()
task.wait(1)
if isfile and isfile(ConfigSystem.GetPath("autosave")) then
ConfigSystem.Load("autosave")
end
end)
print("[MORTY] v7.5 loaded")
print("[MORTY] Insert = меню | Home = выгрузка | ПКМ = бинд | ? = описание")MORTY CHEAT v7.5 — Fixed ESP Offset + Detailed Tooltips Controls: Insert — open/close menu Home — unload cheat RMB on menu item — add bind "?" icon — detailed description of the feature Drag — menu can be moved by its header 🎯 AIMBOT Enable — master switch for the whole aimbot. When off, nothing in the Aim tab works. Visible Check — don't aim at enemies behind walls. Uses raycast. Show FOV — draws a circle showing the aim radius. Visual only. Dynamic Smooth — smoothness scales with distance: far target = faster lock, close = smoother. Aim Key — mouse button that activates aim: RMB / LMB / Always. Aim FOV — aim capture radius in pixels (50–500). Smooth Value — how fast aim moves to target (1 = instant/rage, 15+ = human-like). Bone — body part to aim at: Head / Torso / HumanoidRootPart. Team Check — skip teammates. Uses team container from Workspace. 👁️ WALLHACK (Player ESP) Enable ESP — master switch for all ESP elements. Boxes — rectangle around each player. Red = enemy, blue = teammate. Names — show player name above box. Distance — distance to player in meters below box. Health Bar — vertical HP bar left of box. Green > 60%, yellow 30–60%, red < 30%. Team Check — hide team