Back to Scripts
working SKINCHANGER
ScriptBlox
Free
Game: [CODE HALLOWEEN25] Combat Surf!
190
Views
0
Likes
0
Dislikes
Joyx
offline
Features
-WORKING skin changer
-Aimbot
-Triggerbot
-Esp
Tags
Script Code
-- JOY MADE THIS SHITZ DONT STEAL
local TweenService = game:GetService('TweenService')
local RunService = game:GetService('RunService')
local TextService = game:GetService('TextService')
-- FUCKING WATERMARKZ
local watermark = Instance.new('ScreenGui', game:GetService('CoreGui'))
watermark.Name = 'WatermarkUI'
watermark.ResetOnSpawn = false
watermark.DisplayOrder = 9999
-- Create background elements
local background = Instance.new('Frame', watermark)
background.Size = UDim2.new(1, 0, 1, 0)
background.BackgroundColor3 = Color3.fromRGB(10, 10, 15)
background.BorderSizePixel = 0
-- Add gradient overlay
local gradient = Instance.new('UIGradient', background)
gradient.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0, Color3.fromRGB(15, 15, 25)),
ColorSequenceKeypoint.new(1, Color3.fromRGB(10, 10, 20)),
})
gradient.Rotation = 45
-- Add subtle noise texture
local noise = Instance.new('ImageLabel', background)
noise.Size = UDim2.new(1, 0, 1, 0)
noise.BackgroundTransparency = 1
noise.Image = 'rbxassetid://8341723857' -- Subtle noise texture
noise.ImageTransparency = 0.8
noise.TileSize = UDim2.new(0, 200, 0, 200)
-- Add animated particles
local particles = Instance.new('Frame', background)
particles.Size = UDim2.new(1, 0, 1, 0)
particles.BackgroundTransparency = 1
-- Create particle effect
for i = 1, 30 do
local particle = Instance.new('Frame', particles)
particle.Size = UDim2.new(0, 2, 0, 2)
particle.Position = UDim2.new(math.random(), 0, math.random(), 0)
particle.BackgroundColor3 = Color3.fromRGB(80, 120, 255)
particle.BorderSizePixel = 0
Instance.new('UICorner', particle).CornerRadius = UDim.new(1, 0)
-- Animate particles
spawn(function()
while particle.Parent do
local duration = 2 + math.random() * 3
local goalPos = UDim2.new(math.random(), 0, math.random(), 0)
TweenService:Create(
particle,
TweenInfo.new(
duration,
Enum.EasingStyle.Sine,
Enum.EasingDirection.InOut
),
{
Position = goalPos,
BackgroundTransparency = math.random(0.3, 0.7),
}
):Play()
wait(duration)
end
end)
end
-- Add animated grid lines
local grid = Instance.new('Frame', background)
grid.Size = UDim2.new(1, 0, 1, 0)
grid.BackgroundTransparency = 1
local function createGridLine(horizontal)
local line = Instance.new('Frame', grid)
line.BorderSizePixel = 0
line.BackgroundColor3 = Color3.fromRGB(30, 30, 40)
line.BackgroundTransparency = 0.9
if horizontal then
line.Size = UDim2.new(1, 0, 0, 1)
line.Position = UDim2.new(0, 0, math.random(), 0)
else
line.Size = UDim2.new(0, 1, 1, 0)
line.Position = UDim2.new(math.random(), 0, 0, 0)
end
return line
end
-- Create grid lines
for i = 1, 8 do
createGridLine(true)
createGridLine(false)
end
-- Main container
local container = Instance.new('Frame', watermark)
container.AnchorPoint = Vector2.new(0.5, 0.5)
container.Position = UDim2.new(0.5, 0, 0.5, 0)
container.Size = UDim2.new(0.5, 0, 0, 0)
container.BackgroundColor3 = Color3.fromRGB(20, 20, 30)
container.BackgroundTransparency = 1
container.ClipsDescendants = true
-- Add glass effect
local glass = Instance.new('Frame', container)
glass.Size = UDim2.new(1, 0, 1, 0)
glass.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
glass.BackgroundTransparency = 0.95
glass.BorderSizePixel = 0
-- Add corner radius
local corner = Instance.new('UICorner', container)
corner.CornerRadius = UDim.new(0, 16)
-- Add border
local border = Instance.new('UIStroke', container)
border.Color = Color3.fromRGB(80, 120, 255)
border.Thickness = 0
border.Transparency = 0.5
-- Add inner shadow
local shadow = Instance.new('ImageLabel', container)
shadow.Size = UDim2.new(1, 20, 1, 20)
shadow.Position = UDim2.new(0, -10, 0, -10)
shadow.BackgroundTransparency = 1
shadow.Image = 'rbxassetid://5554236805'
shadow.ImageColor3 = Color3.fromRGB(0, 0, 0)
shadow.ImageTransparency = 0.9
shadow.ScaleType = Enum.ScaleType.Slice
shadow.SliceCenter = Rect.new(10, 10, 118, 118)
-- Main text
local mainText = Instance.new('TextLabel', container)
mainText.AnchorPoint = Vector2.new(0.5, 0.5)
mainText.Position = UDim2.new(0.5, 0, 0.4, 0)
mainText.Size = UDim2.new(1, -40, 0, 80)
mainText.BackgroundTransparency = 1
mainText.Text = 'MADE BY JOY'
mainText.TextColor3 = Color3.fromRGB(255, 255, 255)
mainText.TextStrokeTransparency = 0.7
mainText.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
mainText.Font = Enum.Font.GothamBlack
mainText.TextSize = 42
mainText.TextTransparency = 1
mainText.TextXAlignment = Enum.TextXAlignment.Center
-- Sub text
local subText = mainText:Clone()
subText.Parent = container
subText.Position = UDim2.new(0.5, 0, 0.6, 0)
subText.Size = UDim2.new(1, -40, 0, 40)
subText.Text = 'If you need help DM me: lucxer8'
subText.TextSize = 20
subText.Font = Enum.Font.GothamMedium
subText.TextTransparency = 1
-- Add decorative elements
local line = Instance.new('Frame', container)
line.AnchorPoint = Vector2.new(0.5, 0.5)
line.Position = UDim2.new(0.5, 0, 0.55, 0)
line.Size = UDim2.new(0, 0, 0, 2)
line.BackgroundColor3 = Color3.fromRGB(80, 120, 255)
line.BorderSizePixel = 0
-- Animation sequence
local function animateIn()
-- Fade in background
TweenService
:Create(background, TweenInfo.new(0.5), { BackgroundTransparency = 0 })
:Play()
-- Container animation
local containerTween = TweenService:Create(
container,
TweenInfo.new(0.7, Enum.EasingStyle.Back, Enum.EasingDirection.Out),
{
Size = UDim2.new(0.5, 0, 0.35, 0),
BackgroundTransparency = 0.05,
}
)
containerTween:Play()
-- Text fade in
task.delay(0.3, function()
TweenService
:Create(mainText, TweenInfo.new(0.5), { TextTransparency = 0 })
:Play()
TweenService
:Create(subText, TweenInfo.new(0.5), { TextTransparency = 0.2 })
:Play()
-- Line animation
TweenService
:Create(
line,
TweenInfo.new(
0.5,
Enum.EasingStyle.Quad,
Enum.EasingDirection.Out
),
{
Size = UDim2.new(0.4, 0, 0, 2),
BackgroundTransparency = 0,
}
)
:Play()
-- Border pulse
TweenService:Create(border, TweenInfo.new(0.3), { Thickness = 2 })
:Play()
end)
end
local function animateOut(callback)
-- Fade out elements
TweenService:Create(mainText, TweenInfo.new(0.3), { TextTransparency = 1 })
:Play()
TweenService:Create(subText, TweenInfo.new(0.3), { TextTransparency = 1 })
:Play()
TweenService
:Create(line, TweenInfo.new(0.3), { BackgroundTransparency = 1 })
:Play()
TweenService:Create(border, TweenInfo.new(0.3), { Thickness = 0 }):Play()
-- Container animation
local containerTween = TweenService:Create(
container,
TweenInfo.new(0.5, Enum.EasingStyle.Back, Enum.EasingDirection.In),
{
Size = UDim2.new(0.5, 0, 0, 0),
BackgroundTransparency = 1,
}
)
containerTween:Play()
-- Fade out background
TweenService
:Create(background, TweenInfo.new(0.5), { BackgroundTransparency = 1 })
:Play()
-- Clean up
task.delay(0.6, function()
watermark:Destroy()
if callback then
callback()
end
end)
end
-- Start animation
animateIn()
-- Pause game while watermark is shown
RunService:Set3dRenderingEnabled(false)
-- Set up auto-close and cleanup
task.delay(4, function()
animateOut(function()
RunService:Set3dRenderingEnabled(true)
end)
end)
-- Rest of your existing code starts here...
local Players = game:GetService('Players')
local UIS = game:GetService('UserInputService')
-- ONE FILE
local Players = game:GetService('Players')
local UIS = game:GetService('UserInputService')
local TS = game:GetService('TweenService')
local RS = game:GetService('RunService')
local Rep = game:GetService('ReplicatedStorage')
local VIM = game:GetService('VirtualInputManager')
local LP = Players.LocalPlayer
local PG = LP:WaitForChild('PlayerGui')
local Cam = workspace.CurrentCamera
-- Optional item db
local Items = nil
pcall(function()
local M = Rep:FindFirstChild('BaseItems')
or Rep:WaitForChild('BaseItems', 2)
if M then
local ok, res = pcall(require, M)
if ok and res and res.BaseItems then
Items = res.BaseItems
end
end
end)
local function ChangeKnifeModel(v)
if Items and Items.Classic_Knife then
Items.Classic_Knife.Model = v
end
return v
end
local function IdentifyGun(n)
if n == 'v_Awp' or n == 'v_Awp2' then
return 'AWP'
elseif n == 'v_Deagle' then
return 'Desert Eagle'
elseif n == 'v_Karambit' or n == 'v_Karambit2' then
return 'Karambit'
elseif n == 'v_Glock' or n == 'v_Glock2' then
return 'Glock'
elseif n == 'v_Scythe' then
return 'Scythe'
elseif n == 'v_M9Bayo' then
return 'M9 Bayonet'
elseif n == 'v_Katana' or n == 'v_Katana2' then
return 'Katana'
elseif n == 'v_Butterfly' then
return 'Butterfly'
elseif n == 'v_AK47' then
return 'AK-47'
elseif n == 'v_Bayo' then
return 'Bayonet'
elseif n == 'v_Bowie' then
return 'Bowie'
elseif n == 'v_CombatKnife' or n == 'v_Combat' then
return 'Combat Knife'
end
end
local function ApplySkin(skinModel, targetModel)
local m = targetModel or Cam:FindFirstChildOfClass('Model')
if not m or not skinModel then
return
end
local gun = m:FindFirstChild('Gun')
if not gun then
return
end
local ex = gun:FindFirstChild('NewSkins')
if ex then
ex:Destroy()
end
local folder = Instance.new('Folder')
folder.Name = 'NewSkins'
folder.Parent = gun
local map = {}
for _, d in ipairs(skinModel:GetDescendants()) do
if d:IsA('MeshPart') then
map[d.Name] = d
end
end
for _, orig in ipairs(gun:GetDescendants()) do
if orig:IsA('MeshPart') then
local src = map[orig.Name]
if src then
local c = src:Clone()
c.Name = orig.Name .. '_Skin'
c.CFrame = orig.CFrame
c.Size = orig.Size
c.Anchored = false
c.CanCollide = false
c.Massless = true
c.Parent = folder
local w = Instance.new('WeldConstraint', c)
w.Part0 = c
w.Part1 = orig
orig.Transparency = 1
end
end
end
end
-- UI root
local SG = Instance.new('ScreenGui', PG)
SG.Name = 'AllInOneUI'
SG.ResetOnSpawn = false
SG.DisplayOrder = 9999
SG.IgnoreGuiInset = true
local Win = Instance.new('Frame', SG)
Win.AnchorPoint = Vector2.new(0.5, 0.5)
Win.Position = UDim2.new(0.5, 0, 0.5, 0)
Win.Size = UDim2.fromOffset(940, 560)
Win.BackgroundColor3 = Color3.fromRGB(20, 20, 22)
Instance.new('UICorner', Win).CornerRadius = UDim.new(0, 8)
Instance.new('UIStroke', Win).Transparency = 0.35
local TitleBar = Instance.new('Frame', Win)
TitleBar.Size = UDim2.new(1, 0, 0, 40)
TitleBar.BackgroundColor3 = Color3.fromRGB(26, 26, 28)
Instance.new('UIStroke', TitleBar).Transparency = 0.4
local Title = Instance.new('TextLabel', TitleBar)
Title.BackgroundTransparency = 1
Title.Text = 'Skin Changer'
Title.Font = Enum.Font.GothamSemibold
Title.TextSize = 16
Title.TextColor3 = Color3.fromRGB(235, 235, 235)
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.Position = UDim2.new(0, 14, 0, 0)
Title.Size = UDim2.new(1, -14, 1, 0)
-- drag
do
local dragging = false
local s
local base
TitleBar.InputBegan:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true
s = i.Position
base = Vector2.new(Win.Position.X.Offset, Win.Position.Y.Offset)
i.Changed:Connect(function()
if i.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
UIS.InputChanged:Connect(function(i)
if dragging and i.UserInputType == Enum.UserInputType.MouseMovement then
local d = i.Position - s
Win.Position = UDim2.new(0.5, base.X + d.X, 0.5, base.Y + d.Y)
end
end)
end
-- sidebar + pages
local Sidebar = Instance.new('Frame', Win)
Sidebar.Position = UDim2.new(0, 0, 0, 40)
Sidebar.Size = UDim2.new(0, 220, 1, -40)
Sidebar.BackgroundColor3 = Color3.fromRGB(26, 26, 28)
Instance.new('UIStroke', Sidebar).Transparency = 0.4
local Nav = Instance.new('Frame', Sidebar)
Nav.Position = UDim2.new(0, 0, 0, 8)
Nav.Size = UDim2.new(1, 0, 1, -16)
Nav.BackgroundTransparency = 1
local NL = Instance.new('UIListLayout', Nav)
NL.Padding = UDim.new(0, 8)
NL.FillDirection = Enum.FillDirection.Vertical
NL.HorizontalAlignment = Enum.HorizontalAlignment.Center
local function NavBtn(t, sel)
local b = Instance.new('TextButton', Nav)
b.Size = UDim2.new(1, -20, 0, 32)
b.AutoButtonColor = false
b.Text = t
b.TextSize = 14
b.Font = Enum.Font.Gotham
b.TextColor3 = Color3.fromRGB(230, 230, 230)
b.BackgroundColor3 = sel and Color3.fromRGB(38, 38, 42)
or Color3.fromRGB(30, 30, 34)
Instance.new('UICorner', b).CornerRadius = UDim.new(0, 6)
Instance.new('UIStroke', b).Transparency = 0.5
return b
end
local BMain = NavBtn('Main', true)
local BAim = NavBtn('Aim', false)
local BVis = NavBtn('Visuals', false)
local BSet = NavBtn('Settings', false)
local function Card(t, p)
local c = Instance.new('Frame', p)
c.Size = UDim2.new(1, -20, 1, -20)
c.Position = UDim2.new(0, 10, 0, 10)
c.BackgroundColor3 = Color3.fromRGB(30, 30, 34)
Instance.new('UICorner', c).CornerRadius = UDim.new(0, 8)
Instance.new('UIStroke', c).Transparency = 0.45
local h = Instance.new('TextLabel', c)
h.BackgroundTransparency = 1
h.Text = t
h.Position = UDim2.new(0, 8, 0, 8)
h.Size = UDim2.new(1, -16, 0, 24)
h.Font = Enum.Font.GothamSemibold
h.TextSize = 15
h.TextColor3 = Color3.fromRGB(235, 235, 235)
h.TextXAlignment = Enum.TextXAlignment.Left
return c
end
local PageMain = Instance.new('Frame', Win)
PageMain.BackgroundTransparency = 1
PageMain.Position = UDim2.new(0, 220, 0, 40)
PageMain.Size = UDim2.new(1, -220, 1, -40)
local PageAim = Instance.new('Frame', Win)
PageAim.BackgroundTransparency = 1
PageAim.Position = PageMain.Position
PageAim.Size = PageMain.Size
PageAim.Visible = false
local PageVis = Instance.new('Frame', Win)
PageVis.BackgroundTransparency = 1
PageVis.Position = PageMain.Position
PageVis.Size = PageMain.Size
PageVis.Visible = false
local PageSet = Instance.new('Frame', Win)
PageSet.BackgroundTransparency = 1
PageSet.Position = PageMain.Position
PageSet.Size = PageMain.Size
PageSet.Visible = false
local function setSelected(b, s)
TS:Create(
b,
TweenInfo.new(0.12),
{
BackgroundColor3 = s and Color3.fromRGB(38, 38, 42)
or Color3.fromRGB(30, 30, 34),
}
):Play()
end
local function Show(w)
local m = (w == 'Main')
local a = (w == 'Aim')
local v = (w == 'Visuals')
local s = (w == 'Settings')
PageMain.Visible = m
PageAim.Visible = a
PageVis.Visible = v
PageSet.Visible = s
setSelected(BMain, m)
setSelected(BAim, a)
setSelected(BVis, v)
setSelected(BSet, s)
end
BMain.MouseButton1Click:Connect(function()
Show('Main')
end)
BAim.MouseButton1Click:Connect(function()
Show('Aim')
end)
BVis.MouseButton1Click:Connect(function()
Show('Visuals')
end)
BSet.MouseButton1Click:Connect(function()
Show('Settings')
end)
Show('Main')
-- cursor control + enforcement
local function UpdateCursorForMenu()
if Win.Visible then
UIS.MouseIconEnabled = true
UIS.MouseBehavior = Enum.MouseBehavior.Default
else
UIS.MouseIconEnabled = false
UIS.MouseBehavior = Enum.MouseBehavior.LockCenter
end
end
UpdateCursorForMenu()
RS.RenderStepped:Connect(function()
if Win.Visible then
if UIS.MouseBehavior ~= Enum.MouseBehavior.Default then
UIS.MouseBehavior = Enum.MouseBehavior.Default
end
if UIS.MouseIconEnabled ~= true then
UIS.MouseIconEnabled = true
end
else
if UIS.MouseBehavior ~= Enum.MouseBehavior.LockCenter then
UIS.MouseBehavior = Enum.MouseBehavior.LockCenter
end
if UIS.MouseIconEnabled ~= false then
UIS.MouseIconEnabled = false
end
end
end)
-- Knife UI
local KnifeCard = Card('Knife Skins', PageMain)
local Cat = Instance.new('ScrollingFrame', KnifeCard)
Cat.Size = UDim2.new(0.45, -12, 1, -48)
Cat.Position = UDim2.new(0, 8, 0, 36)
Cat.BackgroundColor3 = Color3.fromRGB(26, 26, 28)
Cat.ScrollBarThickness = 6
Instance.new('UICorner', Cat).CornerRadius = UDim.new(0, 6)
local CL = Instance.new('UIListLayout', Cat)
CL.Padding = UDim.new(0, 6)
local Pane = Instance.new('Frame', KnifeCard)
Pane.Size = UDim2.new(0.55, -12, 1, -48)
Pane.Position = UDim2.new(0.45, 16, 0, 36)
Pane.BackgroundColor3 = Color3.fromRGB(26, 26, 28)
Instance.new('UICorner', Pane).CornerRadius = UDim.new(0, 6)
Instance.new('UIStroke', Pane).Transparency = 0.45
local Sel = Instance.new('TextLabel', Pane)
Sel.BackgroundTransparency = 1
Sel.Text = 'Selected: None'
Sel.Size = UDim2.new(1, -16, 0, 22)
Sel.Position = UDim2.new(0, 8, 0, 8)
Sel.Font = Enum.Font.Gotham
Sel.TextSize = 14
Sel.TextColor3 = Color3.fromRGB(220, 220, 225)
Sel.TextXAlignment = Enum.TextXAlignment.Left
local Apply = Instance.new('TextButton', Pane)
Apply.Text = 'Apply Skin'
Apply.Size = UDim2.new(0, 130, 0, 32)
Apply.Position = UDim2.new(0, 8, 1, -40)
Apply.BackgroundColor3 = Color3.fromRGB(210, 210, 215)
Apply.TextColor3 = Color3.fromRGB(20, 20, 20)
Apply.Font = Enum.Font.GothamSemibold
Apply.TextSize = 14
Instance.new('UICorner', Apply).CornerRadius = UDim.new(0, 6)
local function FindFolder(opts)
if not Rep:FindFirstChild('Models') then
return nil
end
for _, n in ipairs(opts) do
local f = Rep.Models:FindFirstChild(n)
if f then
return f
end
end
end
local BTFK_LIST = {
'BALISONG_Riby',
'Bali_rgb',
'Btfk_Ak',
'Btfk_Ak6ida',
'Btfk_Alien',
'Btfk_Ash',
'Btfk_Bali',
'Btfk_Blackout',
'Btfk_CH',
'Btfk_Cooled',
'Btfk_Corrupt',
'Btfk_Doppler',
'Btfk_Eden',
'Btfk_Elegance',
'Btfk_Emerald',
'Btfk_Fade',
'Btfk_Ghost',
'Btfk_Hellforge',
'Btfk_Infect',
'Btfk_Justice',
'Btfk_Light',
'Btfk_Saphire',
'Btfk_Snow',
'Btfk_Sus',
'Btfk_Tropical',
'Btfk_Vanilla',
'Btfk_Waifu',
'Butterfly_Bone',
'Butterfly_Venom',
}
local BAYO_LIST = {
'Bayonet_Amethyst',
'Bayonet_Blackout',
'Bayonet_Case_Hardened',
'Bayonet_Cooled',
'Bayonet_Corrupt',
'Bayonet_Cream',
'Bayonet_Doppler',
'Bayonet_Doppler2',
'Bayonet_Emerald',
'Bayonet_Fade',
'Bayonet_Galaxy',
'Bayonet_Ghost',
'Bayonet_Kitty',
'Bayonet_Lore',
'Bayonet_Pink',
'Bayonet_Ruby',
'Bayonet_Saphire',
'Bayonet_Spider',
'Bayonet_Sponge',
'Bayonet_Sunset',
}
local M9_LIST = {
'M9_Bayonet_Blackout',
'M9_Bayonet_Case_Hardened',
'M9_Bayonet_Cooled',
'M9_Bayonet_Cream',
'M9_Bayonet_Doppler',
'M9_Bayonet_Doppler2',
'M9_Bayonet_Emerald',
'M9_Bayonet_Fade',
'M9_Bayonet_Galaxy',
'M9_Bayonet_Ghost',
'M9_Bayonet_Gold',
'M9_Bayonet_Hellforge',
'M9_Bayonet_Lore',
'M9_Bayonet_Midnight',
'M9_Bayonet_Pink',
'M9_Bayonet_Ruby',
'M9_Bayonet_Saphire',
'M9_Bayonet_Slither',
'M9_Bayonet_Spider',
'M9_Bayonet_Sunset',
'M9_Bayonet_Tropical',
'M9_Bayonet_Universal',
}
local KARAMBIT_LIST = {
'Karambit_Candy',
'Karambit_Case_Hardened',
'Karambit_Cooled',
'Karambit_Corrupt',
'Karambit_Cream',
'Karambit_Diamond',
'Karambit_Doppler',
'Karambit_Doppler2',
'Karambit_Emerald',
'Karambit_Fade',
'Karambit_Festive',
'Karambit_Galaxy',
'Karambit_Ghost',
'Karambit_Ghoul',
'Karambit_Heaven',
'Karambit_Hellforge',
'Karambit_Hologram',
'Karambit_Mist',
'Karambit_Pink',
'Karambit_Ruby',
'Karambit_Sapphire',
}
local KnifeCats = {}
if Rep:FindFirstChild('Models') then
table.insert(
KnifeCats,
{
name = 'Butterfly Knife',
modelPath = Rep.Models:FindFirstChild('v_Butterfly'),
skinFolder = FindFolder({ 'BtfkSkins' }),
skins = BTFK_LIST,
}
)
table.insert(
KnifeCats,
{
name = 'Bayonet',
modelPath = Rep.Models:FindFirstChild('v_Bayo'),
skinFolder = FindFolder({ 'BayoSkins' }),
skins = BAYO_LIST,
}
)
table.insert(
KnifeCats,
{
name = 'M9 Bayonet',
modelPath = Rep.Models:FindFirstChild('v_M9Bayo'),
skinFolder = FindFolder({ 'M9BayoSkins', 'M9_BayoSkins' }),
skins = M9_LIST,
}
)
table.insert(
KnifeCats,
{
name = 'Karambit',
modelPath = Rep.Models:FindFirstChild('v_Karambit'),
skinFolder = FindFolder({ 'KarambitSkins' }),
skins = KARAMBIT_LIST,
}
)
end
local lastSelectedSkinModel = nil
local lastSelectedName = 'None'
local function Accordion(cat)
local container = Instance.new('Frame', Cat)
container.BackgroundColor3 = Color3.fromRGB(30, 30, 34)
container.Size = UDim2.new(1, -10, 0, 38)
Instance.new('UICorner', container).CornerRadius = UDim.new(0, 6)
Instance.new('UIStroke', container).Transparency = 0.5
local head = Instance.new('TextButton', container)
head.BackgroundTransparency = 1
head.Text = ' ' .. cat.name
head.Size = UDim2.new(1, -8, 0, 38)
head.Position = UDim2.new(0, 4, 0, 0)
head.TextColor3 = Color3.fromRGB(230, 230, 230)
head.Font = Enum.Font.GothamSemibold
head.TextSize = 14
head.AutoButtonColor = false
local arrow = Instance.new('TextLabel', container)
arrow.BackgroundTransparency = 1
arrow.Text = '▶'
arrow.Size = UDim2.new(0, 22, 0, 22)
arrow.Position = UDim2.new(1, -24, 0, 8)
arrow.TextColor3 = Color3.fromRGB(180, 180, 186)
arrow.Font = Enum.Font.GothamBold
arrow.TextSize = 14
local body = Instance.new('ScrollingFrame', container)
body.BackgroundColor3 = Color3.fromRGB(26, 26, 28)
body.Size = UDim2.new(1, -10, 0, 0)
body.Position = UDim2.new(0, 5, 0, 38)
body.Visible = false
body.ScrollBarThickness = 6
Instance.new('UICorner', body).CornerRadius = UDim.new(0, 6)
local bl = Instance.new('UIListLayout', body)
bl.Padding = UDim.new(0, 4)
for _, skin in ipairs(cat.skins) do
local b = Instance.new('TextButton', body)
b.Text = ' ✦ ' .. skin
b.TextColor3 = Color3.fromRGB(220, 220, 225)
b.TextSize = 13
b.Font = Enum.Font.Gotham
b.AutoButtonColor = false
b.BackgroundColor3 = Color3.fromRGB(34, 34, 38)
b.Size = UDim2.new(1, -6, 0, 28)
Instance.new('UICorner', b).CornerRadius = UDim.new(0, 6)
b.MouseButton1Click:Connect(function()
if not cat.skinFolder then
return
end
local path = cat.skinFolder:FindFirstChild(skin)
if path then
local key = (cat.name == 'Butterfly Knife') and 'Butterfly'
or cat.name
if key then
lastSelectedSkinModel = path
lastSelectedName = cat.name .. ' - ' .. skin
Sel.Text = 'Selected: ' .. lastSelectedName
end
if cat.modelPath then
ChangeKnifeModel(cat.modelPath)
end
else
Sel.Text = 'Selected (missing): ' .. cat.name .. ' - ' .. skin
end
end)
end
head.MouseButton1Click:Connect(function()
local open = not body.Visible
arrow.Text = open and '▼' or '▶'
body.Visible = true
local tgt = open and math.min(#cat.skins * 30 + 8, 260) or 0
TS
:Create(
body,
TweenInfo.new(0.16),
{ Size = UDim2.new(1, -10, 0, tgt) }
)
:Play()
container.Size = UDim2.new(1, -10, 0, open and (38 + tgt + 6) or 38)
if not open then
task.delay(0.16, function()
body.Visible = false
end)
end
task.defer(function()
Cat.CanvasSize = UDim2.new(0, 0, 0, CL.AbsoluteContentSize.Y + 8)
end)
end)
end
for _, c in ipairs(KnifeCats) do
Accordion(c)
end
Apply.MouseButton1Click:Connect(function()
local vm = Cam:FindFirstChildOfClass('Model')
if vm and lastSelectedSkinModel then
ApplySkin(lastSelectedSkinModel, vm)
end
end)
-- Aim tab
local AimCard = Card('Aim', PageAim)
local AimBody = Instance.new('Frame', AimCard)
AimBody.BackgroundTransparency = 1
AimBody.Size = UDim2.new(1, -16, 1, -40)
AimBody.Position = UDim2.new(0, 8, 0, 32)
local AL = Instance.new('UIListLayout', AimBody)
AL.Padding = UDim.new(0, 10)
local function Row(p, t)
local r = Instance.new('Frame', p)
r.Size = UDim2.new(1, 0, 0, 36)
r.BackgroundColor3 = Color3.fromRGB(26, 26, 28)
Instance.new('UICorner', r).CornerRadius = UDim.new(0, 6)
Instance.new('UIStroke', r).Transparency = 0.5
local l = Instance.new('TextLabel', r)
l.BackgroundTransparency = 1
l.Text = t
l.Size = UDim2.new(0.5, -10, 1, 0)
l.Position = UDim2.new(0, 10, 0, 0)
l.Font = Enum.Font.Gotham
l.TextSize = 14
l.TextColor3 = Color3.fromRGB(230, 230, 230)
l.TextXAlignment = Enum.TextXAlignment.Left
return r
end
local function Toggle(p, i)
local b = Instance.new('TextButton', p)
b.Size = UDim2.new(0, 50, 0, 28)
b.Position = UDim2.new(1, -60, 0.5, -14)
b.AutoButtonColor = false
b.Text = i and 'ON' or 'OFF'
b.Font = Enum.Font.GothamSemibold
b.TextSize = 13
b.TextColor3 = Color3.fromRGB(15, 15, 16)
b.BackgroundColor3 = i and Color3.fromRGB(70, 180, 110)
or Color3.fromRGB(46, 46, 50)
Instance.new('UICorner', b).CornerRadius = UDim.new(0, 6)
Instance.new('UIStroke', b).Transparency = 0.4
local function set(v)
b.Text = v and 'ON' or 'OFF'
b.BackgroundColor3 = v and Color3.fromRGB(70, 180, 110)
or Color3.fromRGB(46, 46, 50)
end
return b, set
end
local function Slider(p, minV, maxV, initV, w)
local h = Instance.new('Frame', p)
h.Size = UDim2.new(0, w or 220, 0, 28)
h.Position = UDim2.new(1, -(w or 220) - 72, 0.5, -14)
h.BackgroundTransparency = 1
local bar = Instance.new('Frame', h)
bar.Size = UDim2.new(1, 0, 0, 6)
bar.Position = UDim2.new(0, 0, 0.5, -3)
bar.BackgroundColor3 = Color3.fromRGB(38, 38, 42)
Instance.new('UICorner', bar).CornerRadius = UDim.new(0, 3)
Instance.new('UIStroke', bar).Transparency = 0.4
local fill = Instance.new('Frame', bar)
fill.BackgroundColor3 = Color3.fromRGB(210, 210, 215)
fill.Size = UDim2.new(0, 0, 1, 0)
Instance.new('UICorner', fill).CornerRadius = UDim.new(0, 3)
local knob = Instance.new('Frame', h)
knob.Size = UDim2.new(0, 12, 0, 12)
knob.Position = UDim2.new(0, 0, 0.5, -6)
knob.BackgroundColor3 = Color3.fromRGB(235, 235, 240)
Instance.new('UICorner', knob).CornerRadius = UDim.new(1, 0)
local v = math.clamp(initV, minV, maxV)
local function vis(x)
local t = (x - minV) / (maxV - minV)
fill.Size = UDim2.new(t, 0, 1, 0)
knob.Position = UDim2.new(t, -6, 0.5, -6)
end
vis(v)
local cb
local drag = false
local function upd(px)
local rel = math.clamp(
(px - bar.AbsolutePosition.X) / math.max(1, bar.AbsoluteSize.X),
0,
1
)
v = minV + rel * (maxV - minV)
vis(v)
if cb then
cb(v)
end
end
bar.InputBegan:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then
drag = true
upd(i.Position.X)
end
end)
knob.InputBegan:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then
drag = true
end
end)
UIS.InputChanged:Connect(function(i)
if drag and i.UserInputType == Enum.UserInputType.MouseMovement then
upd(i.Position.X)
end
end)
UIS.InputEnded:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then
drag = false
end
end)
return h,
function(x)
v = math.clamp(x, minV, maxV)
vis(v)
end,
function(f)
cb = f
end
end
-- Aim Assist
local aimEnabled = false
local aimBind = Enum.KeyCode.Q
local capturingAim = false
local aimHeld = false
local aimFov = 45
local drawFOV = false
local targetHead = nil
local aimWallcheck = true
local rAim = Row(AimBody, 'Aim Assist')
local tAim, setAim = Toggle(rAim, aimEnabled)
local bBind = Instance.new('TextButton', rAim)
bBind.Size = UDim2.new(0, 120, 0, 28)
bBind.Position = UDim2.new(1, -180, 0.5, -14)
bBind.AutoButtonColor = false
bBind.BackgroundColor3 = Color3.fromRGB(210, 210, 215)
bBind.TextColor3 = Color3.fromRGB(20, 20, 20)
bBind.Text = aimBind.Name
bBind.Font = Enum.Font.GothamSemibold
bBind.TextSize = 13
Instance.new('UICorner', bBind).CornerRadius = UDim.new(0, 6)
tAim.MouseButton1Click:Connect(function()
aimEnabled = not aimEnabled
setAim(aimEnabled)
end)
bBind.MouseButton1Click:Connect(function()
if capturingAim then
return
end
capturingAim = true
bBind.Text = 'Press key… (ESC)'
bBind.BackgroundColor3 = Color3.fromRGB(235, 235, 240)
end)
local rFOV = Row(AimBody, 'FOV (deg)')
local fLbl = Instance.new('TextLabel', rFOV)
fLbl.BackgroundTransparency = 1
fLbl.Size = UDim2.new(0, 44, 1, 0)
fLbl.Position = UDim2.new(1, -44, 0, 0)
fLbl.Font = Enum.Font.Gotham
fLbl.TextSize = 13
fLbl.TextColor3 = Color3.fromRGB(200, 200, 205)
fLbl.Text = tostring(aimFov)
local _, _, onF = Slider(rFOV, 1, 180, aimFov, 220)
onF(function(v)
aimFov = math.floor(v + 0.5)
fLbl.Text = tostring(aimFov)
end)
local rDF = Row(AimBody, 'Draw FOV')
local tDF, setDF = Toggle(rDF, drawFOV)
local rWC = Row(AimBody, 'Wallcheck')
local tWC, setWC = Toggle(rWC, aimWallcheck)
tWC.MouseButton1Click:Connect(function()
aimWallcheck = not aimWallcheck
setWC(aimWallcheck)
end)
-- Triggerbot section (separate)
local triggerEnabled = false
local triggerDelay = 0.05
local rTB = Row(AimBody, 'Triggerbot')
local tTB, setTB = Toggle(rTB, triggerEnabled)
tTB.MouseButton1Click:Connect(function()
triggerEnabled = not triggerEnabled
setTB(triggerEnabled)
end)
local rTBD = Row(AimBody, 'TB Delay (s)')
local tbLab = Instance.new('TextLabel', rTBD)
tbLab.BackgroundTransparency = 1
tbLab.Size = UDim2.new(0, 60, 1, 0)
tbLab.Position = UDim2.new(1, -60, 0, 0)
tbLab.Font = Enum.Font.Gotham
tbLab.TextSize = 13
tbLab.TextColor3 = Color3.fromRGB(200, 200, 205)
tbLab.Text = string.format('%.2f', triggerDelay)
local _, _, onTBD = Slider(rTBD, 0, 0.5, triggerDelay, 220)
onTBD(function(v)
triggerDelay = math.max(0, math.min(0.5, v))
tbLab.Text = string.format('%.2f', triggerDelay)
end)
-- FOV circle helpers
local function FOVCircle()
if _G.__FOV and _G.__FOV.Parent then
return _G.__FOV
end
local root = Instance.new('Frame', SG)
root.Name = 'FOV'
root.AnchorPoint = Vector2.new(0.5, 0.5)
root.Position = UDim2.new(0.5, 0, 0.5, 0)
root.BackgroundTransparency = 1
root.Visible = false
root.ZIndex = 100000
local c = Instance.new('Frame', root)
c.BackgroundTransparency = 1
c.Size = UDim2.new(1, 0, 1, 0)
Instance.new('UICorner', c).CornerRadius = UDim.new(1, 0)
local s = Instance.new('UIStroke', c)
s.Thickness = 1
s.Color = Color3.fromRGB(120, 180, 255)
s.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
_G.__FOV = root
return root
end
local function GetFovRadiusPx()
local vp = Cam.ViewportSize
local r = (
math.tan(math.rad(aimFov / 2)) / math.tan(math.rad(Cam.FieldOfView / 2))
) * (vp.Y * 0.5)
return math.clamp(r, 2, math.min(vp.X, vp.Y) * 0.5 - 2)
end
local function UpdateFOV()
if not drawFOV then
if _G.__FOV then
_G.__FOV.Visible = false
end
return
end
local g = FOVCircle()
local r = GetFovRadiusPx()
g.Size = UDim2.fromOffset(math.floor(r * 2 + 0.5), math.floor(r * 2 + 0.5))
g.Visible = true
end
tDF.MouseButton1Click:Connect(function()
drawFOV = not drawFOV
setDF(drawFOV)
UpdateFOV()
end)
SG:GetPropertyChangedSignal('AbsoluteSize'):Connect(UpdateFOV)
Cam:GetPropertyChangedSignal('FieldOfView'):Connect(UpdateFOV)
-- Settings
local SetCard = Card('Settings', PageSet)
local SetBody = Instance.new('Frame', SetCard)
SetBody.BackgroundTransparency = 1
SetBody.Size = UDim2.new(1, -16, 1, -40)
SetBody.Position = UDim2.new(0, 8, 0, 32)
local SL = Instance.new('UIListLayout', SetBody)
SL.Padding = UDim.new(0, 10)
local function SRow(t)
local r = Instance.new('Frame', SetBody)
r.Size = UDim2.new(1, 0, 0, 36)
r.BackgroundColor3 = Color3.fromRGB(26, 26, 28)
Instance.new('UICorner', r).CornerRadius = UDim.new(0, 6)
Instance.new('UIStroke', r).Transparency = 0.5
local l = Instance.new('TextLabel', r)
l.BackgroundTransparency = 1
l.Text = t
l.Size = UDim2.new(0.5, -10, 1, 0)
l.Position = UDim2.new(0, 10, 0, 0)
l.Font = Enum.Font.Gotham
l.TextSize = 14
l.TextColor3 = Color3.fromRGB(230, 230, 230)
l.TextXAlignment = Enum.TextXAlignment.Left
return r
end
local menuKey = Enum.KeyCode.F8
local menuEnabled = true
local capturingMenu = false
local menuDeb = false
local rME = SRow('Enable Menu Key')
local tME, setME = Toggle(rME, menuEnabled)
tME.MouseButton1Click:Connect(function()
menuEnabled = not menuEnabled
setME(menuEnabled)
end)
local rMB = SRow('Menu Bind')
local bMB = Instance.new('TextButton', rMB)
bMB.Size = UDim2.new(0, 120, 0, 28)
bMB.Position = UDim2.new(1, -130, 0.5, -14)
bMB.AutoButtonColor = false
bMB.Text = menuKey.Name
bMB.BackgroundColor3 = Color3.fromRGB(210, 210, 215)
bMB.TextColor3 = Color3.fromRGB(20, 20, 20)
bMB.Font = Enum.Font.GothamSemibold
bMB.TextSize = 13
Instance.new('UICorner', bMB).CornerRadius = UDim.new(0, 6)
bMB.MouseButton1Click:Connect(function()
if capturingMenu then
return
end
capturingMenu = true
bMB.Text = 'Press key… (ESC)'
bMB.BackgroundColor3 = Color3.fromRGB(235, 235, 240)
end)
-- Visuals (scroll + color pickers)
local VisCard = Card('Visuals', PageVis)
local VisScroll = Instance.new('ScrollingFrame', VisCard)
VisScroll.BackgroundTransparency = 1
VisScroll.Size = UDim2.new(1, -16, 1, -40)
VisScroll.Position = UDim2.new(0, 8, 0, 32)
VisScroll.ScrollBarThickness = 6
local VL = Instance.new('UIListLayout', VisScroll)
VL.Padding = UDim.new(0, 10)
local function RecalcCanvas()
VisScroll.CanvasSize = UDim2.new(0, 0, 0, VL.AbsoluteContentSize.Y + 8)
end
VL:GetPropertyChangedSignal('AbsoluteContentSize'):Connect(RecalcCanvas)
local function VRow(t)
local r = Instance.new('Frame', VisScroll)
r.Size = UDim2.new(1, 0, 0, 36)
r.BackgroundColor3 = Color3.fromRGB(26, 26, 28)
Instance.new('UICorner', r).CornerRadius = UDim.new(0, 6)
Instance.new('UIStroke', r).Transparency = 0.5
local l = Instance.new('TextLabel', r)
l.BackgroundTransparency = 1
l.Text = t
l.Size = UDim2.new(0.5, -10, 1, 0)
l.Position = UDim2.new(0, 10, 0, 0)
l.Font = Enum.Font.Gotham
l.TextSize = 14
l.TextColor3 = Color3.fromRGB(230, 230, 230)
l.TextXAlignment = Enum.TextXAlignment.Left
return r
end
local function HSVtoRGB(h, s, v)
local i = math.floor(h * 6) % 6
local f = h * 6 - i
local p = v * (1 - s)
local q = v * (1 - f * s)
local t = v * (1 - (1 - f) * s)
if i == 0 then
return Color3.new(v, t, p)
elseif i == 1 then
return Color3.new(q, v, p)
elseif i == 2 then
return Color3.new(p, v, t)
elseif i == 3 then
return Color3.new(p, q, v)
elseif i == 4 then
return Color3.new(t, p, v)
else
return Color3.new(v, p, q)
end
end
local function RGBtoHSV(c)
local r, g, b = c.R, c.G, c.B
local maxv = math.max(r, g, b)
local minv = math.min(r, g, b)
local d = maxv - minv
local h = 0
local s = (maxv == 0) and 0 or d / maxv
if d ~= 0 then
if maxv == r then
h = (g - b) / d + (g < b and 6 or 0)
elseif maxv == g then
h = (b - r) / d + 2
else
h = (r - g) / d + 4
end
h = h / 6
end
return h, s, maxv
end
local function CollapsiblePicker(title, initialColor, initialAlpha, onChanged)
local header = VRow(title)
local preview = Instance.new('TextButton', header)
preview.AutoButtonColor = false
preview.Text = ''
preview.Size = UDim2.new(0, 30, 0, 22)
preview.Position = UDim2.new(1, -40, 0.5, -11)
preview.BackgroundColor3 = initialColor
preview.BorderSizePixel = 1
preview.BorderColor3 = Color3.fromRGB(60, 60, 64)
Instance.new('UICorner', preview).CornerRadius = UDim.new(0, 4)
local expand = Instance.new('TextLabel', header)
expand.BackgroundTransparency = 1
expand.Text = '▶'
expand.Size = UDim2.new(0, 18, 0, 18)
expand.Position = UDim2.new(1, -76, 0.5, -9)
expand.TextColor3 = Color3.fromRGB(200, 200, 205)
expand.Font = Enum.Font.GothamBold
expand.TextSize = 14
local body = Instance.new('Frame', VisScroll)
body.Size = UDim2.new(1, 0, 0, 0)
body.BackgroundColor3 = Color3.fromRGB(26, 26, 28)
body.ClipsDescendants = true
Instance.new('UICorner', body).CornerRadius = UDim.new(0, 6)
Instance.new('UIStroke', body).Transparency = 0.5
local sv = Instance.new('Frame', body)
sv.Size = UDim2.new(0, 140, 0, 140)
sv.Position = UDim2.new(0, 12, 0, 12)
sv.BorderSizePixel = 1
sv.BorderColor3 = Color3.fromRGB(40, 40, 44)
local hueBase = Instance.new('Frame', sv)
hueBase.Size = UDim2.new(1, 0, 1, 0)
hueBase.BackgroundColor3 = initialColor
local gW = Instance.new('UIGradient', hueBase)
gW.Color = ColorSequence.new(Color3.new(1, 1, 1), Color3.new(1, 1, 1))
gW.Transparency = NumberSequence.new({
NumberSequenceKeypoint.new(0, 0),
NumberSequenceKeypoint.new(1, 1),
})
local gB = Instance.new('UIGradient', hueBase)
gB.Rotation = 90
gB.Color = ColorSequence.new(Color3.new(0, 0, 0), Color3.new(0, 0, 0))
gB.Transparency = NumberSequence.new({
NumberSequenceKeypoint.new(0, 1),
NumberSequenceKeypoint.new(1, 0),
})
local svCur = Instance.new('Frame', sv)
svCur.Size = UDim2.fromOffset(6, 6)
svCur.AnchorPoint = Vector2.new(0.5, 0.5)
svCur.BackgroundColor3 = Color3.new(1, 1, 1)
svCur.BorderSizePixel = 0
local hue = Instance.new('Frame', body)
hue.Size = UDim2.new(0, 18, 0, 140)
hue.Position = UDim2.new(0, 160, 0, 12)
hue.BorderSizePixel = 1
hue.BorderColor3 = Color3.fromRGB(40, 40, 44)
local hueG = Instance.new('UIGradient', hue)
hueG.Rotation = 90
hueG.Color = ColorSequence.new({
ColorSequenceKeypoint.new(0 / 6, Color3.fromRGB(255, 0, 0)),
ColorSequenceKeypoint.new(1 / 6, Color3.fromRGB(255, 255, 0)),
ColorSequenceKeypoint.new(2 / 6, Color3.fromRGB(0, 255, 0)),
ColorSequenceKeypoint.new(3 / 6, Color3.fromRGB(0, 255, 255)),
ColorSequenceKeypoint.new(4 / 6, Color3.fromRGB(0, 0, 255)),
ColorSequenceKeypoint.new(5 / 6, Color3.fromRGB(255, 0, 255)),
ColorSequenceKeypoint.new(6 / 6, Color3.fromRGB(255, 0, 0)),
})
local hueCur = Instance.new('Frame', hue)
hueCur.Size = UDim2.new(1, 0, 0, 2)
hueCur.BackgroundColor3 = Color3.new(1, 1, 1)
hueCur.BorderSizePixel = 0
local aBar = Instance.new('Frame', body)
aBar.Size = UDim2.new(0, 206, 0, 14)
aBar.Position = UDim2.new(0, 12, 0, 160)
aBar.BorderSizePixel = 1
aBar.BorderColor3 = Color3.fromRGB(40, 40, 44)
local aGrad = Instance.new('UIGradient', aBar)
aGrad.Rotation = 0
local aCur = Instance.new('Frame', aBar)
aCur.Size = UDim2.new(0, 2, 1, 0)
aCur.BackgroundColor3 = Color3.new(1, 1, 1)
aCur.BorderSizePixel = 0
local h, s, v = RGBtoHSV(initialColor)
local a = math.clamp(initialAlpha or 1, 0, 1)
local function updAG()
local col = HSVtoRGB(h, s, v)
aGrad.Color = ColorSequence.new(col, col)
aGrad.Transparency = NumberSequence.new({
NumberSequenceKeypoint.new(0, 1),
NumberSequenceKeypoint.new(1, 0),
})
end
local function apply()
local col = HSVtoRGB(h, s, v)
hueBase.BackgroundColor3 = HSVtoRGB(h, 1, 1)
preview.BackgroundColor3 = col
if sv.AbsoluteSize.X > 0 then
svCur.Position = UDim2.new(s, 0, 1 - v, 0)
end
if hue.AbsoluteSize.Y > 0 then
hueCur.Position = UDim2.new(0, 0, 1 - h, 0)
end
if aBar.AbsoluteSize.X > 0 then
aCur.Position = UDim2.new(a, 0, 0, 0)
end
updAG()
if onChanged then
onChanged(col, a)
end
end
apply()
local dragSV = false
sv.InputBegan:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then
dragSV = true
end
end)
UIS.InputEnded:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then
dragSV = false
end
end)
UIS.InputChanged:Connect(function(i)
if dragSV and i.UserInputType == Enum.UserInputType.MouseMovement then
local x = math.clamp(
(i.Position.X - sv.AbsolutePosition.X)
/ math.max(1, sv.AbsoluteSize.X),
0,
1
)
local y = math.clamp(
(i.Position.Y - sv.AbsolutePosition.Y)
/ math.max(1, sv.AbsoluteSize.Y),
0,
1
)
s = x
v = 1 - y
apply()
end
end)
local dragH = false
hue.InputBegan:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then
dragH = true
end
end)
UIS.InputChanged:Connect(function(i)
if dragH and i.UserInputType == Enum.UserInputType.MouseMovement then
local y = math.clamp(
(i.Position.Y - hue.AbsolutePosition.Y)
/ math.max(1, hue.AbsoluteSize.Y),
0,
1
)
h = 1 - y
apply()
end
end)
UIS.InputEnded:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then
dragH = false
end
end)
local dragA = false
aBar.InputBegan:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then
dragA = true
end
end)
UIS.InputChanged:Connect(function(i)
if dragA and i.UserInputType == Enum.UserInputType.MouseMovement then
local x = math.clamp(
(i.Position.X - aBar.AbsolutePosition.X)
/ math.max(1, aBar.AbsoluteSize.X),
0,
1
)
a = x
apply()
end
end)
UIS.InputEnded:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then
dragA = false
end
end)
local open = false
local function ToggleBody()
open = not open
expand.Text = open and '▼' or '▶'
local t = open and 186 or 0
TS:Create(body, TweenInfo.new(0.16), { Size = UDim2.new(1, 0, 0, t) })
:Play()
task.delay(0.17, RecalcCanvas)
end
preview.MouseButton1Click:Connect(ToggleBody)
expand.InputBegan:Connect(function(i)
if i.UserInputType == Enum.UserInputType.MouseButton1 then
ToggleBody()
end
end)
return {
set = function(c, aa)
local hh, ss, vv = RGBtoHSV(c)
h, s, v = hh, ss, vv
a = math.clamp(aa or 1, 0, 1)
apply()
end,
}
end
-- ESP config + controls
local ESP = {
enabled = true,
teamCheck = true,
maxDist = 1500,
boxes = true,
boxColor = Color3.fromRGB(0, 255, 120),
boxAlpha = 1,
boxThick = 1,
tracers = true,
tracerColor = Color3.fromRGB(255, 255, 255),
tracerAlpha = 1,
tracerThick = 1,
names = true,
nameColor = Color3.fromRGB(255, 255, 255),
nameAlpha = 1,
health = true,
}
do
local r = VRow('Enable ESP')
local t, set = Toggle(r, ESP.enabled)
t.MouseButton1Click:Connect(function()
ESP.enabled = not ESP.enabled
set(ESP.enabled)
end)
end
do
local r = VRow('Team Check')
local t, set = Toggle(r, ESP.teamCheck)
t.MouseButton1Click:Connect(function()
ESP.teamCheck = not ESP.teamCheck
set(ESP.teamCheck)
end)
end
do
local r = VRow('Max Distance')
local lab = Instance.new('TextLabel', r)
lab.BackgroundTransparency = 1
lab.Size = UDim2.new(0, 60, 1, 0)
lab.Position = UDim2.new(1, -60, 0, 0)
lab.Font = Enum.Font.Gotham
lab.TextSize = 13
lab.TextColor3 = Color3.fromRGB(200, 200, 205)
lab.Text = tostring(ESP.maxDist)
local _, _, onS = Slider(r, 100, 5000, ESP.maxDist, 260)
onS(function(v)
ESP.maxDist = math.floor(v + 0.5)
lab.Text = tostring(ESP.maxDist)
end)
end
do
local r = VRow('Boxes')
local t, setT = Toggle(r, ESP.boxes)
t.Position = UDim2.new(1, -60, 0.5, -14)
t.MouseButton1Click:Connect(function()
ESP.boxes = not ESP.boxes
setT(ESP.boxes)
end)
local sl, _, on = Slider(r, 1, 3, ESP.boxThick, 120)
sl.Position = UDim2.new(1, -60 - 12 - 120, 0.5, -14)
on(function(v)
ESP.boxThick = math.floor(v + 0.5)
end)
CollapsiblePicker('Box Color', ESP.boxColor, ESP.boxAlpha, function(c, a)
ESP.boxColor = c
ESP.boxAlpha = a
end)
end
do
local r = VRow('Tracers')
local t, setT = Toggle(r, ESP.tracers)
t.Position = UDim2.new(1, -60, 0.5, -14)
t.MouseButton1Click:Connect(function()
ESP.tracers = not ESP.tracers
setT(ESP.tracers)
end)
local sl, _, on = Slider(r, 1, 3, ESP.tracerThick, 120)
sl.Position = UDim2.new(1, -60 - 12 - 120, 0.5, -14)
on(function(v)
ESP.tracerThick = math.floor(v + 0.5)
end)
CollapsiblePicker(
'Tracer Color',
ESP.tracerColor,
ESP.tracerAlpha,
function(c, a)
ESP.tracerColor = c
ESP.tracerAlpha = a
end
)
end
do
local r = VRow('Names')
local t, setT = Toggle(r, ESP.names)
t.Position = UDim2.new(1, -60, 0.5, -14)
t.MouseButton1Click:Connect(function()
ESP.names = not ESP.names
setT(ESP.names)
end)
CollapsiblePicker('Name Color', ESP.nameColor, ESP.nameAlpha, function(c, a)
ESP.nameColor = c
ESP.nameAlpha = a
end)
end
do
local r = VRow('Health Bar')
local t, setT = Toggle(r, ESP.health)
t.MouseButton1Click:Connect(function()
ESP.health = not ESP.health
setT(ESP.health)
end)
end
task.defer(RecalcCanvas)
-- Auto-apply on viewmodel
pcall(function()
if Rep:FindFirstChild('Models') then
ChangeKnifeModel(Rep.Models:FindFirstChild('v_Butterfly'))
end
end)
Cam.ChildAdded:Connect(function(m)
if not m:IsA('Model') then
return
end
local g = IdentifyGun(m.Name)
if not g then
return
end
local Sk = ({
['AWP'] = Inv['AWP'],
['Karambit'] = Inv['Karambit'],
['Butterfly'] = Inv['Butterfly'],
['Bayonet'] = Inv['Bayonet'],
['M9 Bayonet'] = Inv['M9 Bayonet'],
['Bowie'] = Inv['Bowie'],
['Combat Knife'] = Inv['Combat Knife'],
['AK-47'] = Inv['AK-47'],
})[g]
if not Sk or not Sk.Skins then
return
end
if m:GetAttribute('mapped') then
return
end
m:SetAttribute('mapped', true)
ApplySkin(Sk.Skins, m)
end)
-- Input handling
UIS.InputBegan:Connect(function(i, gp)
if capturingMenu then
if gp then
return
end
if i.KeyCode == Enum.KeyCode.Escape then
capturingMenu = false
bMB.Text = menuKey.Name
bMB.BackgroundColor3 = Color3.fromRGB(210, 210, 215)
return
end
if
i.UserInputType == Enum.UserInputType.Keyboard
and i.KeyCode ~= Enum.KeyCode.Unknown
then
menuKey = i.KeyCode
capturingMenu = false
bMB.Text = menuKey.Name
bMB.BackgroundColor3 = Color3.fromRGB(210, 210, 215)
end
return
end
if capturingAim then
if gp then
return
end
if i.KeyCode == Enum.KeyCode.Escape then
capturingAim = false
bBind.Text = aimBind.Name
bBind.BackgroundColor3 = Color3.fromRGB(210, 210, 215)
return
end
if
i.UserInputType == Enum.UserInputType.Keyboard
and i.KeyCode ~= Enum.KeyCode.Unknown
then
aimBind = i.KeyCode
capturingAim = false
bBind.Text = aimBind.Name
bBind.BackgroundColor3 = Color3.fromRGB(210, 210, 215)
end
return
end
if gp or UIS:GetFocusedTextBox() then
return
end
if
menuEnabled
and i.UserInputType == Enum.UserInputType.Keyboard
and i.KeyCode == menuKey
then
if menuDeb then
return
end
menuDeb = true
Win.Visible = not Win.Visible
UpdateCursorForMenu()
task.delay(0.15, function()
menuDeb = false
end)
return
end
if
i.UserInputType == Enum.UserInputType.Keyboard
and i.KeyCode == aimBind
then
aimHeld = true
end
end)
UIS.InputEnded:Connect(function(i)
if
i.UserInputType == Enum.UserInputType.Keyboard
and i.KeyCode == aimBind
then
aimHeld = false
targetHead = nil
end
end)
-- Aimbot helpers
local function GetFovRadiusPxA()
local vp = Cam.ViewportSize
return (
math.tan(math.rad(aimFov / 2)) / math.tan(math.rad(Cam.FieldOfView / 2))
) * (vp.Y * 0.5)
end
local function GetBestTarget2D()
local vp = Cam.ViewportSize
local center = Vector2.new(vp.X / 2, vp.Y / 2)
local radius =
math.clamp(GetFovRadiusPxA(), 2, math.min(vp.X, vp.Y) * 0.5 - 2)
local best, bestScore = nil, math.huge
for _, pl in ipairs(Players:GetPlayers()) do
if pl ~= LP then
if
not (ESP.teamCheck and LP.Team ~= nil and pl.Team == LP.Team)
then
local ch = pl.Character
local head = ch and ch:FindFirstChild('Head')
local hum = ch and ch:FindFirstChildOfClass('Humanoid')
if head and hum and hum.Health > 0 then
local v3, on = Cam:WorldToViewportPoint(
head.Position + Vector3.new(0, 0.1, 0)
)
if on and v3.Z > 0 then
local pos2 = Vector2.new(v3.X, v3.Y)
local d = (pos2 - center).Magnitude
if d <= radius then
local score = d + (v3.Z * 0.01)
if score < bestScore then
best = head
bestScore = score
end
end
end
end
end
end
end
return best
end
local function Visible(head)
local origin = Cam.CFrame.Position
local dir = (head.Position - origin)
local params = RaycastParams.new()
params.FilterType = Enum.RaycastFilterType.Exclude
params.FilterDescendantsInstances = { LP.Character }
local r = workspace:Raycast(origin, dir, params)
if not r then
return true
end
return (
r.Instance
and (r.Instance:IsDescendantOf(head.Parent) or r.Instance == head)
)
end
-- Triggerbot helpers
local mouse = LP:GetMouse()
local tbDebounce = false
local function FireClick()
local loc = UIS:GetMouseLocation()
VIM:SendMouseButtonEvent(loc.X, loc.Y, 0, true, game, false)
task.wait(0.03)
VIM:SendMouseButtonEvent(loc.X, loc.Y, 0, false, game, false)
end
local function OwningPlayerFromPart(part)
if not part or not part:IsA('BasePart') then
return nil
end
local model = part:FindFirstAncestorOfClass('Model')
if not model then
return nil
end
local hum = model:FindFirstChildOfClass('Humanoid')
if not hum then
return nil
end
local pl = Players:GetPlayerFromCharacter(model)
if not pl or pl == LP then
return nil
end
if hum.Health <= 0 then
return nil
end
return pl
end
-- ESP drawing nodes
local DrawFolder = Instance.new('Folder', SG)
DrawFolder.Name = 'ESP'
local Nodes = {}
local function NewNodes(pl)
local g = {}
local box = Instance.new('Frame', DrawFolder)
box.BackgroundTransparency = 1
box.Visible = false
box.ZIndex = 5000
local stroke = Instance.new('UIStroke', box)
stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
local tracer = Instance.new('Frame', DrawFolder)
tracer.BorderSizePixel = 0
tracer.Visible = false
tracer.ZIndex = 4999
local name = Instance.new('TextLabel', DrawFolder)
name.BackgroundTransparency = 1
name.Visible = false
name.ZIndex = 5001
name.Font = Enum.Font.GothamSemibold
name.TextSize = 13
local hbg = Instance.new('Frame', DrawFolder)
hbg.BorderSizePixel = 0
hbg.Visible = false
hbg.ZIndex = 5000
hbg.BackgroundColor3 = Color3.fromRGB(24, 24, 24)
local hf = Instance.new('Frame', hbg)
hf.BorderSizePixel = 0
hf.ZIndex = 5001
g.Box = box
g.Stroke = stroke
g.Tracer = tracer
g.Name = name
g.HBG = hbg
g.HF = hf
Nodes[pl] = g
end
local function DelNodes(pl)
local g = Nodes[pl]
if not g then
return
end
for _, o in pairs(g) do
if typeof(o) == 'Instance' then
o:Destroy()
end
end
Nodes[pl] = nil
end
for _, pl in ipairs(Players:GetPlayers()) do
if pl ~= LP then
NewNodes(pl)
end
end
Players.PlayerAdded:Connect(function(pl)
if pl ~= LP then
NewNodes(pl)
end
end)
Players.PlayerRemoving:Connect(DelNodes)
local function Line(f, a, b, th, col, alpha)
local dx, dy = b.X - a.X, b.Y - a.Y
local len = math.sqrt(dx * dx + dy * dy)
f.Size =
UDim2.fromOffset(math.max(1, th), math.max(1, math.floor(len + 0.5)))
f.Position = UDim2.fromOffset(math.floor(a.X + 0.5), math.floor(a.Y + 0.5))
f.Rotation = math.deg(math.atan2(dy, dx)) + 90
f.BackgroundColor3 = col
f.BackgroundTransparency = 1 - alpha
end
-- Render loop
RS.RenderStepped:Connect(function()
-- aimbot
if aimEnabled and aimHeld then
local best = GetBestTarget2D()
if best and (not aimWallcheck or Visible(best)) then
local pos = Cam.CFrame.Position
Cam.CFrame = CFrame.new(pos, best.Position)
targetHead = best
else
targetHead = nil
end
end
-- triggerbot (players only, disabled on menu)
if triggerEnabled and not Win.Visible and not tbDebounce then
local part = mouse.Target
local pl = OwningPlayerFromPart(part)
if pl then
tbDebounce = true
task.spawn(function()
if triggerDelay > 0 then
task.wait(triggerDelay)
end
if triggerEnabled and not Win.Visible then
FireClick()
end
task.wait(0.06)
tbDebounce = false
end)
end
end
-- FOV circle
if drawFOV then
UpdateFOV()
end
-- ESP
if not ESP.enabled then
for _, g in pairs(Nodes) do
g.Box.Visible = false
g.Tracer.Visible = false
g.Name.Visible = false
g.HBG.Visible = false
end
return
end
for _, g in pairs(Nodes) do
g.Stroke.Thickness = ESP.boxThick
g.Stroke.Color = ESP.boxColor
g.Stroke.Transparency = 1 - ESP.boxAlpha
end
local vp = Cam.ViewportSize
local base =
Vector2.new(math.floor(vp.X / 2 + 0.5), math.floor(vp.Y - 2 + 0.5))
for pl, g in pairs(Nodes) do
local ch = pl.Character
local hum = ch and ch:FindFirstChildOfClass('Humanoid')
if not ch or not hum or hum.Health <= 0 then
g.Box.Visible = false
g.Tracer.Visible = false
g.Name.Visible = false
g.HBG.Visible = false
continue
end
if ESP.teamCheck and LP.Team ~= nil and pl.Team == LP.Team then
g.Box.Visible = false
g.Tracer.Visible = false
g.Name.Visible = false
g.HBG.Visible = false
continue
end
local head = ch:FindFirstChild('Head')
local hrp = ch:FindFirstChild('HumanoidRootPart')
if not head or not hrp then
g.Box.Visible = false
g.Tracer.Visible = false
g.Name.Visible = false
g.HBG.Visible = false
continue
end
local dist = (Cam.CFrame.Position - hrp.Position).Magnitude
if dist > ESP.maxDist then
g.Box.Visible = false
g.Tracer.Visible = false
g.Name.Visible = false
g.HBG.Visible = false
continue
end
local sHead, onH = Cam:WorldToViewportPoint(head.Position)
local sRoot, onR = Cam:WorldToViewportPoint(hrp.Position)
if not (onH and onR) then
g.Box.Visible = false
g.Tracer.Visible = false
g.Name.Visible = false
g.HBG.Visible = false
continue
end
local rawH = math.abs(sRoot.Y - sHead.Y)
local h = math.max(12, rawH * 1.8)
local w = h / 2.2
local cx = sRoot.X
local top = sHead.Y - h * 0.2
local x = math.floor(cx - w / 2 + 0.5)
local y = math.floor(top + 0.5)
w = math.floor(w + 0.5)
h = math.floor(h + 0.5)
if ESP.boxes then
g.Box.Position = UDim2.fromOffset(x, y)
g.Box.Size = UDim2.fromOffset(w, h)
g.Box.Visible = true
else
g.Box.Visible = false
end
if ESP.tracers then
local feet =
Vector2.new(math.floor(cx + 0.5), math.floor(y + h + 0.5))
Line(
g.Tracer,
base,
feet,
ESP.tracerThick,
ESP.tracerColor,
ESP.tracerAlpha
)
g.Tracer.Visible = true
else
g.Tracer.Visible = false
end
if ESP.names then
g.Name.Text = pl.Name
g.Name.TextColor3 = ESP.nameColor
g.Name.TextTransparency = 1 - ESP.nameAlpha
g.Name.Position = UDim2.fromOffset(x, y - 14)
g.Name.Size = UDim2.fromOffset(w, 14)
g.Name.Visible = true
else
g.Name.Visible = false
end
if ESP.health then
g.HBG.Position = UDim2.fromOffset(x - 5, y)
g.HBG.Size = UDim2.fromOffset(3, h)
g.HBG.Visible = true
local frac =
math.clamp(hum.Health / math.max(1, hum.MaxHealth), 0, 1)
g.HF.Size =
UDim2.fromOffset(3, math.max(1, math.floor(h * frac + 0.5)))
g.HF.Position =
UDim2.fromOffset(0, math.floor(h * (1 - frac) + 0.5))
g.HF.BackgroundColor3 =
Color3.fromRGB(255 - 200 * frac, 255 * frac, 60 * frac)
else
g.HBG.Visible = false
end
end
end)
Comments (0)
Please login to comment
Login with Discord
Loading comments...