Blox Strike Script | Nova Simple v5 UPD for Bloxstrike, Keyless
Description
This blox strike script has been shared by a number of players who found it useful for everyday gameplay. The standout features are ESP and Head Expand. Access is keyless.
What This Script Can Do
- ESP: Highlights other players or objects through walls so you always know where everything is on the map.
- Head Expand: Gives you access to Head Expand in blox strike, which can make a real difference during longer play sessions.
- Team Check: Handles Team Check automatically in blox strike, so you don’t have to do it manually every session.
- Autofire: Handles Autofire automatically in blox strike, so you don’t have to do it manually every session.
- Access: No key system or Linkvertise redirect needed — just paste and run.
- Executor Compatibility: Works great on Delta, Codex, Hydrogen, Wave, and most mobile and PC executors.
How to Use This Script
- Open Roblox and search for blox strike, then join any active server.
- Wait until you’re fully loaded into the game world before running any script.
- Open your executor app (Delta, Codex, Hydrogen, Wave, or any compatible one) and go to the script tab.
- Copy the loadstring code shown on this page and paste it into your executor’s script box, then press Execute.
- A GUI or confirmation should appear in-game — use it to turn on the features you want and adjust any settings.
Features
Compatible Executors
Script
-- language: Luau, target: Roblox "Blox Strike", executors: Xeno / Delta / Wave / Solara
-- NOVA SIMPLE v5: Kill All + анти-отдача · превью-каталог (drag-вращение, зум) · вкладка Мир удалена
local ENV = (getgenv and getgenv()) or {}
if ENV.NOVASimple and ENV.NOVASimple.Unload then pcall(ENV.NOVASimple.Unload) end
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local HttpService = game:GetService("HttpService")
local VirtualUser = game:GetService("VirtualUser")
local LP = Players.LocalPlayer
--// CONFIG
local CFG = {
TeamCheck = true, TeamRadius = 30,
ESP = true, Highlight = true, HeadBox = true,
Name = true, Health = true, Distance = true, MaxDistance = 2500,
ESPColor = Color3.fromRGB(255, 70, 85),
HeadBoxColor = Color3.fromRGB(255, 215, 60),
HeadExpand = false, HeadSize = 6, HeadTransparency = 0.55,
KillAll = false, FireDelay = 0.15,
NoRecoil = false, RecoilStrength = 100,
Particles = true,
GuiKey = Enum.KeyCode.RightShift,
}
--// THEME
local Theme = {
Accent = Color3.fromRGB(227, 137, 35),
Bg = Color3.fromRGB(13, 13, 19),
Bg2 = Color3.fromRGB(22, 23, 32),
Bg3 = Color3.fromRGB(30, 31, 42),
Stroke = Color3.fromRGB(46, 46, 64),
Text = Color3.fromRGB(236, 236, 246),
TextDim = Color3.fromRGB(138, 138, 162),
Green = Color3.fromRGB(116, 203, 73),
Red = Color3.fromRGB(236, 72, 78),
Ally = Color3.fromRGB(86, 196, 255),
}
local AccentPresets = {
{ "Оранж", Color3.fromRGB(227, 137, 35) },
{ "Фиолет", Color3.fromRGB(124, 92, 255) },
{ "Синий", Color3.fromRGB(0, 170, 255) },
{ "Зелёный", Color3.fromRGB(0, 215, 135) },
{ "Розовый", Color3.fromRGB(255, 80, 160) },
}
--// STATE
local running = true
local minimized = false
local Conns = {}
local function Bind(signal, fn)
local c = signal:Connect(fn)
table.insert(Conns, c)
return c
end
local function New(class, props, children)
local inst = Instance.new(class)
for k, v in pairs(props) do
if k ~= "Parent" then inst[k] = v end
end
if children then
for _, c in ipairs(children) do c.Parent = inst end
end
if props.Parent then inst.Parent = props.Parent end
return inst
end
local function Corner(r) return New("UICorner", { CornerRadius = UDim.new(0, r) }) end
local function TI(t, style, dir) return TweenInfo.new(t, style or Enum.EasingStyle.Quint, dir or Enum.EasingDirection.Out) end
local function Tag(inst, role) inst:SetAttribute("__accent", role) return inst end
--// I18N
local LANG, bindings = "ru", {}
local TR = {
ru = {
subtitle = "KILL ALL • ESP • ГОЛОВА • АНТИ-ОТДАЧА",
tab_team = "Команды", tab_combat = "Бой", tab_visuals = "Визуалы",
tab_head = "Голова", tab_config = "Конфиг",
sec_team = "Команда / Раунд", sec_killall = "Kill All", sec_recoil = "Отдача",
sec_esp = "ESP", sec_head = "Хитбокс головы",
sec_gui = "Интерфейс", sec_lang = "Язык", sec_keys = "Клавиши",
team_check = "Проверка команды", radius = "Радиус спавн-команды",
rescan = "Пересканировать сейчас", allies = "Союзников",
scan_done = "Калибровка завершена · союзников: ",
kill_all = "Kill All (авто-стрельба)", fire_delay = "Интервал выстрела",
killall_note = "Головы растягиваются автоматически · стрельба по ближайшей видимой голове · не держи меню под курсором",
killed = "Убито",
no_recoil = "Убирать отдачу", recoil_strength = "Сила компенсации",
esp = "ESP", highlight = "Подсветка (сквозь стены)", head_box = "Бокс головы (сквозь стены)",
name = "Имя", hp = "Полоска HP", distance = "Дистанция", esp_dist = "Дальность ESP",
esp_color = "Цвет ESP", hb_color = "Цвет бокса головы",
head_expand = "Увеличение головы", head_size = "Размер головы", transparency = "Прозрачность",
particles = "Частицы", accent = "Акцент", gui_key = "Клавиша меню",
unload = "Выгрузить скрипт", delete_note = "Delete — выгрузка всегда",
preview_esp = "ПРЕДПРОСМОТР · ДЕМО ESP", preview_hint = "Тяни мышью — вращение · колесо — зум",
hp_stat = "Здоровье", team_stat = "Команда", neutral = "Нейтральный",
lang_tip = "Переключает язык интерфейса",
loaded = "NOVA v5 · RShift — меню · Delete — выгрузка",
},
en = {
subtitle = "KILL ALL • ESP • HEAD • ANTI-RECOIL",
tab_team = "Team", tab_combat = "Combat", tab_visuals = "Visuals",
tab_head = "Head", tab_config = "Config",
sec_team = "Team / Round", sec_killall = "Kill All", sec_recoil = "Recoil",
sec_esp = "ESP", sec_head = "Head hitbox",
sec_gui = "Interface", sec_lang = "Language", sec_keys = "Keys",
team_check = "Team check", radius = "Spawn team radius",
rescan = "Rescan now", allies = "Allies",
scan_done = "Calibration done · allies: ",
kill_all = "Kill All (auto-fire)", fire_delay = "Fire interval",
killall_note = "Heads expand automatically · fires at nearest visible head · keep menu away from cursor",
killed = "Killed",
no_recoil = "Remove recoil", recoil_strength = "Compensation strength",
esp = "ESP", highlight = "Highlight (through walls)", head_box = "Head box (through walls)",
name = "Name", hp = "HP bar", distance = "Distance", esp_dist = "ESP distance",
esp_color = "ESP color", hb_color = "Head box color",
head_expand = "Head expand", head_size = "Head size", transparency = "Transparency",
particles = "Particles", accent = "Accent", gui_key = "Menu key",
unload = "Unload script", delete_note = "Delete — unload always",
preview_esp = "PREVIEW · ESP DEMO", preview_hint = "Drag to rotate · wheel to zoom",
hp_stat = "Health", team_stat = "Team", neutral = "Neutral",
lang_tip = "Changes interface language only",
loaded = "NOVA v5 · RShift — menu · Delete — unload",
},
}
local function tr(k) local t = TR[LANG] return (t and t[k]) or k end
local function bind(fn) bindings[#bindings + 1] = fn fn() end
local function setLang(l)
if l ~= "ru" and l ~= "en" then return end
LANG = l
for _, f in ipairs(bindings) do pcall(f) end
end
local Notify, RefreshAccent, SelectTab
local CurrentTab = 1
local AlliesLabel, KillLabel
--// ROOT GUI
local ScreenGui = New("ScreenGui", {
Name = "NOVA_" .. HttpService:GenerateGUID(false):sub(1, 8),
ResetOnSpawn = false, IgnoreGuiInset = true,
ZIndexBehavior = Enum.ZIndexBehavior.Sibling, DisplayOrder = 999999,
})
do
local mounted = false
if gethui then
local ok, parent = pcall(gethui)
if ok and parent then
local ok2 = pcall(function() ScreenGui.Parent = parent end)
mounted = ok2 and ScreenGui.Parent == parent
end
end
if not mounted then
local ok = pcall(function() ScreenGui.Parent = game:GetService("CoreGui") end)
if not ok or not ScreenGui.Parent then ScreenGui.Parent = LP:WaitForChild("PlayerGui") end
end
end
local Scale = New("UIScale", { Scale = 0.9 })
local Main = New("Frame", {
AnchorPoint = Vector2.new(0.5, 0.5), Position = UDim2.fromScale(0.5, 0.5),
Size = UDim2.fromOffset(620, 440), BackgroundColor3 = Theme.Bg,
BorderSizePixel = 0, ClipsDescendants = true, Active = true, Parent = ScreenGui,
}, { Scale, Corner(12) })
New("UIStroke", { Color = Theme.Stroke, Thickness = 1, Transparency = 0.15, Parent = Main })
New("Frame", {
Size = UDim2.fromScale(1, 1), BackgroundColor3 = Color3.fromRGB(255, 255, 255), Parent = Main,
}, {
New("UIGradient", {
Rotation = 16,
Color = ColorSequence.new(Color3.fromRGB(255, 255, 255), Color3.fromRGB(190, 190, 220)),
Transparency = NumberSequence.new({
NumberSequenceKeypoint.new(0, 0.97),
NumberSequenceKeypoint.new(1, 0.93),
}),
}),
})
--// PARTICLES
local ParticleLayer = New("Frame", { Size = UDim2.fromScale(1, 1), BackgroundTransparency = 1, Parent = Main })
local Particles = {}
for i = 1, 20 do
local size = math.random(1, 3)
local obj = New("Frame", {
Size = UDim2.fromOffset(size, size), Position = UDim2.fromScale(math.random(), math.random()),
BackgroundColor3 = i % 2 == 0 and Theme.Accent or Color3.fromRGB(120, 89, 58),
BackgroundTransparency = 0.78, BorderSizePixel = 0, Parent = ParticleLayer,
}, { Corner(size) })
local a = math.random() * math.pi * 2
Particles[#Particles + 1] = { Obj = obj, X = math.cos(a), Y = math.sin(a) }
end
Bind(RunService.RenderStepped, function(dt)
ParticleLayer.Visible = running and CFG.Particles and Main.Visible and not minimized
if not ParticleLayer.Visible then return end
for _, p in ipairs(Particles) do
local old = p.Obj.Position
local x = old.X.Scale + p.X * dt * 4.2
local y = old.Y.Scale + p.Y * dt * 4.2
if x 1 then x = 0 end
if y 1 then y = 0 end
p.Obj.Position = UDim2.fromScale(x, y)
end
end)
--// TOPBAR
local Topbar = New("Frame", { Size = UDim2.new(1, 0, 0, 44), BackgroundTransparency = 1, Active = true, Parent = Main })
local Dot = Tag(New("Frame", {
Position = UDim2.fromOffset(16, 15), Size = UDim2.fromOffset(14, 14),
BackgroundColor3 = Theme.Accent, Parent = Topbar,
}, { Corner(7) }), "bg")
New("Frame", {
Position = UDim2.fromOffset(3, 3), Size = UDim2.fromOffset(8, 8),
BackgroundColor3 = Color3.fromRGB(255, 255, 255), BackgroundTransparency = 0.55, Parent = Dot,
}, { Corner(4) })
New("TextLabel", {
Position = UDim2.fromOffset(40, 0), Size = UDim2.fromOffset(90, 44), BackgroundTransparency = 1,
Text = "NOVA", TextColor3 = Theme.Text, TextSize = 16,
Font = Enum.Font.GothamBlack, TextXAlignment = Enum.TextXAlignment.Left, Parent = Topbar,
})
New("TextLabel", {
Position = UDim2.fromOffset(96, 0), Size = UDim2.fromOffset(220, 44), BackgroundTransparency = 1,
Text = "· simple rebuild", TextColor3 = Theme.TextDim, TextSize = 13,
Font = Enum.Font.GothamMedium, TextXAlignment = Enum.TextXAlignment.Left, Parent = Topbar,
})
local KeyHint = New("TextLabel", {
AnchorPoint = Vector2.new(1, 0.5), Position = UDim2.new(1, -104, 0.5, 0), Size = UDim2.fromOffset(84, 24),
BackgroundColor3 = Theme.Bg2, BackgroundTransparency = 0.4, Text = CFG.GuiKey.Name,
TextColor3 = Theme.TextDim, TextSize = 11, Font = Enum.Font.GothamBold, Parent = Topbar,
}, { Corner(6) })
local MinBtn = New("TextButton", {
AnchorPoint = Vector2.new(1, 0.5), Position = UDim2.new(1, -68, 0.5, 0), Size = UDim2.fromOffset(26, 26),
BackgroundColor3 = Theme.Bg2, BackgroundTransparency = 0.4, Text = "—",
TextColor3 = Theme.TextDim, TextSize = 14, Font = Enum.Font.GothamBold, AutoButtonColor = false, Parent = Topbar,
}, { Corner(13) })
local CloseBtn = New("TextButton", {
AnchorPoint = Vector2.new(1, 0.5), Position = UDim2.new(1, -36, 0.5, 0), Size = UDim2.fromOffset(26, 26),
BackgroundColor3 = Theme.Bg2, BackgroundTransparency = 0.4, Text = "×",
TextColor3 = Theme.TextDim, TextSize = 15, Font = Enum.Font.GothamBold, AutoButtonColor = false, Parent = Topbar,
}, { Corner(13) })
--// BODY
local Body = New("Frame", {
Position = UDim2.fromOffset(0, 44), Size = UDim2.new(1, 0, 1, -44),
BackgroundTransparency = 1, Parent = Main,
})
local Sidebar = New("Frame", {
Size = UDim2.new(0, 152, 1, 0), BackgroundTransparency = 1, Parent = Body,
}, {
New("UIListLayout", { Padding = UDim.new(0, 4), HorizontalAlignment = Enum.HorizontalAlignment.Center, SortOrder = Enum.SortOrder.LayoutOrder }),
New("UIPadding", { PaddingTop = UDim.new(0, 10) }),
})
New("Frame", { Position = UDim2.fromOffset(152, 0), Size = UDim2.new(0, 1, 1, 0), BackgroundColor3 = Theme.Bg3, BackgroundTransparency = 0.5, Parent = Body })
local Content = New("Frame", { Position = UDim2.fromOffset(153, 0), Size = UDim2.new(1, -153, 1, 0), BackgroundTransparency = 1, Parent = Body })
--// PAGES + NAV — вкладка Мир удалена, добавлена Бой
local Pages, TabBtns = {}, {}
local NavInfo = {
{ id = "team", key = "tab_team", glyph = "◈" },
{ id = "combat", key = "tab_combat", glyph = "✦" },
{ id = "visuals", key = "tab_visuals", glyph = "◉" },
{ id = "head", key = "tab_head", glyph = "◎" },
{ id = "config", key = "tab_config", glyph = "⚙" },
}
local function MakePage(id)
local page = New("ScrollingFrame", {
Size = UDim2.fromScale(1, 1), BackgroundTransparency = 1, BorderSizePixel = 0, Visible = false,
ScrollBarThickness = 3, ScrollBarImageColor3 = Theme.Stroke,
CanvasSize = UDim2.new(), AutomaticCanvasSize = Enum.AutomaticSize.Y, Parent = Content,
}, {
New("UIListLayout", { Padding = UDim.new(0, 10), SortOrder = Enum.SortOrder.LayoutOrder }),
New("UIPadding", { PaddingLeft = UDim.new(0, 10), PaddingRight = UDim.new(0, 14), PaddingTop = UDim.new(0, 12), PaddingBottom = UDim.new(0, 14) }),
})
Pages[id] = page
return page
end
for _, n in ipairs(NavInfo) do MakePage(n.id) end
local function MakeTab(info, order)
local btn = New("TextButton", {
Size = UDim2.new(1, -16, 0, 38), BackgroundColor3 = Theme.Bg2, BackgroundTransparency = 1,
Text = "", AutoButtonColor = false, LayoutOrder = order, Parent = Sidebar,
}, { Corner(9) })
local ind = Tag(New("Frame", {
Size = UDim2.new(0, 3, 0, 16), Position = UDim2.new(0, 0, 0.5, 0),
BackgroundColor3 = Theme.Accent, BackgroundTransparency = 1, Parent = btn,
}, { Corner(2) }), "bg")
New("TextLabel", {
Position = UDim2.fromOffset(15, 0), Size = UDim2.fromOffset(22, 38), BackgroundTransparency = 1,
Text = info.glyph, TextColor3 = Theme.TextDim, TextSize = 15, Font = Enum.Font.GothamBold, Parent = btn,
})
local lbl = New("TextLabel", {
Position = UDim2.fromOffset(43, 0), Size = UDim2.new(1, -50, 1, 0), BackgroundTransparency = 1,
TextColor3 = Theme.TextDim, TextSize = 13, Font = Enum.Font.GothamMedium,
TextXAlignment = Enum.TextXAlignment.Left, Parent = btn,
})
bind(function() lbl.Text = tr(info.key) end)
btn.MouseEnter:Connect(function() if CurrentTab ~= order then TweenService:Create(btn, TI(0.15), { BackgroundTransparency = 0.6 }):Play() end end)
btn.MouseLeave:Connect(function() if CurrentTab ~= order then TweenService:Create(btn, TI(0.15), { BackgroundTransparency = 1 }):Play() end end)
btn.MouseButton1Click:Connect(function() SelectTab(order) end)
TabBtns[order] = { Btn = btn, Ind = ind, Lbl = lbl }
end
for i, n in ipairs(NavInfo) do MakeTab(n, i) end
function SelectTab(i)
CurrentTab = i
for j = 1, #NavInfo do
local active = (j == i)
Pages[NavInfo[j].id].Visible = active
local t = TabBtns[j]
TweenService:Create(t.Ind, TI(0.25), { BackgroundTransparency = active and 0 or 1 }):Play()
TweenService:Create(t.Lbl, TI(0.25), { TextColor3 = active and Theme.Accent or Theme.TextDim }):Play()
TweenService:Create(t.Btn, TI(0.25), { BackgroundTransparency = active and 0.6 or 1 }):Play()
end
end
--// COMPONENTS
local function Row(parent, height)
local row = New("TextButton", {
Size = UDim2.new(1, 0, 0, height or 36), BackgroundColor3 = Theme.Bg2,
BackgroundTransparency = 0.35, Text = "", AutoButtonColor = false, Parent = parent,
}, { Corner(8) })
row.MouseEnter:Connect(function() TweenService:Create(row, TI(0.13), { BackgroundTransparency = 0.08 }):Play() end)
row.MouseLeave:Connect(function() TweenService:Create(row, TI(0.18), { BackgroundTransparency = 0.35 }):Play() end)
return row
end
local function Section(page, titleKey)
local holder = New("Frame", { Size = UDim2.new(1, 0, 0, 26), BackgroundTransparency = 1, Parent = page })
Tag(New("Frame", {
Position = UDim2.fromOffset(0, 13), Size = UDim2.fromOffset(3, 12),
BackgroundColor3 = Theme.Accent, BackgroundTransparency = 0.35, Parent = holder,
}, { Corner(2) }), "bg")
local l = New("TextLabel", {
Position = UDim2.fromOffset(11, 0), Size = UDim2.new(1, -11, 1, 0), BackgroundTransparency = 1,
TextColor3 = Theme.TextDim, TextSize = 11, Font = Enum.Font.GothamBold,
TextXAlignment = Enum.TextXAlignment.Left, Parent = holder,
})
bind(function() l.Text = tr(titleKey):upper() end)
end
local function Label(page, textKey)
local l = New("TextLabel", {
Size = UDim2.new(1, 0, 0, 20), BackgroundTransparency = 1,
TextColor3 = Theme.TextDim, TextSize = 11, Font = Enum.Font.Gotham,
TextXAlignment = Enum.TextXAlignment.Left, TextTransparency = 0.15, TextWrapped = true, Parent = page,
})
bind(function() l.Text = tr(textKey) end)
return l
end
local function Toggle(page, nameKey, key, callback)
local row = Row(page)
local lbl = New("TextLabel", {
Position = UDim2.fromOffset(12, 0), Size = UDim2.new(1, -80, 1, 0), BackgroundTransparency = 1,
TextColor3 = Theme.Text, TextSize = 13, Font = Enum.Font.GothamMedium,
TextXAlignment = Enum.TextXAlignment.Left, Parent = row,
})
bind(function() lbl.Text = tr(nameKey) end)
local sw = New("Frame", {
AnchorPoint = Vector2.new(1, 0.5), Position = UDim2.new(1, -10, 0.5, 0), Size = UDim2.fromOffset(36, 19),
BackgroundColor3 = Theme.Bg3, Parent = row,
}, { Corner(10), New("UIStroke", { Color = Theme.Stroke, Thickness = 1 }) })
local knob = New("Frame", {
AnchorPoint = Vector2.new(0, 0.5), Position = UDim2.new(0, 2.5, 0.5, 0), Size = UDim2.fromOffset(14, 14),
BackgroundColor3 = Theme.TextDim, ZIndex = 2, Parent = sw,
}, { Corner(7) })
local function render(instant)
local state = CFG[key] == true
local t = TweenInfo.new(instant and 0 or 0.28, Enum.EasingStyle.Quint, Enum.EasingDirection.Out)
TweenService:Create(sw, t, { BackgroundColor3 = state and Theme.Accent or Theme.Bg3 }):Play()
TweenService:Create(knob, t, {
Position = state and UDim2.new(1, -16.5, 0.5, 0) or UDim2.new(0, 2.5, 0.5, 0),
BackgroundColor3 = state and Color3.fromRGB(255, 255, 255) or Theme.TextDim,
}):Play()
end
row.MouseButton1Click:Connect(function()
CFG[key] = not CFG[key]
render()
if callback then callback(CFG[key]) end
end)
render(true)
end
local function Slider(page, nameKey, key, mn, mx, step, callback)
local row = Row(page, 48)
local lbl = New("TextLabel", {
Position = UDim2.fromOffset(12, 0), Size = UDim2.new(1, -90, 0, 26), BackgroundTransparency = 1,
TextColor3 = Theme.Text, TextSize = 13, Font = Enum.Font.GothamMedium,
TextXAlignment = Enum.TextXAlignment.Left, Parent = row,
})
bind(function() lbl.Text = tr(nameKey) end)
local val = Tag(New("TextLabel", {
AnchorPoint = Vector2.new(1, 0), Position = UDim2.new(1, -12, 0, 0), Size = UDim2.fromOffset(80, 26),
BackgroundTransparency = 1, TextColor3 = Theme.Accent, TextSize = 12, Font = Enum.Font.GothamBold,
TextXAlignment = Enum.TextXAlignment.Right, Parent = row,
}), "text")
local track = New("Frame", {
AnchorPoint = Vector2.new(0, 1), Position = UDim2.new(0, 12, 1, -10), Size = UDim2.new(1, -24, 0, 4),
BackgroundColor3 = Theme.Bg3, Parent = row,
}, { Corner(2) })
local fill = Tag(New("Frame", { BackgroundColor3 = Theme.Accent, Parent = track }, { Corner(2) }), "bg")
local knob = New("Frame", {
AnchorPoint = Vector2.new(0.5, 0.5), Size = UDim2.fromOffset(11, 11),
BackgroundColor3 = Color3.fromRGB(255, 255, 255), ZIndex = 2, Parent = track,
}, { Corner(5), New("UIStroke", { Color = Theme.Stroke, Thickness = 1 }) })
local dragging = false
local function set(v)
v = math.clamp(v, mn, mx)
v = math.floor(v / step + 0.5) * step
v = tonumber(string.format("%.3f", v)) or mn
CFG[key] = v
local rel = (v - mn) / (mx - mn)
fill.Size = UDim2.new(rel, 0, 1, 0)
knob.Position = UDim2.new(rel, 0, 0.5, 0)
val.Text = step < 1 and string.format("%.2f", v) or tostring(math.floor(v))
if callback then callback(v) end
end
local function fromX(px)
if track.AbsoluteSize.X <= 0 then return end
local rel = math.clamp((px - track.AbsolutePosition.X) / track.AbsoluteSize.X, 0, 1)
set(mn + (mx - mn) * rel)
end
track.InputBegan:Connect(function(inp)
if inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.Touch then
dragging = true
fromX(inp.Position.X)
end
end)
Bind(UserInputService.InputEnded, function(inp)
if inp.UserInputType == Enum.UserInputType.MouseButton1 or inp.UserInputType == Enum.UserInputType.Touch then
dragging = false
end
end)
Bind(UserInputService.InputChanged, function(inp)
if dragging and (inp.UserInputType == Enum.UserInputType.MouseMovement or inp.UserInputType == Enum.UserInputType.Touch) then
fromX(inp.Position.X)
end
end)
set(CFG[key])
end
--// COLOR PICKER
local function ColorPicker(page, nameKey, key, callback)
local container = New("Frame", {
Size = UDim2.new(1, 0, 0, 36), BackgroundTransparency = 1,
ClipsDescendants = true, Parent = page,
})
local header = Row(container)
local lbl = New("TextLabel", {
Position = UDim2.fromOffset(12, 0), Size = UDim2.new(1, -110, 1, 0), BackgroundTransparency = 1,
TextColor3 = Theme.Text, TextSize = 13, Font = Enum.Font.GothamMedium,
TextXAlignment = Enum.TextXAlignment.Left, Parent = header,
})
bind(function() lbl.Text = tr(nameKey) end)
local chip = New("Frame", {
AnchorPoint = Vector2.new(1, 0.5), Position = UDim2.new(1, -32, 0.5, 0), Size = UDim2.fromOffset(22, 22),
BackgroundColor3 = CFG[key], Parent = header,
}, { Corner(6), New("UIStroke", { Color = Theme.Stroke, Thickness = 1 }) })
local chev = New("TextLabel", {
AnchorPoint = Vector2.new(1, 0.5), Position = UDim2.new(1, -10, 0.5, 0), Size = UDim2.fromOffset(16, 16),
BackgroundTransparency = 1, Text = "▾", TextColor3 = Theme.TextDim, TextSize = 12,
Font = Enum.Font.GothamBold, Parent = header,
})
local body = New("Frame", {
Position = UDim2.fromOffset(0, 40), Size = UDim2.new(1, 0, 0, 178),
BackgroundTransparency = 1, Parent = container,
})
local sv = New("Frame", {
Size = UDim2.new(1, 0, 0, 146), BackgroundColor3 = Color3.fromHSV(0, 1, 1), Parent = body,
}, { Corner(8), New("UIStroke", { Color = Theme.Stroke, Thickness = 1 }) })
New("Frame", {
Size = UDim2.fromScale(1, 1), BackgroundColor3 = Color3.new(1, 1, 1), Parent = sv,
}, {
Corner(8),
New("UIGradient", {
Rotation = 0,
Transparency = NumberSequence.new({
NumberSequenceKeypoint.new(0, 0),
NumberSequenceKeypoint.new(1, 1),
}),
}),
})
New("Frame", {
Size = UDim2.fromScale(1, 1), BackgroundColor3 = Color3.new(0, 0, 0), ZIndex = 2, Parent = sv,
}, {
Corner(8),
New("UIGradient", {
Rotation = 90,
Transparency = NumberSequence.new({
NumberSequenceKeypoint.new(0, 1),
NumberSequenceKeypoint.new(1, 0),
}),
}),
})
local svKnob = New("Frame", {
AnchorPoint = Vector2.new(0.5, 0.5), Size = UDim2.fromOffset(12, 12),
BackgroundColor3 = Color3.new(1, 1, 1), ZIndex = 3, Parent = sv,
}, { Corner(6), New("UIStroke", { Color = Color3.new(0, 0, 0), Thickness = 1.5, Transparency = 0.3 }) })
local hue = New("Frame", {
AnchorPoint = Vector2.new(0, 1), Position = UDim2.new(0, 0, 1, 0), Size = UDim2.new(1, 0, 0, 18),
Parent = body,
}, { Corner(6), New("UIGradient", {
Rotation = 0,
Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 0, 0)),
ColorSequenceKeypoint.new(0.17, Color3.fromRGB(255, 255, 0)),
ColorSequenceKeypoint.new(0.33, Color3.fromRGB(0, 255, 0)),
ColorSequenceKeypoint.new(0.5, Color3.fromRGB(0, 255, 255)),
ColorSequenceKeypoint.new(0.67, Color3.fromRGB(0, 0, 255)),
ColorSequenceKeypoint.new(0.83, Color3.fromRGB(255, 0, 255)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 0, 0)),
}),
}) })
local hueKnob = New("Frame", {
AnchorPoint = Vector2.new(0.5, 0.5), Size = UDim2.fromOffset(5, 24),
BackgroundColor3 = Color3.new(1, 1, 1), ZIndex = 2, Parent = hue,
}, { Corner(2), New("UIStroke", { Color = Theme.Stroke, Thickness = 1 }) })
local h, s, v = CFG[key]:ToHSV()
local function apply()
CFG[key] = Color3.fromHSV(h, s, v)
chip.BackgroundColor3 = CFG[key]
sv.BackgroundColor3 = Color3.fromHSV(h, 1, 1)
svKnob.Position = UDim2.new(s, 0, 1 - v, 0)
hueKnob.Position = UDim2.new(h, 0, 0.5, 0)
if callback then callback(CFG[key]) end
end
local dragSV, dragH = false, false
local function updSV(pos)
if sv.AbsoluteSize.X <= 0 or sv.AbsoluteSize.Y <= 0 then return end
s = math.clamp((pos.X - sv.AbsolutePosition.X) / sv.AbsoluteSize.X, 0, 1)
v = 1 - math.clamp((pos.Y - sv.AbsolutePosition.Y) / sv.AbsoluteSize.Y, 0, 1)
apply()
end
local function updH(pos)
if hue.AbsoluteSize.X = 0.5 then
fpsValue = fpsFrames / (os.clock() - fpsLast)
fpsFrames, fpsLast = 0, os.clock()
end
end)
local Wm = New("TextLabel", {
Position = UDim2.fromOffset(12, 8), Size = UDim2.fromOffset(320, 20), BackgroundTransparency = 1,
TextColor3 = Theme.TextDim, TextTransparency = 0.25, TextSize = 12,
Font = Enum.Font.GothamMedium, TextXAlignment = Enum.TextXAlignment.Left, Parent = ScreenGui,
})
Bind(RunService.RenderStepped, function()
Wm.Text = "NOVA · " .. math.floor(fpsValue + 0.5) .. " fps"
end)
--============================================================
-- FEATURES
--============================================================
local function getRoot(player)
local c = player and player.Character
if not c then return nil end
return c:FindFirstChild("HumanoidRootPart") or c:FindFirstChild("UpperTorso") or c:FindFirstChild("Torso")
end
local function getHP(player)
local c = player and player.Character
if not c then return 0 end
local hum = c:FindFirstChildOfClass("Humanoid")
if hum then return hum.Health end
local hp = c:GetAttribute("Health") or c:GetAttribute("HP")
if typeof(hp) == "number" then return hp end
return getRoot(player) and 100 or 0
end
local function alive(player) return getHP(player) > 0 end
--// TEAM
local roundTeam, mySpawnPoint, scanning = {}, nil, false
local ATTRIBUTE_KEYS = { "Team", "TeamId", "TeamID", "Side", "Faction" }
local function standardTeammate(a, b)
if not a or not b then return false end
if a.Team and b.Team then return a.Team == b.Team end
if not a.Neutral and not b.Neutral and a.TeamColor and b.TeamColor then
return a.TeamColor == b.TeamColor
end
for _, key in ipairs(ATTRIBUTE_KEYS) do
local x, y = a:GetAttribute(key), b:GetAttribute(key)
if x ~= nil and y ~= nil then return tostring(x) == tostring(y) end
end
return false
end
local function teammate(plr)
if plr == LP then return true end
if standardTeammate(LP, plr) then return true end
return roundTeam[plr] == true
end
local function validTarget(plr)
if plr == LP or not alive(plr) then return false end
if CFG.TeamCheck and teammate(plr) then return false end
return true
end
local function refreshCounter()
if AlliesLabel then
local n = 0
for _ in pairs(roundTeam) do n += 1 end
AlliesLabel.Text = tr("allies") .. ": " .. n .. (scanning and " · …" or "")
end
end
local function startScan(seconds)
if scanning then return end
scanning = true
task.spawn(function()
table.clear(roundTeam)
local root = getRoot(LP)
if root then mySpawnPoint = root.Position end
local t0 = os.clock()
while os.clock() - t0 < seconds do
local mr = getRoot(LP)
if mr then
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LP and not roundTeam[plr] and alive(plr) then
local r = getRoot(plr)
if r and (r.Position - mr.Position).Magnitude <= CFG.TeamRadius then
roundTeam[plr] = true
end
end
end
end
task.wait(0.25)
end
scanning = false
local n = 0
for _ in pairs(roundTeam) do n += 1 end
Notify(tr("sec_team"), tr("scan_done") .. n, 3)
refreshCounter()
end)
end
--// ESP
local ESP = {}
local ESPremove
local HLFolder = New("Folder", { Name = "NOVA_HL_" .. math.random(1000, 9999), Parent = workspace })
ESPremove = function(plr)
local d = ESP[plr]
if not d then return end
pcall(function() d.Highlight:Destroy() end)
pcall(function() d.HeadHL:Destroy() end)
pcall(function() d.Box:Destroy() end)
pcall(function() d.Gui:Destroy() end)
ESP[plr] = nil
end
local function ensureESP(plr)
if plr == LP then return end
local char = plr.Character
if not char then return end
local ex = ESP[plr]
if ex and ex.Char == char then return end
if ex then ESPremove(plr) end
local head = char:FindFirstChild("Head") or char:FindFirstChild("HumanoidRootPart")
if not head then return end
local hl = New("Highlight", {
Adornee = char, DepthMode = Enum.HighlightDepthMode.AlwaysOnTop,
FillTransparency = 0.75, OutlineTransparency = 0.1, Enabled = false, Parent = char,
})
local headHL = New("Highlight", {
Adornee = head, DepthMode = Enum.HighlightDepthMode.AlwaysOnTop,
FillTransparency = 0.85, OutlineTransparency = 0.05, Enabled = false, Parent = HLFolder,
})
local box = New("BoxHandleAdornment", {
Adornee = head, AlwaysOnTop = true, ZIndex = 10, Size = head.Size,
Transparency = 0.6, Visible = false, Parent = HLFolder,
})
local bill = New("BillboardGui", {
Adornee = head, Size = UDim2.fromOffset(200, 40),
StudsOffset = Vector3.new(0, 2.4, 0), AlwaysOnTop = true, Enabled = false, Parent = HLFolder,
})
local nameL = New("TextLabel", {
Size = UDim2.new(1, 0, 0, 14), BackgroundTransparency = 1,
Font = Enum.Font.GothamBold, TextSize = 13, TextStrokeTransparency = 0.3, Parent = bill,
})
local hpBg = New("Frame", {
AnchorPoint = Vector2.new(0.5, 0), Position = UDim2.new(0.5, 0, 0, 17),
Size = UDim2.new(1, -40, 0, 4), BackgroundColor3 = Color3.fromRGB(10, 10, 14),
BackgroundTransparency = 0.25, Parent = bill,
}, { Corner(2) })
local hp = New("Frame", {
AnchorPoint = Vector2.new(0, 1), Position = UDim2.new(0, 0, 1, 0),
Size = UDim2.fromScale(1, 1), BackgroundColor3 = Theme.Green, Parent = hpBg,
}, { Corner(2) })
local distL = New("TextLabel", {
Position = UDim2.new(0, 0, 0, 24), Size = UDim2.new(1, 0, 0, 12), BackgroundTransparency = 1,
Font = Enum.Font.GothamMedium, TextSize = 11, TextColor3 = Theme.TextDim,
TextStrokeTransparency = 0.3, Parent = bill,
})
ESP[plr] = { Char = char, Head = head, Highlight = hl, HeadHL = headHL, Box = box,
Gui = bill, NameL = nameL, Hp = hp, HpBg = hpBg, DistL = distL }
end
local function updateESP()
local cam = workspace.CurrentCamera
if not cam then return end
for _, plr in ipairs(Players:GetPlayers()) do ensureESP(plr) end
for plr, d in pairs(ESP) do
local char = plr.Character
if not char then
ESPremove(plr)
else
local root = getRoot(plr)
local dist = root and (root.Position - cam.CFrame.Position).Magnitude or math.huge
local show = running and CFG.ESP and alive(plr)
and (not CFG.TeamCheck or not teammate(plr))
and dist 0.5 and Theme.Green
or hpv > 0.25 and Color3.fromRGB(255, 215, 60)
or Theme.Red
d.DistL.Visible = CFG.Distance
d.DistL.Text = math.floor(dist) .. (LANG == "ru" and " м" or " m")
end
end
end
end
--// HEAD EXPAND — при активном Kill All расширяет головы валидных целей даже с выключенным тумблером
local originalHeads = {}
local function restoreOneHead(head)
local o = originalHeads[head]
if not o then return end
originalHeads[head] = nil
if head.Parent then
pcall(function()
head.Size = o.Size
head.Transparency = o.Transparency
head.CanCollide = o.CanCollide
head.Massless = o.Massless
end)
end
end
local function restoreHeads()
for head in pairs(originalHeads) do restoreOneHead(head) end
end
--// KILL ALL — состояние
local KillAll = { Active = false, holding = false, lastClick = 0, kills = 0, current = nil, lastHP = 0, aimed = false }
local function refreshKill()
if KillLabel then
KillLabel.Text = tr("killed") .. ": " .. KillAll.kills
end
end
local function headPass()
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LP then
local char = plr.Character
local head = char and char:FindFirstChild("Head")
if head then
local want = (CFG.HeadExpand or KillAll.Active) and validTarget(plr)
if want then
if not originalHeads[head] then
originalHeads[head] = {
Size = head.Size, Transparency = head.Transparency,
CanCollide = head.CanCollide, Massless = head.Massless,
}
end
local sz = CFG.HeadSize
if KillAll.Active then sz = math.max(sz, 10) end
pcall(function()
head.Size = Vector3.new(sz, sz, sz)
head.Transparency = CFG.HeadTransparency
head.CanCollide = false
head.Massless = true
end)
else
restoreOneHead(head)
end
end
end
end
end
--// FIRE INPUT — mouse1press при наличии, иначе VirtualUser
local function fireDown()
if type(mouse1press) == "function" then
pcall(mouse1press)
else
pcall(function()
VirtualUser:CaptureController()
VirtualUser:Button1Down(Vector2.new())
end)
end
end
local function fireUp()
if type(mouse1release) == "function" then
pcall(mouse1release)
else
pcall(function()
VirtualUser:CaptureController()
VirtualUser:Button1Up(Vector2.new())
end)
end
end
local function fireStop()
if KillAll.holding then
KillAll.holding = false
fireUp()
end
end
local VisParams = RaycastParams.new()
VisParams.FilterType = Enum.RaycastFilterType.Exclude
VisParams.IgnoreWater = true
local function headVisible(head)
local cam = workspace.CurrentCamera
if not cam then return false end
local chars = {}
for _, p in ipairs(Players:GetPlayers()) do
if p.Character then table.insert(chars, p.Character) end
end
VisParams.FilterDescendantsInstances = chars
local r = workspace:Raycast(cam.CFrame.Position, head.Position - cam.CFrame.Position, VisParams)
return r == nil
end
local function collectTargets()
local cam = workspace.CurrentCamera
if not cam then return {} end
local list = {}
for _, plr in ipairs(Players:GetPlayers()) do
if validTarget(plr) then
local char = plr.Character
local head = char and char:FindFirstChild("Head")
if head then
local root = getRoot(plr)
local d = root and (root.Position - cam.CFrame.Position).Magnitude or math.huge
table.insert(list, { Plr = plr, Head = head, Dist = d })
end
end
end
table.sort(list, function(a, b) return a.Dist < b.Dist end)
return list
end
--// АИМ Kill All — после камеры игры, чтобы её контроллер не перезаписывал прицел
RunService:BindToRenderStep("nova_aim", Enum.RenderPriority.Camera.Value + 1, function()
KillAll.aimed = false
if not running or not KillAll.Active then
fireStop()
return
end
local cam = workspace.CurrentCamera
if not cam then return end
local hum = LP.Character and LP.Character:FindFirstChildOfClass("Humanoid")
if not hum or hum.Health = CFG.FireDelay then
KillAll.lastClick = now
if KillAll.holding then
KillAll.holding = false
fireUp()
else
KillAll.holding = true
fireDown()
end
end
end)
--// АНТИ-ОТДАЧА
-- слой 1: компенсация вращения камеры в кадрах БЕЗ движения мыши (отдача = поворот не от игрока)
-- слой 2: зануление NumberValue с recoil/kick в имени внутри PlayerScripts и персонажа
local Recoil = { lastLook = nil, userMoved = false }
Bind(UserInputService.InputChanged, function(input)
if input.UserInputType == Enum.UserInputType.MouseMovement then
Recoil.userMoved = true
end
end)
RunService:BindToRenderStep("nova_recoil", Enum.RenderPriority.Camera.Value + 2, function()
local cam = workspace.CurrentCamera
if not cam then return end
local cur = cam.CFrame.LookVector
if not running or not CFG.NoRecoil or KillAll.aimed then
Recoil.lastLook = cur
Recoil.userMoved = false
return
end
local last = Recoil.lastLook
if not last or Recoil.userMoved then
Recoil.lastLook = cur
Recoil.userMoved = false
return
end
local dot = math.clamp(last:Dot(cur), -1, 1)
local angle = math.acos(dot)
if angle > 0.0004 and angle 1e-6 then
local corr = CFrame.fromAxisAngle(axis.Unit, -angle * (CFG.RecoilStrength / 100))
cam.CFrame = corr * cam.CFrame
end
end
Recoil.lastLook = cam.CFrame.LookVector
end)
task.spawn(function()
while running do
task.wait(0.5)
if CFG.NoRecoil then
local roots = {}
local ps = LP:FindFirstChild("PlayerScripts")
if ps then table.insert(roots, ps) end
if LP.Character then table.insert(roots, LP.Character) end
for _, root in ipairs(roots) do
for _, inst in ipairs(root:GetDescendants()) do
if inst:IsA("NumberValue") or inst:IsA("IntValue") then
local n = inst.Name:lower()
if n:find("recoil", 1, true) or n:find("kick", 1, true) then
if inst.Value ~= 0 then
pcall(function() inst.Value = 0 end)
end
end
end
end
end
end
end
end)
--// TEAM HOOKS
Bind(LP.CharacterAdded, function()
table.clear(roundTeam)
refreshCounter()
fireStop()
task.delay(0.15, function() if running then startScan(5) end end)
end)
local function hookSpawns(plr)
if plr == LP then return end
Bind(plr.CharacterAdded, function(char)
if scanning or not mySpawnPoint then return end
local hrp = char:WaitForChild("HumanoidRootPart", 3)
if hrp and (hrp.Position - mySpawnPoint).Magnitude = ap.X and mp.X = ap.Y and mp.Y 0 and -0.08 or 0.08), 0.6, 2.2)
end
end
end)
task.spawn(function() task.wait(0.25) load() end)
Bind(LP.CharacterAdded, function()
task.delay(0.8, function() if running then load() end end)
end)
Bind(RunService.RenderStepped, function()
if not (running and ready) then
mock.Visible = false
return
end
if vp.Visible then updateCam() end
-- демо ESP: живые цвета и тумблеры
local show = CFG.ESP
if prevBodyHL then
prevBodyHL.Enabled = show and CFG.Highlight
if show and CFG.Highlight then
prevBodyHL.FillColor = CFG.ESPColor
prevBodyHL.OutlineColor = CFG.ESPColor
end
end
if prevHeadHL then
prevHeadHL.Enabled = show and CFG.HeadBox
if show and CFG.HeadBox then
prevHeadHL.FillColor = CFG.HeadBoxColor
prevHeadHL.OutlineColor = CFG.HeadBoxColor
end
end
mock.Visible = show and previewHead ~= nil and vp.Visible
if mock.Visible then
mockName.Visible = CFG.Name
mockName.TextColor3 = CFG.ESPColor
mockHpBg.Visible = CFG.Health
mockDist.Visible = CFG.Distance
local hw = overlayHolder.AbsoluteSize.X
local okP, p = pcall(function()
return vcam:WorldToViewportPoint(previewHead.Position)
end)
if okP and typeof(p) == "Vector3" and hw > 0 then
mock.Position = UDim2.fromOffset(
math.clamp(p.X, 92, hw - 92),
math.clamp(p.Y - 16, 42, 192))
else
mock.Visible = false
end
end
end)
end
--============================================================
-- LOOPS
--============================================================
Bind(RunService.RenderStepped, updateESP)
local slowAcc = 0
Bind(RunService.Heartbeat, function(dt)
slowAcc += dt
if slowAcc < 0.3 then return end
slowAcc = 0
if not running then return end
headPass()
refreshCounter()
refreshKill()
-- счётчик убийств: текущая цель умерла под Kill All
if KillAll.Active and KillAll.current then
local hp = getHP(KillAll.current)
if hp 0 then
KillAll.kills += 1
refreshKill()
end
KillAll.lastHP = hp
if hp 0 then
local vp = cam.ViewportSize
out = p.X < 0 or p.Y vp.X or (p.Y + s.Y) > vp.Y
end
end
SetHome(out)
end)
homeClick.MouseButton1Click:Connect(function()
if not Main.Visible then
SetOpen(true)
end
TweenService:Create(Main, TweenInfo.new(0.55, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
Position = UDim2.fromScale(0.5, 0.5),
}):Play()
end)
Bind(UserInputService.InputBegan, function(input, gpe)
if gpe then return end
if input.KeyCode == CFG.GuiKey then SetOpen(not isOpen) end
if input.KeyCode == Enum.KeyCode.Delete then Unload() end
end)
--// DRAG
do
local dragging, dragStart, startPos = false, nil, nil
Topbar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = Main.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then dragging = false end
end)
end
end)
Bind(UserInputService.InputChanged, function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
local delta = input.Position - dragStart
Main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
end)
end
--// INIT
SelectTab(3)
refreshKill()
Notify("NOVA", tr("loaded"), 4)
No comments yet. Be the first!