M
Description
best free keyless brisk survival script, external vip. join the discord to stay updated and get full version!: https://discord.gg/EN6YnuCjYV
GAME[2x SERVERS] Brisk Survival V1
UPDATEDOct 21, 2026
ACCESSKeyless
PLATFORMDesktop
Script source Luau
-- [[ BloxScripts Risk Notice ]]
-- This script has not been verified by BloxScripts.fun. Deal with caution.
--
-- Stay safe:
-- • Never log in on unofficial Roblox sites or lookalike domains.
-- • Real Roblox links use roblox.com (check the .com ending).
-- • Treat fake Roblox login / "claim reward" pages as phishing.
-- [[ End BloxScripts Risk Notice ]]
--[[
brisk.survival
FREE VERSION (LIMITED EDITION)
⚠️ THIS IS THE FREE VERSION ⚠️
The FULL version is completely FREE in our Discord:
→ https://discord.gg/EN6YnuCjYV
→ Verify, then grab the full build from #releases
This free version has:
- Only 2 pages (Aimbot + Visuals)
- Half the features locked behind Discord
- Features that "work" but not really
- An annoying popup every 30 seconds telling you to join Discord
- "Premium" features that just show a "JOIN DISCORD" message
Full version (all FREE) includes:
- Real Aimbot with prediction / smoothness / silent aim
- Full ESP (skeleton, weapon, off-screen arrows)
- Gun glow, world tinter, misc, configs
- Map teleport, car fly, hit sounds, hit notifier
- No watermarks, no limits
→ https://discord.gg/EN6YnuCjYV
]]
local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local RunService = game:GetService("RunService")
local HttpService = game:GetService("HttpService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SoundService = game:GetService("SoundService")
local Lighting = game:GetService("Lighting")
local Debris = game:GetService("Debris")
local GuiService = game:GetService("GuiService")
local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")
local mouse = LocalPlayer:GetMouse()
local Camera = workspace.CurrentCamera
--============================================================--
-- DISCORD CONFIG
--============================================================--
local DISCORD_LINK = "https://discord.gg/EN6YnuCjYV"
local DISCORD_DISPLAY = "discord.gg/EN6YnuCjYV"
--============================================================--
-- THEME (intentionally worse than the full version)
--============================================================--
local Theme = {
Background = Color3.fromRGB(20, 20, 20),
Sidebar = Color3.fromRGB(25, 25, 25),
Panel = Color3.fromRGB(30, 30, 30),
Panel2 = Color3.fromRGB(35, 35, 35),
Border = Color3.fromRGB(50, 50, 50),
BorderLight = Color3.fromRGB(70, 70, 70),
Cyan = Color3.fromRGB(100, 180, 220),
Pink = Color3.fromRGB(200, 130, 180),
Green = Color3.fromRGB(100, 200, 100),
Red = Color3.fromRGB(220, 80, 80),
Yellow = Color3.fromRGB(220, 200, 80),
White = Color3.fromRGB(220, 220, 220),
Text = Color3.fromRGB(180, 180, 180),
SubText = Color3.fromRGB(120, 120, 120),
Muted = Color3.fromRGB(80, 80, 80),
Disabled = Color3.fromRGB(40, 40, 40),
}
local ACCENT = Theme.Cyan
local WINDOW_WIDTH = 700
local WINDOW_HEIGHT = 480
local SIDEBAR_WIDTH = 180
local CARD_GAP = 10
local CARD_HEIGHT = 200
--============================================================--
-- SOUNDS (bad quality)
--============================================================--
local SFX = {}
local sfxEnabled = true
local function makeSfx(id, volume, pitch)
local s = Instance.new("Sound")
s.SoundId = id
s.Volume = volume or 0.5
s.PlaybackSpeed = pitch or 1
s.Parent = SoundService
return s
end
SFX.ToggleOn = makeSfx("rbxassetid://6895079853", 0.2, 1.5)
SFX.ToggleOff = makeSfx("rbxassetid://6895079853", 0.2, 0.7)
SFX.Error = makeSfx("rbxassetid://5043539486", 0.3, 0.5)
local function playSfx(sound)
if not sfxEnabled or not sound then return end
task.spawn(function()
local clone = sound:Clone()
clone.Parent = SoundService
clone:Play()
task.delay(2, function() if clone then clone:Destroy() end end)
end)
end
local oldGui = PlayerGui:FindFirstChild("brisk_survival_free")
if oldGui then oldGui:Destroy() end
local oldNotifs = PlayerGui:FindFirstChild("brisk_survival_free_notifs")
if oldNotifs then oldNotifs:Destroy() end
--============================================================--
-- HELPERS
--============================================================--
local function New(className, properties, parent)
local object = Instance.new(className)
for property, value in pairs(properties or {}) do
object[property] = value
end
object.Parent = parent
return object
end
local function Corner(object, radius)
local r = radius
if r == "pill" then r = math.huge
elseif r == nil then r = 4 end
local corner = Instance.new("UICorner")
if r == math.huge then
corner.CornerRadius = UDim.new(1, 0)
else
corner.CornerRadius = UDim.new(0, r)
end
corner.Parent = object
return corner
end
local function Outline(object, color, thickness, transparency)
local stroke = Instance.new("UIStroke")
stroke.Color = color or Theme.Border
stroke.Thickness = thickness or 1
stroke.Transparency = transparency or 0
stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
stroke.Parent = object
return stroke
end
local function Tween(object, properties, duration)
local tween = TweenService:Create(
object,
TweenInfo.new(duration or 0.15, Enum.EasingStyle.Quad, Enum.EasingDirection.Out),
properties
)
tween:Play()
return tween
end
local function Label(parent, text, position, size, textSize, color)
return New("TextLabel", {
Position = position,
Size = size,
BackgroundTransparency = 1,
Text = text,
Font = Enum.Font.SourceSans,
TextSize = textSize or 10,
TextColor3 = color or Theme.Text,
TextXAlignment = Enum.TextXAlignment.Left,
TextYAlignment = Enum.TextYAlignment.Center,
}, parent)
end
--============================================================--
-- FLAGS + OPTIONS
--============================================================--
local Flags = {}
local Options = {}
local function registerConfig(flag, type, changeState, oldargs)
Options[flag] = { type = type, changeState = changeState, oldargs = oldargs or {} }
end
--============================================================--
-- DISCORD GATE GUI
--============================================================--
local GateGui = New("ScreenGui", {
Name = "brisk_survival_free_gate",
ResetOnSpawn = false,
IgnoreGuiInset = true,
DisplayOrder = 2000,
ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
}, PlayerGui)
local GateMain = New("Frame", {
Name = "Gate",
Size = UDim2.fromOffset(500, 420),
Position = UDim2.new(0.5, -250, 0.5, -210),
BackgroundColor3 = Color3.fromRGB(25, 25, 30),
BorderSizePixel = 0,
}, GateGui)
Corner(GateMain, 10)
Outline(GateMain, Color3.fromRGB(88, 101, 242), 2)
local DiscordLogo = New("Frame", {
Position = UDim2.new(0.5, -40, 0, 25),
Size = UDim2.fromOffset(80, 80),
BackgroundColor3 = Color3.fromRGB(88, 101, 242),
BorderSizePixel = 0,
}, GateMain)
Corner(DiscordLogo, "pill")
Label(DiscordLogo, "💬", UDim2.fromOffset(0, 0), UDim2.fromScale(1, 1), 40, Color3.fromRGB(255,255,255)).TextXAlignment = Enum.TextXAlignment.Center
local GateTitle = Label(GateMain, "JOIN THE DISCORD FOR FULL VERSION", UDim2.fromOffset(0, 115), UDim2.new(1, 0, 0, 30), 16, Color3.fromRGB(255,255,255))
GateTitle.TextXAlignment = Enum.TextXAlignment.Center
GateTitle.Font = Enum.Font.SourceSansBold
local GateSub = Label(GateMain, "The FULL version is 100% FREE — just join the Discord.", UDim2.fromOffset(0, 148), UDim2.new(1, 0, 0, 20), 11, Color3.fromRGB(180, 180, 180))
GateSub.TextXAlignment = Enum.TextXAlignment.Center
local GateSub2 = Label(GateMain, "This free version only has basic Aimbot + limited ESP.", UDim2.fromOffset(0, 168), UDim2.new(1, 0, 0, 20), 11, Color3.fromRGB(180, 180, 180))
GateSub2.TextXAlignment = Enum.TextXAlignment.Center
local GateLink = Label(GateMain, DISCORD_DISPLAY, UDim2.fromOffset(0, 195), UDim2.new(1, 0, 0, 20), 13, Color3.fromRGB(120, 140, 255))
GateLink.TextXAlignment = Enum.TextXAlignment.Center
GateLink.Font = Enum.Font.SourceSansBold
local DiscordBtn = New("TextButton", {
Position = UDim2.new(0.5, -140, 0, 230),
Size = UDim2.fromOffset(280, 42),
BackgroundColor3 = Color3.fromRGB(88, 101, 242),
BorderSizePixel = 0,
Text = "JOIN DISCORD (FULL FREE VERSION)",
Font = Enum.Font.SourceSansBold,
TextColor3 = Color3.fromRGB(255,255,255),
TextSize = 13,
AutoButtonColor = false,
}, GateMain)
Corner(DiscordBtn, 6)
Outline(DiscordBtn, Color3.fromRGB(120, 130, 255), 2)
DiscordBtn.MouseButton1Click:Connect(function()
if setclipboard then
setclipboard(DISCORD_LINK)
local copyNote = Label(GateMain, "Link copied: " .. DISCORD_DISPLAY, UDim2.fromOffset(0, 280), UDim2.new(1, 0, 0, 20), 10, Color3.fromRGB(100, 220, 100))
copyNote.TextXAlignment = Enum.TextXAlignment.Center
task.delay(3, function() copyNote:Destroy() end)
end
end)
local SkipBtn = New("TextButton", {
Position = UDim2.new(0.5, -140, 0, 295),
Size = UDim2.fromOffset(280, 35),
BackgroundColor3 = Color3.fromRGB(40, 40, 45),
BorderSizePixel = 0,
Text = "Continue with FREE version (limited)",
Font = Enum.Font.SourceSans,
TextColor3 = Color3.fromRGB(150, 150, 150),
TextSize = 11,
AutoButtonColor = false,
}, GateMain)
Corner(SkipBtn, 6)
Outline(SkipBtn, Color3.fromRGB(70, 70, 75), 1)
SkipBtn.MouseButton1Click:Connect(function()
GateGui.Enabled = false
notify("Using FREE version. Join Discord for the FULL free version!", "warn", 5)
end)
local GateFooter = Label(GateMain, "Full version includes: Aimbot prediction, silent aim, weapon ESP, gun glow, world tinter, map teleport & MORE", UDim2.fromOffset(15, 345), UDim2.new(1, -30, 0, 50), 9, Color3.fromRGB(140, 140, 140))
GateFooter.TextXAlignment = Enum.TextXAlignment.Center
GateFooter.TextWrapped = true
--============================================================--
-- NOTIFICATIONS
--============================================================--
local NotifyGui = New("ScreenGui", {
Name = "brisk_survival_free_notifs",
ResetOnSpawn = false,
IgnoreGuiInset = true,
DisplayOrder = 1000,
ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
}, PlayerGui)
local NotifyHolder = New("Frame", {
Name = "Holder",
AnchorPoint = Vector2.new(1, 0),
Position = UDim2.new(1, -16, 0, 16),
Size = UDim2.fromOffset(280, 400),
BackgroundTransparency = 1,
}, NotifyGui)
New("UIListLayout", {
Padding = UDim.new(0, 6),
HorizontalAlignment = Enum.HorizontalAlignment.Right,
VerticalAlignment = Enum.VerticalAlignment.Top,
SortOrder = Enum.SortOrder.LayoutOrder,
}, NotifyHolder)
local notifyCounter = 0
local function notify(text, kind, duration)
kind = kind or "info"
duration = duration or 3
notifyCounter += 1
local toast = New("Frame", {
Size = UDim2.fromOffset(260, 50),
Position = UDim2.new(1, 300, 0, 0),
BackgroundColor3 = Theme.Panel,
BorderSizePixel = 0,
LayoutOrder = notifyCounter,
ClipsDescendants = true,
}, NotifyHolder)
Corner(toast, 6)
Outline(toast, Theme.Border, 1)
local color = kind == "success" and Theme.Green or (kind == "warn" and Theme.Yellow or (kind == "error" and Theme.Red or Theme.Cyan))
local accent = New("Frame", {
Position = UDim2.fromOffset(0, 0),
Size = UDim2.fromOffset(3, 50),
BackgroundColor3 = color,
BorderSizePixel = 0,
}, toast)
Label(toast, text, UDim2.fromOffset(12, 0), UDim2.new(1, -20, 1, 0), 10, Theme.Text).TextWrapped = true
playSfx(SFX.ToggleOn)
toast.Position = UDim2.new(1, 300, 0, 0)
Tween(toast, { Position = UDim2.new(0, 0, 0, 0) }, 0.25)
task.delay(duration, function()
if not toast.Parent then return end
Tween(toast, { Position = UDim2.new(1, 300, 0, 0) }, 0.25)
task.wait(0.3)
toast:Destroy()
end)
end
--============================================================--
-- GUI
--============================================================--
local Gui = New("ScreenGui", {
Name = "brisk_survival_free",
ResetOnSpawn = false,
IgnoreGuiInset = true,
ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
}, PlayerGui)
local Main = New("Frame", {
Name = "Window",
Size = UDim2.fromOffset(WINDOW_WIDTH, WINDOW_HEIGHT),
Position = UDim2.new(0.5, -WINDOW_WIDTH/2, 0.5, -WINDOW_HEIGHT/2),
BackgroundColor3 = Theme.Background,
BorderSizePixel = 0,
}, Gui)
Corner(Main, 8)
Outline(Main, Theme.Border, 2)
local Watermark = Label(Main, "FREE VERSION", UDim2.new(1, -120, 0, 5), UDim2.fromOffset(100, 20), 10, Color3.fromRGB(240, 200, 90))
Watermark.TextXAlignment = Enum.TextXAlignment.Right
Watermark.Font = Enum.Font.SourceSansBold
local Sidebar = New("Frame", {
Name = "Sidebar",
Size = UDim2.fromOffset(SIDEBAR_WIDTH, WINDOW_HEIGHT),
BackgroundColor3 = Theme.Sidebar,
BorderSizePixel = 0,
ClipsDescendants = true,
}, Main)
Corner(Sidebar, 8)
local Brand = New("Frame", {
Position = UDim2.fromOffset(10, 10),
Size = UDim2.fromOffset(160, 40),
BackgroundTransparency = 1,
}, Sidebar)
local BrandText = Label(Brand, "brisk.survival", UDim2.fromOffset(0, 5), UDim2.new(1, 0, 0, 18), 13, Theme.White)
BrandText.Font = Enum.Font.SourceSansBold
Label(Brand, "FREE VERSION (limited)", UDim2.fromOffset(0, 23), UDim2.new(1, 0, 0, 14), 9, Theme.Yellow)
local Navigation = New("ScrollingFrame", {
Position = UDim2.fromOffset(10, 60),
Size = UDim2.new(1, -20, 1, -130),
BackgroundTransparency = 1,
BorderSizePixel = 0,
ScrollBarThickness = 0,
CanvasSize = UDim2.new(0, 0, 0, 0),
AutomaticCanvasSize = Enum.AutomaticSize.Y,
ScrollingDirection = Enum.ScrollingDirection.Y,
}, Sidebar)
New("UIListLayout", { Padding = UDim.new(0, 3), SortOrder = Enum.SortOrder.LayoutOrder }, Navigation)
-- Discord button on sidebar (always visible)
local SidebarDiscord = New("TextButton", {
Position = UDim2.new(0, 10, 1, -85),
Size = UDim2.new(1, -20, 0, 30),
BackgroundColor3 = Color3.fromRGB(88, 101, 242),
BorderSizePixel = 0,
Text = "JOIN DISCORD",
Font = Enum.Font.SourceSansBold,
TextColor3 = Color3.fromRGB(255,255,255),
TextSize = 11,
AutoButtonColor = false,
}, Sidebar)
Corner(SidebarDiscord, 6)
Outline(SidebarDiscord, Color3.fromRGB(120, 130, 255), 1)
SidebarDiscord.MouseButton1Click:Connect(function()
if setclipboard then
setclipboard(DISCORD_LINK)
notify("Link copied: " .. DISCORD_DISPLAY, "success")
end
end)
local SidebarNote = Label(Sidebar, "Full free version in Discord", UDim2.new(0, 10, 1, -48), UDim2.new(1, -20, 0, 14), 8, Theme.Muted)
SidebarNote.TextXAlignment = Enum.TextXAlignment.Center
local Pages = {}
local NavItems = {}
local CurrentPage = nil
local function CreatePage(name)
local page = New("ScrollingFrame", {
Name = name,
Position = UDim2.fromOffset(SIDEBAR_WIDTH, 1),
Size = UDim2.new(1, -SIDEBAR_WIDTH, 1, -21),
BackgroundTransparency = 1,
BorderSizePixel = 0,
Visible = false,
ScrollingDirection = Enum.ScrollingDirection.Y,
ScrollBarThickness = 3,
ScrollBarImageColor3 = Theme.Cyan,
ScrollBarImageTransparency = 0.5,
AutomaticCanvasSize = Enum.AutomaticSize.Y,
CanvasSize = UDim2.new(0, 0, 0, 0),
ClipsDescendants = true,
}, Main)
New("UIPadding", {
PaddingLeft = UDim.new(0, 10),
PaddingRight = UDim.new(0, 10),
PaddingTop = UDim.new(0, 10),
PaddingBottom = UDim.new(0, 15),
}, page)
New("UIListLayout", {
FillDirection = Enum.FillDirection.Vertical,
HorizontalAlignment = Enum.HorizontalAlignment.Left,
VerticalAlignment = Enum.VerticalAlignment.Top,
Padding = UDim.new(0, 8),
SortOrder = Enum.SortOrder.LayoutOrder,
}, page)
Pages[name] = page
return page
end
local function CreateNav(name, icon)
local button = New("TextButton", {
Size = UDim2.new(1, 0, 0, 30),
BackgroundColor3 = Theme.Sidebar,
BorderSizePixel = 0,
AutoButtonColor = false,
Text = "",
LayoutOrder = #NavItems + 1,
}, Navigation)
Corner(button, 6)
local iconLabel = Label(button, icon, UDim2.fromOffset(8, 0), UDim2.fromOffset(20, 30), 12, Theme.SubText)
iconLabel.TextXAlignment = Enum.TextXAlignment.Center
local text = Label(button, name, UDim2.fromOffset(34, 0), UDim2.new(1, -40, 1, 0), 10, Theme.SubText)
NavItems[name] = { Button = button, Text = text, Icon = iconLabel }
button.MouseEnter:Connect(function()
if CurrentPage ~= name then
Tween(button, { BackgroundColor3 = Color3.fromRGB(35, 35, 35) }, 0.1)
end
end)
button.MouseLeave:Connect(function()
if CurrentPage ~= name then
Tween(button, { BackgroundColor3 = Theme.Sidebar }, 0.1)
end
end)
button.MouseButton1Click:Connect(function()
CurrentPage = name
for pageName, page in pairs(Pages) do
page.Visible = pageName == name
end
for navName, item in pairs(NavItems) do
local selected = navName == name
Tween(item.Button, { BackgroundColor3 = selected and Color3.fromRGB(45, 45, 45) or Theme.Sidebar }, 0.1)
Tween(item.Text, { TextColor3 = selected and Theme.White or Theme.SubText }, 0.1)
Tween(item.Icon, { TextColor3 = selected and Theme.Cyan or Theme.SubText }, 0.1)
end
end)
return button
end
local function PageHeader(parent, title, subtitle)
local holder = New("Frame", {
Size = UDim2.new(1, 0, 0, 40),
BackgroundTransparency = 1,
LayoutOrder = 1,
}, parent)
local titleLabel = Label(holder, title, UDim2.fromOffset(0, 0), UDim2.new(1, 0, 0, 22), 14, Theme.White)
titleLabel.Font = Enum.Font.SourceSansBold
Label(holder, subtitle, UDim2.fromOffset(0, 22), UDim2.new(1, 0, 0, 14), 9, Theme.Muted)
return holder
end
local function Columns(parent, amount, perRow)
perRow = perRow or 2
local rows = math.ceil(amount / perRow)
local totalHeight = (rows * CARD_HEIGHT) + (math.max(rows - 1, 0) * CARD_GAP)
local grid = New("Frame", {
Name = "CardGrid",
Size = UDim2.new(1, 0, 0, totalHeight),
BackgroundTransparency = 1,
BorderSizePixel = 0,
ClipsDescendants = false,
LayoutOrder = 2,
}, parent)
local cardOffset = -math.ceil((CARD_GAP * (perRow - 1)) / perRow)
local holders = {}
for i = 1, amount do
local holder = New("Frame", {
Size = UDim2.new(1/perRow, cardOffset, 0, CARD_HEIGHT),
BackgroundTransparency = 1,
BorderSizePixel = 0,
ClipsDescendants = false,
}, grid)
holders[i] = holder
end
New("UIGridLayout", {
CellSize = UDim2.new(1/perRow, cardOffset, 0, CARD_HEIGHT),
CellPadding = UDim2.fromOffset(CARD_GAP, CARD_GAP),
FillDirection = Enum.FillDirection.Horizontal,
FillDirectionMaxCells = perRow,
HorizontalAlignment = Enum.HorizontalAlignment.Left,
VerticalAlignment = Enum.VerticalAlignment.Top,
SortOrder = Enum.SortOrder.LayoutOrder,
}, grid)
for i, holder in ipairs(holders) do holder.LayoutOrder = i end
return holders
end
local function Card(parent, title)
local card = New("Frame", {
Size = UDim2.new(1, 0, 1, 0),
BackgroundColor3 = Theme.Panel,
BorderSizePixel = 0,
ClipsDescendants = false,
}, parent)
Corner(card, 6)
Outline(card, Theme.Border, 1)
local titleLabel = Label(card, title, UDim2.fromOffset(8, 6), UDim2.new(1, -16, 0, 16), 9, Theme.White)
titleLabel.Font = Enum.Font.SourceSansBold
local content = New("ScrollingFrame", {
Position = UDim2.fromOffset(6, 26),
Size = UDim2.new(1, -12, 1, -32),
BackgroundTransparency = 1,
BorderSizePixel = 0,
ClipsDescendants = true,
ScrollBarThickness = 2,
ScrollBarImageColor3 = Theme.Cyan,
ScrollBarImageTransparency = 0.5,
CanvasSize = UDim2.new(0, 0, 0, 0),
AutomaticCanvasSize = Enum.AutomaticSize.Y,
ScrollingDirection = Enum.ScrollingDirection.Y,
}, card)
New("UIListLayout", {
FillDirection = Enum.FillDirection.Vertical,
Padding = UDim.new(0, 4),
SortOrder = Enum.SortOrder.LayoutOrder,
}, content)
New("UIPadding", { PaddingBottom = UDim.new(0, 4) }, content)
return content
end
--============================================================--
-- CHECKBOX
--============================================================--
local allToggles = {}
local function Checkbox(parent, name, flag, default, callback)
local row = New("Frame", { Size = UDim2.new(1, 0, 0, 22), BackgroundTransparency = 1 }, parent)
local Box = New("TextButton", {
AnchorPoint = Vector2.new(1, 0.5),
Position = UDim2.new(1, -2, 0.5, 0),
Size = UDim2.new(0, 16, 0, 16),
BackgroundColor3 = Theme.Disabled,
BorderSizePixel = 0,
Text = "",
AutoButtonColor = false,
}, row)
Corner(Box, 3)
local boxStroke = Outline(Box, Theme.BorderLight, 1)
Label(row, name, UDim2.fromOffset(1, 0), UDim2.new(1, -24, 1, 0), 9, Theme.Text)
local state = default == true
if flag then Flags[flag] = state end
local function render(animated)
local dur = animated and 0.12 or 0
Tween(Box, { BackgroundColor3 = state and Theme.Cyan or Theme.Disabled }, dur)
Tween(boxStroke, { Color = state and Theme.Cyan or Theme.BorderLight }, dur)
Box.Text = state and "✓" or ""
Box.TextColor3 = Color3.fromRGB(255,255,255)
Box.Font = Enum.Font.SourceSansBold
Box.TextSize = 10
end
local function set(v, fire)
v = v == true
if state == v and not fire then return end
local changed = state ~= v
state = v
if flag then Flags[flag] = v end
render(true)
if changed then
playSfx(state and SFX.ToggleOn or SFX.ToggleOff)
end
if fire ~= false and callback then task.spawn(callback, v) end
end
Box.MouseButton1Click:Connect(function() set(not state, true) end)
render(false)
if flag then registerConfig(flag, "toggle", set, { value = default }) end
local obj = { Set = set, Get = function() return state end, render = render }
table.insert(allToggles, obj)
return obj
end
--============================================================--
-- KEYBIND
--============================================================--
local keybindRegistry = {}
local function KeybindButton(parent, name, flag, defaultKey, actionFn, callback)
local row = New("Frame", { Size = UDim2.new(1, 0, 0, 22), BackgroundTransparency = 1 }, parent)
Label(row, name, UDim2.fromOffset(1, 0), UDim2.new(1, -56, 1, 0), 9, Theme.Text)
local keyBtn = New("TextButton", {
AnchorPoint = Vector2.new(1, 0.5),
Position = UDim2.new(1, -2, 0.5, 0),
Size = UDim2.new(0, 50, 0, 18),
BackgroundColor3 = Theme.Panel2,
BorderSizePixel = 0,
Text = defaultKey and defaultKey.Name or "None",
Font = Enum.Font.SourceSans,
TextColor3 = Theme.SubText,
TextSize = 8,
AutoButtonColor = false,
}, row)
Corner(keyBtn, 4)
Outline(keyBtn, Theme.Border, 1)
local currentKey = defaultKey or Enum.KeyCode.Unknown
local listening = false
if flag then Flags[flag] = currentKey end
keybindRegistry[flag] = {
action = actionFn,
getKey = function() return currentKey end,
}
local function setKey(k, fire)
currentKey = k
if flag then Flags[flag] = k end
keyBtn.Text = k and k.Name or "None"
keyBtn.TextColor3 = Theme.SubText
if fire ~= false and callback then task.spawn(callback, k) end
end
keyBtn.MouseButton1Click:Connect(function()
listening = true
keyBtn.Text = "..."
keyBtn.TextColor3 = Theme.Cyan
end)
UIS.InputBegan:Connect(function(input, gp)
if gp then return end
if listening then
listening = false
if input.KeyCode ~= Enum.KeyCode.Unknown then setKey(input.KeyCode, true)
else setKey(Enum.UserInputType.MouseButton1, true) end
end
end)
if flag then registerConfig(flag, "keybind", function(v)
if typeof(v) == "EnumItem" then setKey(v, true) end
end, { key = defaultKey }) end
return { Set = function(k) setKey(k, false) end, Get = function() return currentKey end }
end
UIS.InputBegan:Connect(function(input, gp)
if gp then return end
if UIS:GetFocusedTextBox() then return end
for flag, entry in pairs(keybindRegistry) do
if entry.getKey() == input.KeyCode and input.KeyCode ~= Enum.KeyCode.Unknown then
if entry.action then task.spawn(entry.action) end
end
end
end)
--============================================================--
-- SLIDER
--============================================================--
local function Slider(parent, name, flag, min, max, value, suffix, callback)
local holder = New("Frame", { Size = UDim2.new(1, 0, 0, 36), BackgroundTransparency = 1 }, parent)
Label(holder, name, UDim2.fromOffset(1, 0), UDim2.new(0.7, 0, 0, 12), 9, Theme.Text)
local valueLabel = Label(holder, tostring(value)..(suffix or ""), UDim2.fromOffset(0, 0), UDim2.new(1, 0, 0, 12), 8, Theme.SubText)
valueLabel.TextXAlignment = Enum.TextXAlignment.Right
local bar = New("Frame", {
Position = UDim2.fromOffset(1, 22),
Size = UDim2.new(1, -2, 0, 6),
BackgroundColor3 = Color3.fromRGB(40, 40, 40),
BorderSizePixel = 0,
}, holder)
Corner(bar, "pill")
local p0 = math.clamp((value - min) / (max - min), 0, 1)
local fill = New("Frame", { Size = UDim2.new(p0, 0, 1, 0), BackgroundColor3 = Theme.Cyan, BorderSizePixel = 0 }, bar)
Corner(fill, "pill")
local knob = New("Frame", {
AnchorPoint = Vector2.new(0.5, 0.5),
Position = UDim2.new(p0, 0, 0.5, 0),
Size = UDim2.fromOffset(10, 10),
BackgroundColor3 = Theme.White,
BorderSizePixel = 0,
ZIndex = 3,
}, bar)
Corner(knob, "pill")
local currentValue = value
if flag then Flags[flag] = value end
local function render(v)
local p = math.clamp((v - min) / (max - min), 0, 1)
fill.Size = UDim2.new(p, 0, 1, 0)
knob.Position = UDim2.new(p, 0, 0.5, 0)
valueLabel.Text = tostring(v)..(suffix or "")
end
local function set(v, fire)
v = math.clamp(math.floor(v + 0.5), min, max)
if v == currentValue and fire then return end
currentValue = v
if flag then Flags[flag] = v end
render(v)
if fire ~= false and callback then task.spawn(callback, v) end
end
local dragging = false
local function updateFromX(x)
local p = math.clamp((x - bar.AbsolutePosition.X) / math.max(bar.AbsoluteSize.X, 1), 0, 1)
set(min + (max - min) * p, true)
end
bar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
updateFromX(input.Position.X)
end
end)
UIS.InputChanged:Connect(function(input)
if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
updateFromX(input.Position.X)
end
end)
UIS.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end
end)
set(value, false)
if flag then registerConfig(flag, "slider", set, { value = value }) end
return { Set = set, Get = function() return currentValue end }
end
--============================================================--
-- DROPDOWN
--============================================================--
local function Dropdown(parent, name, flag, options, default, callback)
local holder = New("Frame", {
Size = UDim2.new(1, 0, 0, 44),
BackgroundTransparency = 1,
ClipsDescendants = false,
}, parent)
Label(holder, name, UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 12), 9, Theme.Text)
local button = New("TextButton", {
Position = UDim2.fromOffset(0, 16),
Size = UDim2.new(1, 0, 0, 24),
BackgroundColor3 = Theme.Panel2,
BorderSizePixel = 0,
AutoButtonColor = false,
Text = "",
}, holder)
Corner(button, 5)
local bStroke = Outline(button, Theme.Border, 1)
local selected = Label(button, default or options[1], UDim2.fromOffset(8, 0), UDim2.new(1, -26, 1, 0), 9, Theme.SubText)
local arrow = Label(button, "v", UDim2.new(1, -18, 0, 0), UDim2.fromOffset(12, 24), 10, Theme.Muted)
arrow.TextXAlignment = Enum.TextXAlignment.Center
local open = false
local menu = nil
local current = default or options[1]
local values = options
if flag then Flags[flag] = current end
local function setValue(v, fire)
if not table.find(values, v) then v = values[1] end
current = v
if flag then Flags[flag] = v end
selected.Text = tostring(v)
if fire ~= false and callback then task.spawn(callback, v) end
end
local function setOpen(state)
if open and not state and menu then menu:Destroy() menu = nil end
open = state
Tween(arrow, { Rotation = open and 180 or 0 }, 0.15)
if open then
menu = New("Frame", {
Position = UDim2.new(0, 0, 0, 42),
Size = UDim2.new(1, 0, 0, math.min(#values * 22, 110)),
BackgroundColor3 = Color3.fromRGB(35, 35, 35),
BorderSizePixel = 0,
ZIndex = 100,
}, holder)
Corner(menu, 5)
Outline(menu, Theme.BorderLight, 1)
for i, opt in ipairs(values) do
local item = New("TextButton", {
Position = UDim2.fromOffset(0, (i-1)*22),
Size = UDim2.new(1, 0, 0, 22),
BackgroundColor3 = Color3.fromRGB(35, 35, 35),
BackgroundTransparency = 1,
BorderSizePixel = 0,
AutoButtonColor = false,
Text = opt,
Font = Enum.Font.SourceSans,
TextSize = 9,
TextColor3 = Theme.SubText,
ZIndex = 101,
}, menu)
local p = Instance.new("UIPadding") p.PaddingLeft = UDim.new(0, 8) p.Parent = item
item.MouseEnter:Connect(function()
Tween(item, { BackgroundTransparency = 0, TextColor3 = Theme.White,
BackgroundColor3 = Color3.fromRGB(45, 45, 45) }, 0.1)
end)
item.MouseLeave:Connect(function()
Tween(item, { BackgroundTransparency = 1, TextColor3 = Theme.SubText }, 0.1)
end)
item.MouseButton1Click:Connect(function()
setValue(opt, true)
if menu then menu:Destroy() menu = nil end
open = false
Tween(arrow, { Rotation = 0 }, 0.12)
end)
end
end
end
button.MouseButton1Click:Connect(function() setOpen(not open) end)
setValue(current, false)
if flag then registerConfig(flag, "list", function(v) setValue(v, true) end, { value = default }) end
return {
Set = function(v) setValue(v, true) end,
Get = function() return current end,
Refresh = function(newOpts)
values = newOpts
if not table.find(values, current) then setValue(values[1] or "None", false) end
end,
}
end
--============================================================--
-- TEXTBOX
--============================================================--
local function Textbox(parent, name, flag, default, placeholder, callback)
local row = New("Frame", { Size = UDim2.new(1, 0, 0, 24), BackgroundTransparency = 1 }, parent)
Label(row, name, UDim2.fromOffset(1, 0), UDim2.new(0.4, 0, 1, 0), 9, Theme.Text)
local box = New("TextBox", {
AnchorPoint = Vector2.new(1, 0.5),
Position = UDim2.new(1, -2, 0.5, 0),
Size = UDim2.new(0.55, 0, 20, 0),
BackgroundColor3 = Theme.Panel2,
BorderSizePixel = 0,
Font = Enum.Font.SourceSans,
Text = default or "",
PlaceholderText = placeholder or "...",
TextColor3 = Theme.Text,
TextSize = 9,
TextXAlignment = Enum.TextXAlignment.Left,
ClearTextOnFocus = false,
}, row)
Corner(box, 4)
Outline(box, Theme.Border, 1)
New("UIPadding", { PaddingLeft = UDim.new(0, 6) }, box)
if flag then Flags[flag] = default or "" end
box.FocusLost:Connect(function()
if flag then Flags[flag] = box.Text end
if callback then task.spawn(callback, box.Text) end
end)
if flag then registerConfig(flag, "textbox", function(v) box.Text = v or "" Flags[flag] = box.Text end, { value = default }) end
return { Set = function(v) box.Text = v or "" if flag then Flags[flag] = box.Text end end, Get = function() return box.Text end }
end
--============================================================--
-- COLORPICKER (only 4 colors in free version)
--============================================================--
local function Colorpicker(parent, name, flag, default, callback)
local Row = New("Frame", { Size = UDim2.new(1, 0, 0, 22), BackgroundTransparency = 1 }, parent)
Label(Row, name, UDim2.fromOffset(1, 0), UDim2.new(1, -46, 1, 0), 9, Theme.Text)
local Swatch = New("TextButton", {
AnchorPoint = Vector2.new(1, 0.5),
Position = UDim2.new(1, -2, 0.5, 0),
Size = UDim2.new(0, 36, 0, 16),
BackgroundColor3 = default or Color3.new(1,1,1),
BorderSizePixel = 0,
Text = "",
AutoButtonColor = false,
}, Row)
Corner(Swatch, 4)
Outline(Swatch, Theme.Border, 1)
local current = default or Color3.new(1,1,1)
if flag then Flags[flag] = current end
local function apply(c, fire)
current = c
if flag then Flags[flag] = c end
Swatch.BackgroundColor3 = c
if fire ~= false and callback then task.spawn(callback, c) end
end
local PALETTE = {
Color3.fromRGB(255,255,255),
Color3.fromRGB(100, 180, 220),
Color3.fromRGB(255, 80, 80),
Color3.fromRGB(100, 200, 100),
}
local idx = 1
for i, c in ipairs(PALETTE) do
if c.R == current.R and c.G == current.G and c.B == current.B then idx = i break end
end
Swatch.MouseButton1Click:Connect(function()
idx = idx % #PALETTE + 1
apply(PALETTE[idx], true)
end)
if flag then registerConfig(flag, "colorpicker", function(v)
if typeof(v) == "Color3" then apply(v, true) end
end, { color = default }) end
return { Set = function(c) apply(c, false) end, Get = function() return current end }
end
local function Button(parent, text, callback)
local row = New("Frame", { Size = UDim2.new(1, 0, 0, 24), BackgroundTransparency = 1 }, parent)
local btn = New("TextButton", {
Position = UDim2.fromOffset(0, 2),
Size = UDim2.new(1, 0, 0, 20),
BackgroundColor3 = Theme.Panel2,
BorderSizePixel = 0,
Font = Enum.Font.SourceSans,
Text = text,
TextColor3 = Theme.Text,
TextSize = 9,
AutoButtonColor = false,
}, row)
Corner(btn, 4)
local s = Outline(btn, Theme.Border, 1)
btn.MouseEnter:Connect(function() Tween(s, { Color = Theme.Cyan }, 0.1) end)
btn.MouseLeave:Connect(function() Tween(s, { Color = Theme.Border }, 0.1) end)
btn.MouseButton1Click:Connect(function() if callback then task.spawn(callback) end end)
end
--============================================================--
-- CONFIG ENGINE
--============================================================--
local CONFIG_FOLDER = "BriskSurvivalFreeConfigs"
local function ensureFolder()
if not isfolder(CONFIG_FOLDER) then makefolder(CONFIG_FOLDER) end
end
local function sanitizeName(name)
if not name or name == "" then return nil end
name = tostring(name):gsub("[^%w_%- ]", "")
if name == "" then return nil end
return name
end
local function buildConfigTable()
local data = {}
for flag, v in pairs(Flags) do
if not Options[flag] then continue end
if typeof(v) == "Color3" then
data[flag] = { v.R, v.G, v.B, "__color" }
elseif typeof(v) == "EnumItem" then
data[flag] = { tostring(v.EnumType), v.Name, "__enum" }
else
data[flag] = v
end
end
return data
end
local function applyConfigTable(data)
if type(data) ~= "table" then return end
for flag, v in pairs(data) do
local opt = Options[flag]
if opt then
task.spawn(function()
pcall(function()
if type(v) == "table" and v[4] == "__color" then
opt.changeState(Color3.new(v[1], v[2], v[3]))
elseif type(v) == "table" and v[3] == "__enum" then
local et = Enum[v[1]]
if et and et[v[2]] then opt.changeState(et[v[2]]) end
else
opt.changeState(v)
end
end)
end)
end
end
end
local function refreshConfigList(dropdown)
ensureFolder()
local tbl = {}
local ok, files = pcall(listfiles, CONFIG_FOLDER)
if ok and type(files) == "table" then
for _, path in ipairs(files) do
local name = path:match("([^/\\]+)%.json$")
if name then table.insert(tbl, name) end
end
end
table.sort(tbl)
if dropdown then dropdown.Refresh(tbl) end
return tbl
end
--============================================================--
-- PAGES
--============================================================--
local AimbotPage = CreatePage("Aimbot")
local VisualsPage = CreatePage("Visuals")
local ConfigPage = CreatePage("Config")
local DiscordPage = CreatePage("Join Discord")
--============================================================--
-- AIMBOT (simplified / limited)
--============================================================
PageHeader(AimbotPage, "Aimbot", "FREE VERSION - basic aim only")
do
local aimSettings = {
enabled = false,
hitbox = "Head",
fov = 100,
smoothness = 0.5,
teamCheck = false,
showFov = true,
fovColor = Theme.Cyan,
holdMode = "Hold",
toggleKey = Enum.UserInputType.MouseButton2,
}
local aimCircle
pcall(function()
aimCircle = Drawing.new("Circle")
aimCircle.Thickness = 1
aimCircle.NumSides = 30
aimCircle.Filled = false
aimCircle.Color = Theme.Cyan
aimCircle.Visible = false
end)
local aimHeld = false
local aimToggled = false
local function aimActive()
if not aimSettings.enabled then return false end
if aimSettings.holdMode == "Hold" then
return aimHeld
else
return aimToggled
end
end
local function isTargetable(char)
if not char or char == LocalPlayer.Character then return false end
local hum = char:FindFirstChildOfClass("Humanoid")
if not hum or hum.Health <= 0 then return false end
return true
end
local function getClosestTarget()
local camera = workspace.CurrentCamera
if not camera then return nil end
local vp = camera.ViewportSize
local center = Vector2.new(vp.X * 0.5, vp.Y * 0.5)
local fovRadius = aimSettings.fov
local best, bestDist = nil, fovRadius
for _, plr in ipairs(Players:GetPlayers()) do
if plr == LocalPlayer then continue end
if aimSettings.teamCheck and plr.Team and plr.Team == LocalPlayer.Team then continue end
local char = plr.Character
if not isTargetable(char) then continue end
local part = char:FindFirstChild(aimSettings.hitbox) or char:FindFirstChild("HumanoidRootPart")
if not part then continue end
local screenPos, onScreen = camera:WorldToViewportPoint(part.Position)
if not onScreen then continue end
local screen2d = Vector2.new(screenPos.X, screenPos.Y)
local screenDist = (screen2d - center).Magnitude
if screenDist <= bestDist then
best, bestDist = part, screenDist
end
end
return best
end
local function doAim(target)
local camera = workspace.CurrentCamera
if not camera or not target then return end
local currentCF = camera.CFrame
local targetCF = CFrame.lookAt(currentCF.Position, target.Position)
camera.CFrame = currentCF:Lerp(targetCF, aimSettings.smoothness)
end
RunService.RenderStepped:Connect(function()
if not aimCircle then return end
local camera = workspace.CurrentCamera
if not camera then aimCircle.Visible = false return end
aimCircle.Visible = aimSettings.enabled and aimSettings.showFov
if aimCircle.Visible then
aimCircle.Radius = aimSettings.fov
local vp = camera.ViewportSize
aimCircle.Position = Vector2.new(vp.X / 2, vp.Y / 2)
aimCircle.Color = aimSettings.fovColor
aimCircle.Filled = false
aimCircle.Transparency = 1
aimCircle.Thickness = 1
end
end)
RunService.RenderStepped:Connect(function()
if not aimActive() then return end
local target = getClosestTarget()
if target then doAim(target) end
end)
local function isAimInput(input)
if not aimSettings.toggleKey then return false end
if typeof(aimSettings.toggleKey) == "EnumItem" then
if aimSettings.toggleKey.EnumType == Enum.KeyCode then
return input.KeyCode == aimSettings.toggleKey
elseif aimSettings.toggleKey.EnumType == Enum.UserInputType then
return input.UserInputType == aimSettings.toggleKey
end
end
return false
end
UIS.InputBegan:Connect(function(input, gp)
if gp then return end
if UIS:GetFocusedTextBox() then return end
if not isAimInput(input) then return end
if aimSettings.holdMode == "Hold" then
aimHeld = true
else
aimToggled = not aimToggled
end
end)
UIS.InputEnded:Connect(function(input)
if not isAimInput(input) then return end
if aimSettings.holdMode == "Hold" then
aimHeld = false
end
end)
local aimGrid = Columns(AimbotPage, 2, 2)
local aimMain = Card(aimGrid[1], "Aimbot (BASIC)")
Checkbox(aimMain, "Enabled", "aim_enabled", false, function(v)
aimSettings.enabled = v
if not v then
aimHeld = false
aimToggled = false
end
end)
Checkbox(aimMain, "Show FOV", "aim_showfov", true, function(v) aimSettings.showFov = v end)
Dropdown(aimMain, "Activation Mode", "aim_holdmode", {"Hold", "Toggle"}, "Hold", function(v)
aimSettings.holdMode = v
aimHeld = false
aimToggled = false
end)
KeybindButton(aimMain, "Aim Key", "aim_key", Enum.UserInputType.MouseButton2, function() end)
local aimTune = Card(aimGrid[2], "Tuning (LIMITED)")
Dropdown(aimTune, "Hitbox", "aim_hitbox", {"Head", "HumanoidRootPart", "Torso"}, "Head", function(v) aimSettings.hitbox = v end)
Checkbox(aimTune, "Team Check", "aim_teamcheck", false, function(v) aimSettings.teamCheck = v end)
Slider(aimTune, "FOV", "aim_fov", 10, 500, 100, " px", function(v) aimSettings.fov = v end)
Slider(aimTune, "Smoothness", "aim_smooth", 0, 100, 50, "%", function(v) aimSettings.smoothness = v / 100 end)
-- Locked features card
local aimLocked = Card(aimGrid[1], "LOCKED FEATURES")
Label(aimLocked, "❌ Silent Aim", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 16), 9, Theme.Red)
Label(aimLocked, "❌ Raycast Mode", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 16), 9, Theme.Red)
Label(aimLocked, "❌ Wall Check", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 16), 9, Theme.Red)
Label(aimLocked, "❌ Visible Only", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 16), 9, Theme.Red)
Label(aimLocked, "❌ Prediction", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 16), 9, Theme.Red)
Label(aimLocked, "❌ Smooth Methods", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 16), 9, Theme.Red)
Label(aimLocked, "❌ Shake", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 16), 9, Theme.Red)
Label(aimLocked, "❌ FOV Color", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 16), 9, Theme.Red)
local aimLockedBtn = Button(aimLocked, "Get Full Version (FREE)", function()
if setclipboard then
setclipboard(DISCORD_LINK)
notify("Discord link copied: " .. DISCORD_DISPLAY, "success")
end
end)
end
--============================================================--
-- VISUALS (ESP only, no weapon / arrows / skeleton / world tint)
--============================================================--
PageHeader(VisualsPage, "Visuals", "FREE VERSION - basic ESP only")
do
local espSettings = {
enabled = false,
boxes = true,
names = true,
distancetext = false,
teamcheck = false,
maxdistance = 1000,
boxcolor = Theme.Cyan,
}
local BOX_LINES = 4
local espObjects = {}
local function createEspDrawings()
local obj = {box = {}}
for i = 1, BOX_LINES do
local l = Drawing.new("Line")
l.Thickness = 1
l.Transparency = 1
l.Visible = false
table.insert(obj.box, l)
end
obj.nameText = Drawing.new("Text")
obj.nameText.Size = 12
obj.nameText.Center = true
obj.nameText.Outline = true
obj.nameText.Font = 2
obj.nameText.Visible = false
obj.distanceText = Drawing.new("Text")
obj.distanceText.Size = 12
obj.distanceText.Center = true
obj.distanceText.Outline = true
obj.distanceText.Font = 2
obj.distanceText.Visible = false
return obj
end
local function removeEsp(plr)
local o = espObjects[plr]
if not o then return end
pcall(function()
for _, l in ipairs(o.box) do l:Remove() end
o.nameText:Remove()
o.distanceText:Remove()
end)
espObjects[plr] = nil
end
local function clearEsp()
for plr in pairs(espObjects) do removeEsp(plr) end
end
local function getScreenBounds(camera, character)
local minX, minY = math.huge, math.huge
local maxX, maxY = -math.huge, -math.huge
local found = false
for _, part in ipairs(character:GetChildren()) do
if part:IsA("BasePart") then
local sp = camera:WorldToViewportPoint(part.Position)
if sp.Z > 0 then
minX = math.min(minX, sp.X); minY = math.min(minY, sp.Y)
maxX = math.max(maxX, sp.X); maxY = math.max(maxY, sp.Y)
found = true
end
end
end
if not found then return nil end
return minX, minY, maxX, maxY
end
local function updateSimpleBox(obj, minX, minY, maxX, maxY, color)
local pts = {
{Vector2.new(minX,minY), Vector2.new(maxX,minY)},
{Vector2.new(maxX,minY), Vector2.new(maxX,maxY)},
{Vector2.new(maxX,maxY), Vector2.new(minX,maxY)},
{Vector2.new(minX,maxY), Vector2.new(minX,minY)},
}
for i = 1, 4 do
local l = obj.box[i]
l.From, l.To = pts[i][1], pts[i][2]
l.Color = color
l.Thickness = 1
l.Transparency = 1
l.Visible = true
end
end
local function updateEspPlayer(plr, camera)
if not espSettings.enabled or plr == LocalPlayer then return end
local char = plr.Character
if not char then if espObjects[plr] then removeEsp(plr) end return end
local root = char:FindFirstChild("HumanoidRootPart") or char:FindFirstChild("Torso") or char.PrimaryPart
local hum = char:FindFirstChildOfClass("Humanoid")
if not root or not hum or hum.Health <= 0 then
if espObjects[plr] then removeEsp(plr) end
return
end
local dist = (camera.CFrame.Position - root.Position).Magnitude
if dist > espSettings.maxdistance then
local o = espObjects[plr]
if o then
for _, l in ipairs(o.box) do l.Visible = false end
o.nameText.Visible = false
o.distanceText.Visible = false
end
return
end
local obj = espObjects[plr]
if not obj then obj = createEspDrawings() espObjects[plr] = obj end
local minX, minY, maxX, maxY = getScreenBounds(camera, char)
if not minX then
for _, l in ipairs(obj.box) do l.Visible = false end
obj.nameText.Visible = false
obj.distanceText.Visible = false
return
end
local boxColor = espSettings.boxcolor
if espSettings.teamcheck and plr.Team == LocalPlayer.Team then
boxColor = Color3.fromRGB(0, 170, 255)
end
if espSettings.boxes then
updateSimpleBox(obj, minX, minY, maxX, maxY, boxColor)
else
for _, l in ipairs(obj.box) do l.Visible = false end
end
if espSettings.names then
obj.nameText.Text = plr.Name
obj.nameText.Position = Vector2.new((minX+maxX)/2, minY-15)
obj.nameText.Color = Color3.fromRGB(255,255,255)
obj.nameText.Visible = true
else
obj.nameText.Visible = false
end
if espSettings.distancetext then
obj.distanceText.Text = "["..math.floor(dist).."m]"
obj.distanceText.Position = Vector2.new((minX+maxX)/2, maxY+2)
obj.distanceText.Color = Color3.fromRGB(255,255,255)
obj.distanceText.Visible = true
else
obj.distanceText.Visible = false
end
end
Players.PlayerRemoving:Connect(function(plr) removeEsp(plr) end)
RunService.RenderStepped:Connect(function()
local camera = workspace.CurrentCamera
if not camera then return end
if espSettings.enabled then
for _, plr in next, Players:GetPlayers() do
pcall(updateEspPlayer, plr, camera)
end
else
if next(espObjects) then clearEsp() end
end
end)
local espGrid = Columns(VisualsPage, 2, 2)
local espCard = Card(espGrid[1], "ESP (BASIC)")
Checkbox(espCard, "Enable ESP", "esp_enabled", false, function(v)
espSettings.enabled = v
if not v then clearEsp() end
end)
Checkbox(espCard, "Simple Box", "esp_boxes", true, function(v) espSettings.boxes = v end)
Checkbox(espCard, "Names", "esp_names", true, function(v) espSettings.names = v end)
Checkbox(espCard, "Distance", "esp_distance", false, function(v) espSettings.distancetext = v end)
Checkbox(espCard, "Team Check", "esp_teamcheck", false, function(v) espSettings.teamcheck = v end)
Slider(espCard, "Max Distance", "esp_maxdist", 100, 2000, 1000, "m", function(v) espSettings.maxdistance = v end)
local espColorCard = Card(espGrid[2], "ESP Colors")
Colorpicker(espColorCard, "Box Color", "esp_boxcolor", Theme.Cyan, function(c) espSettings.boxcolor = c end)
-- Locked features card
local espLocked = Card(espGrid[1], "LOCKED FEATURES")
Label(espLocked, "❌ Skeleton ESP", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 15), 9, Theme.Red)
Label(espLocked, "❌ Weapon ESP", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 15), 9, Theme.Red)
Label(espLocked, "❌ Off-screen Arrows", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 15), 9, Theme.Red)
Label(espLocked, "❌ Visibility ESP", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 15), 9, Theme.Red)
Label(espLocked, "❌ World Tinter", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 15), 9, Theme.Red)
Label(espLocked, "❌ Full Bright", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 15), 9, Theme.Red)
Label(espLocked, "❌ Gun Glow", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 15), 9, Theme.Red)
Label(espLocked, "❌ Misc (Noclip / Jump / Zoom)", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 15), 9, Theme.Red)
local espLockedBtn = Button(espLocked, "Get Full Version (FREE)", function()
if setclipboard then
setclipboard(DISCORD_LINK)
notify("Discord link copied: " .. DISCORD_DISPLAY, "success")
end
end)
end
--============================================================--
-- CONFIG PAGE (basic)
--============================================================--
PageHeader(ConfigPage, "Config", "FREE VERSION - save/load settings")
local cfgGrid = Columns(ConfigPage, 2, 2)
local createCard = Card(cfgGrid[1], "Create Config")
Textbox(createCard, "Name", "cfg_name", "", "my_settings", nil)
Button(createCard, "Create New Config", function()
local name = sanitizeName(Flags["cfg_name"])
if not name then notify("Enter a config name", "error") return end
ensureFolder()
local path = CONFIG_FOLDER .. "/" .. name .. ".json"
if isfile(path) then notify(name .. " already exists", "warn") return end
writefile(path, HttpService:JSONEncode(buildConfigTable()))
notify("Created: " .. name, "success")
if _G.__cfgRefresh then _G.__cfgRefresh() end
end)
local manageCard = Card(cfgGrid[2], "Manage Configs")
local cfgDropdown = Dropdown(manageCard, "Selected", "cfg_selected", {"None"}, "None", nil)
Button(manageCard, "Load", function()
local name = sanitizeName(Flags["cfg_selected"])
if not name or name == "None" then notify("Select a config", "error") return end
local path = CONFIG_FOLDER .. "/" .. name .. ".json"
if not isfile(path) then notify("Config not found", "error") return end
local ok, data = pcall(function() return HttpService:JSONDecode(readfile(path)) end)
if not ok or type(data) ~= "table" then notify("Corrupt config", "error") return end
applyConfigTable(data)
notify("Loaded: " .. name, "success")
end)
Button(manageCard, "Save", function()
local name = sanitizeName(Flags["cfg_selected"])
if not name or name == "None" then notify("Select a config", "error") return end
local path = CONFIG_FOLDER .. "/" .. name .. ".json"
if not isfile(path) then notify("Config not found", "error") return end
writefile(path, HttpService:JSONEncode(buildConfigTable()))
notify("Saved: " .. name, "success")
end)
Button(manageCard, "Delete", function()
local name = sanitizeName(Flags["cfg_selected"])
if not name or name == "None" then notify("Select a config", "error") return end
local path = CONFIG_FOLDER .. "/" .. name .. ".json"
if isfile(path) then
delfile(path)
notify("Deleted: " .. name, "warn")
if _G.__cfgRefresh then _G.__cfgRefresh() end
else notify("Config not found", "error") end
end)
Button(manageCard, "Refresh", function()
if _G.__cfgRefresh then _G.__cfgRefresh() end
end)
_G.__cfgRefresh = function()
local list = refreshConfigList(cfgDropdown)
if #list == 0 then cfgDropdown.Set("None") end
end
task.spawn(function()
task.wait(0.5)
_G.__cfgRefresh()
end)
-- Discord reminder card
local discordCard = Card(cfgGrid[1], "REMINDER")
Label(discordCard, "You are using the FREE version.", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 16), 10, Theme.Yellow)
Label(discordCard, "The FULL version is 100% FREE.", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 16), 10, Theme.Text)
Label(discordCard, DISCORD_DISPLAY, UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 16), 10, Color3.fromRGB(120, 140, 255))
Button(discordCard, "Copy Discord Link", function()
if setclipboard then
setclipboard(DISCORD_LINK)
notify("Discord link copied!", "success")
end
end)
--============================================================--
-- DISCORD PAGE
--============================================================--
PageHeader(DiscordPage, "Join Discord", "Get the FULL version — for FREE")
local discordGrid = Columns(DiscordPage, 1, 1)
local discordPageCard = Card(discordGrid[1], "FULL VERSION (FREE)")
Label(discordPageCard, "The full version is completely free.", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 20), 11, Theme.White)
Label(discordPageCard, "It includes everything the free version is missing:", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 20), 10, Theme.Text)
Label(discordPageCard, "✓ Full Aimbot (silent aim, prediction, raycast, smoothing, shake)", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 18), 9, Theme.Green)
Label(discordPageCard, "✓ Skeleton ESP, Weapon ESP, Off-screen arrows", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 18), 9, Theme.Green)
Label(discordPageCard, "✓ Visibility ESP (visible / hidden colors)", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 18), 9, Theme.Green)
Label(discordPageCard, "✓ World Tinter + Full Bright", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 18), 9, Theme.Green)
Label(discordPageCard, "✓ Gun Glow (arms + weapon)", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 18), 9, Theme.Green)
Label(discordPageCard, "✓ Misc (Noclip, High Jump, Zoom, Infinite Jump)", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 18), 9, Theme.Green)
Label(discordPageCard, "✓ Full config system + Neon outline customization", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 18), 9, Theme.Green)
Label(discordPageCard, "", UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 14), 9, Theme.Text)
Label(discordPageCard, "Discord: " .. DISCORD_DISPLAY, UDim2.fromOffset(1, 0), UDim2.new(1, 0, 0, 20), 12, Color3.fromRGB(120, 140, 255))
Button(discordPageCard, "Copy Discord Link", function()
if setclipboard then
setclipboard(DISCORD_LINK)
notify("Copied! Open Discord and paste in your browser.", "success", 4)
end
end)
--============================================================--
-- NAV
--============================================================--
CreateNav("Aimbot", "◈")
CreateNav("Visuals", "◉")
CreateNav("Config", "⚙")
CreateNav("Join Discord", "💬")
CurrentPage = "Aimbot"
for pageName, page in pairs(Pages) do
page.Visible = pageName == "Aimbot"
end
for navName, item in pairs(NavItems) do
local selected = navName == "Aimbot"
item.Button.BackgroundColor3 = selected and Color3.fromRGB(45, 45, 45) or Theme.Sidebar
item.Text.TextColor3 = selected and Theme.White or Theme.SubText
item.Icon.TextColor3 = selected and Theme.Cyan or Theme.SubText
end
--============================================================--
-- STATUS BAR
--============================================================--
local Status = New("Frame", {
Position = UDim2.new(0, SIDEBAR_WIDTH, 1, -18),
Size = UDim2.new(1, -SIDEBAR_WIDTH, 0, 18),
BackgroundColor3 = Color3.fromRGB(15, 15, 15),
BorderSizePixel = 0,
}, Main)
Label(Status, "brisk.survival FREE", UDim2.fromOffset(8, 0), UDim2.fromOffset(140, 18), 8, Theme.Pink)
local StatusRight = Label(Status, "JOIN DISCORD FOR FULL", UDim2.new(1, -180, 0, 0), UDim2.fromOffset(170, 18), 7, Theme.Yellow)
StatusRight.TextXAlignment = Enum.TextXAlignment.Right
--============================================================--
-- DRAGGING
--============================================================--
local dragging = false
local dragStart
local startPosition
Main.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
if input.Position.X >= Main.AbsolutePosition.X + SIDEBAR_WIDTH then return end
dragging = true
dragStart = input.Position
startPosition = Main.Position
end
end)
Main.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end
end)
UIS.InputChanged:Connect(function(input)
if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
local delta = input.Position - dragStart
Main.Position = UDim2.new(
startPosition.X.Scale, startPosition.X.Offset + delta.X,
startPosition.Y.Scale, startPosition.Y.Offset + delta.Y
)
end
end)
UIS.InputBegan:Connect(function(input, processed)
if processed then return end
if input.KeyCode == Enum.KeyCode.RightShift then
Gui.Enabled = not Gui.Enabled
GateGui.Enabled = not Gui.Enabled
end
end)
--============================================================--
-- ANNOYING DISCORD REMINDER (every 30 seconds)
--============================================================--
task.spawn(function()
while Gui.Parent do
task.wait(30)
if Gui.Enabled then
notify("⚠️ Join the Discord for the FULL FREE version! ⚠️", "warn", 5)
task.wait(0.5)
notify("You're missing: Silent Aim, Skeleton, Weapon ESP, Gun Glow, World Tint, Noclip + MORE!", "warn", 5)
end
end
end)
--============================================================--
-- INITIAL NOTIFICATIONS
--============================================================
task.delay(0.5, function()
notify("brisk.survival FREE VERSION loaded", "warn", 5)
task.wait(0.5)
notify("⚠️ You're using the limited free version!", "error", 5)
task.wait(0.5)
notify("FULL version is FREE — join " .. DISCORD_DISPLAY, "warn", 6)
task.wait(0.5)
notify("(full version has silent aim, skeleton ESP, weapon ESP & more)", "info", 5)
end)
print("[brisk.survival] FREE VERSION (limited) loaded")
print("[brisk.survival] Full version is FREE — join " .. DISCORD_DISPLAY)Review the source before using it. Executions count successful copies, capped at 10 per user and network per script in 24 hours.
Community discussion
0Start the conversation.


Your community, in one place