
Keyless

local genv = getgenv()
local _ = genv.debug
local _ = genv.debug
local _ = genv.debug
print(loadstring)
print(getgenv().loadstring)
loadstring([=[
local allowedPlaces = {114234929420007, 108194354348181, 135434213652028}
if not table.find(allowedPlaces, game.PlaceId) then
game:GetService("Players").LocalPlayer:Kick("wrong game, the game to execute this script it's bloxstrike")
return
end
game:GetService("StarterGui"):SetCore("SendNotification", {Title = "Cracked By FolloHub", Text = "discord.gg/cXwvDJvY7x", Duration = 10})
local Beta = false
local BetaKey = "bankroll_beta"
local UIS = game:GetService("UserInputService")
local RS = game:GetService("RunService")
local Players = game:GetService("Players")
local TS = game:GetService("TweenService")
local RepStore = game:GetService("ReplicatedStorage")
local HS = game:GetService("HttpService")
local LP = Players.LocalPlayer
local _rid = HS:GenerateGUID(false)
local _st = tick()
if getgenv().BankrollCleanup then
getgenv().BankrollCleanup()
end
local Conn, Drws = {}, {}
local function AC(c)
if c then
Conn[#Conn + 1] = c
end
end
local function AD(d)
if d and type(d) ~= "number" then
Drws[#Drws + 1] = d
end
end
local function Safe(f)
return function(...)
pcall(f, ...)
end
end
local WorldESP = {DroppedWeapons = {}, Bomb = nil, Molotovs = {}, Smokes = {}}
local function DestroyWESP(e)
if not e then return end
for _, d in pairs(e.Box or {}) do
if d and type(d) ~= "number" then
pcall(d.Remove, d)
end
end
if e.Name and type(e.Name) ~= "number" then
pcall(e.Name.Remove, e.Name)
end
if e.HL then
pcall(e.HL.Destroy, e.HL)
end
if e.Radius and type(e.Radius) ~= "number" then
pcall(e.Radius.Remove, e.Radius)
end
end
getgenv().BankrollCleanup = function()
for _, c in pairs(Conn) do
pcall(function() c:Disconnect() end)
end
for _, d in pairs(Drws) do
pcall(function() if type(d) ~= "number" then d:Remove() end end)
end
table.clear(Conn)
table.clear(Drws)
pcall(function()
if game:GetService("CoreGui"):FindFirstChild("BankrollUI") then
game:GetService("CoreGui").BankrollUI:Destroy()
end
end)
pcall(function()
if game:GetService("CoreGui"):FindFirstChild("ESP_Highlight_Container") then
game:GetService("CoreGui").ESP_Highlight_Container:Destroy()
end
end)
pcall(function()
if game:GetService("CoreGui"):FindFirstChild("Charms_Container") then
game:GetService("CoreGui").Charms_Container:Destroy()
end
end)
for _, eo in pairs(WorldESP.DroppedWeapons) do
DestroyWESP(eo)
end
if WorldESP.Bomb then
DestroyWESP(WorldESP.Bomb)
end
for _, eo in pairs(WorldESP.Molotovs) do
DestroyWESP(eo)
end
for _, eo in pairs(WorldESP.Smokes) do
DestroyWESP(eo)
end
table.clear(WorldESP.DroppedWeapons)
WorldESP.Bomb = nil
table.clear(WorldESP.Molotovs)
table.clear(WorldESP.Smokes)
pcall(function()
if workspace:FindFirstChild("_BankrollActors") then
workspace._BankrollActors:Destroy()
end
end)
end
local G = {
mousemoverel = mousemoverel or (mousemove and function(x, y) mousemove(x, y) end) or function() end,
mouse1click = mouse1click or mouse_click or function() end,
C3W = Color3.new(1, 1, 1),
C3B = Color3.new(0, 0, 0),
LastCharmVisCheck = 0,
LastCharmScan = 0,
LastCharmUpdate = 0,
FrameCount = 0,
lastFPSUpdate = tick(),
LastESPUpdate = 0,
LastGraphUpdate = 0,
LastMovementUpdate = 0,
lastTriggerTime = 0,
LocalCharacter = nil,
AimbotActive = false,
TriggerbotActive = false,
knifeChangerSupported = true,
executor = (identifyexecutor and identifyexecutor()) or "Unknown",
hasFileSystem = false,
inspectWarningShown = false,
LastMouseReleaseTime = 0,
JumpBugActive = false,
EdgeBugToggleActive = false
}
pcall(function()
if writefile and readfile then
G.hasFileSystem = true
end
end)
local function SafeRequire(module)
if not module then return nil end
local success, result = pcall(function() return require(module) end)
if success and result and type(result) == "table" then
return result
end
return nil
end
local JB_VERT_BOOST = 3
local JB_HORIZ_BOOST = 2
local JB_MIN_FRAMES = 3
local jbebRP = RaycastParams.new()
jbebRP.FilterType = Enum.RaycastFilterType.Exclude
jbebRP.IgnoreWater = true
jbebRP.RespectCanCollide = true
local EB_Active = false
local JBEB_LastChar = nil
local JBActive = false
local JBCooldown = 0
local JBEB_FallFrames = 0
local JBEB_VelBuffer = {}
local JBEB_BufferSize = 15
local JBEB_WasAir = true
local JBEB_LandedFrame = false
local jbFlashTime = 0
local ebFlashTime = 0
local GndOffsets = {
Vector3.new(0, 0, 0),
Vector3.new(0.8, 0, 0),
Vector3.new(-0.8, 0, 0),
Vector3.new(0, 0, 0.8),
Vector3.new(0, 0, -0.8)
}
local function JBEB_SetFilter(c)
if c == JBEB_LastChar then return end
JBEB_LastChar = c
jbebRP.FilterDescendantsInstances = {c, workspace.CurrentCamera}
end
local function JBEB_GameGroundCheck(pos)
for _, off in ipairs(GndOffsets) do
local r = workspace:Raycast(pos + off, Vector3.new(0, -3.1, 0), jbebRP)
if r and r.Normal.Y > 0.7 and r.Instance.CanCollide then
return true
end
end
return false
end
local function JBEB_IsNearEdge(pos)
local center = workspace:Raycast(pos, Vector3.new(0, -3.5, 0), jbebRP)
if center and center.Normal.Y > 0.7 then return false end
local sideHits = 0
local sideOffsets = {
Vector3.new(2, 0, 0), Vector3.new(-2, 0, 0),
Vector3.new(0, 0, 2), Vector3.new(0, 0, -2),
Vector3.new(1.5, 0, 1.5), Vector3.new(-1.5, 0, 1.5),
Vector3.new(1.5, 0, -1.5), Vector3.new(-1.5, 0, -1.5)
}
for _, off in ipairs(sideOffsets) do
local r = workspace:Raycast(pos + off, Vector3.new(0, -5, 0), jbebRP)
if r and r.Normal.Y > 0.7 then
sideHits = sideHits + 1
end
end
if sideHits >= 2 then return true end
local wallDirs = {Vector3.new(2, 0, 0), Vector3.new(-2, 0, 0), Vector3.new(0, 0, 2), Vector3.new(0, 0, -2)}
for yOff = 0, -3, -1 do
for _, dir in ipairs(wallDirs) do
local r = workspace:Raycast(pos + Vector3.new(0, yOff, 0), dir, jbebRP)
if r and (pos + Vector3.new(0, yOff, 0) - r.Position).Magnitude < 2 then
return true
end
end
end
return false
end
local function JBEB_StillOnEdge(pos)
local center = workspace:Raycast(pos, Vector3.new(0, -3.5, 0), jbebRP)
if center and center.Normal.Y > 0.7 then return false end
for _, off in ipairs({Vector3.new(1.5, 0, 0), Vector3.new(-1.5, 0, 0), Vector3.new(0, 0, 1.5), Vector3.new(0, 0, -1.5)}) do
local r = workspace:Raycast(pos + off, Vector3.new(0, -5, 0), jbebRP)
if r then return true end
end
for _, dir in ipairs({Vector3.new(2, 0, 0), Vector3.new(-2, 0, 0), Vector3.new(0, 0, 2), Vector3.new(0, 0, -2)}) do
local r = workspace:Raycast(pos, dir, jbebRP)
if r and (pos - r.Position).Magnitude < 2 then return true end
end
return false
end
local JBEB_IndicatorGui = nil
local JBEB_JBLabel = nil
local JBEB_EBLabel = nil
local SD = {SkinsRoot = nil, SkinSelections = {}, GloveSelections = {}, GloveFolders = {}}
pcall(function()
SD.SkinsRoot = RepStore:FindFirstChild("Assets") and RepStore.Assets:FindFirstChild("Skins")
end)
if SD.SkinsRoot then
pcall(function()
for _, wf in ipairs(SD.SkinsRoot:GetChildren()) do
local skins = {}
for _, sf in ipairs(wf:GetChildren()) do
skins[#skins + 1] = sf.Name
end
table.sort(skins)
SD.SkinSelections[wf.Name] = skins
end
for _, folder in ipairs(SD.SkinsRoot:GetChildren()) do
if (folder.Name:match("Glove") or folder.Name:match("Gloves") or folder.Name == "Hand Wraps")
and not (folder.Name:match("T Glove") or folder.Name:match("CT Glove") or folder.Name:match("T Gloves") or folder.Name:match("CT Gloves")) then
SD.GloveFolders[#SD.GloveFolders + 1] = folder
end
end
end)
end
for _, gf in ipairs(SD.GloveFolders) do
local skins = {"Default"}
for _, skin in ipairs(gf:GetChildren()) do
skins[#skins + 1] = skin.Name
end
SD.GloveSelections[gf.Name] = skins
end
if string.find(G.executor, "RonixExploit", 1, true) or string.find(G.executor, "Xeno", 1, true) or string.find(G.executor, "Solara", 1, true) then
G.knifeChangerSupported = false
end
if not RepStore:FindFirstChild("database") then
local db = Instance.new("Folder")
db.Name = "database"
db.Parent = RepStore
end
local function RunOnActor(func)
local success = false
pcall(function()
if not workspace:FindFirstChild("_BankrollActors") then
local af = Instance.new("Folder")
af.Name = "_BankrollActors"
af.Parent = workspace
end
task.defer(func)
success = true
end)
if not success then
pcall(func)
end
end
local function PlayIntro()
local IG = Instance.new("ScreenGui")
IG.IgnoreGuiInset = true
IG.Parent = game:GetService("CoreGui")
local IB = Instance.new("Frame", IG)
IB.Size = UDim2.new(1, 0, 1, 0)
IB.BackgroundTransparency = 1
IB.BorderSizePixel = 0
local IC = Instance.new("Frame", IB)
IC.Size = UDim2.new(0, 400, 0, 70)
IC.Position = UDim2.new(0.5, 0, 0.5, 0)
IC.AnchorPoint = Vector2.new(0.5, 0.5)
IC.BackgroundTransparency = 1
local LB = Instance.new("TextLabel", IC)
LB.Text = "B"
LB.Font = Enum.Font.GothamBlack
LB.TextSize = 80
LB.TextColor3 = Color3.fromRGB(255, 60, 160)
LB.Size = UDim2.new(0.15, 0, 1, 0)
LB.BackgroundTransparency = 1
LB.TextTransparency = 1
LB.AnchorPoint = Vector2.new(0.5, 0.5)
LB.Position = UDim2.new(0.5, 0, 0.5, 0)
local LR = Instance.new("TextLabel", IC)
LR.Text = "ANKROLL"
LR.Font = Enum.Font.GothamBlack
LR.TextSize = 80
LR.TextColor3 = Color3.fromRGB(255, 60, 160)
LR.Size = UDim2.new(0.85, 0, 1, 0)
LR.Position = UDim2.new(0.13, 0, 0, 0)
LR.BackgroundTransparency = 1
LR.TextTransparency = 1
LR.TextXAlignment = Enum.TextXAlignment.Left
TS:Create(LB, TweenInfo.new(1), {TextTransparency = 0}):Play()
task.wait(1.5)
TS:Create(LB, TweenInfo.new(1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position = UDim2.new(0.075, 0, 0.5, 0)}):Play()
task.wait(0.8)
TS:Create(LR, TweenInfo.new(1), {TextTransparency = 0}):Play()
task.wait(2.5)
local fi = TweenInfo.new(1)
TS:Create(LB, fi, {TextTransparency = 1}):Play()
TS:Create(LR, fi, {TextTransparency = 1}):Play()
task.wait(1)
IG:Destroy()
end
PlayIntro()
local function GetUIParent()
if gethui then return gethui() end
return game:GetService("CoreGui")
end
local Parent = GetUIParent()
for _, child in pairs(Parent:GetChildren()) do
if child.Name == "BankrollUI" then
child:Destroy()
end
end
pcall(function()
if game:GetService("CoreGui"):FindFirstChild("ESP_Highlight_Container") then
game:GetService("CoreGui").ESP_Highlight_Container:Destroy()
end
end)
local UI = Instance.new("ScreenGui")
UI.Name = "BankrollUI"
UI.IgnoreGuiInset = true
UI.Parent = Parent
UI.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
local Themes = {
Default = {Main = Color3.fromRGB(20, 20, 20), Item = Color3.fromRGB(30, 30, 30), Outline = Color3.fromRGB(60, 60, 60), Accent = Color3.fromRGB(255, 105, 180), Text = Color3.fromRGB(255, 255, 255), TextDim = Color3.fromRGB(150, 150, 150), TextStroke = Color3.fromRGB(0, 0, 0)},
Dark = {Main = Color3.fromRGB(15, 15, 15), Item = Color3.fromRGB(25, 25, 25), Outline = Color3.fromRGB(40, 40, 40), Accent = Color3.fromRGB(100, 100, 255), Text = Color3.fromRGB(240, 240, 240), TextDim = Color3.fromRGB(140, 140, 140), TextStroke = Color3.fromRGB(0, 0, 0)},
Light = {Main = Color3.fromRGB(240, 240, 240), Item = Color3.fromRGB(225, 225, 225), Outline = Color3.fromRGB(150, 150, 150), Accent = Color3.fromRGB(0, 140, 255), Text = Color3.fromRGB(255, 255, 255), TextDim = Color3.fromRGB(180, 180, 180), TextStroke = Color3.fromRGB(0, 0, 0)},
Blood = {Main = Color3.fromRGB(20, 10, 10), Item = Color3.fromRGB(30, 15, 15), Outline = Color3.fromRGB(60, 30, 30), Accent = Color3.fromRGB(220, 40, 40), Text = Color3.fromRGB(255, 200, 200), TextDim = Color3.fromRGB(150, 100, 100), TextStroke = Color3.fromRGB(20, 0, 0)},
Ocean = {Main = Color3.fromRGB(10, 20, 30), Item = Color3.fromRGB(15, 30, 45), Outline = Color3.fromRGB(30, 60, 90), Accent = Color3.fromRGB(0, 190, 255), Text = Color3.fromRGB(200, 240, 255), TextDim = Color3.fromRGB(100, 140, 160), TextStroke = Color3.fromRGB(0, 10, 20)},
Forest = {Main = Color3.fromRGB(20, 30, 20), Item = Color3.fromRGB(30, 45, 30), Outline = Color3.fromRGB(50, 80, 50), Accent = Color3.fromRGB(100, 200, 100), Text = Color3.fromRGB(220, 255, 220), TextDim = Color3.fromRGB(120, 160, 120), TextStroke = Color3.fromRGB(10, 20, 10)},
Midnight = {Main = Color3.fromRGB(15, 15, 30), Item = Color3.fromRGB(25, 25, 45), Outline = Color3.fromRGB(40, 40, 70), Accent = Color3.fromRGB(100, 100, 200), Text = Color3.fromRGB(220, 220, 255), TextDim = Color3.fromRGB(120, 120, 160), TextStroke = Color3.fromRGB(10, 10, 20)},
Sunset = {Main = Color3.fromRGB(30, 20, 20), Item = Color3.fromRGB(45, 30, 30), Outline = Color3.fromRGB(80, 50, 50), Accent = Color3.fromRGB(255, 150, 50), Text = Color3.fromRGB(255, 230, 220), TextDim = Color3.fromRGB(180, 140, 130), TextStroke = Color3.fromRGB(20, 10, 10)}
}
local CurrentTheme = Themes.Default
local ThemeRegistry = {}
local function AddThemeObject(obj, tt)
if not obj then return end
if not ThemeRegistry[tt] then ThemeRegistry[tt] = {} end
ThemeRegistry[tt][#ThemeRegistry[tt] + 1] = obj
pcall(function()
if tt == "Main" then obj.BackgroundColor3 = CurrentTheme.Main
elseif tt == "Item" then obj.BackgroundColor3 = CurrentTheme.Item
elseif tt == "Outline" then
if obj:IsA("UIStroke") then obj.Color = CurrentTheme.Outline
elseif obj:IsA("Frame") or obj:IsA("ScrollingFrame") then obj.BorderColor3 = CurrentTheme.Outline end
elseif tt == "Accent" then
if obj:IsA("TextLabel") or obj:IsA("TextButton") then obj.TextColor3 = CurrentTheme.Accent
else obj.BackgroundColor3 = CurrentTheme.Accent end
elseif tt == "Text" then
obj.TextColor3 = CurrentTheme.Text
if obj:IsA("TextLabel") or obj:IsA("TextButton") then
obj.TextStrokeTransparency = 0
obj.TextStrokeColor3 = CurrentTheme.TextStroke
end
elseif tt == "TextDim" then obj.TextColor3 = CurrentTheme.TextDim end
end)
end
local function CleanThemeRegistry()
for tt, objs in pairs(ThemeRegistry) do
local c = {}
for _, o in pairs(objs) do
local a = false
pcall(function() a = (o.Parent ~= nil) or (o.Visible ~= nil) end)
if a then c[#c + 1] = o end
end
ThemeRegistry[tt] = c
end
end
local function RefreshTheme()
for tt, objs in pairs(ThemeRegistry) do
for _, o in pairs(objs) do
pcall(function()
if tt == "Main" then o.BackgroundColor3 = CurrentTheme.Main
elseif tt == "Item" then o.BackgroundColor3 = CurrentTheme.Item
elseif tt == "Outline" then
if o:IsA("UIStroke") then o.Color = CurrentTheme.Outline
elseif o:IsA("Frame") or o:IsA("ScrollingFrame") then o.BorderColor3 = CurrentTheme.Outline end
elseif tt == "Accent" then
if o:IsA("TextLabel") or o:IsA("TextButton") then o.TextColor3 = CurrentTheme.Accent
else o.BackgroundColor3 = CurrentTheme.Accent end
elseif tt == "Text" then
o.TextColor3 = CurrentTheme.Text
if o:IsA("TextLabel") or o:IsA("TextButton") then
o.TextStrokeTransparency = 0
o.TextStrokeColor3 = CurrentTheme.TextStroke
end
elseif tt == "TextDim" then o.TextColor3 = CurrentTheme.TextDim end
end)
end
end
CleanThemeRegistry()
end
local function DeepCopy(orig)
local c = {}
for k, v in pairs(orig) do
if type(v) == "table" then v = DeepCopy(v) end
c[k] = v
end
return c
end
local SecondaryWeapons = {["USP-S"] = true, ["Glock-18"] = true, ["P250"] = true, ["Five-SeveN"] = true, ["Tec-9"] = true, ["Dual Berettas"] = true, ["Deagle"] = true, ["R8 Revolver"] = true, ["CZ75-Auto"] = true, ["P2000"] = true}
local ScopedWeapons = {["AWP"] = true, ["SSG 08"] = true, ["G3SG1"] = true, ["SCAR-20"] = true, ["AUG"] = true, ["SG 553"] = true}
local Camera = workspace.CurrentCamera
local Config = {
Aimbot = {Enabled = false, TeamCheck = true, AliveCheck = true, FOV = 50, Smoothness = 4, TargetPart = "Head", WallCheck = true, HoldKey = Enum.KeyCode.LeftAlt, DrawFOV = true, Mode = "Hold"},
AntiAim = {Enabled = false, YawOffset = 180, JitterRange = 35},
Triggerbot = {Enabled = false, HoldKey = Enum.KeyCode.E, Delay = 0.05, TeamCheck = true, Mode = "Hold"},
ESP = {
Enabled = false, Box = false, BoxOutline = false, BoxThickness = 1,
BoxFill = false, BoxFillColor1 = Color3.fromRGB(255, 0, 0), BoxFillColor2 = Color3.fromRGB(0, 0, 255), BoxFillTransparency = 0.8, BoxFillFadeSpeed = 3,
Name = false, NameSize = 13, Health = false, Skeleton = false, SkeletonThickness = 2,
HeadDot = false, Highlight = false, Distance = false, TeamCheck = true, VisibilityCheck = false, MaxDistance = 2000,
BoxColor = Color3.fromRGB(255, 255, 255), BoxVisibleColor = Color3.fromRGB(0, 255, 0), BoxNotVisibleColor = Color3.fromRGB(255, 0, 0),
NameColor = Color3.fromRGB(255, 255, 255), NameVisibleColor = Color3.fromRGB(0, 255, 0), NameNotVisibleColor = Color3.fromRGB(255, 0, 0),
SkeletonColor = Color3.fromRGB(255, 255, 255), SkeletonVisibleColor = Color3.fromRGB(0, 255, 0), SkeletonNotVisibleColor = Color3.fromRGB(255, 0, 0),
HeadDotColor = Color3.fromRGB(255, 255, 255), HeadDotVisibleColor = Color3.fromRGB(0, 255, 0), HeadDotNotVisibleColor = Color3.fromRGB(255, 0, 0),
HighlightFill = Color3.fromRGB(255, 0, 0), HighlightOutline = Color3.fromRGB(255, 255, 255),
HighlightVisibleFill = Color3.fromRGB(0, 255, 0), HighlightHiddenFill = Color3.fromRGB(255, 0, 0),
DistanceColor = Color3.fromRGB(255, 255, 255),
HealthBarCustom = false, HealthBarColor = Color3.fromRGB(0, 255, 0),
CurrentWeapon = {Enabled = false, Color = Color3.fromRGB(255, 255, 255)},
Bomb = {Enabled = false, Box = true, Highlight = true, Name = true, Color = Color3.fromRGB(255, 0, 0)},
DroppedWeapons = {Enabled = false, Box = true, Highlight = true, Name = true, Color = Color3.fromRGB(255, 255, 255)},
Molotovs = {Enabled = false, Highlight = true, Color = Color3.fromRGB(255, 165, 0)},
Smokes = {Enabled = false, Highlight = true, Color = Color3.fromRGB(200, 200, 200)}
},
Charms = {Enabled = false, TeamCheck = true, VisibleColor = Color3.fromRGB(255, 0, 0), HiddenColor = Color3.fromRGB(255, 255, 255), Transparency = 0.5, AlwaysOnTop = true},
SkinChanger = {Enabled = false, Skins = {}},
KnifeChanger = {Enabled = false, Model = "Karambit"},
GloveChanger = {Enabled = false, Gloves = {}, Model = "Sports Gloves", Skin = "Default"},
Graph = {Enabled = false, Color = Color3.fromRGB(255, 255, 255), MaxSpeed = 50, PeakEnabled = false},
MovementDisplay = {Enabled = false, Color = Color3.fromRGB(255, 255, 255)},
AutoBhop = false,
BhopKey = Enum.KeyCode.Space,
JumpBug = {Enabled = false, Power = 1.0, Mode = "Always", Key = Enum.KeyCode.V},
EdgeBug = {Enabled = false, MaxDuration = 2.0, Range = 8, Mode = "Always", Key = Enum.KeyCode.B},
JBEBIndicator = true,
JBColor = Color3.fromRGB(255, 255, 255),
EBColor = Color3.fromRGB(255, 255, 255),
Watermark = true,
ShowKeybinds = true,
Debug = false,
SpectatorList = false,
FlashRemover = false,
SmokeRemover = false,
Theme = "Default"
}
local DefaultConfig = DeepCopy(Config)
local ESP_ = {Players = {}}
local CharmCache = {}
local CharmVisCache = {}
for w, s in pairs(SD.SkinSelections) do
Config.SkinChanger.Skins[w] = s[1] or "Default"
end
for _, gf in ipairs(SD.GloveFolders) do
Config.GloveChanger.Gloves[gf.Name] = "Default"
end
local function is_enemy(plr)
if plr == Players.LocalPlayer then return false end
if plr.Team and Players.LocalPlayer.Team then return plr.Team ~= Players.LocalPlayer.Team end
local mc = Players.LocalPlayer.Character
local tc = plr.Character
if not mc or not tc or not mc.Parent or not tc.Parent then return false end
return mc.Parent.Name ~= tc.Parent.Name
end
local Checkifbaseknife = {"CT Knife", "T Knife", "Knife"}
local function Checkknife(w)
if not w then return false end
for _, k in ipairs(Checkifbaseknife) do
if w == k then return true end
end
return false
end
local function MakeDraggable(obj, dh)
local handle = dh or obj
handle.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
local ds = input.Position
local sp = obj.Position
local ic, ie
ic = UIS.InputChanged:Connect(function(mi)
if mi.UserInputType == Enum.UserInputType.MouseMovement then
local d = mi.Position - ds
obj.Position = UDim2.new(sp.X.Scale, sp.X.Offset + d.X, sp.Y.Scale, sp.Y.Offset + d.Y)
end
end)
ie = input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
if ic then ic:Disconnect() end
if ie then ie:Disconnect() end
end
end)
end
end)
end
local function IsHoldKeyDown(key)
if not key then return false end
if typeof(key) == "EnumItem" then
if key.EnumType == Enum.KeyCode then return UIS:IsKeyDown(key)
elseif key.EnumType == Enum.UserInputType then return UIS:IsMouseButtonPressed(key) end
end
return false
end
local function IsJBEBActive(config)
if config.Mode == "Always" then
return config.Enabled
elseif config.Mode == "Toggle" then
if config == Config.JumpBug then
return config.Enabled and G.JumpBugActive
else
return config.Enabled and G.EdgeBugToggleActive
end
elseif config.Mode == "Hold" then
return config.Enabled and IsHoldKeyDown(config.Key)
end
return false
end
local ESPFolder
pcall(function()
ESPFolder = Instance.new("Folder", game:GetService("CoreGui"))
ESPFolder.Name = "ESP_Highlight_Container"
end)
local function NewDrawing(dt, props)
local s, d = pcall(function()
local dr = Drawing.new(dt)
if dr and type(dr) ~= "number" then
for k, v in pairs(props) do
pcall(function() dr[k] = v end)
end
return dr
end
return nil
end)
if s and d and type(d) ~= "number" then
AD(d)
return d
end
return nil
end
local function CreatePlayerESP()
local e = {Box = {}, BoxOutline = {}, Skeleton = {}, Fill = {}, LastVisCheck = 0, IsVisible = false, Valid = false, Root = nil, HeadPart = nil, Hum = nil, Char = nil}
for i = 1, 4 do
local outline = NewDrawing("Line", {Thickness = 3, Color = Color3.new(0, 0, 0), Visible = false, ZIndex = 1})
if outline and type(outline) ~= "number" then e.BoxOutline[i] = outline end
local box = NewDrawing("Line", {Thickness = 1, Visible = false, ZIndex = 2})
if box and type(box) ~= "number" then e.Box[i] = box end
end
for i = 1, 2 do
pcall(function()
local tri = Drawing.new("Triangle")
if tri and type(tri) ~= "number" then
tri.Filled = true
tri.Visible = false
tri.Transparency = 0
tri.ZIndex = 0
AD(tri)
e.Fill[i] = tri
end
end)
end
for i = 1, 20 do
local skel = NewDrawing("Line", {Thickness = 2, Visible = false})
if skel and type(skel) ~= "number" then e.Skeleton[i] = skel end
end
local headDot = NewDrawing("Circle", {Thickness = 1, NumSides = 30, Filled = false, Visible = false})
if headDot and type(headDot) ~= "number" then e.HeadDot = headDot end
local hpBg = NewDrawing("Line", {Thickness = 2, Visible = false, Color = Color3.new(0, 0, 0), Transparency = 0.5, ZIndex = 2})
if hpBg and type(hpBg) ~= "number" then e.HpBg = hpBg end
local hp = NewDrawing("Line", {Thickness = 2, Visible = false, ZIndex = 3})
if hp and type(hp) ~= "number" then e.Hp = hp end
local name = NewDrawing("Text", {Size = 13, Center = true, Outline = true, Font = 2, Visible = false})
if name and type(name) ~= "number" then e.Name = name end
local dist = NewDrawing("Text", {Size = 11, Center = true, Outline = true, Font = 2, Visible = false})
if dist and type(dist) ~= "number" then e.Dist = dist end
local weaponName = NewDrawing("Text", {Size = 12, Center = false, Outline = true, Font = 2, Visible = false})
if weaponName and type(weaponName) ~= "number" then e.WeaponName = weaponName end
pcall(function()
if ESPFolder then
e.HL = Instance.new("Highlight")
e.HL.FillTransparency = 0.5
e.HL.OutlineTransparency = 0
e.HL.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
e.HL.Enabled = false
e.HL.Parent = ESPFolder
end
end)
return e
end
local function DestroyPlayerESP(e)
if not e then return end
for _, d in pairs(e.Box) do if d and type(d) ~= "number" then pcall(function() d:Remove() end) end end
for _, d in pairs(e.BoxOutline) do if d and type(d) ~= "number" then pcall(function() d:Remove() end) end end
for _, d in pairs(e.Skeleton) do if d and type(d) ~= "number" then pcall(function() d:Remove() end) end end
for _, d in pairs(e.Fill) do if d and type(d) ~= "number" then pcall(function() d:Remove() end) end end
if e.HeadDot and type(e.HeadDot) ~= "number" then pcall(function() e.HeadDot:Remove() end) end
if e.HpBg and type(e.HpBg) ~= "number" then pcall(function() e.HpBg:Remove() end) end
if e.Hp and type(e.Hp) ~= "number" then pcall(function() e.Hp:Remove() end) end
if e.Name and type(e.Name) ~= "number" then pcall(function() e.Name:Remove() end) end
if e.Dist and type(e.Dist) ~= "number" then pcall(function() e.Dist:Remove() end) end
if e.WeaponName and type(e.WeaponName) ~= "number" then pcall(function() e.WeaponName:Remove() end) end
if e.HL then pcall(function() e.HL:Destroy() end) end
end
local function HidePlayerESP(e)
if not e then return end
for _, d in pairs(e.Box) do if d and type(d) ~= "number" then pcall(function() d.Visible = false end) end end
for _, d in pairs(e.BoxOutline) do if d and type(d) ~= "number" then pcall(function() d.Visible = false end) end end
for _, d in pairs(e.Skeleton) do if d and type(d) ~= "number" then pcall(function() d.Visible = false end) end end
for _, d in pairs(e.Fill) do if d and type(d) ~= "number" then pcall(function() d.Visible = false end) end end
if e.HeadDot and type(e.HeadDot) ~= "number" then pcall(function() e.HeadDot.Visible = false end) end
if e.HpBg and type(e.HpBg) ~= "number" then pcall(function() e.HpBg.Visible = false end) end
if e.Hp and type(e.Hp) ~= "number" then pcall(function() e.Hp.Visible = false end) end
if e.Name and type(e.Name) ~= "number" then pcall(function() e.Name.Visible = false end) end
if e.Dist and type(e.Dist) ~= "number" then pcall(function() e.Dist.Visible = false end) end
if e.WeaponName and type(e.WeaponName) ~= "number" then pcall(function() e.WeaponName.Visible = false end) end
if e.HL then pcall(function() e.HL.Enabled = false end) end
end
local function CreateWorldESPObject(hasName, hasRadius)
local e = {Box = {}, HL = nil, Model = nil}
if hasName then
local name = NewDrawing("Text", {Size = 13, Center = true, Outline = true, Font = 2, Visible = false})
if name and type(name) ~= "number" then e.Name = name end
end
if hasRadius then
local radius = NewDrawing("Circle", {Thickness = 1.5, Filled = false, Visible = false, NumSides = 60})
if radius and type(radius) ~= "number" then e.Radius = radius end
end
for i = 1, 4 do
local box = NewDrawing("Line", {Thickness = 1, Visible = false, ZIndex = 2})
if box and type(box) ~= "number" then e.Box[i] = box end
end
if ESPFolder then
pcall(function()
e.HL = Instance.new("Highlight")
e.HL.FillTransparency = 0.5
e.HL.OutlineTransparency = 0
e.HL.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
e.HL.Enabled = false
e.HL.Parent = ESPFolder
end)
end
return e
end
local function HideWorldESPObject(e)
if not e then return end
for _, d in pairs(e.Box) do if d and type(d) ~= "number" then pcall(function() d.Visible = false end) end end
if e.Name and type(e.Name) ~= "number" then pcall(function() e.Name.Visible = false end) end
if e.Radius and type(e.Radius) ~= "number" then pcall(function() e.Radius.Visible = false end) end
if e.HL then pcall(function() e.HL.Enabled = false end) end
end
local function HideAllWorldESP()
for _, eo in pairs(WorldESP.DroppedWeapons) do HideWorldESPObject(eo) end
if WorldESP.Bomb then HideWorldESPObject(WorldESP.Bomb) end
for _, eo in pairs(WorldESP.Molotovs) do HideWorldESPObject(eo) end
for _, eo in pairs(WorldESP.Smokes) do HideWorldESPObject(eo) end
end
local BONES_R15 = {{"Head","UpperTorso"},{"UpperTorso","LowerTorso"},{"LowerTorso","HumanoidRootPart"},{"UpperTorso","LeftUpperArm"},{"LeftUpperArm","LeftLowerArm"},{"LeftLowerArm","LeftHand"},{"UpperTorso","RightUpperArm"},{"RightUpperArm","RightLowerArm"},{"RightLowerArm","RightHand"},{"HumanoidRootPart","LeftUpperLeg"},{"LeftUpperLeg","LeftLowerLeg"},{"LeftLowerLeg","LeftFoot"},{"HumanoidRootPart","RightUpperLeg"},{"RightUpperLeg","RightLowerLeg"},{"RightLowerLeg","RightFoot"}}
local BONES_R6 = {{"Head","Torso"},{"Torso","HumanoidRootPart"},{"Torso","Left Arm"},{"Torso","Right Arm"},{"HumanoidRootPart","Left Leg"},{"HumanoidRootPart","Right Leg"}}
local bonePosCache = {}
local InventoryController, GetWeaponProperties
local function InitInventory()
if not G.knifeChangerSupported then return end
if not InventoryController then
pcall(function()
local module = RepStore:FindFirstChild("Controllers") and RepStore.Controllers:FindFirstChild("InventoryController")
if module then
local result = SafeRequire(module)
if result then InventoryController = result end
end
end)
end
if not GetWeaponProperties then
pcall(function()
local module = RepStore:FindFirstChild("Components") and RepStore.Components:FindFirstChild("Common") and RepStore.Components.Common:FindFirstChild("GetWeaponProperties")
if module then
local result = SafeRequire(module)
if result then GetWeaponProperties = result end
end
end)
end
end
InitInventory()
if not InventoryController then G.knifeChangerSupported = false end
local Router
pcall(function()
local module = RepStore:FindFirstChild("Database") and RepStore.Database:FindFirstChild("Security") and RepStore.Database.Security:FindFirstChild("Router")
if module then Router = SafeRequire(module) end
end)
local function inspectWeapon(weapon, skin, float)
if not Router then return end
pcall(function() Router.broadcastRouter("WeaponInspect", weapon, skin, float or 0.01, nil, nil, nil, nil, "Weapon", nil, "fake_id", nil, false) end)
end
local UIE = {}
local function CreateMainUI()
local M = Instance.new("Frame")
M.Name = "MainFrame"
M.Size = UDim2.new(0, 550, 0, 400)
M.Position = UDim2.new(0.5, -275, 0.5, -200)
M.BorderSizePixel = 0
M.Parent = UI
AddThemeObject(M, "Main")
MakeDraggable(M)
local MS = Instance.new("UIStroke", M)
MS.Thickness = 1
AddThemeObject(MS, "Outline")
local TB = Instance.new("Frame")
TB.Size = UDim2.new(1, 0, 0, 40)
TB.BackgroundTransparency = 1
TB.Parent = M
local T = Instance.new("TextLabel")
T.Text = "bankroll - free version"
T.Font = Enum.Font.ArialBold
T.TextSize = 18
T.Size = UDim2.new(1, 0, 1, 0)
T.BackgroundTransparency = 1
T.TextStrokeTransparency = 0
T.Parent = TB
AddThemeObject(T, "Text")
local TL = Instance.new("Frame")
TL.Size = UDim2.new(1, 0, 0, 2)
TL.Position = UDim2.new(0, 0, 1, -2)
TL.BorderSizePixel = 0
TL.Parent = TB
AddThemeObject(TL, "Accent")
local DB = Instance.new("TextButton")
DB.Name = "DiscordBtn"
DB.Size = UDim2.new(0, 60, 0, 20)
DB.Position = UDim2.new(1, -70, 0.5, 0)
DB.AnchorPoint = Vector2.new(0, 0.5)
DB.BackgroundColor3 = Color3.fromRGB(88, 101, 242)
DB.Text = "Discord"
DB.Font = Enum.Font.GothamBold
DB.TextSize = 12
DB.TextColor3 = Color3.new(1, 1, 1)
DB.Parent = TB
local CA = Instance.new("Frame")
CA.Size = UDim2.new(1, -20, 1, -80)
CA.Position = UDim2.new(0, 10, 0, 45)
CA.BackgroundTransparency = 1
CA.Parent = M
local TBR = Instance.new("ScrollingFrame")
TBR.Size = UDim2.new(1, 0, 0, 35)
TBR.Position = UDim2.new(0, 0, 1, -35)
TBR.BackgroundTransparency = 1
TBR.BorderSizePixel = 0
TBR.ScrollBarThickness = 2
TBR.AutomaticCanvasSize = Enum.AutomaticSize.X
TBR.CanvasSize = UDim2.new(0, 0, 0, 0)
TBR.Parent = M
local TBL = Instance.new("UIListLayout")
TBL.FillDirection = Enum.FillDirection.Horizontal
TBL.HorizontalAlignment = Enum.HorizontalAlignment.Left
TBL.Padding = UDim.new(0, 5)
TBL.Parent = TBR
UIE.Main = M
UIE.DiscordBtn = DB
UIE.ContentArea = CA
UIE.TabBar = TBR
return M
end
local Main = CreateMainUI()
local function JoinDiscord()
local code = "Pmnk9e6egS"
local req = (syn and syn.request) or (http and http.request) or http_request or (fluxus and fluxus.request) or request
if req then
pcall(function()
req({Url = 'http://127.0.0.1:6463/rpc?v=1', Method = 'POST', Headers = {['Content-Type'] = 'application/json', ['Origin'] = 'https://discord.com'}, Body = HS:JSONEncode({cmd = 'INVITE_BROWSER', nonce = HS:GenerateGUID(false), args = {code = code}})})
end)
end
if setclipboard then
pcall(function() setclipboard("https://discord.gg/" .. code) end)
end
end
local Tabs = {}
local UIListeners = {}
local ColorPickerPopups = {}
local function RefreshUI()
for _, f in pairs(UIListeners) do pcall(f) end
RefreshTheme()
end
local function CreateTab(name)
local Btn = Instance.new("TextButton")
Btn.Text = name
Btn.Size = UDim2.new(0, 75, 1, 0)
Btn.BackgroundTransparency = 1
Btn.Font = Enum.Font.ArialBold
Btn.TextSize = 14
Btn.TextStrokeTransparency = 0
Btn.Parent = UIE.TabBar
local Ln = Instance.new("Frame")
Ln.Size = UDim2.new(1, 0, 0, 2)
Ln.Position = UDim2.new(0, 0, 1, 0)
Ln.BorderSizePixel = 0
Ln.Visible = false
Ln.Parent = Btn
AddThemeObject(Ln, "Accent")
local Pg = Instance.new("ScrollingFrame")
Pg.Size = UDim2.new(1, 0, 1, 0)
Pg.BackgroundTransparency = 1
Pg.ScrollBarThickness = 2
Pg.Visible = false
Pg.AutomaticCanvasSize = Enum.AutomaticSize.Y
Pg.Parent = UIE.ContentArea
local PgLayout = Instance.new("UIListLayout", Pg)
PgLayout.Padding = UDim.new(0, 5)
PgLayout.SortOrder = Enum.SortOrder.LayoutOrder
Instance.new("UIPadding", Pg).PaddingLeft = UDim.new(0, 5)
Pg:FindFirstChildOfClass("UIPadding").PaddingTop = UDim.new(0, 5)
local TO = {Button = Btn, Page = Pg, Line = Ln}
Btn.MouseButton1Down:Connect(function()
for _, t in pairs(Tabs) do
t.Page.Visible = false
t.Line.Visible = false
AddThemeObject(t.Button, "TextDim")
end
for _, pop in pairs(ColorPickerPopups) do pcall(function() pop.Visible = false end) end
Pg.Visible = true
Ln.Visible = true
AddThemeObject(Btn, "Text")
end)
if #Tabs == 0 then
Pg.Visible = true
Ln.Visible = true
AddThemeObject(Btn, "Text")
else
AddThemeObject(Btn, "TextDim")
end
Tabs[#Tabs + 1] = TO
return Pg
end
local function CreateSplitTab(name)
local Btn = Instance.new("TextButton")
Btn.Text = name
Btn.Size = UDim2.new(0, 75, 1, 0)
Btn.BackgroundTransparency = 1
Btn.Font = Enum.Font.ArialBold
Btn.TextSize = 14
Btn.TextStrokeTransparency = 0
Btn.Parent = UIE.TabBar
local Ln = Instance.new("Frame")
Ln.Size = UDim2.new(1, 0, 0, 2)
Ln.Position = UDim2.new(0, 0, 1, 0)
Ln.BorderSizePixel = 0
Ln.Visible = false
Ln.Parent = Btn
AddThemeObject(Ln, "Accent")
local Container = Instance.new("Frame")
Container.Size = UDim2.new(1, 0, 1, 0)
Container.BackgroundTransparency = 1
Container.Visible = false
Container.Parent = UIE.ContentArea
local Left = Instance.new("ScrollingFrame")
Left.Size = UDim2.new(0.5, -5, 1, 0)
Left.BackgroundTransparency = 1
Left.ScrollBarThickness = 2
Left.AutomaticCanvasSize = Enum.AutomaticSize.Y
Left.Parent = Container
Instance.new("UIListLayout", Left).Padding = UDim.new(0, 5)
Left:FindFirstChildOfClass("UIListLayout").SortOrder = Enum.SortOrder.LayoutOrder
local lp = Instance.new("UIPadding", Left)
lp.PaddingLeft = UDim.new(0, 5)
lp.PaddingTop = UDim.new(0, 5)
local Right = Instance.new("ScrollingFrame")
Right.Size = UDim2.new(0.5, -5, 1, 0)
Right.Position = UDim2.new(0.5, 5, 0, 0)
Right.BackgroundTransparency = 1
Right.ScrollBarThickness = 2
Right.AutomaticCanvasSize = Enum.AutomaticSize.Y
Right.Parent = Container
Instance.new("UIListLayout", Right).Padding = UDim.new(0, 5)
Right:FindFirstChildOfClass("UIListLayout").SortOrder = Enum.SortOrder.LayoutOrder
local rp = Instance.new("UIPadding", Right)
rp.PaddingLeft = UDim.new(0, 5)
rp.PaddingTop = UDim.new(0, 5)
local TO = {Button = Btn, Page = Container, Line = Ln}
Btn.MouseButton1Down:Connect(function()
for _, t in pairs(Tabs) do
t.Page.Visible = false
t.Line.Visible = false
AddThemeObject(t.Button, "TextDim")
end
for _, pop in pairs(ColorPickerPopups) do pcall(function() pop.Visible = false end) end
Container.Visible = true
Ln.Visible = true
AddThemeObject(Btn, "Text")
end)
if #Tabs == 0 then
Container.Visible = true
Ln.Visible = true
AddThemeObject(Btn, "Text")
else
AddThemeObject(Btn, "TextDim")
end
Tabs[#Tabs + 1] = TO
return Left, Right
end
local function CreateToggle(p, t, c, k, cb)
local F = Instance.new("Frame")
F.Size = UDim2.new(1, 0, 0, 25)
F.BackgroundTransparency = 1
F.Parent = p
local L = Instance.new("TextLabel")
L.Text = t
L.Size = UDim2.new(0.8, 0, 1, 0)
L.BackgroundTransparency = 1
L.Font = Enum.Font.Arial
L.TextSize = 13
L.TextXAlignment = Enum.TextXAlignment.Left
L.TextStrokeTransparency = 0
L.Parent = F
AddThemeObject(L, "Text")
local TB = Instance.new("TextButton")
TB.Size = UDim2.new(1, 0, 1, 0)
TB.BackgroundTransparency = 1
TB.Text = ""
TB.Parent = F
local Bx = Instance.new("Frame")
Bx.Size = UDim2.new(0, 14, 0, 14)
Bx.Position = UDim2.new(1, -18, 0.5, 0)
Bx.AnchorPoint = Vector2.new(0, 0.5)
Bx.BorderSizePixel = 0
Bx.Parent = F
local function U()
if c[k] then AddThemeObject(Bx, "Accent") else AddThemeObject(Bx, "Item") end
end
UIListeners[#UIListeners + 1] = U
U()
TB.MouseButton1Down:Connect(function()
c[k] = not c[k]
U()
if cb then cb(c[k]) end
end)
return F
end
local function CreateSlider(p, t, mn, mx, c, k, cb)
local F = Instance.new("Frame")
F.Size = UDim2.new(1, 0, 0, 35)
F.BackgroundTransparency = 1
F.Parent = p
local L = Instance.new("TextLabel")
L.Text = t .. ": " .. tostring(c[k])
L.Size = UDim2.new(1, 0, 0, 18)
L.BackgroundTransparency = 1
L.Font = Enum.Font.Arial
L.TextSize = 13
L.TextXAlignment = Enum.TextXAlignment.Left
L.TextStrokeTransparency = 0
L.Parent = F
AddThemeObject(L, "Text")
local SB = Instance.new("Frame")
SB.Size = UDim2.new(1, -10, 0, 5)
SB.Position = UDim2.new(0, 5, 0, 22)
SB.BorderSizePixel = 0
SB.Parent = F
AddThemeObject(SB, "Item")
local Fl = Instance.new("Frame")
Fl.Size = UDim2.new((c[k] - mn) / (mx - mn), 0, 1, 0)
Fl.BorderSizePixel = 0
Fl.Parent = SB
AddThemeObject(Fl, "Accent")
local SBtn = Instance.new("TextButton")
SBtn.Size = UDim2.new(1, 0, 1, 0)
SBtn.BackgroundTransparency = 1
SBtn.Text = ""
SBtn.Parent = SB
local function U()
L.Text = t .. ": " .. tostring(math.floor(c[k] * 100 + 0.5) / 100)
Fl.Size = UDim2.new(math.clamp((c[k] - mn) / (mx - mn), 0, 1), 0, 1, 0)
end
UIListeners[#UIListeners + 1] = U
U()
SBtn.MouseButton1Down:Connect(function()
local mv, kl
mv = UIS.InputChanged:Connect(function(mi)
if mi.UserInputType == Enum.UserInputType.MouseMovement then
local s = math.clamp((mi.Position.X - SB.AbsolutePosition.X) / SB.AbsoluteSize.X, 0, 1)
local v = mn + ((mx - mn) * s)
if mx > 10 then v = math.floor(v) else v = math.floor(v * 100) / 100 end
c[k] = v
U()
if cb then cb(v) end
end
end)
kl = UIS.InputEnded:Connect(function(ei)
if ei.UserInputType == Enum.UserInputType.MouseButton1 then
if mv then mv:Disconnect() end
if kl then kl:Disconnect() end
end
end)
end)
end
local function CreateColorPicker(p, t, c, k, cb)
local F = Instance.new("Frame")
F.Size = UDim2.new(1, 0, 0, 25)
F.BackgroundTransparency = 1
F.Parent = p
local L = Instance.new("TextLabel")
L.Text = t
L.Size = UDim2.new(0.7, 0, 1, 0)
L.BackgroundTransparency = 1
L.Font = Enum.Font.Arial
L.TextSize = 13
L.TextXAlignment = Enum.TextXAlignment.Left
L.TextStrokeTransparency = 0
L.Parent = F
AddThemeObject(L, "Text")
local Pv = Instance.new("TextButton")
Pv.Size = UDim2.new(0, 24, 0, 14)
Pv.Position = UDim2.new(1, -28, 0.5, 0)
Pv.AnchorPoint = Vector2.new(0, 0.5)
Pv.BackgroundColor3 = c[k]
Pv.BorderSizePixel = 0
Pv.Text = ""
Pv.Parent = F
local Pop = Instance.new("Frame")
Pop.Size = UDim2.new(0, 150, 0, 150)
Pop.ZIndex = 100
Pop.Visible = false
Pop.BorderSizePixel = 0
Pop.Parent = Main
AddThemeObject(Pop, "Main")
ColorPickerPopups[#ColorPickerPopups + 1] = Pop
local PS = Instance.new("UIStroke", Pop)
PS.Thickness = 1
AddThemeObject(PS, "Outline")
local HF = Instance.new("Frame")
HF.Size = UDim2.new(1, -20, 0, 20)
HF.Position = UDim2.new(0, 10, 0, 10)
HF.BorderSizePixel = 0
HF.Parent = Pop
Instance.new("UIGradient", HF).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.66, Color3.fromRGB(0, 0, 255)),
ColorSequenceKeypoint.new(0.83, Color3.fromRGB(255, 0, 255)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(255, 0, 0))
})
local HBtn = Instance.new("TextButton", HF)
HBtn.Size = UDim2.new(1, 0, 1, 0)
HBtn.BackgroundTransparency = 1
HBtn.Text = ""
local SVF = Instance.new("Frame")
SVF.Size = UDim2.new(1, -20, 0, 100)
SVF.Position = UDim2.new(0, 10, 0, 40)
SVF.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
SVF.BorderSizePixel = 0
SVF.Parent = Pop
Instance.new("UIGradient", SVF).Color = ColorSequence.new(Color3.new(1, 1, 1), Color3.new(0, 0, 0))
SVF:FindFirstChildOfClass("UIGradient").Rotation = 90
local SVBtn = Instance.new("TextButton", SVF)
SVBtn.Size = UDim2.new(1, 0, 1, 0)
SVBtn.BackgroundTransparency = 1
SVBtn.Text = ""
local h, s, v = c[k]:ToHSV()
local function U()
Pv.BackgroundColor3 = c[k]
h, s, v = c[k]:ToHSV()
end
UIListeners[#UIListeners + 1] = U
HBtn.MouseButton1Down:Connect(function()
local mv, kl
mv = UIS.InputChanged:Connect(function(mi)
if mi.UserInputType == Enum.UserInputType.MouseMovement then
h = math.clamp((mi.Position.X - HF.AbsolutePosition.X) / HF.AbsoluteSize.X, 0, 1)
SVF.BackgroundColor3 = Color3.fromHSV(h, 1, 1)
local cc = Color3.fromHSV(h, s, v)
c[k] = cc
Pv.BackgroundColor3 = cc
if cb then cb(cc) end
end
end)
kl = UIS.InputEnded:Connect(function(ei)
if ei.UserInputType == Enum.UserInputType.MouseButton1 then
if mv then mv:Disconnect() end
if kl then kl:Disconnect() end
end
end)
end)
SVBtn.MouseButton1Down:Connect(function()
local mv, kl
mv = UIS.InputChanged:Connect(function(mi)
if mi.UserInputType == Enum.UserInputType.MouseMovement then
s = math.clamp((mi.Position.X - SVF.AbsolutePosition.X) / SVF.AbsoluteSize.X, 0, 1)
v = 1 - math.clamp((mi.Position.Y - SVF.AbsolutePosition.Y) / SVF.AbsoluteSize.Y, 0, 1)
local cc = Color3.fromHSV(h, s, v)
c[k] = cc
Pv.BackgroundColor3 = cc
if cb then cb(cc) end
end
end)
kl = UIS.InputEnded:Connect(function(ei)
if ei.UserInputType == Enum.UserInputType.MouseButton1 then
if mv then mv:Disconnect() end
if kl then kl:Disconnect() end
end
end)
end)
Pv.MouseButton1Down:Connect(function()
Pop.Visible = not Pop.Visible
if Pop.Visible then
local ap = Pv.AbsolutePosition
local mp = Main.AbsolutePosition
Pop.Position = UDim2.new(0, (ap.X - mp.X) + Pv.AbsoluteSize.X + 5, 0, ap.Y - mp.Y)
end
end)
return F
end
local function CreateKeybind(p, t, c, k, cb)
local F = Instance.new("Frame")
F.Size = UDim2.new(1, 0, 0, 25)
F.BackgroundTransparency = 1
F.Parent = p
local L = Instance.new("TextLabel")
L.Text = t
L.Size = UDim2.new(0.6, 0, 1, 0)
L.BackgroundTransparency = 1
L.Font = Enum.Font.Arial
L.TextSize = 13
L.TextXAlignment = Enum.TextXAlignment.Left
L.TextStrokeTransparency = 0
L.Parent = F
AddThemeObject(L, "Text")
local BB = Instance.new("TextButton")
BB.Size = UDim2.new(0, 70, 0, 18)
BB.Position = UDim2.new(1, -74, 0.5, 0)
BB.AnchorPoint = Vector2.new(0, 0.5)
BB.Text = (c[k] and c[k].Name) or "None"
BB.Font = Enum.Font.Arial
BB.TextSize = 11
BB.Parent = F
AddThemeObject(BB, "Item")
AddThemeObject(BB, "Text")
local function U()
BB.Text = (c[k] and c[k].Name) or "None"
end
UIListeners[#UIListeners + 1] = U
BB.MouseButton1Click:Connect(function()
BB.Text = "..."
local bi = UIS.InputBegan:Wait()
if bi.UserInputType == Enum.UserInputType.Keyboard or bi.UserInputType == Enum.UserInputType.MouseButton1 or bi.UserInputType == Enum.UserInputType.MouseButton2 then
local ik = bi.KeyCode
if ik == Enum.KeyCode.Unknown then ik = bi.UserInputType end
c[k] = ik
BB.Text = ik.Name
if cb then cb(ik) end
end
end)
end
local function CreateButton(p, t, cb)
local F = Instance.new("Frame")
F.Size = UDim2.new(1, 0, 0, 25)
F.BackgroundTransparency = 1
F.Parent = p
local Btn = Instance.new("TextButton")
Btn.Size = UDim2.new(1, -10, 1, -4)
Btn.Position = UDim2.new(0, 5, 0, 2)
Btn.BackgroundColor3 = CurrentTheme.Item
Btn.Text = t
Btn.Font = Enum.Font.Arial
Btn.TextSize = 13
Btn.TextColor3 = CurrentTheme.Text
Btn.Parent = F
AddThemeObject(Btn, "Item")
AddThemeObject(Btn, "Text")
Instance.new("UICorner", Btn).CornerRadius = UDim.new(0, 4)
Btn.MouseButton1Down:Connect(function() if cb then cb() end end)
end
local function CreateLabel(p, t, sz, al)
local L = Instance.new("TextLabel")
L.Text = t
L.Size = UDim2.new(1, 0, 0, sz or 18)
L.BackgroundTransparency = 1
L.Font = Enum.Font.ArialBold
L.TextSize = sz or 13
L.TextXAlignment = al or Enum.TextXAlignment.Left
L.TextStrokeTransparency = 0
L.Parent = p
AddThemeObject(L, "Text")
return L
end
local function CreateSingleDropdown(p, t, opts, c, k, cb)
local F = Instance.new("Frame")
F.Size = UDim2.new(1, 0, 0, 38)
F.BackgroundTransparency = 1
F.Parent = p
F.ZIndex = 2
local L = Instance.new("TextLabel")
L.Text = t
L.Size = UDim2.new(1, 0, 0, 18)
L.BackgroundTransparency = 1
L.Font = Enum.Font.Arial
L.TextSize = 13
L.TextXAlignment = Enum.TextXAlignment.Left
L.TextStrokeTransparency = 0
L.Parent = F
AddThemeObject(L, "Text")
local TB = Instance.new("TextButton")
TB.Size = UDim2.new(1, -10, 0, 18)
TB.Position = UDim2.new(0, 5, 0, 18)
TB.Text = c[k] or opts[1]
TB.Font = Enum.Font.Arial
TB.TextSize = 11
TB.BorderSizePixel = 0
TB.BackgroundColor3 = CurrentTheme.Item
TB.Parent = F
AddThemeObject(TB, "Item")
AddThemeObject(TB, "Text")
local Lst = Instance.new("ScrollingFrame")
Lst.Size = UDim2.new(0, 200, 0, 150)
Lst.Visible = false
Lst.CanvasSize = UDim2.new(0, 0, 0, 0)
Lst.ZIndex = 100
Lst.BorderSizePixel = 0
Lst.ScrollBarThickness = 2
Lst.Parent = Main
AddThemeObject(Lst, "Item")
Instance.new("UIStroke", Lst).Thickness = 1
AddThemeObject(Lst:FindFirstChildOfClass("UIStroke"), "Outline")
Instance.new("UIListLayout", Lst)
local function U()
TB.Text = c[k] or opts[1]
end
UIListeners[#UIListeners + 1] = U
local pop = false
TB.MouseButton1Down:Connect(function()
Lst.Visible = not Lst.Visible
if Lst.Visible and not pop then
pop = true
for _, opt in pairs(opts) do
local OB = Instance.new("TextButton")
OB.Size = UDim2.new(1, 0, 0, 18)
OB.Text = opt
OB.Font = Enum.Font.Arial
OB.TextSize = 11
OB.BackgroundTransparency = 1
OB.Parent = Lst
AddThemeObject(OB, "Text")
OB.MouseButton1Down:Connect(function()
c[k] = opt
TB.Text = opt
Lst.Visible = false
if cb then cb(opt) end
end)
end
Lst.CanvasSize = UDim2.new(0, 0, 0, #opts * 18)
end
if Lst.Visible then
local ap = TB.AbsolutePosition
local mp = Main.AbsolutePosition
Lst.Position = UDim2.new(0, ap.X - mp.X, 0, (ap.Y - mp.Y) + TB.AbsoluteSize.Y + 2)
Lst.Size = UDim2.new(0, TB.AbsoluteSize.X, 0, math.min(#opts * 18, 150))
end
end)
return F
end
local function CreateWatermark()
local WF = Instance.new("Frame")
WF.Name = "Watermark"
WF.Size = UDim2.new(0, 200, 0, 28)
WF.Position = UDim2.new(0.98, -200, 0.02, 0)
WF.BorderSizePixel = 0
WF.Visible = Config.Watermark
WF.Parent = UI
AddThemeObject(WF, "Main")
MakeDraggable(WF)
Instance.new("UIStroke", WF).Thickness = 1
AddThemeObject(WF:FindFirstChildOfClass("UIStroke"), "Outline")
Instance.new("UICorner", WF).CornerRadius = UDim.new(0, 6)
local WL = Instance.new("TextLabel")
WL.Size = UDim2.new(1, 0, 1, 0)
WL.BackgroundTransparency = 1
WL.Font = Enum.Font.GothamBold
WL.TextSize = 14
WL.TextStrokeTransparency = 0
WL.Parent = WF
AddThemeObject(WL, "Text")
task.spawn(Safe(function()
while true do
if WF and WF.Parent and WF.Visible then
local n = tick()
local e = n - G.lastFPSUpdate
if e >= 1 then
local fps = math.floor(G.FrameCount / (e + 0.0001))
G.FrameCount = 0
G.lastFPSUpdate = n
pcall(function()
WL.Text = string.format("bankroll | fps: %d | %s", fps, os.date("%H:%M:%S"))
WF.Size = UDim2.new(0, WL.TextBounds.X + 24, 0, 28)
end)
end
end
task.wait(0.1)
end
end))
return WF
end
local WatermarkFrame = CreateWatermark()
local function CreateKeybindList()
local KL = Instance.new("Frame")
KL.Name = "KeybindList"
KL.Size = UDim2.new(0, 200, 0, 0)
KL.AutomaticSize = Enum.AutomaticSize.Y
KL.Position = UDim2.new(0.01, 0, 0.5, 0)
KL.BorderSizePixel = 0
KL.Parent = UI
AddThemeObject(KL, "Main")
MakeDraggable(KL)
Instance.new("UIStroke", KL).Thickness = 1
AddThemeObject(KL:FindFirstChildOfClass("UIStroke"), "Outline")
Instance.new("UICorner", KL).CornerRadius = UDim.new(0, 6)
local KH = Instance.new("TextLabel")
KH.Size = UDim2.new(1, 0, 0, 20)
KH.Text = "Keybinds"
KH.Font = Enum.Font.GothamBold
KH.TextSize = 14
KH.BackgroundTransparency = 1
KH.LayoutOrder = -1
KH.Parent = KL
AddThemeObject(KH, "Text")
local KP = Instance.new("UIPadding", KL)
KP.PaddingTop = UDim.new(0, 5)
KP.PaddingBottom = UDim.new(0, 5)
KP.PaddingLeft = UDim.new(0, 10)
KP.PaddingRight = UDim.new(0, 10)
Instance.new("UIListLayout", KL).SortOrder = Enum.SortOrder.LayoutOrder
local function MKL()
local L = Instance.new("TextLabel")
L.Size = UDim2.new(1, 0, 0, 20)
L.BackgroundTransparency = 1
L.Font = Enum.Font.GothamBold
L.TextSize = 14
L.TextStrokeTransparency = 0
L.TextXAlignment = Enum.TextXAlignment.Left
L.Parent = KL
L.Visible = false
AddThemeObject(L, "Text")
return L
end
return KL, MKL(), MKL(), MKL(), MKL(), MKL()
end
local KeybindList, AimbotKeyLabel, BhopKeyLabel, TriggerKeyLabel, JBKeyLabel, EBKeyLabel = CreateKeybindList()
local function CreateSpectatorList()
local SL = Instance.new("Frame")
SL.Name = "SpectatorList"
SL.Size = UDim2.new(0, 200, 0, 30)
SL.Position = UDim2.new(0.98, -200, 0.02, 28)
SL.BorderSizePixel = 0
SL.Parent = UI
SL.Visible = false
AddThemeObject(SL, "Main")
MakeDraggable(SL)
Instance.new("UIStroke", SL).Thickness = 1
AddThemeObject(SL:FindFirstChildOfClass("UIStroke"), "Outline")
Instance.new("UICorner", SL).CornerRadius = UDim.new(0, 6)
local SLb = Instance.new("TextLabel", SL)
SLb.Size = UDim2.new(1, 0, 1, 0)
SLb.BackgroundTransparency = 1
SLb.Font = Enum.Font.GothamBold
SLb.TextSize = 14
AddThemeObject(SLb, "Text")
return SL, SLb
end
local SpectatorList, SpecLabel = CreateSpectatorList()
AC(UIS.InputBegan:Connect(Safe(function(input)
local typing = UIS:GetFocusedTextBox() ~= nil
if not typing and (input.KeyCode == Enum.KeyCode.RightShift or input.KeyCode == Enum.KeyCode.End or input.KeyCode == Enum.KeyCode.K or input.KeyCode == Enum.KeyCode.Home or input.KeyCode == Enum.KeyCode.Insert) then
Main.Visible = not Main.Visible
end
if not typing then
if Config.Aimbot.HoldKey and (input.KeyCode == Config.Aimbot.HoldKey or input.UserInputType == Config.Aimbot.HoldKey) then
if Config.Aimbot.Mode == "Toggle" then G.AimbotActive = not G.AimbotActive end
end
if Config.Triggerbot.HoldKey and (input.KeyCode == Config.Triggerbot.HoldKey or input.UserInputType == Config.Triggerbot.HoldKey) then
if Config.Triggerbot.Mode == "Toggle" then G.TriggerbotActive = not G.TriggerbotActive end
end
if Config.JumpBug.Key and (input.KeyCode == Config.JumpBug.Key or input.UserInputType == Config.JumpBug.Key) then
if Config.JumpBug.Mode == "Toggle" then G.JumpBugActive = not G.JumpBugActive end
end
if Config.EdgeBug.Key and (input.KeyCode == Config.EdgeBug.Key or input.UserInputType == Config.EdgeBug.Key) then
if Config.EdgeBug.Mode == "Toggle" then G.EdgeBugToggleActive = not G.EdgeBugToggleActive end
end
end
end)))
local LegitTab = CreateTab("Legitbot")
local MovementTab = CreateTab("Movement")
local VisualsLeft, VisualsRight = CreateSplitTab("Visuals")
local SkinLeft, SkinRight = CreateSplitTab("Skin Changer")
local MiscTab = CreateTab("Misc")
local SettingsLeft, SettingsRight = CreateSplitTab("Settings")
local visCheckFrames = {}
local function SetupLegitTab()
CreateLabel(LegitTab, "aimbot", 14, Enum.TextXAlignment.Center)
CreateToggle(LegitTab, "Enabled", Config.Aimbot, "Enabled", function(v) if not v then G.AimbotActive = false end end)
CreateToggle(LegitTab, "Team Check", Config.Aimbot, "TeamCheck")
CreateToggle(LegitTab, "Alive Check", Config.Aimbot, "AliveCheck")
CreateSlider(LegitTab, "FOV", 0, 500, Config.Aimbot, "FOV")
CreateSlider(LegitTab, "Smoothness", 1, 20, Config.Aimbot, "Smoothness")
CreateSingleDropdown(LegitTab, "Target Part", {"Head", "HumanoidRootPart", "Torso"}, Config.Aimbot, "TargetPart")
CreateToggle(LegitTab, "Wall Check", Config.Aimbot, "WallCheck")
CreateToggle(LegitTab, "Draw FOV", Config.Aimbot, "DrawFOV")
CreateKeybind(LegitTab, "Key", Config.Aimbot, "HoldKey")
CreateSingleDropdown(LegitTab, "Mode", {"Hold", "Toggle"}, Config.Aimbot, "Mode")
CreateLabel(LegitTab, "triggerbot", 14, Enum.TextXAlignment.Center)
CreateToggle(LegitTab, "Triggerbot", Config.Triggerbot, "Enabled")
CreateToggle(LegitTab, "Triggerbot Team Check", Config.Triggerbot, "TeamCheck")
CreateKeybind(LegitTab, "Key", Config.Triggerbot, "HoldKey")
CreateSingleDropdown(LegitTab, "Trigger Mode", {"Hold", "Toggle"}, Config.Triggerbot, "Mode")
CreateSlider(LegitTab, "Triggerbot Delay (s)", 0, 1, Config.Triggerbot, "Delay")
end
SetupLegitTab()
local function SetupVisualsTab()
CreateLabel(VisualsLeft, "player esp", 14, Enum.TextXAlignment.Center)
CreateToggle(VisualsLeft, "Enabled", Config.ESP, "Enabled", function(v) if not v then for _, e in pairs(ESP_.Players) do HidePlayerESP(e) end end end)
CreateToggle(VisualsLeft, "Team Check", Config.ESP, "TeamCheck")
CreateToggle(VisualsLeft, "Visibility Check", Config.ESP, "VisibilityCheck", function(v) for _, f in pairs(visCheckFrames) do pcall(function() f.Visible = v end) end end)
CreateSlider(VisualsLeft, "Max Distance", 100, 5000, Config.ESP, "MaxDistance")
CreateToggle(VisualsLeft, "Box", Config.ESP, "Box")
CreateToggle(VisualsLeft, "Box Outline", Config.ESP, "BoxOutline")
CreateSlider(VisualsLeft, "Box Thickness", 1, 5, Config.ESP, "BoxThickness")
CreateColorPicker(VisualsLeft, "Box Color", Config.ESP, "BoxColor")
local bvF = CreateColorPicker(VisualsLeft, "Box Visible", Config.ESP, "BoxVisibleColor")
visCheckFrames[#visCheckFrames + 1] = bvF
bvF.Visible = Config.ESP.VisibilityCheck
local bhF = CreateColorPicker(VisualsLeft, "Box Hidden", Config.ESP, "BoxNotVisibleColor")
visCheckFrames[#visCheckFrames + 1] = bhF
bhF.Visible = Config.ESP.VisibilityCheck
CreateToggle(VisualsLeft, "Box Fill", Config.ESP, "BoxFill")
CreateColorPicker(VisualsLeft, "Fill Color 1", Config.ESP, "BoxFillColor1")
CreateColorPicker(VisualsLeft, "Fill Color 2", Config.ESP, "BoxFillColor2")
CreateSlider(VisualsLeft, "Fill Transparency", 0, 1, Config.ESP, "BoxFillTransparency")
CreateSlider(VisualsLeft, "Fade Speed", 0.5, 10, Config.ESP, "BoxFillFadeSpeed")
CreateToggle(VisualsLeft, "Name", Config.ESP, "Name")
CreateSlider(VisualsLeft, "Name Size", 8, 24, Config.ESP, "NameSize")
CreateColorPicker(VisualsLeft, "Name Color", Config.ESP, "NameColor")
local nvF = CreateColorPicker(VisualsLeft, "Name Visible", Config.ESP, "NameVisibleColor")
visCheckFrames[#visCheckFrames + 1] = nvF
nvF.Visible = Config.ESP.VisibilityCheck
local nhF = CreateColorPicker(VisualsLeft, "Name Hidden", Config.ESP, "NameNotVisibleColor")
visCheckFrames[#visCheckFrames + 1] = nhF
nhF.Visible = Config.ESP.VisibilityCheck
CreateToggle(VisualsLeft, "Health", Config.ESP, "Health")
CreateToggle(VisualsLeft, "Custom HP Color", Config.ESP, "HealthBarCustom")
CreateColorPicker(VisualsLeft, "HP Bar Color", Config.ESP, "HealthBarColor")
CreateToggle(VisualsLeft, "Skeleton", Config.ESP, "Skeleton")
CreateSlider(VisualsLeft, "Skeleton Thickness", 1, 5, Config.ESP, "SkeletonThickness")
CreateColorPicker(VisualsLeft, "Skeleton Color", Config.ESP, "SkeletonColor")
local svF = CreateColorPicker(VisualsLeft, "Skeleton Visible", Config.ESP, "SkeletonVisibleColor")
visCheckFrames[#visCheckFrames + 1] = svF
svF.Visible = Config.ESP.VisibilityCheck
local shF = CreateColorPicker(VisualsLeft, "Skeleton Hidden", Config.ESP, "SkeletonNotVisibleColor")
visCheckFrames[#visCheckFrames + 1] = shF
shF.Visible = Config.ESP.VisibilityCheck
CreateToggle(VisualsLeft, "Head Dot", Config.ESP, "HeadDot")
CreateColorPicker(VisualsLeft, "Dot Color", Config.ESP, "HeadDotColor")
local dvF = CreateColorPicker(VisualsLeft, "Dot Visible", Config.ESP, "HeadDotVisibleColor")
visCheckFrames[#visCheckFrames + 1] = dvF
dvF.Visible = Config.ESP.VisibilityCheck
local dhF = CreateColorPicker(VisualsLeft, "Dot Hidden", Config.ESP, "HeadDotNotVisibleColor")
visCheckFrames[#visCheckFrames + 1] = dhF
dhF.Visible = Config.ESP.VisibilityCheck
CreateToggle(VisualsLeft, "Highlight", Config.ESP, "Highlight")
CreateColorPicker(VisualsLeft, "HL Fill", Config.ESP, "HighlightFill")
CreateColorPicker(VisualsLeft, "HL Outline", Config.ESP, "HighlightOutline")
local hvF = CreateColorPicker(VisualsLeft, "HL Visible Fill", Config.ESP, "HighlightVisibleFill")
visCheckFrames[#visCheckFrames + 1] = hvF
hvF.Visible = Config.ESP.VisibilityCheck
local hhF = CreateColorPicker(VisualsLeft, "HL Hidden Fill", Config.ESP, "HighlightHiddenFill")
visCheckFrames[#visCheckFrames + 1] = hhF
hhF.Visible = Config.ESP.VisibilityCheck
CreateToggle(VisualsLeft, "Distance", Config.ESP, "Distance")
CreateColorPicker(VisualsLeft, "Distance Color", Config.ESP, "DistanceColor")
CreateToggle(VisualsLeft, "Current Weapon", Config.ESP.CurrentWeapon, "Enabled")
CreateColorPicker(VisualsLeft, "Weapon Color", Config.ESP.CurrentWeapon, "Color")
CreateButton(VisualsLeft, "Reset ESP", function()
for plr, e in pairs(ESP_.Players) do
DestroyPlayerESP(e)
ESP_.Players[plr] = nil
end
for _, p in pairs(Players:GetPlayers()) do
if p ~= LP then
ESP_.Players[p] = CreatePlayerESP()
end
end
end)
CreateToggle(VisualsLeft, "Charms", Config.Charms, "Enabled", function(v)
if not v then
for plr, parts in pairs(CharmCache) do
for _, box in pairs(parts) do pcall(function() box:Destroy() end) end
CharmCache[plr] = nil
end
CharmVisCache = {}
end
end)
CreateToggle(VisualsLeft, "Charms Team Check", Config.Charms, "TeamCheck", function(v)
for plr, parts in pairs(CharmCache) do
if v and not is_enemy(plr) then
for _, box in pairs(parts) do pcall(function() box:Destroy() end) end
CharmCache[plr] = nil
CharmVisCache[plr] = nil
end
end
end)
CreateColorPicker(VisualsLeft, "Charms Visible", Config.Charms, "VisibleColor")
CreateColorPicker(VisualsLeft, "Charms Hidden", Config.Charms, "HiddenColor")
CreateSlider(VisualsLeft, "Charms Transparency", 0, 1, Config.Charms, "Transparency")
CreateToggle(VisualsLeft, "Charms Always On Top", Config.Charms, "AlwaysOnTop")
CreateLabel(VisualsRight, "world esp", 14, Enum.TextXAlignment.Center)
CreateToggle(VisualsRight, "Dropped Weapons", Config.ESP.DroppedWeapons, "Enabled")
CreateToggle(VisualsRight, "Dropped Box", Config.ESP.DroppedWeapons, "Box")
CreateToggle(VisualsRight, "Dropped Highlight", Config.ESP.DroppedWeapons, "Highlight")
CreateToggle(VisualsRight, "Dropped Name", Config.ESP.DroppedWeapons, "Name")
CreateColorPicker(VisualsRight, "Dropped Color", Config.ESP.DroppedWeapons, "Color")
CreateToggle(VisualsRight, "Bomb", Config.ESP.Bomb, "Enabled")
CreateToggle(VisualsRight, "Bomb Box", Config.ESP.Bomb, "Box")
CreateToggle(VisualsRight, "Bomb Highlight", Config.ESP.Bomb, "Highlight")
CreateToggle(VisualsRight, "Bomb Name", Config.ESP.Bomb, "Name")
CreateColorPicker(VisualsRight, "Bomb Color", Config.ESP.Bomb, "Color")
CreateToggle(VisualsRight, "Fire ESP", Config.ESP.Molotovs, "Enabled")
CreateToggle(VisualsRight, "Fire Highlight", Config.ESP.Molotovs, "Highlight")
CreateColorPicker(VisualsRight, "Fire Color", Config.ESP.Molotovs, "Color")
CreateToggle(VisualsRight, "Smoke ESP", Config.ESP.Smokes, "Enabled")
CreateToggle(VisualsRight, "Smoke Highlight", Config.ESP.Smokes, "Highlight")
CreateColorPicker(VisualsRight, "Smoke Color", Config.ESP.Smokes, "Color")
end
SetupVisualsTab()
local function SetupMovementTab()
CreateToggle(MovementTab, "Auto Bhop", Config, "AutoBhop")
CreateKeybind(MovementTab, "Bhop Key", Config, "BhopKey")
CreateToggle(MovementTab, "JumpBug Enabled", Config.JumpBug, "Enabled")
CreateSlider(MovementTab, "JB Power", 0.5, 3, Config.JumpBug, "Power")
CreateSingleDropdown(MovementTab, "JB Mode", {"Always", "Toggle", "Hold"}, Config.JumpBug, "Mode")
CreateKeybind(MovementTab, "JB Key", Config.JumpBug, "Key")
CreateToggle(MovementTab, "EdgeBug Enabled", Config.EdgeBug, "Enabled")
CreateSlider(MovementTab, "EB Max Duration", 0.5, 5, Config.EdgeBug, "MaxDuration")
CreateSlider(MovementTab, "EB Range", 2, 20, Config.EdgeBug, "Range")
CreateSingleDropdown(MovementTab, "EB Mode", {"Always", "Toggle", "Hold"}, Config.EdgeBug, "Mode")
CreateKeybind(MovementTab, "EB Key", Config.EdgeBug, "Key")
CreateToggle(MovementTab, "JB/EB Indicator", Config, "JBEBIndicator")
CreateColorPicker(MovementTab, "JB Color", Config, "JBColor")
CreateColorPicker(MovementTab, "EB Color", Config, "EBColor")
CreateToggle(MovementTab, "Movement Display", Config.MovementDisplay, "Enabled")
CreateColorPicker(MovementTab, "Display Color", Config.MovementDisplay, "Color")
CreateToggle(MovementTab, "Speed Graph", Config.Graph, "Enabled")
CreateToggle(MovementTab, "Show Peak Velocity", Config.Graph, "PeakEnabled")
CreateColorPicker(MovementTab, "Graph Color", Config.Graph, "Color")
CreateSlider(MovementTab, "Graph Max Speed", 10, 200, Config.Graph, "MaxSpeed")
end
SetupMovementTab()
local function SetupMiscTab()
CreateToggle(MiscTab, "Watermark", Config, "Watermark", function(v) WatermarkFrame.Visible = v end)
CreateToggle(MiscTab, "Keybind List", Config, "ShowKeybinds")
CreateToggle(MiscTab, "Spectator List", Config, "SpectatorList")
CreateToggle(MiscTab, "Flash Remover", Config, "FlashRemover")
CreateToggle(MiscTab, "Smoke Remover", Config, "SmokeRemover")
CreateToggle(MiscTab, "Anti-Aim", Config.AntiAim, "Enabled")
CreateSlider(MiscTab, "AA Yaw Offset", 0, 360, Config.AntiAim, "YawOffset")
CreateSlider(MiscTab, "AA Jitter", 0, 180, Config.AntiAim, "JitterRange")
if G.knifeChangerSupported then
else
CreateLabel(MiscTab, "Your executor " .. G.executor .. " does not support Grenade Prediction", 12, Enum.TextXAlignment.Center)
end
end
SetupMiscTab()
local function ShowInspectWarning(cb)
if G.inspectWarningShown then cb() return end
local wg = Instance.new("ScreenGui")
wg.Name = "InspectWarn"
wg.IgnoreGuiInset = true
wg.Parent = Parent
local bg = Instance.new("Frame", wg)
bg.Size = UDim2.new(1, 0, 1, 0)
bg.BackgroundColor3 = Color3.new(0, 0, 0)
bg.BackgroundTransparency = 0.5
local fr = Instance.new("Frame", bg)
fr.Size = UDim2.new(0, 350, 0, 150)
fr.Position = UDim2.new(0.5, -175, 0.5, -75)
fr.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
fr.BorderSizePixel = 0
Instance.new("UICorner", fr).CornerRadius = UDim.new(0, 8)
local tl = Instance.new("TextLabel", fr)
tl.Size = UDim2.new(1, -20, 0, 80)
tl.Position = UDim2.new(0, 10, 0, 10)
tl.BackgroundTransparency = 1
tl.Text = "Do not use this while in match or choosing team, use this only on menu. Do you want to continue?"
tl.TextColor3 = Color3.new(1, 1, 1)
tl.Font = Enum.Font.GothamBold
tl.TextSize = 13
tl.TextWrapped = true
local yb = Instance.new("TextButton", fr)
yb.Size = UDim2.new(0, 100, 0, 30)
yb.Position = UDim2.new(0.25, -50, 0, 100)
yb.Text = "Yes"
yb.BackgroundColor3 = Color3.fromRGB(0, 180, 0)
yb.TextColor3 = Color3.new(1, 1, 1)
yb.Font = Enum.Font.GothamBold
yb.TextSize = 14
Instance.new("UICorner", yb).CornerRadius = UDim.new(0, 6)
local nb = Instance.new("TextButton", fr)
nb.Size = UDim2.new(0, 100, 0, 30)
nb.Position = UDim2.new(0.75, -50, 0, 100)
nb.Text = "No"
nb.BackgroundColor3 = Color3.fromRGB(180, 0, 0)
nb.TextColor3 = Color3.new(1, 1, 1)
nb.Font = Enum.Font.GothamBold
nb.TextSize = 14
Instance.new("UICorner", nb).CornerRadius = UDim.new(0, 6)
yb.MouseButton1Down:Connect(function()
G.inspectWarningShown = true
wg:Destroy()
cb()
end)
nb.MouseButton1Down:Connect(function() wg:Destroy() end)
end
local function addInspectButton(parentDD, wName, isGlove)
local inspBtn = Instance.new("TextButton")
inspBtn.Size = UDim2.new(0, 20, 0, 18)
inspBtn.Position = UDim2.new(1, -25, 0, 18)
inspBtn.Text = "?"
inspBtn.Font = Enum.Font.Arial
inspBtn.TextSize = 12
inspBtn.BackgroundColor3 = CurrentTheme.Item
inspBtn.TextColor3 = CurrentTheme.Text
inspBtn.BorderSizePixel = 0
inspBtn.Parent = parentDD
inspBtn.MouseButton1Down:Connect(function()
ShowInspectWarning(function()
if isGlove then
local sk = Config.GloveChanger.Gloves[wName]
if sk and sk ~= "Default" then inspectWeapon(wName, sk, 0.007) end
else
local sk = Config.SkinChanger.Skins[wName]
if sk and sk ~= "Default" then inspectWeapon(wName, sk, 0.007) end
end
end)
end)
end
local function SetupSkinChangerTab()
CreateLabel(SkinLeft, "weapon skins", 14, Enum.TextXAlignment.Center)
CreateToggle(SkinLeft, "Enable Skins", Config.SkinChanger, "Enabled")
local KM = {"Karambit", "Butterfly Knife", "Flip Knife", "Gut Knife", "M9 Bayonet"}
local EW = {"Driver Gloves", "Sports Gloves", "Operator Gloves", "Hand Wraps"}
for w, s in pairs(SD.SkinSelections) do
if not table.find(KM, w) and not table.find(EW, w) then
local dd = CreateSingleDropdown(SkinLeft, w, s, Config.SkinChanger.Skins, w, function() pcall(ApplySkin) end)
addInspectButton(dd, w, false)
end
end
CreateLabel(SkinRight, "glove changer", 14, Enum.TextXAlignment.Center)
CreateToggle(SkinRight, "Enable Gloves", Config.GloveChanger, "Enabled")
if G.knifeChangerSupported then
local GM = {}
for k in pairs(SD.GloveSelections) do GM[#GM + 1] = k end
table.sort(GM)
local GSD = {}
local function UGSV(m)
for k, d in pairs(GSD) do d.Visible = (k == m) end
end
CreateSingleDropdown(SkinRight, "Glove Model", GM, Config.GloveChanger, "Model", function(v) UGSV(v) end)
for _, g in ipairs(GM) do
local gs = SD.GloveSelections[g]
if gs then
local dd = CreateSingleDropdown(SkinRight, g .. " Skin", gs, Config.GloveChanger.Gloves, g)
dd.Visible = (Config.GloveChanger.Model == g)
GSD[g] = dd
addInspectButton(dd, g, true)
end
end
UGSV(Config.GloveChanger.Model)
else
CreateLabel(SkinRight, "Your executor " .. G.executor .. " does not support Glove Changer hooks", 12, Enum.TextXAlignment.Center)
for gn, gs in pairs(SD.GloveSelections) do
CreateSingleDropdown(SkinRight, gn, gs, Config.GloveChanger.Gloves, gn, function() pcall(ApplyGloves) end)
end
end
CreateLabel(SkinRight, "knife changer", 14, Enum.TextXAlignment.Center)
local function InitKnifeChanger()
local su, re = pcall(function()
local SM = RepStore:FindFirstChild("Database") and RepStore.Database:FindFirstChild("Components") and RepStore.Database.Components:FindFirstChild("Libraries") and RepStore.Database.Components.Libraries:FindFirstChild("Skins")
local VM = RepStore:FindFirstChild("Classes") and RepStore.Classes:FindFirstChild("WeaponComponent") and RepStore.Classes.WeaponComponent:FindFirstChild("Classes") and RepStore.Classes.WeaponComponent.Classes:FindFirstChild("Viewmodel")
if not SM or not VM then return false end
local Sk = SafeRequire(SM)
local Vm = SafeRequire(VM)
if not Sk or not Vm then return false end
if type(Sk) ~= "table" or type(Vm) ~= "table" then return false end
if not Sk.GetCameraModel or not Sk.GetCharacterModel or not Vm.new then return false end
local oGCM = Sk.GetCameraModel
Sk.GetCameraModel = function(w, sk, ...)
local success, result
if Config.KnifeChanger.Enabled and w and Checkknife(w) then
local newKnife = Config.KnifeChanger.Model
local newSkin = Config.SkinChanger.Skins[newKnife] or "Vanilla"
success, result = pcall(oGCM, newKnife, newSkin, ...)
if success and result then return result end
end
success, result = pcall(oGCM, w, sk, ...)
if success then return result end
return nil
end
local oGChM = Sk.GetCharacterModel
Sk.GetCharacterModel = function(w, sk, ...)
local success, result
if Config.KnifeChanger.Enabled and w and Checkknife(w) then
local newKnife = Config.KnifeChanger.Model
local newSkin = Config.SkinChanger.Skins[newKnife] or "Vanilla"
success, result = pcall(oGChM, newKnife, newSkin, ...)
if success and result then return result end
end
success, result = pcall(oGChM, w, sk, ...)
if success then return result end
return nil
end
local oVN = Vm.new
Vm.new = function(vc, w, sk, ...)
local success, result
if Config.KnifeChanger.Enabled and w and Checkknife(w) then
local newKnife = Config.KnifeChanger.Model
local newSkin = Config.SkinChanger.Skins[newKnife] or "Vanilla"
success, result = pcall(oVN, vc, newKnife, newSkin, ...)
if success and result then return result end
end
success, result = pcall(oVN, vc, w, sk, ...)
if success then return result end
return nil
end
if Sk.GetGloves then
local oGG = Sk.GetGloves
Sk.GetGloves = function(g, sk)
local success, result
if Config.GloveChanger.Enabled and Config.GloveChanger.Model then
local gModel = Config.GloveChanger.Model
local ts = Config.GloveChanger.Gloves[gModel] or "Vanilla"
success, result = pcall(oGG, gModel, ts)
if success and result then return result end
end
success, result = pcall(oGG, g, sk)
if success then return result end
return nil
end
end
return true
end)
return su and re
end
if G.knifeChangerSupported then
local init = InitKnifeChanger()
if init then
CreateToggle(SkinRight, "Knife Changer", Config.KnifeChanger, "Enabled")
local KSD2 = {}
local function UKSV(m)
for k, d in pairs(KSD2) do d.Visible = (k == m) end
end
CreateSingleDropdown(SkinRight, "Knife Model (next round)", KM, Config.KnifeChanger, "Model", function(v) UKSV(v) pcall(ApplySkin) end)
for _, kn in ipairs(KM) do
local ks = SD.SkinSelections[kn]
if ks then
local dd = CreateSingleDropdown(SkinRight, kn .. " Skin", ks, Config.SkinChanger.Skins, kn, function() pcall(ApplySkin) end)
dd.Visible = (Config.KnifeChanger.Model == kn)
KSD2[kn] = dd
addInspectButton(dd, kn, false)
end
end
else
CreateLabel(SkinRight, "Your executor " .. G.executor .. " does not support Knife Changer", 12, Enum.TextXAlignment.Center)
end
else
CreateLabel(SkinRight, "Your executor " .. G.executor .. " does not support Knife Changer", 12, Enum.TextXAlignment.Center)
end
end
SetupSkinChangerTab()
local function Ser(tbl)
local r = {}
for k, sv in pairs(tbl) do
if type(sv) == "table" then
r[k] = Ser(sv)
elseif typeof(sv) == "Color3" then
r[k] = {Type = "Color3", R = sv.R, G = sv.G, B = sv.B}
elseif typeof(sv) == "Vector3" then
r[k] = {Type = "Vector3", X = sv.X, Y = sv.Y, Z = sv.Z}
elseif typeof(sv) == "EnumItem" then
r[k] = {Type = "Enum", EnumType = tostring(sv.EnumType), Name = sv.Name}
else
r[k] = sv
end
end
return r
end
local function Des(tbl, ct)
for k, dv in pairs(tbl) do
if type(dv) == "table" and dv.Type then
if dv.Type == "Color3" then
ct[k] = Color3.new(dv.R, dv.G, dv.B)
elseif dv.Type == "Vector3" then
ct[k] = Vector3.new(dv.X, dv.Y, dv.Z)
elseif dv.Type == "Enum" then
local et = tostring(dv.EnumType):match("Enum%.(%w+)")
if et and Enum[et] and Enum[et][dv.Name] then
ct[k] = Enum[et][dv.Name]
end
end
elseif type(dv) == "table" and type(ct[k]) == "table" then
Des(dv, ct[k])
elseif ct[k] ~= nil then
ct[k] = dv
end
end
end
local function SetupSettingsTab()
CreateToggle(SettingsLeft, "Debug Mode", Config, "Debug")
CreateSingleDropdown(SettingsLeft, "Theme", {"Default", "Dark", "Light", "Blood", "Ocean", "Forest", "Midnight", "Sunset"}, Config, "Theme", function(v)
if Themes[v] then
CurrentTheme = Themes[v]
RefreshTheme()
end
end)
UIE.DiscordBtn.MouseButton1Click:Connect(function() JoinDiscord() end)
CreateButton(SettingsLeft, "Discord", function() JoinDiscord() end)
CreateButton(SettingsLeft, "Reset Config", function()
local function RU(t, src)
for k, rv in pairs(src) do
if type(rv) == "table" and type(t[k]) == "table" then RU(t[k], rv)
else t[k] = rv end
end
end
RU(Config, DefaultConfig)
RefreshUI()
end)
CreateLabel(SettingsRight, "-- File Config System --", 14, Enum.TextXAlignment.Center)
local isVelocity = string.find(G.executor, "Velocity", 1, true)
if not isVelocity and G.hasFileSystem then
local CONFIG_DIR = "bankroll_configs"
pcall(function()
if makefolder and not isfolder(CONFIG_DIR) then makefolder(CONFIG_DIR) end
end)
local selectedConfig = {Name = nil}
local configListFrame = nil
local configButtons = {}
local nameInputFrame = Instance.new("Frame")
nameInputFrame.Size = UDim2.new(1, 0, 0, 30)
nameInputFrame.BackgroundTransparency = 1
nameInputFrame.Parent = SettingsRight
local nameInput = Instance.new("TextBox")
nameInput.Size = UDim2.new(1, -10, 0, 24)
nameInput.Position = UDim2.new(0, 5, 0, 3)
nameInput.PlaceholderText = "Config name..."
nameInput.Text = ""
nameInput.Font = Enum.Font.Arial
nameInput.TextSize = 13
nameInput.ClearTextOnFocus = false
nameInput.Parent = nameInputFrame
AddThemeObject(nameInput, "Item")
AddThemeObject(nameInput, "Text")
Instance.new("UICorner", nameInput).CornerRadius = UDim.new(0, 4)
local function GetConfigList()
local list = {}
pcall(function()
if listfiles then
for _, f in pairs(listfiles(CONFIG_DIR)) do
local name = f:match("([^/\\]+)%.json$")
if name then list[#list + 1] = name end
end
end
end)
table.sort(list)
return list
end
local function RefreshConfigList()
if not configListFrame then return end
for _, btn in pairs(configButtons) do pcall(function() btn:Destroy() end) end
table.clear(configButtons)
local configs = GetConfigList()
for _, name in ipairs(configs) do
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(1, -4, 0, 22)
btn.Text = name
btn.Font = Enum.Font.Arial
btn.TextSize = 12
btn.BackgroundColor3 = (selectedConfig.Name == name) and CurrentTheme.Accent or CurrentTheme.Item
btn.TextColor3 = CurrentTheme.Text
btn.BorderSizePixel = 0
btn.Parent = configListFrame
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 3)
btn.MouseButton1Down:Connect(function()
selectedConfig.Name = name
RefreshConfigList()
end)
configButtons[#configButtons + 1] = btn
end
configListFrame.CanvasSize = UDim2.new(0, 0, 0, #configs * 24)
end
CreateButton(SettingsRight, "Save Config", function()
local name = nameInput.Text
if name == "" or not name:match("%S") then return end
name = name:gsub("[^%w%s%-_%.]", ""):sub(1, 30)
if name == "" then return end
pcall(function()
if writefile then
local s, d = pcall(Ser, Config)
if s then
writefile(CONFIG_DIR .. "/" .. name .. ".json", HS:JSONEncode(d))
nameInput.Text = ""
RefreshConfigList()
end
end
end)
end)
CreateLabel(SettingsRight, "Saved Configs:", 13, Enum.TextXAlignment.Left)
configListFrame = Instance.new("ScrollingFrame")
configListFrame.Size = UDim2.new(1, -10, 0, 100)
configListFrame.Position = UDim2.new(0, 5, 0, 0)
configListFrame.BackgroundColor3 = CurrentTheme.Item
configListFrame.BorderSizePixel = 0
configListFrame.ScrollBarThickness = 3
configListFrame.AutomaticCanvasSize = Enum.AutomaticSize.None
configListFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
AddThemeObject(configListFrame, "Item")
Instance.new("UICorner", configListFrame).CornerRadius = UDim.new(0, 4)
local cll = Instance.new("UIListLayout", configListFrame)
cll.Padding = UDim.new(0, 2)
cll.SortOrder = Enum.SortOrder.LayoutOrder
local clp = Instance.new("UIPadding", configListFrame)
clp.PaddingLeft = UDim.new(0, 2)
clp.PaddingTop = UDim.new(0, 2)
local listWrapper = Instance.new("Frame")
listWrapper.Size = UDim2.new(1, 0, 0, 100)
listWrapper.BackgroundTransparency = 1
listWrapper.Parent = SettingsRight
configListFrame.Parent = listWrapper
CreateButton(SettingsRight, "Load Selected", function()
if not selectedConfig.Name then return end
pcall(function()
if readfile then
local s, c = pcall(readfile, CONFIG_DIR .. "/" .. selectedConfig.Name .. ".json")
if s and c then
local ds, d = pcall(function() return HS:JSONDecode(c) end)
if ds and d then
pcall(Des, d, Config)
RefreshUI()
if Config.Theme and Themes[Config.Theme] then
CurrentTheme = Themes[Config.Theme]
RefreshTheme()
end
pcall(function() WatermarkFrame.Visible = Config.Watermark end)
end
end
end
end)
end)
CreateButton(SettingsRight, "Overwrite Selected", function()
if not selectedConfig.Name then return end
pcall(function()
if writefile then
local s, d = pcall(Ser, Config)
if s then writefile(CONFIG_DIR .. "/" .. selectedConfig.Name .. ".json", HS:JSONEncode(d)) end
end
end)
end)
CreateButton(SettingsRight, "Delete Selected", function()
if not selectedConfig.Name then return end
pcall(function()
if delfile then
delfile(CONFIG_DIR .. "/" .. selectedConfig.Name .. ".json")
end
selectedConfig.Name = nil
RefreshConfigList()
end)
end)
CreateButton(SettingsRight, "Refresh List", function() RefreshConfigList() end)
task.defer(function() RefreshConfigList() end)
else
if isVelocity then
CreateLabel(SettingsRight, "Config system not supported", 13, Enum.TextXAlignment.Center)
CreateLabel(SettingsRight, "(Velocity executor)", 12, Enum.TextXAlignment.Center)
else
CreateLabel(SettingsRight, "File system not available", 13, Enum.TextXAlignment.Center)
end
end
CreateLabel(SettingsRight, "-- Import/Export Code (broken rn)--", 14, Enum.TextXAlignment.Center)
local codeFrame = Instance.new("Frame")
codeFrame.Size = UDim2.new(1, 0, 0, 70)
codeFrame.BackgroundTransparency = 1
codeFrame.Parent = SettingsRight
local codeBox = Instance.new("TextBox")
codeBox.Size = UDim2.new(1, -10, 0, 65)
codeBox.Position = UDim2.new(0, 5, 0, 3)
codeBox.PlaceholderText = "Paste config code here..."
codeBox.Text = ""
codeBox.Font = Enum.Font.Code
codeBox.TextSize = 9
codeBox.ClearTextOnFocus = false
codeBox.MultiLine = true
codeBox.TextWrapped = true
codeBox.TextYAlignment = Enum.TextYAlignment.Top
codeBox.Parent = codeFrame
AddThemeObject(codeBox, "Item")
AddThemeObject(codeBox, "Text")
Instance.new("UICorner", codeBox).CornerRadius = UDim.new(0, 4)
CreateButton(SettingsRight, "Import Code", function()
local code = codeBox.Text:gsub("%s+", "")
if #code < 10 then
codeBox.Text = "Code too short!"
task.delay(2, function() codeBox.Text = "" end)
return
end
local ok = pcall(function()
local decoded = nil
local success = pcall(function() decoded = HS:JSONDecode(code) end)
if success and decoded and type(decoded) == "table" then
pcall(Des, decoded, Config)
RefreshUI()
if Config.Theme and Themes[Config.Theme] then CurrentTheme = Themes[Config.Theme] RefreshTheme() end
pcall(function() WatermarkFrame.Visible = Config.Watermark end)
codeBox.Text = "Imported!"
else
codeBox.Text = "Invalid code!"
end
end)
if not ok then codeBox.Text = "Import failed!" end
task.delay(2, function()
if codeBox.Text == "Imported!" or codeBox.Text == "Invalid code!" or codeBox.Text == "Import failed!" then
codeBox.Text = ""
end
end)
end)
CreateButton(SettingsRight, "Export Code", function()
local ok, serialized = pcall(Ser, Config)
if ok then
local success, encoded = pcall(function() return HS:JSONEncode(serialized) end)
if success and encoded then
codeBox.Text = encoded
pcall(function() if setclipboard then setclipboard(encoded) end end)
else
codeBox.Text = "Export failed!"
task.delay(2, function() codeBox.Text = "" end)
end
else
codeBox.Text = "Serialization failed!"
task.delay(2, function() codeBox.Text = "" end)
end
end)
CreateButton(SettingsRight, "Copy to Clipboard", function()
if codeBox.Text ~= "" and not codeBox.Text:find("failed") and not codeBox.Text:find("Imported") and not codeBox.Text:find("short") and not codeBox.Text:find("Invalid") then
pcall(function() if setclipboard then setclipboard(codeBox.Text) end end)
local oldText = codeBox.Text
codeBox.Text = "Copied!"
task.delay(1, function() codeBox.Text = oldText end)
end
end)
CreateButton(SettingsRight, "Clear", function() codeBox.Text = "" end)
end
SetupSettingsTab()
local Camera = workspace.CurrentCamera
local Circle
pcall(function()
local c = Drawing.new("Circle")
if c and type(c) ~= "number" then
c.Thickness = 1.6
c.Color = Color3.fromRGB(255, 255, 255)
c.Filled = false
c.Transparency = 0.7
AD(c)
Circle = c
end
end)
local RP_ = {aimbot = RaycastParams.new(), trigger = RaycastParams.new(), esp = RaycastParams.new(), aa = RaycastParams.new()}
RP_.aimbot.FilterType = Enum.RaycastFilterType.Exclude
RP_.trigger.FilterType = Enum.RaycastFilterType.Exclude
RP_.esp.FilterType = Enum.RaycastFilterType.Exclude
RP_.esp.IgnoreWater = true
RP_.aa.FilterType = Enum.RaycastFilterType.Exclude
local function IsVisible(part)
if not part then return false end
local o = Camera.CFrame.Position
local d = (part.Position - o).Unit * 1000
pcall(function() RP_.aimbot.FilterDescendantsInstances = {G.LocalCharacter} end)
local r = workspace:Raycast(o, d, RP_.aimbot)
if r then
local hi
pcall(function() hi = r.Instance end)
if hi and part.Parent then
local id = false
pcall(function() id = hi:IsDescendantOf(part.Parent) end)
return id
end
return false
end
return true
end
local espF = {nil, nil}
local function ESP_IsVisible(char, pos)
if not G.LocalCharacter or not char or not char.Parent then return true end
local op = G.LocalCharacter:FindFirstChild("Head") or G.LocalCharacter.PrimaryPart or G.LocalCharacter:FindFirstChild("HumanoidRootPart")
if not op then return true end
local o = op.Position
espF[1] = G.LocalCharacter
espF[2] = char
pcall(function() RP_.esp.FilterDescendantsInstances = espF end)
for _, nm in ipairs({"Head", "HumanoidRootPart"}) do
local pt = char:FindFirstChild(nm)
if pt and pt:IsA("BasePart") then
local dr = pt.Position - o
if dr.Magnitude > 1 then
if not workspace:Raycast(o, dr.Unit * (dr.Magnitude - 0.5), RP_.esp) then return true end
end
end
end
return false
end
local function GetColor(base, vis, nvis, visible)
if Config.ESP.VisibilityCheck then return visible and vis or nvis end
return base
end
RunOnActor(function()
task.spawn(function()
while true do
if Config.ESP.Enabled then
for plr, e in pairs(ESP_.Players) do
pcall(function()
local ch = plr.Character
if not ch or not ch.Parent then e.Valid = false return end
local rt = ch:FindFirstChild("HumanoidRootPart") or ch.PrimaryPart
local hm = ch:FindFirstChildWhichIsA("Humanoid")
if not rt or not hm or hm.Health <= 0 then e.Valid = false return end
if Config.ESP.TeamCheck and not is_enemy(plr) then e.Valid = false return end
e.Root = rt
e.HeadPart = ch:FindFirstChild("Head")
e.Hum = hm
e.Char = ch
e.Valid = true
end)
end
end
task.wait(0.5)
end
end)
end)
local V2 = Vector2.new
local V3 = Vector3.new
local function Draw2DBox(eo, center, size, col, show)
local hw = size.X / 2
local hh = size.Y / 2
local tl = V2(center.X - hw, center.Y - hh)
local tr = V2(center.X + hw, center.Y - hh)
local bl = V2(center.X - hw, center.Y + hh)
local br = V2(center.X + hw, center.Y + hh)
if show then
if eo.Box[1] and type(eo.Box[1]) ~= "number" then eo.Box[1].From = tl eo.Box[1].To = tr eo.Box[1].Color = col eo.Box[1].Visible = true end
if eo.Box[2] and type(eo.Box[2]) ~= "number" then eo.Box[2].From = tr eo.Box[2].To = br eo.Box[2].Color = col eo.Box[2].Visible = true end
if eo.Box[3] and type(eo.Box[3]) ~= "number" then eo.Box[3].From = br eo.Box[3].To = bl eo.Box[3].Color = col eo.Box[3].Visible = true end
if eo.Box[4] and type(eo.Box[4]) ~= "number" then eo.Box[4].From = bl eo.Box[4].To = tl eo.Box[4].Color = col eo.Box[4].Visible = true end
else
for i = 1, 4 do
if eo.Box[i] and type(eo.Box[i]) ~= "number" then eo.Box[i].Visible = false end
end
end
return tl
end
local function GetFolderRadius(folder)
if not folder or not folder:IsA("Folder") then return 0 end
local minX, minZ, maxX, maxZ = math.huge, math.huge, -math.huge, -math.huge
local count = 0
for _, child in pairs(folder:GetChildren()) do
if child:IsA("BasePart") then
local p = child.Position
local s = child.Size
minX = math.min(minX, p.X - s.X / 2)
maxX = math.max(maxX, p.X + s.X / 2)
minZ = math.min(minZ, p.Z - s.Z / 2)
maxZ = math.max(maxZ, p.Z + s.Z / 2)
count = count + 1
end
end
if count == 0 then return 0 end
return math.max(maxX - minX, maxZ - minZ) / 2
end
local function GetFolderCenter(folder)
if not folder or not folder:IsA("Folder") then return nil end
local sum = V3(0, 0, 0)
local count = 0
for _, child in pairs(folder:GetChildren()) do
if child:IsA("BasePart") then
sum = sum + child.Position
count = count + 1
end
end
if count == 0 then return nil end
return sum / count
end
local function UpdateWorldESP()
if not Camera then HideAllWorldESP() return end
local ch = G.LocalCharacter
local hm = ch and ch:FindFirstChildWhichIsA("Humanoid")
if not ch or not hm or hm.Health <= 0 then HideAllWorldESP() return end
local wtvp = Camera.WorldToViewportPoint
if Config.ESP.DroppedWeapons.Enabled then
for item, eo in pairs(WorldESP.DroppedWeapons) do
if not item or not item.Parent or not item.PrimaryPart then HideWorldESPObject(eo) continue end
local pp = item.PrimaryPart
local pos, on = wtvp(Camera, pp.Position)
if not on or pos.Z <= 0 then HideWorldESPObject(eo) continue end
Draw2DBox(eo, V2(pos.X, pos.Y), V2(30, 20), Config.ESP.DroppedWeapons.Color, Config.ESP.DroppedWeapons.Box)
if eo.Name and type(eo.Name) ~= "number" then
if Config.ESP.DroppedWeapons.Name then
eo.Name.Text = item:GetAttribute("Weapon") or "Weapon"
eo.Name.Size = 13
eo.Name.Position = V2(pos.X, pos.Y - 25)
eo.Name.Color = Config.ESP.DroppedWeapons.Color
eo.Name.Visible = true
else eo.Name.Visible = false end
end
if eo.HL then
eo.HL.Adornee = item
eo.HL.FillColor = Config.ESP.DroppedWeapons.Color
eo.HL.OutlineColor = G.C3W
eo.HL.Enabled = Config.ESP.DroppedWeapons.Highlight
end
end
else
for _, eo in pairs(WorldESP.DroppedWeapons) do HideWorldESPObject(eo) end
end
if Config.ESP.Bomb.Enabled and WorldESP.Bomb and WorldESP.Bomb.Model and WorldESP.Bomb.Model.PrimaryPart then
local eo = WorldESP.Bomb
local item = eo.Model
local cf, sz = item:GetBoundingBox()
local pos, on = wtvp(Camera, cf.Position)
if on and pos.Z > 0 then
local topS = wtvp(Camera, cf.Position + V3(0, sz.Y / 2, 0))
local botS = wtvp(Camera, cf.Position - V3(0, sz.Y / 2, 0))
local sH = math.clamp(math.abs(topS.Y - botS.Y), 10, 80)
Draw2DBox(eo, V2(pos.X, (topS.Y + botS.Y) / 2), V2(math.clamp(sH * 0.8, 10, 60), sH), Config.ESP.Bomb.Color, Config.ESP.Bomb.Box)
if eo.Name and type(eo.Name) ~= "number" then
if Config.ESP.Bomb.Name then
eo.Name.Text = "C4"
eo.Name.Position = V2(pos.X, topS.Y - 15)
eo.Name.Color = Config.ESP.Bomb.Color
eo.Name.Visible = true
else eo.Name.Visible = false end
end
if eo.HL then
eo.HL.Adornee = item
eo.HL.FillColor = Config.ESP.Bomb.Color
eo.HL.OutlineColor = G.C3W
eo.HL.Enabled = Config.ESP.Bomb.Highlight
end
else
HideWorldESPObject(eo)
end
elseif WorldESP.Bomb then
HideWorldESPObject(WorldESP.Bomb)
end
if Config.ESP.Molotovs.Enabled then
for item, eo in pairs(WorldESP.Molotovs) do
if not item or not item.Parent then HideWorldESPObject(eo) continue end
local center = GetFolderCenter(item)
local radius = GetFolderRadius(item)
if center and radius > 0 then
local pos, on = wtvp(Camera, center)
if on and pos.Z > 0 then
local edgePos = wtvp(Camera, center + Camera.CFrame.RightVector * radius)
local screenRadius = math.clamp((V2(edgePos.X, edgePos.Y) - V2(pos.X, pos.Y)).Magnitude, 5, 200)
if eo.Radius and type(eo.Radius) ~= "number" then
eo.Radius.Position = V2(pos.X, pos.Y)
eo.Radius.Radius = screenRadius
eo.Radius.Color = Config.ESP.Molotovs.Color
eo.Radius.Visible = true
end
if eo.Name and type(eo.Name) ~= "number" then
eo.Name.Text = "Fire"
eo.Name.Position = V2(pos.X, pos.Y - 15)
eo.Name.Color = Config.ESP.Molotovs.Color
eo.Name.Visible = true
end
else
if eo.Radius and type(eo.Radius) ~= "number" then eo.Radius.Visible = false end
if eo.Name and type(eo.Name) ~= "number" then eo.Name.Visible = false end
end
end
if eo.HL then
local fc
for _, c in pairs(item:GetChildren()) do
if c:IsA("BasePart") then fc = c break end
end
if fc then
eo.HL.Adornee = fc
eo.HL.FillColor = Config.ESP.Molotovs.Color
eo.HL.OutlineColor = G.C3W
eo.HL.Enabled = Config.ESP.Molotovs.Highlight
else
eo.HL.Enabled = false
end
end
for i = 1, 4 do
if eo.Box[i] and type(eo.Box[i]) ~= "number" then eo.Box[i].Visible = false end
end
end
else
for _, eo in pairs(WorldESP.Molotovs) do HideWorldESPObject(eo) end
end
if Config.ESP.Smokes.Enabled then
for item, eo in pairs(WorldESP.Smokes) do
if not item or not item.Parent then HideWorldESPObject(eo) continue end
local center = GetFolderCenter(item)
local radius = GetFolderRadius(item)
if center and radius > 0 then
local pos, on = wtvp(Camera, center)
if on and pos.Z > 0 then
local edgePos = wtvp(Camera, center + Camera.CFrame.RightVector * radius)
local screenRadius = math.clamp((V2(edgePos.X, edgePos.Y) - V2(pos.X, pos.Y)).Magnitude, 5, 200)
if eo.Radius and type(eo.Radius) ~= "number" then
eo.Radius.Position = V2(pos.X, pos.Y)
eo.Radius.Radius = screenRadius
eo.Radius.Color = Config.ESP.Smokes.Color
eo.Radius.Visible = true
end
if eo.Name and type(eo.Name) ~= "number" then
eo.Name.Text = "Smoke"
eo.Name.Position = V2(pos.X, pos.Y - 15)
eo.Name.Color = Config.ESP.Smokes.Color
eo.Name.Visible = true
end
else
if eo.Radius and type(eo.Radius) ~= "number" then eo.Radius.Visible = false end
if eo.Name and type(eo.Name) ~= "number" then eo.Name.Visible = false end
end
end
if eo.HL then
local fc
for _, c in pairs(item:GetChildren()) do
if c:IsA("BasePart") then fc = c break end
end
if fc then
eo.HL.Adornee = fc
eo.HL.FillColor = Config.ESP.Smokes.Color
eo.HL.OutlineColor = G.C3W
eo.HL.Enabled = Config.ESP.Smokes.Highlight
else
eo.HL.Enabled = false
end
end
for i = 1, 4 do
if eo.Box[i] and type(eo.Box[i]) ~= "number" then eo.Box[i].Visible = false end
end
end
else
for _, eo in pairs(WorldESP.Smokes) do HideWorldESPObject(eo) end
end
end
local function UpdateESP()
if not Camera or not Config.ESP.Enabled then return end
if tick() - G.LastESPUpdate < 0.016 then return end
G.LastESPUpdate = tick()
local wtvp = Camera.WorldToViewportPoint
local camPos = Camera.CFrame.Position
local fillT = (math.sin(tick() * (Config.ESP.BoxFillFadeSpeed or 3)) + 1) / 2
local fillCol = Config.ESP.BoxFillColor1:Lerp(Config.ESP.BoxFillColor2, fillT)
for plr, e in pairs(ESP_.Players) do
if not plr or not plr.Parent then
DestroyPlayerESP(e)
ESP_.Players[plr] = nil
continue
end
if not e.Valid then HidePlayerESP(e) continue end
local char, root, headPart, hum = e.Char, e.Root, e.HeadPart, e.Hum
if not root or not root.Parent then HidePlayerESP(e) continue end
if hum and hum.Health <= 0 then HidePlayerESP(e) continue end
local dist = (camPos - root.Position).Magnitude
if dist > Config.ESP.MaxDistance then HidePlayerESP(e) continue end
local skip = false
pcall(function()
if Camera.CameraSubject then
local subj = Camera.CameraSubject
if subj == char or (subj.Parent and subj:IsDescendantOf(char)) then skip = true end
end
end)
if skip then HidePlayerESP(e) continue end
local rootScreen, onScreen = wtvp(Camera, root.Position)
if not onScreen or rootScreen.Z <= 0 then HidePlayerESP(e) continue end
local isVis = e.IsVisible
if Config.ESP.VisibilityCheck and (tick() - e.LastVisCheck > 0.1) then
isVis = ESP_IsVisible(char, headPart and headPart.Position or root.Position)
e.IsVisible = isVis
e.LastVisCheck = tick()
elseif not Config.ESP.VisibilityCheck then
isVis = true
e.IsVisible = true
end
local rP = root.Position
local hP = headPart and headPart.Position or (rP + V3(0, 2, 0))
local topScreen = wtvp(Camera, hP + V3(0, 1, 0))
local botScreen = wtvp(Camera, rP - V3(0, 3, 0))
if topScreen.Z <= 0 or botScreen.Z <= 0 then HidePlayerESP(e) continue end
local topY, botY = topScreen.Y, botScreen.Y
local sH = math.abs(botY - topY)
local sW = sH * 0.55
local cx = rootScreen.X
local tl = V2(cx - sW / 2, topY)
local tr = V2(cx + sW / 2, topY)
local bl = V2(cx - sW / 2, botY)
local br = V2(cx + sW / 2, botY)
if Config.ESP.Box then
local col = GetColor(Config.ESP.BoxColor, Config.ESP.BoxVisibleColor, Config.ESP.BoxNotVisibleColor, isVis)
for i = 1, 4 do
if e.Box[i] and type(e.Box[i]) ~= "number" then e.Box[i].Thickness = Config.ESP.BoxThickness end
end
if e.Box[1] and type(e.Box[1]) ~= "number" then e.Box[1].From = tl e.Box[1].To = tr e.Box[1].Color = col e.Box[1].Visible = true end
if e.Box[2] and type(e.Box[2]) ~= "number" then e.Box[2].From = tr e.Box[2].To = br e.Box[2].Color = col e.Box[2].Visible = true end
if e.Box[3] and type(e.Box[3]) ~= "number" then e.Box[3].From = br e.Box[3].To = bl e.Box[3].Color = col e.Box[3].Visible = true end
if e.Box[4] and type(e.Box[4]) ~= "number" then e.Box[4].From = bl e.Box[4].To = tl e.Box[4].Color = col e.Box[4].Visible = true end
if Config.ESP.BoxOutline then
for i = 1, 4 do
if e.BoxOutline[i] and type(e.BoxOutline[i]) ~= "number" and e.Box[i] and type(e.Box[i]) ~= "number" then
e.BoxOutline[i].From = e.Box[i].From
e.BoxOutline[i].To = e.Box[i].To
e.BoxOutline[i].Thickness = Config.ESP.BoxThickness + 2
e.BoxOutline[i].Color = Color3.new(0, 0, 0)
e.BoxOutline[i].ZIndex = 1
e.BoxOutline[i].Visible = true
end
end
else
for i = 1, 4 do
if e.BoxOutline[i] and type(e.BoxOutline[i]) ~= "number" then e.BoxOutline[i].Visible = false end
end
end
else
for i = 1, 4 do
if e.Box[i] and type(e.Box[i]) ~= "number" then e.Box[i].Visible = false end
if e.BoxOutline[i] and type(e.BoxOutline[i]) ~= "number" then e.BoxOutline[i].Visible = false end
end
end
if Config.ESP.BoxFill and e.Fill[1] and e.Fill[2] then
pcall(function()
if type(e.Fill[1]) ~= "number" then
e.Fill[1].PointA = tl
e.Fill[1].PointB = tr
e.Fill[1].PointC = bl
e.Fill[1].Color = fillCol
e.Fill[1].Transparency = 1 - Config.ESP.BoxFillTransparency
e.Fill[1].Filled = true
e.Fill[1].Visible = true
end
if type(e.Fill[2]) ~= "number" then
e.Fill[2].PointA = tr
e.Fill[2].PointB = br
e.Fill[2].PointC = bl
e.Fill[2].Color = fillCol
e.Fill[2].Transparency = 1 - Config.ESP.BoxFillTransparency
e.Fill[2].Filled = true
e.Fill[2].Visible = true
end
end)
else
for i = 1, 2 do
if e.Fill[i] and type(e.Fill[i]) ~= "number" then pcall(function() e.Fill[i].Visible = false end) end
end
end
local tY = tl.Y - 18
if Config.ESP.Name and e.Name and type(e.Name) ~= "number" then
e.Name.Size = Config.ESP.NameSize
e.Name.Text = plr.Name
e.Name.Position = V2(cx, tY)
e.Name.Color = GetColor(Config.ESP.NameColor, Config.ESP.NameVisibleColor, Config.ESP.NameNotVisibleColor, isVis)
e.Name.Visible = true
tY = tY + Config.ESP.NameSize
elseif e.Name and type(e.Name) ~= "number" then
e.Name.Visible = false
end
if Config.ESP.CurrentWeapon.Enabled and e.WeaponName and type(e.WeaponName) ~= "number" then
local ea = plr:GetAttribute("CurrentEquipped")
if ea and type(ea) == "string" then
local s, ed = pcall(HS.JSONDecode, HS, ea)
if s and ed and ed.Name then
e.WeaponName.Text = ed.Name
e.WeaponName.Color = Config.ESP.CurrentWeapon.Color
e.WeaponName.Position = V2(tr.X + 5, (tl.Y + bl.Y) / 2)
e.WeaponName.Visible = true
else
e.WeaponName.Visible = false
end
else
e.WeaponName.Visible = false
end
elseif e.WeaponName and type(e.WeaponName) ~= "number" then
e.WeaponName.Visible = false
end
if Config.ESP.HeadDot and e.HeadDot and type(e.HeadDot) ~= "number" then
local hp = wtvp(Camera, hP)
if hp.Z > 0 then
e.HeadDot.Position = V2(hp.X, hp.Y)
e.HeadDot.Radius = math.max(sW / 10, 3)
e.HeadDot.Color = GetColor(Config.ESP.HeadDotColor, Config.ESP.HeadDotVisibleColor, Config.ESP.HeadDotNotVisibleColor, isVis)
e.HeadDot.Visible = true
else
e.HeadDot.Visible = false
end
elseif e.HeadDot and type(e.HeadDot) ~= "number" then
e.HeadDot.Visible = false
end
if Config.ESP.Distance and e.Dist and type(e.Dist) ~= "number" then
e.Dist.Size = 11
e.Dist.Text = math.floor(dist) .. "m"
e.Dist.Position = V2(cx, bl.Y + 2)
e.Dist.Color = Config.ESP.DistanceColor
e.Dist.Visible = true
elseif e.Dist and type(e.Dist) ~= "number" then
e.Dist.Visible = false
end
if Config.ESP.Health and hum then
local hp, mhp = hum.Health, hum.MaxHealth
if mhp <= 0 then mhp = 100 end
if hp > mhp then mhp = hp end
local hpF = math.clamp(hp / mhp, 0, 1)
local bx = tl.X - 5
local barH = sH * hpF
if e.HpBg and type(e.HpBg) ~= "number" then
e.HpBg.From = V2(bx, bl.Y)
e.HpBg.To = V2(bx, tl.Y)
e.HpBg.Visible = true
end
if e.Hp and type(e.Hp) ~= "number" then
e.Hp.From = V2(bx, bl.Y)
e.Hp.To = V2(bx, bl.Y - barH)
e.Hp.Color = Config.ESP.HealthBarCustom and Config.ESP.HealthBarColor or Color3.fromRGB(255, 0, 0):Lerp(Color3.fromRGB(0, 255, 0), hpF)
e.Hp.ZIndex = 3
e.Hp.Visible = true
end
else
if e.HpBg and type(e.HpBg) ~= "number" then e.HpBg.Visible = false end
if e.Hp and type(e.Hp) ~= "number" then e.Hp.Visible = false end
end
if Config.ESP.Skeleton and hum and dist < 300 then
local skelCol = GetColor(Config.ESP.SkeletonColor, Config.ESP.SkeletonVisibleColor, Config.ESP.SkeletonNotVisibleColor, isVis)
local isR15 = char:FindFirstChild("UpperTorso") ~= nil
local bones = isR15 and BONES_R15 or BONES_R6
table.clear(bonePosCache)
for i, pair in ipairs(bones) do
local ln = e.Skeleton[i]
if not ln or type(ln) == "number" then continue end
local p1, p2 = char:FindFirstChild(pair[1]), char:FindFirstChild(pair[2])
if p1 and p2 then
local s1 = bonePosCache[pair[1]]
if not s1 then
local p = wtvp(Camera, p1.Position)
if p.Z > 0 then s1 = V2(p.X, p.Y) end
bonePosCache[pair[1]] = s1
end
local s2 = bonePosCache[pair[2]]
if not s2 then
local p = wtvp(Camera, p2.Position)
if p.Z > 0 then s2 = V2(p.X, p.Y) end
bonePosCache[pair[2]] = s2
end
if s1 and s2 then
ln.Color = skelCol
ln.From = s1
ln.To = s2
ln.Thickness = Config.ESP.SkeletonThickness
ln.Visible = true
else
ln.Visible = false
end
else
ln.Visible = false
end
end
for i = #bones + 1, #e.Skeleton do
if e.Skeleton[i] and type(e.Skeleton[i]) ~= "number" then e.Skeleton[i].Visible = false end
end
else
for _, ln in pairs(e.Skeleton) do
if ln and type(ln) ~= "number" then ln.Visible = false end
end
end
if Config.ESP.Highlight and e.HL then
pcall(function()
e.HL.Adornee = char
e.HL.FillColor = Config.ESP.VisibilityCheck and (isVis and Config.ESP.HighlightVisibleFill or Config.ESP.HighlightHiddenFill) or Config.ESP.HighlightFill
e.HL.OutlineColor = Config.ESP.HighlightOutline
e.HL.Enabled = true
end)
elseif e.HL then
pcall(function() e.HL.Enabled = false end)
end
end
end
local function SetupPlayer(p)
if p ~= LP then
if ESP_.Players[p] then DestroyPlayerESP(ESP_.Players[p]) end
ESP_.Players[p] = CreatePlayerESP()
AC(p.CharacterAdded:Connect(function()
if ESP_.Players[p] then HidePlayerESP(ESP_.Players[p]) end
end))
AC(p.CharacterRemoving:Connect(function()
if ESP_.Players[p] then HidePlayerESP(ESP_.Players[p]) end
end))
end
end
AC(Players.PlayerAdded:Connect(Safe(SetupPlayer)))
AC(Players.PlayerRemoving:Connect(Safe(function(p)
if ESP_.Players[p] then
DestroyPlayerESP(ESP_.Players[p])
ESP_.Players[p] = nil
end
if CharmCache[p] then
for _, box in pairs(CharmCache[p]) do pcall(function() box:Destroy() end) end
CharmCache[p] = nil
CharmVisCache[p] = nil
end
end)))
for _, p in pairs(Players:GetPlayers()) do SetupPlayer(p) end
G.CharmFolder = nil
pcall(function()
G.CharmFolder = Instance.new("Folder", game:GetService("CoreGui"))
G.CharmFolder.Name = "Charms_Container"
end)
G.GraphD = {UI = nil, Lines = {}, Label = nil, PeakLabel = nil, History = {}, LastPos = nil, LastTime = 0, Smoothed = 0, PeakHistory = {}}
G.KSD = {Frame = nil, Elements = {}}
G.AAD = {cachedThreat = nil, lastThreatCheck = 0}
G.LastWorldScan = 0
G.skinApplyDebounce = false
G.lastInvRefresh = 0
G.Exploits = {GrenadePrediction = {Enabled = false, LineColor = Color3.new(1, 1, 1), DotColor = Color3.new(0, 0, 0)}}
Config.Exploits = {GrenadePrediction = {Enabled = false, LineColor = Color3.new(1, 1, 1), DotColor = Color3.new(0, 0, 0)}}
G.GPD = {
LinePool = {},
ActiveLines = {},
Dot = nil,
LastCalc = 0,
CachedPts = {},
CachedHit = false,
LastCam = CFrame.new(),
LastVel = Vector3.new(),
PROPS = {
["Default"] = {Restitution = 0.5, Fuse = 3.0, ExplodeOnTouch = false},
["Flashbang"] = {Restitution = 0.6, Fuse = 2.0, ExplodeOnTouch = false},
["Smoke"] = {Restitution = 0.4, Fuse = 3.0, ExplodeOnTouch = false},
["Decoy"] = {Restitution = 0.5, Fuse = 15.0, ExplodeOnTouch = false},
["HE"] = {Restitution = 0.4, Fuse = 3.0, ExplodeOnTouch = false},
["Molotov"] = {Restitution = 0.2, Fuse = 10.0, ExplodeOnTouch = true},
["Incendiary"] = {Restitution = 0.2, Fuse = 10.0, ExplodeOnTouch = true}
}
}
G.GPD_HoldState = {wasHolding = false, holdType = nil, holdStart = 0, releaseTime = 0, showAfterRelease = false}
G.EB_StartTime = 0
local function UpdateCharms(evf)
if not Config.Charms.Enabled or not G.CharmFolder then
for plr, parts in pairs(CharmCache) do
for _, box in pairs(parts) do pcall(function() box:Destroy() end) end
end
table.clear(CharmCache)
table.clear(CharmVisCache)
return
end
local nt = tick()
local scv = (nt - G.LastCharmVisCheck) > 0.2
if scv then G.LastCharmVisCheck = nt end
local ds = (nt - G.LastCharmScan) > 1
if ds then G.LastCharmScan = nt end
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LP then
local ch = plr.Character
local chm = ch and ch:FindFirstChildWhichIsA("Humanoid")
if ch and ch:FindFirstChild("HumanoidRootPart") and chm and chm.Health > 0 then
if Config.Charms.TeamCheck and not is_enemy(plr) then
if CharmCache[plr] then
for _, box in pairs(CharmCache[plr]) do pcall(function() box:Destroy() end) end
CharmCache[plr] = nil
CharmVisCache[plr] = nil
end
continue
end
if not CharmCache[plr] then CharmCache[plr] = {} end
local chHead = ch:FindFirstChild("Head") or ch.PrimaryPart or ch:FindFirstChild("HumanoidRootPart")
local iv = CharmVisCache[plr]
if scv then
iv = false
if chHead and evf then iv = evf(ch, chHead.Position) end
CharmVisCache[plr] = iv
elseif iv == nil then
iv = false
end
local col = iv and Config.Charms.VisibleColor or Config.Charms.HiddenColor
for pt, box in pairs(CharmCache[plr]) do
local isValid = false
pcall(function()
if pt and pt.Parent and pt:IsDescendantOf(ch) and box and box.Parent then isValid = true end
end)
if not isValid then
pcall(function() box:Destroy() end)
CharmCache[plr][pt] = nil
end
end
for pt, box in pairs(CharmCache[plr]) do
pcall(function()
if pt.Parent and pt:IsDescendantOf(ch) and box:IsA("BoxHandleAdornment") then
box.Size = pt.Size + Vector3.new(0.05, 0.05, 0.05)
box.Adornee = pt
box.CFrame = CFrame.new()
box.SizeRelativeOffset = Vector3.new(0, 0, 0)
box.Color3 = col
box.Transparency = Config.Charms.Transparency
box.AlwaysOnTop = Config.Charms.AlwaysOnTop
box.Visible = true
end
end)
end
if ds then
local validNames = {"Head","UpperTorso","LowerTorso","LeftUpperArm","LeftLowerArm","LeftHand","RightUpperArm","RightLowerArm","RightHand","LeftUpperLeg","LeftLowerLeg","LeftFoot","RightUpperLeg","RightLowerLeg","RightFoot","Torso","Left Arm","Right Arm","Left Leg","Right Leg"}
for _, pt in ipairs(ch:GetDescendants()) do
pcall(function()
if pt:IsA("BasePart") and pt.Name ~= "HumanoidRootPart" and pt.Transparency < 1 and not CharmCache[plr][pt] then
local validPart = false
for _, vn in ipairs(validNames) do
if pt.Name == vn then validPart = true break end
end
if validPart then
local box = Instance.new("BoxHandleAdornment")
box.Name = "Charm_" .. pt.Name
box.Adornee = pt
box.Size = pt.Size + Vector3.new(0.05, 0.05, 0.05)
box.CFrame = CFrame.new()
box.SizeRelativeOffset = Vector3.new(0, 0, 0)
box.Color3 = col
box.Transparency = Config.Charms.Transparency
box.AlwaysOnTop = Config.Charms.AlwaysOnTop
box.ZIndex = 5
box.Parent = G.CharmFolder
CharmCache[plr][pt] = box
end
end
end)
end
end
elseif CharmCache[plr] then
for _, box in pairs(CharmCache[plr]) do pcall(function() box:Destroy() end) end
CharmCache[plr] = nil
CharmVisCache[plr] = nil
end
end
end
for plr, parts in pairs(CharmCache) do
local valid = false
pcall(function()
if plr and plr.Parent and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then valid = true end
end)
if not valid then
for _, box in pairs(parts) do pcall(function() box:Destroy() end) end
CharmCache[plr] = nil
CharmVisCache[plr] = nil
end
end
end
local function InitGraphUI()
if G.GraphD.UI then return end
G.GraphD.UI = Instance.new("Frame")
G.GraphD.UI.Name = "SpeedGraph"
G.GraphD.UI.Size = UDim2.new(0, 200, 0, 120)
G.GraphD.UI.Position = UDim2.new(0.5, -100, 0.85, 0)
G.GraphD.UI.BackgroundTransparency = 1
G.GraphD.UI.Parent = UI
MakeDraggable(G.GraphD.UI)
G.GraphD.Label = Instance.new("TextLabel")
G.GraphD.Label.Size = UDim2.new(1, 0, 0, 20)
G.GraphD.Label.Position = UDim2.new(0, 0, 1, -20)
G.GraphD.Label.BackgroundTransparency = 1
G.GraphD.Label.Font = Enum.Font.GothamBold
G.GraphD.Label.TextSize = 18
G.GraphD.Label.TextStrokeTransparency = 0
G.GraphD.Label.Text = "0"
G.GraphD.Label.Parent = G.GraphD.UI
AddThemeObject(G.GraphD.Label, "Text")
G.GraphD.PeakLabel = Instance.new("TextLabel")
G.GraphD.PeakLabel.Size = UDim2.new(1, 0, 0, 18)
G.GraphD.PeakLabel.Position = UDim2.new(0, 0, 1, -38)
G.GraphD.PeakLabel.BackgroundTransparency = 1
G.GraphD.PeakLabel.Font = Enum.Font.GothamBold
G.GraphD.PeakLabel.TextSize = 16
G.GraphD.PeakLabel.TextStrokeTransparency = 0
G.GraphD.PeakLabel.Text = ""
G.GraphD.PeakLabel.Visible = false
G.GraphD.PeakLabel.Parent = G.GraphD.UI
for i = 1, 59 do
local ln = Instance.new("Frame")
ln.BorderSizePixel = 0
ln.AnchorPoint = Vector2.new(0.5, 0.5)
ln.BackgroundColor3 = Config.Graph.Color
ln.Parent = G.GraphD.UI
G.GraphD.Lines[i] = ln
end
end
local function UpdateGraph()
if not Config.Graph.Enabled then
if G.GraphD.UI then G.GraphD.UI.Visible = false end
return
end
if tick() - G.LastGraphUpdate < 0.05 then return end
G.LastGraphUpdate = tick()
InitGraphUI()
G.GraphD.UI.Visible = true
local ch = LP.Character
local hrp = ch and ch:FindFirstChild("HumanoidRootPart")
local spd = 0
if hrp then
local n = tick()
local gp = hrp.Position
if G.GraphD.LastPos and G.GraphD.LastTime then
local dtt = n - G.GraphD.LastTime
if dtt > 0 then
spd = Vector3.new(gp.X - G.GraphD.LastPos.X, 0, gp.Z - G.GraphD.LastPos.Z).Magnitude / dtt
end
end
G.GraphD.LastPos = gp
G.GraphD.LastTime = n
end
G.GraphD.Smoothed = G.GraphD.Smoothed + ((spd - G.GraphD.Smoothed) * 0.3)
G.GraphD.History[#G.GraphD.History + 1] = math.min(G.GraphD.Smoothed, Config.Graph.MaxSpeed)
if #G.GraphD.History > 60 then table.remove(G.GraphD.History, 1) end
G.GraphD.Label.Text = string.format("%.1f", math.floor(G.GraphD.Smoothed * 100 + 0.5) / 10)
G.GraphD.Label.TextColor3 = Config.Graph.Color
if Config.Graph.PeakEnabled and G.GraphD.PeakLabel then
local now = tick()
G.GraphD.PeakHistory[#G.GraphD.PeakHistory + 1] = {time = now, speed = G.GraphD.Smoothed}
while #G.GraphD.PeakHistory > 0 and (now - G.GraphD.PeakHistory[1].time) > 5 do
table.remove(G.GraphD.PeakHistory, 1)
end
local peak = 0
for _, entry in ipairs(G.GraphD.PeakHistory) do
if entry.speed > peak then peak = entry.speed end
end
G.GraphD.PeakLabel.Text = string.format("%.1f", math.floor(peak * 100 + 0.5) / 10)
if peak >= 30 then G.GraphD.PeakLabel.TextColor3 = Color3.fromRGB(255, 50, 50)
elseif peak >= 20 then G.GraphD.PeakLabel.TextColor3 = Color3.fromRGB(255, 255, 50)
else G.GraphD.PeakLabel.TextColor3 = Color3.fromRGB(255, 255, 255) end
G.GraphD.PeakLabel.Visible = true
elseif G.GraphD.PeakLabel then
G.GraphD.PeakLabel.Visible = false
end
local w = G.GraphD.UI.AbsoluteSize.X
local h = G.GraphD.UI.AbsoluteSize.Y - 40
local step = w / 60
for i = 1, 59 do
local gl = G.GraphD.Lines[i]
if gl and i < #G.GraphD.History then
local p1 = G.GraphD.History[i] or 0
local p2 = G.GraphD.History[i + 1] or 0
local h1 = (p1 / Config.Graph.MaxSpeed) * h
local h2 = (p2 / Config.Graph.MaxSpeed) * h
local x1 = (i - 1) * step
local y1 = h - h1
local x2 = i * step
local y2 = h - h2
local gv = Vector2.new(x2 - x1, y2 - y1)
local ct = Vector2.new((x1 + x2) / 2, (y1 + y2) / 2)
gl.Position = UDim2.new(0, ct.X, 0, ct.Y)
gl.Size = UDim2.new(0, gv.Magnitude, 0, 2)
gl.Rotation = math.deg(math.atan2(gv.Y, gv.X))
gl.BackgroundColor3 = Config.Graph.Color
gl.Visible = true
elseif gl then
gl.Visible = false
end
end
end
local function InitKeystrokesUI()
if G.KSD.Frame then return end
G.KSD.Frame = Instance.new("Frame")
G.KSD.Frame.Name = "Keystrokes"
G.KSD.Frame.Size = UDim2.new(0, 170, 0, 140)
G.KSD.Frame.Position = UDim2.new(0.98, -170, 0.02, 63)
G.KSD.Frame.BackgroundTransparency = 1
G.KSD.Frame.Parent = UI
MakeDraggable(G.KSD.Frame)
local function CK(id, t, sz, kp)
local f = Instance.new("Frame")
f.Name = id
f.Size = sz
f.Position = kp
f.BackgroundColor3 = CurrentTheme.Item
f.BorderSizePixel = 0
f.Parent = G.KSD.Frame
Instance.new("UICorner", f).CornerRadius = UDim.new(0, 6)
local l = Instance.new("TextLabel")
l.Size = UDim2.new(1, 0, 1, 0)
l.BackgroundTransparency = 1
l.Text = t
l.Font = Enum.Font.GothamBold
l.TextSize = 20
l.TextColor3 = CurrentTheme.Text
l.TextStrokeTransparency = 0
l.Parent = f
G.KSD.Elements[id] = {Frame = f, Label = l}
end
CK("W", "W", UDim2.new(0, 50, 0, 50), UDim2.new(0.5, -25, 0, 0))
CK("A", "A", UDim2.new(0, 50, 0, 50), UDim2.new(0, 0, 0, 55))
CK("S", "S", UDim2.new(0, 50, 0, 50), UDim2.new(0.5, -25, 0, 55))
CK("D", "D", UDim2.new(0, 50, 0, 50), UDim2.new(1, -50, 0, 55))
CK("C", "C", UDim2.new(0, 50, 0, 30), UDim2.new(0, 0, 0, 110))
CK("Space", "", UDim2.new(0, 115, 0, 30), UDim2.new(0, 55, 0, 110))
end
local function UpdateMovementDisplay()
if not Config.MovementDisplay.Enabled then
if G.KSD.Frame then G.KSD.Frame.Visible = false end
return
end
if tick() - G.LastMovementUpdate < 0.05 then return end
G.LastMovementUpdate = tick()
InitKeystrokesUI()
G.KSD.Frame.Visible = true
local km = {
{Id = "W", Input = Enum.KeyCode.W},
{Id = "A", Input = Enum.KeyCode.A},
{Id = "S", Input = Enum.KeyCode.S},
{Id = "D", Input = Enum.KeyCode.D},
{Id = "C", Input = {Enum.KeyCode.LeftControl, Enum.KeyCode.RightControl, Enum.KeyCode.C}},
{Id = "Space", Input = Enum.KeyCode.Space}
}
for _, kd in ipairs(km) do
local el = G.KSD.Elements[kd.Id]
if el then
local pr = false
if type(kd.Input) == "table" then
for _, kc in ipairs(kd.Input) do
if UIS:IsKeyDown(kc) then pr = true break end
end
else
pr = UIS:IsKeyDown(kd.Input)
end
el.Frame.BackgroundColor3 = pr and CurrentTheme.Accent or CurrentTheme.Item
el.Label.TextColor3 = CurrentTheme.Text
end
end
end
pcall(function()
local d = Drawing.new("Circle")
if d and type(d) ~= "number" then
d.Radius = 5
d.Filled = true
d.Visible = false
AD(d)
G.GPD.Dot = d
end
end)
local function GetGPL()
local l = table.remove(G.GPD.LinePool)
if not l then
l = NewDrawing("Line", {Thickness = 2, Transparency = 1, Visible = false})
end
if l and type(l) ~= "number" then
G.GPD.ActiveLines[#G.GPD.ActiveLines + 1] = l
end
return l
end
local function ClearGPL()
for _, l in ipairs(G.GPD.ActiveLines) do
if l and type(l) ~= "number" then l.Visible = false end
G.GPD.LinePool[#G.GPD.LinePool + 1] = l
end
table.clear(G.GPD.ActiveLines)
if G.GPD.Dot and type(G.GPD.Dot) ~= "number" then G.GPD.Dot.Visible = false end
end
local function UpdateGP()
if not Config.Exploits.GrenadePrediction.Enabled then
ClearGPL()
G.GPD_HoldState.wasHolding = false
G.GPD_HoldState.showAfterRelease = false
return
end
local cam = workspace.CurrentCamera
if not cam then return end
local function ggp()
for _, c in pairs(cam:GetChildren()) do
if c:IsA("Model") and not c.Name:find("Arm") then
local n = c.Name:lower()
if n:find("molotov") or n:find("incendiary") then return G.GPD.PROPS["Molotov"] end
if n:find("flash") then return G.GPD.PROPS["Flashbang"] end
if n:find("smoke") then return G.GPD.PROPS["Smoke"] end
if n:find("he") or n:find("grenade") then return G.GPD.PROPS["HE"] end
if n:find("decoy") then return G.GPD.PROPS["Decoy"] end
end
end
return nil
end
local gpp = ggp()
if not gpp then
ClearGPL()
G.GPD_HoldState.wasHolding = false
G.GPD_HoldState.showAfterRelease = false
return
end
local isLeftClick = UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton1)
local isRightClick = UIS:IsMouseButtonPressed(Enum.UserInputType.MouseButton2)
local isHolding = isLeftClick or isRightClick
local now = tick()
if isHolding and not G.GPD_HoldState.wasHolding then
G.GPD_HoldState.holdStart = now
G.GPD_HoldState.holdType = isRightClick and "right" or "left"
G.GPD_HoldState.showAfterRelease = false
end
if not isHolding and G.GPD_HoldState.wasHolding then
G.GPD_HoldState.releaseTime = now
G.GPD_HoldState.showAfterRelease = true
end
G.GPD_HoldState.wasHolding = isHolding
local shouldShow = isHolding
if G.GPD_HoldState.showAfterRelease and (now - G.GPD_HoldState.releaseTime) < 0.7 then shouldShow = true end
if G.GPD_HoldState.showAfterRelease and (now - G.GPD_HoldState.releaseTime) >= 0.7 then G.GPD_HoldState.showAfterRelease = false end
if shouldShow then
local ch = LP.Character
if not ch or not ch.PrimaryPart then ClearGPL() return end
local gPos = cam.CFrame.Position
local gDir = cam.CFrame.LookVector
local cc = cam.CFrame
local pV = ch.PrimaryPart.AssemblyLinearVelocity
local throwType = G.GPD_HoldState.holdType or "left"
if isHolding then
throwType = isRightClick and "right" or "left"
G.GPD_HoldState.holdType = throwType
end
local cv = (now - G.GPD.LastCalc < 0.033) and (cc.Position - G.GPD.LastCam.Position).Magnitude < 0.05 and (cc.LookVector - G.GPD.LastCam.LookVector).Magnitude < 0.005 and (pV - G.GPD.LastVel).Magnitude < 0.05
if not cv then
local throwSpeed = throwType == "right" and 60 or 125
local vel = (gDir * throwSpeed) + pV
local pts = {gPos}
local dts = 0.03
local grav = Vector3.new(0, -workspace.Gravity, 0)
local te = 0
local grp = RaycastParams.new()
grp.FilterType = Enum.RaycastFilterType.Exclude
grp.IgnoreWater = true
local gf = {ch, cam}
local db = workspace:FindFirstChild("Debris")
if db then gf[#gf + 1] = db end
pcall(function() grp.FilterDescendantsInstances = gf end)
for i = 1, math.floor(4.0 / dts) do
te = te + dts
vel = vel + (grav * dts)
vel = vel * (1 - 0.02)
local np = gPos + (vel * dts)
local ray = workspace:Raycast(gPos, np - gPos, grp)
if ray then
if gpp.ExplodeOnTouch and ray.Normal.Y > 0.5 then
gPos = ray.Position
break
end
local n = ray.Normal
vel = (vel - (2 * vel:Dot(n) * n)) * gpp.Restitution
gPos = ray.Position + (n * 0.05)
if vel.Magnitude < 5 then break end
else
gPos = np
end
pts[#pts + 1] = gPos
if te >= gpp.Fuse then break end
end
G.GPD.CachedPts = pts
G.GPD.LastCalc = now
G.GPD.LastCam = cc
G.GPD.LastVel = pV
end
ClearGPL()
local pts = G.GPD.CachedPts
for i = 1, #pts - 1 do
local s1, v1 = cam:WorldToViewportPoint(pts[i])
local s2, v2 = cam:WorldToViewportPoint(pts[i + 1])
if v1 and v2 then
local l = GetGPL()
if l and type(l) ~= "number" then
l.From = Vector2.new(s1.X, s1.Y)
l.To = Vector2.new(s2.X, s2.Y)
l.Color = Config.Exploits.GrenadePrediction.LineColor
l.Visible = true
end
end
end
if #pts > 0 and G.GPD.Dot and type(G.GPD.Dot) ~= "number" then
local sp, so = cam:WorldToViewportPoint(pts[#pts])
if so then
G.GPD.Dot.Position = Vector2.new(sp.X, sp.Y)
G.GPD.Dot.Color = Config.Exploits.GrenadePrediction.DotColor
G.GPD.Dot.Visible = true
else
G.GPD.Dot.Visible = false
end
end
else
ClearGPL()
end
end
AC(RS.Heartbeat:Connect(function(dt)
local jbOn = IsJBEBActive(Config.JumpBug)
local ebOn = IsJBEBActive(Config.EdgeBug)
if not jbOn and not ebOn then return end
local char = LP.Character
if not char then return end
local root = char:FindFirstChild("HumanoidRootPart")
local hum = char:FindFirstChildWhichIsA("Humanoid")
if not root or not hum then return end
JBEB_SetFilter(char)
local vel = root.AssemblyLinearVelocity
local pos = root.Position
local vy = vel.Y
local floor = hum.FloorMaterial
local inAir = floor == Enum.Material.Air
local onGround = JBEB_GameGroundCheck(pos)
if JBCooldown > 0 then JBCooldown = JBCooldown - dt end
if EB_Active then
if not ebOn then
EB_Active = false
ebFlashTime = tick()
elseif (onGround and vy <= 1) or not JBEB_StillOnEdge(pos) or (tick() - G.EB_StartTime > Config.EdgeBug.MaxDuration) then
EB_Active = false
ebFlashTime = tick()
else
root.AssemblyLinearVelocity = Vector3.new(vel.X * 0.995, 0, vel.Z * 0.995)
return
end
end
local gameThinkGround = (onGround and vy <= 1) or not inAir
if not gameThinkGround then
JBEB_WasAir = true
JBEB_LandedFrame = false
if vy < -1 then
JBEB_FallFrames = JBEB_FallFrames + 1
JBEB_VelBuffer[#JBEB_VelBuffer + 1] = vy
if #JBEB_VelBuffer > JBEB_BufferSize then table.remove(JBEB_VelBuffer, 1) end
end
end
if gameThinkGround and JBEB_WasAir then
JBEB_LandedFrame = true
JBEB_WasAir = false
elseif gameThinkGround and not JBEB_WasAir then
JBEB_LandedFrame = false
end
if jbOn and JBEB_LandedFrame and JBCooldown <= 0 and JBEB_FallFrames >= JB_MIN_FRAMES then
local hSpeed = math.sqrt(vel.X ^ 2 + vel.Z ^ 2)
local power = Config.JumpBug.Power or 1.0
local newH = math.min(hSpeed + (JB_HORIZ_BOOST * power), 24.5)
local newVY = vy + (JB_VERT_BOOST * power)
if hSpeed > 0.5 then
local dir = Vector3.new(vel.X, 0, vel.Z).Unit
root.AssemblyLinearVelocity = Vector3.new(dir.X * newH, newVY, dir.Z * newH)
else
root.AssemblyLinearVelocity = Vector3.new(vel.X, newVY, vel.Z)
end
JBCooldown = 0.4
JBActive = true
jbFlashTime = tick()
JBEB_FallFrames = 0
table.clear(JBEB_VelBuffer)
task.delay(0.2, function() JBActive = false end)
end
if gameThinkGround and not JBEB_LandedFrame then
JBEB_FallFrames = 0
table.clear(JBEB_VelBuffer)
end
if ebOn and not gameThinkGround and vy < -8 and not EB_Active and not JBActive then
if JBEB_IsNearEdge(pos) then
EB_Active = true
G.EB_StartTime = tick()
ebFlashTime = tick()
JBEB_FallFrames = 0
table.clear(JBEB_VelBuffer)
root.AssemblyLinearVelocity = Vector3.new(vel.X, 0, vel.Z)
end
end
end))
task.spawn(function()
task.wait(0.5)
local gui = Instance.new("ScreenGui")
gui.Name = "JBEB_Indicator"
gui.ResetOnSpawn = false
pcall(function() gui.Parent = GetUIParent() end)
JBEB_IndicatorGui = gui
local function CreateIndicatorLabel(text, xPos)
local container = Instance.new("Frame", gui)
container.Size = UDim2.new(0, 40, 0, 30)
container.Position = UDim2.new(0.5, xPos, 1, -50)
container.BackgroundTransparency = 1
container.Visible = false
local main = Instance.new("TextLabel", container)
main.Name = "Main"
main.Size = UDim2.new(1, 0, 1, 0)
main.BackgroundTransparency = 1
main.Font = Enum.Font.GothamBold
main.TextSize = 18
main.Text = text
main.TextColor3 = Color3.fromRGB(255, 255, 255)
main.TextStrokeTransparency = 0
main.TextStrokeColor3 = Color3.new(0, 0, 0)
main.TextXAlignment = Enum.TextXAlignment.Center
return container
end
JBEB_JBLabel = CreateIndicatorLabel("jb", -35)
JBEB_EBLabel = CreateIndicatorLabel("eb", 5)
AC(RS.RenderStepped:Connect(function()
if Config.JBEBIndicator then
if JBEB_JBLabel then
JBEB_JBLabel.Visible = JBActive
if JBActive then
local m = JBEB_JBLabel:FindFirstChild("Main")
if m then m.TextColor3 = Config.JBColor end
end
end
if JBEB_EBLabel then
JBEB_EBLabel.Visible = EB_Active
if EB_Active then
local m = JBEB_EBLabel:FindFirstChild("Main")
if m then m.TextColor3 = Config.EBColor end
end
end
else
if JBEB_JBLabel then JBEB_JBLabel.Visible = false end
if JBEB_EBLabel then JBEB_EBLabel.Visible = false end
end
end))
end)
local function UpdateInventoryNames()
local invGui = LP:FindFirstChild("PlayerGui") and LP.PlayerGui:FindFirstChild("MainGui")
if not invGui then return end
local gameplay = invGui:FindFirstChild("Gameplay")
if not gameplay then return end
local bottom = gameplay:FindFirstChild("Bottom")
if not bottom then return end
local inv = bottom:FindFirstChild("Inventory")
if not inv then return end
local meleeSlot = inv:FindFirstChild("Melee")
if meleeSlot and Config.KnifeChanger.Enabled then
local weapon = meleeSlot:FindFirstChild("Weapon")
if weapon then
local weaponName = weapon:FindFirstChild("WeaponName")
if weaponName and weaponName:IsA("TextLabel") then
local knifeModel = Config.KnifeChanger.Model
local sel = Config.SkinChanger.Skins[knifeModel]
local star = utf8.char(9733)
if sel and sel ~= "Default" then
weaponName.Text = star .. " " .. knifeModel .. " | " .. sel
else
weaponName.Text = star .. " " .. knifeModel
end
end
local meleeImg = weapon:FindFirstChild("Melee")
if meleeImg and meleeImg:IsA("ImageLabel") then
pcall(function()
local knifeModel = Config.KnifeChanger.Model
local weaponDB = RepStore:FindFirstChild("Database") and RepStore.Database:FindFirstChild("Custom") and RepStore.Database.Custom:FindFirstChild("Weapons")
if weaponDB then
local weaponModule = weaponDB:FindFirstChild(knifeModel)
if weaponModule then
local weaponData = SafeRequire(weaponModule)
if weaponData and type(weaponData) == "table" and weaponData.Icon then
meleeImg.Image = weaponData.Icon
end
end
end
end)
end
end
end
for _, child in ipairs(inv:GetDescendants()) do
if child:IsA("TextLabel") and child.Name == "WeaponName" then
if meleeSlot and child:IsDescendantOf(meleeSlot) then continue end
if not child.Text:find("|") then continue end
local baseName = child.Text:split(" | ")[1]:gsub("%s+$", "")
local sel = Config.SkinChanger.Skins[baseName]
if sel and sel ~= "Default" then
child.Text = baseName .. " | " .. sel
else
child.Text = baseName
end
end
end
end
local function GetWeaponModel()
local cam = workspace.CurrentCamera
if not cam then return nil end
for _, ch in pairs(cam:GetChildren()) do
if ch:IsA("Model") and ch.Name ~= "Arms" and ch.Name ~= "Arms1" and ch.Name ~= "Arms2" and ch.Name ~= "Viewmodel" then
return ch
end
end
return nil
end
local function ApplySkin()
if not SD.SkinsRoot then return end
local wm = GetWeaponModel()
if not wm then return end
local own = wm.Name
local ewn = own
local ca = false
if Checkknife(own) then
if Config.KnifeChanger.Enabled then ewn = Config.KnifeChanger.Model ca = true end
else
if Config.SkinChanger.Enabled then ca = true end
end
if not ca then return end
local cur = wm:GetAttribute("BankrollSkin")
local sel = Config.SkinChanger.Skins[ewn]
if not sel or sel == "Default" then return end
if cur == sel then return end
local wsf = SD.SkinsRoot:FindFirstChild(ewn)
if not wsf then return end
local sf = wsf:FindFirstChild(sel)
if not sf then return end
local cf = sf:FindFirstChild("Camera")
if not cf then return end
local fn = cf:FindFirstChild("Factory New")
if not fn then return end
for _, sa in pairs(fn:GetChildren()) do
if sa:IsA("SurfaceAppearance") then
local pt = wm:FindFirstChild(sa.Name, true)
if pt and (pt:IsA("BasePart") or pt:IsA("MeshPart")) then
for _, old in pairs(pt:GetChildren()) do
if old:IsA("SurfaceAppearance") then old:Destroy() end
end
sa:Clone().Parent = pt
end
end
end
wm:SetAttribute("BankrollSkin", sel)
UpdateInventoryNames()
end
local function ApplyGloves()
if not Config.GloveChanger.Enabled then return end
local cam = workspace.CurrentCamera
if not cam then return end
local am
for _, ch in ipairs(cam:GetChildren()) do
if ch:IsA("Model") and (ch.Name:match("Arms") or ch:FindFirstChild("Right Arm")) then
am = ch
break
end
end
if not am then return end
local la = am:FindFirstChild("Left Arm")
local ra = am:FindFirstChild("Right Arm")
if not la or not ra then return end
local lg = la:FindFirstChild("Glove")
local rg = ra:FindFirstChild("Glove")
if not lg or not rg then return end
for _, old in pairs(lg:GetChildren()) do if old:IsA("SurfaceAppearance") then old:Destroy() end end
for _, old in pairs(rg:GetChildren()) do if old:IsA("SurfaceAppearance") then old:Destroy() end end
local selectedModel = Config.GloveChanger.Model
if not selectedModel then return end
local sel = Config.GloveChanger.Gloves[selectedModel]
if not sel or sel == "Default" then return end
if not SD.SkinsRoot then return end
local gloveSkinFolder = SD.SkinsRoot:FindFirstChild(selectedModel)
if not gloveSkinFolder then return end
local skinVariant = gloveSkinFolder:FindFirstChild(sel)
if not skinVariant then return end
local cameraFolder = skinVariant:FindFirstChild("Camera")
if not cameraFolder then return end
local factoryNew = cameraFolder:FindFirstChild("Factory New")
if not factoryNew then return end
for _, sa in pairs(factoryNew:GetChildren()) do
if sa:IsA("SurfaceAppearance") then
sa:Clone().Parent = lg
sa:Clone().Parent = rg
end
end
end
local function TrySkinApply()
if G.skinApplyDebounce then return end
G.skinApplyDebounce = true
task.spawn(function()
task.wait(0.2)
pcall(function()
if Config.SkinChanger.Enabled or Config.KnifeChanger.Enabled then ApplySkin() end
if Config.GloveChanger.Enabled then ApplyGloves() end
end)
task.wait(0.3)
pcall(UpdateInventoryNames)
G.skinApplyDebounce = false
end)
end
task.spawn(Safe(function()
while true do
local cam = workspace.CurrentCamera
if cam then
AC(cam.ChildAdded:Connect(Safe(function()
if Config.SkinChanger.Enabled or Config.KnifeChanger.Enabled or Config.GloveChanger.Enabled then
TrySkinApply()
end
end)))
break
end
task.wait(1)
end
end))
pcall(function()
AC(workspace:GetPropertyChangedSignal("CurrentCamera"):Connect(Safe(function()
local nc = workspace.CurrentCamera
if nc then
AC(nc.ChildAdded:Connect(Safe(function()
if Config.SkinChanger.Enabled or Config.KnifeChanger.Enabled or Config.GloveChanger.Enabled then
TrySkinApply()
end
end)))
end
end)))
end)
local function IsVisFromChar(o, tp, ac)
local d = (tp.Position - o)
pcall(function() RP_.aa.FilterDescendantsInstances = {ac} end)
local r = workspace:Raycast(o, d, RP_.aa)
if r then
local hi
pcall(function() hi = r.Instance end)
if hi and tp.Parent then
local id = false
pcall(function() id = hi:IsDescendantOf(tp.Parent) end)
return id
end
return false
end
return true
end
local function getThreat(ac, ar)
local cl, cd = nil, 200
for _, p in ipairs(Players:GetPlayers()) do
if p ~= LP and is_enemy(p) and p.Character then
local er = p.Character:FindFirstChild("HumanoidRootPart")
local eh = p.Character:FindFirstChild("Head")
if er and (er.Position - ar.Position).Magnitude < cd then
if eh and IsVisFromChar(ar.Position, eh, ac) then
cl = p.Character
cd = (er.Position - ar.Position).Magnitude
end
end
end
end
return cl
end
local ttF = {}
AC(RS.RenderStepped:Connect(Safe(function()
G.FrameCount = G.FrameCount + 1
local ch = LP.Character
G.LocalCharacter = ch
local lHum = ch and ch:FindFirstChildWhichIsA("Humanoid")
local lRoot = ch and ch:FindFirstChild("HumanoidRootPart")
Camera = workspace.CurrentCamera
if not Camera then return end
if Config.AutoBhop and lHum and lRoot then
if IsHoldKeyDown(Config.BhopKey) then
if lHum.FloorMaterial ~= Enum.Material.Air then
lHum.Jump = true
end
end
end
if Config.ESP.Enabled then pcall(UpdateESP) end
pcall(UpdateWorldESP)
if Config.Charms.Enabled and (tick() - G.LastCharmUpdate > 0.1) then
G.LastCharmUpdate = tick()
pcall(UpdateCharms, ESP_IsVisible)
end
if Config.Graph.Enabled then pcall(UpdateGraph) end
pcall(UpdateMovementDisplay)
local SC = V2(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)
if Circle and type(Circle) ~= "number" then
if Config.Aimbot.DrawFOV and Config.Aimbot.Enabled then
Circle.Visible = true
Circle.Radius = Config.Aimbot.FOV
Circle.Position = SC
else
Circle.Visible = false
end
end
local akd = false
if Config.Aimbot.Mode == "Hold" then
akd = IsHoldKeyDown(Config.Aimbot.HoldKey)
else
akd = G.AimbotActive
end
if Config.Aimbot.Enabled and akd then
local bt, bd = nil, Config.Aimbot.FOV
for _, plr in pairs(Players:GetPlayers()) do
if plr == LP or not plr.Character or not ch then continue end
if Config.Aimbot.TeamCheck and not is_enemy(plr) then continue end
local ah = plr.Character:FindFirstChildWhichIsA("Humanoid")
if Config.Aimbot.AliveCheck and ah and ah.Health <= 0 then continue end
local pt = plr.Character:FindFirstChild(Config.Aimbot.TargetPart)
if not pt then continue end
local sp, ao = Camera:WorldToViewportPoint(pt.Position)
if not ao then continue end
if Config.Aimbot.WallCheck and not IsVisible(pt) then continue end
local ad = (V2(sp.X, sp.Y) - SC).Magnitude
if ad < bd then
bt = V2(sp.X, sp.Y)
bd = ad
end
end
if bt then
local sm = math.max(1, Config.Aimbot.Smoothness)
G.mousemoverel((bt.X - SC.X) / sm, (bt.Y - SC.Y) / sm)
end
end
local tkd = false
if Config.Triggerbot.Mode == "Hold" then
tkd = IsHoldKeyDown(Config.Triggerbot.HoldKey)
else
tkd = G.TriggerbotActive
end
if Config.Triggerbot.Enabled and tkd and (tick() - G.lastTriggerTime) > Config.Triggerbot.Delay then
local ro = Camera.CFrame.Position
local rd = Camera.CFrame.LookVector * 1000
RP_.trigger.FilterType = Enum.RaycastFilterType.Exclude
table.clear(ttF)
if ch then ttF[1] = ch end
if workspace.CurrentCamera then ttF[#ttF + 1] = workspace.CurrentCamera end
pcall(function() RP_.trigger.FilterDescendantsInstances = ttF end)
local rr = workspace:Raycast(ro, rd, RP_.trigger)
local ss = false
if rr then
local hp
pcall(function() hp = rr.Instance end)
if hp then
local hc
pcall(function() hc = hp:FindFirstAncestorOfClass("Model") end)
local hh = hc and hc:FindFirstChildWhichIsA("Humanoid")
if hc and hh and hc:FindFirstChild("HumanoidRootPart") then
local hpp = Players:GetPlayerFromCharacter(hc)
if hpp and (not Config.Triggerbot.TeamCheck or is_enemy(hpp)) then
ss = true
end
end
end
end
if ss then
G.lastTriggerTime = tick()
G.mouse1click()
end
end
if Config.ShowKeybinds then
if G.FrameCount % 6 == 0 then
KeybindList.Visible = true
if Config.Aimbot.Enabled then
AimbotKeyLabel.Text = "Aimbot [" .. Config.Aimbot.HoldKey.Name .. "] (" .. Config.Aimbot.Mode .. ")"
AimbotKeyLabel.TextColor3 = akd and CurrentTheme.Accent or CurrentTheme.Text
AimbotKeyLabel.Visible = true
else
AimbotKeyLabel.Visible = false
end
if Config.Triggerbot.Enabled then
TriggerKeyLabel.Text = "Trigger [" .. Config.Triggerbot.HoldKey.Name .. "] (" .. Config.Triggerbot.Mode .. ")"
TriggerKeyLabel.TextColor3 = tkd and CurrentTheme.Accent or CurrentTheme.Text
TriggerKeyLabel.Visible = true
else
TriggerKeyLabel.Visible = false
end
if Config.AutoBhop then
BhopKeyLabel.Text = "Bhop [" .. Config.BhopKey.Name .. "] (Hold)"
BhopKeyLabel.TextColor3 = IsHoldKeyDown(Config.BhopKey) and CurrentTheme.Accent or CurrentTheme.Text
BhopKeyLabel.Visible = true
else
BhopKeyLabel.Visible = false
end
if Config.JumpBug.Enabled and Config.JumpBug.Mode ~= "Always" then
local jbKeyName = Config.JumpBug.Key and Config.JumpBug.Key.Name or "None"
JBKeyLabel.Text = "JumpBug [" .. jbKeyName .. "] (" .. Config.JumpBug.Mode .. ")"
JBKeyLabel.TextColor3 = IsJBEBActive(Config.JumpBug) and CurrentTheme.Accent or CurrentTheme.Text
JBKeyLabel.Visible = true
else
JBKeyLabel.Visible = false
end
if Config.EdgeBug.Enabled and Config.EdgeBug.Mode ~= "Always" then
local ebKeyName = Config.EdgeBug.Key and Config.EdgeBug.Key.Name or "None"
EBKeyLabel.Text = "EdgeBug [" .. ebKeyName .. "] (" .. Config.EdgeBug.Mode .. ")"
EBKeyLabel.TextColor3 = IsJBEBActive(Config.EdgeBug) and CurrentTheme.Accent or CurrentTheme.Text
EBKeyLabel.Visible = true
else
EBKeyLabel.Visible = false
end
end
else
KeybindList.Visible = false
end
if Config.SpectatorList then
SpectatorList.Visible = true
local sc = 0
pcall(function() sc = LP:GetAttribute("Spectators") or 0 end)
SpecLabel.Text = "Spectators: " .. tostring(sc)
else
SpectatorList.Visible = false
end
if Config.SmokeRemover then
pcall(function()
for _, v in pairs(workspace:GetDescendants()) do
if v.Name:match("VoxelSmoke") then
v:ClearAllChildren()
v:Destroy()
end
end
end)
end
end)))
AC(RS.Heartbeat:Connect(Safe(function()
if tick() - G.LastWorldScan < 0.2 then return end
G.LastWorldScan = tick()
local debris = workspace:FindFirstChild("Debris")
if not debris then return end
local cdw, cmol, csmk = {}, {}, {}
local bf = false
for _, item in ipairs(debris:GetChildren()) do
if Config.ESP.DroppedWeapons.Enabled and item:IsA("Model") and item:GetAttribute("Weapon") and item:GetAttribute("CanPickup") == true then
cdw[item] = true
if not WorldESP.DroppedWeapons[item] then
WorldESP.DroppedWeapons[item] = CreateWorldESPObject(true, false)
WorldESP.DroppedWeapons[item].Model = item
end
end
if Config.ESP.Bomb.Enabled and item:IsA("Model") and item.Name == "Character" and item:GetAttribute("BombPlanted") then
bf = true
if WorldESP.Bomb and WorldESP.Bomb.Model ~= item then
DestroyWESP(WorldESP.Bomb)
WorldESP.Bomb = nil
end
if not WorldESP.Bomb then
WorldESP.Bomb = CreateWorldESPObject(true, false)
WorldESP.Bomb.Model = item
end
end
if Config.ESP.Molotovs.Enabled and item:IsA("Folder") and item.Name:match("^VoxelFire") then
cmol[item] = true
if not WorldESP.Molotovs[item] then
WorldESP.Molotovs[item] = CreateWorldESPObject(true, true)
WorldESP.Molotovs[item].Model = item
end
end
if Config.ESP.Smokes.Enabled and item:IsA("Folder") and item.Name:match("^VoxelSmoke") then
csmk[item] = true
if not WorldESP.Smokes[item] then
WorldESP.Smokes[item] = CreateWorldESPObject(true, true)
WorldESP.Smokes[item].Model = item
end
end
end
for item, eo in pairs(WorldESP.DroppedWeapons) do
if not cdw[item] then
DestroyWESP(eo)
WorldESP.DroppedWeapons[item] = nil
end
end
for item, eo in pairs(WorldESP.Molotovs) do
if not cmol[item] then
DestroyWESP(eo)
WorldESP.Molotovs[item] = nil
end
end
for item, eo in pairs(WorldESP.Smokes) do
if not csmk[item] then
DestroyWESP(eo)
WorldESP.Smokes[item] = nil
end
end
if not bf and WorldESP.Bomb then
DestroyWESP(WorldESP.Bomb)
WorldESP.Bomb = nil
end
end)))
AC(RS.Heartbeat:Connect(Safe(function()
if not Config.AntiAim.Enabled then return end
local nt = tick()
pcall(function()
local ac = LP.Character
if ac then
local ar = ac:FindFirstChild("HumanoidRootPart")
local ah = ac:FindFirstChildWhichIsA("Humanoid")
if ar and ah then
if (nt - G.AAD.lastThreatCheck) > 0.15 then
G.AAD.lastThreatCheck = nt
G.AAD.cachedThreat = getThreat(ac, ar)
end
if G.AAD.cachedThreat and G.AAD.cachedThreat:FindFirstChild("HumanoidRootPart") then
ah.AutoRotate = false
local tp = G.AAD.cachedThreat.HumanoidRootPart.Position
local la = CFrame.lookAt(ar.Position, Vector3.new(tp.X, ar.Position.Y, tp.Z))
local j = math.random(-Config.AntiAim.JitterRange, Config.AntiAim.JitterRange)
ar.CFrame = la * CFrame.Angles(0, math.rad(Config.AntiAim.YawOffset + j), 0)
else
ah.AutoRotate = true
end
end
end
end)
end)))
pcall(function()
if LP:FindFirstChild("PlayerGui") then
AC(LP.PlayerGui.ChildAdded:Connect(Safe(function(child)
if Config.FlashRemover and child.Name == "FlashbangEffect" then
pcall(function() child:Destroy() end)
end
end)))
end
end)
pcall(function()
AC(game:GetService("Lighting").ChildAdded:Connect(Safe(function(child)
if Config.FlashRemover and child.Name == "FlashbangColorCorrection" then
pcall(function() child:Destroy() end)
end
end)))
end)
AC(RS.Heartbeat:Connect(Safe(function()
if (Config.SkinChanger.Enabled or Config.KnifeChanger.Enabled) and tick() - G.lastInvRefresh > 2 then
G.lastInvRefresh = tick()
pcall(UpdateInventoryNames)
end
end)))
print("[bankroll] Loaded successfully")
]=])()



Works on Pot, a bit sad knife changer doesn't work on it. But who am I to complain. 10/10 script.