local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UIS = game:GetService("UserInputService")
local RS = game:GetService("ReplicatedStorage")
local Workspace = game:GetService("Workspace")
local LP = Players.LocalPlayer
local cfg = {
esp = false, box = true, names = true, dist = true, head = true, chams = true, enemyOnly = true,
aim = false, aimHead = true, aimFov = 130, aimSmooth = 0.25, showFov = true, silentAim = false,
noSpread = false, noRecoil = false, noShake = false, noSway = false,
infAmmo = false, infReserve = false, noReload = false,
rapid = false, rapidRate = 0.05, fullAuto = false,
instantADS = false, infThrow = false,
}
local COL_ENEMY = Color3.fromRGB(255, 70, 70)
local COL_ALLY = Color3.fromRGB(90, 200, 120)
local aimActive = false
local SWAY_SPRINGS = {
"MoveLagSpring", "MovementLowerSpring", "GunStrafeRollSpring", "LookFlickSpring",
"LookPitchTiltSpring", "LandingSpring", "CrouchJerkPosSpring", "CrouchJerkRotSpring",
"BarrelSnapSpring", "AdsLookaroundSpring", "AimParallaxSpring",
}
local function cam() return Workspace.CurrentCamera end
local function w2s(p)
local c = cam(); if not c then return nil end
local v, on = c:WorldToViewportPoint(p)
return Vector2.new(v.X, v.Y), (on and v.Z > 0), v.Z
end
local function myTeam() return LP.Character and LP.Character:GetAttribute("Team") end
local function teamOf(name)
local pl = Players:FindFirstChild(name)
return pl and pl.Character and pl.Character:GetAttribute("Team")
end
local function targets(enemyOnly)
local mt, out = myTeam(), {}
local mp = Workspace:FindFirstChild("MercPlayers")
if not mp then return out end
for _, vis in ipairs(mp:GetChildren()) do
local owner = vis:GetAttribute("RigOwner")
if owner and owner ~= LP.Name and vis.Name:sub(1, 10) == "MercVisual"
and vis:GetAttribute("RigState") == "Alive" then
local team = teamOf(owner)
local enemy = (mt == nil) or (team ~= mt)
if (not enemyOnly) or enemy then
local hb = mp:FindFirstChild((vis.Name:gsub("^MercVisual", "MercHitboxes")))
if hb then
local head, parts = nil, {}
for _, d in ipairs(hb:GetDescendants()) do
if d:IsA("BasePart") then
parts[#parts + 1] = d
if d.Name == "Head" then head = d end
end
end
if #parts > 0 then
out[#out + 1] = { name = owner, hb = hb, visual = vis, head = head, parts = parts, enemy = enemy }
end
end
end
end
end
return out
end
local pool = {}
local function slot(i)
if pool[i] then return pool[i] end
local ok, s = pcall(function()
return { box = Drawing.new("Square"), name = Drawing.new("Text"), dist = Drawing.new("Text"), head = Drawing.new("Circle") }
end)
if not ok then return nil end
s.box.Thickness = 1; s.box.Filled = false; s.box.Transparency = 1
s.name.Size = 13; s.name.Center = true; s.name.Outline = true
s.dist.Size = 12; s.dist.Center = true; s.dist.Outline = true
s.head.Thickness = 1; s.head.Filled = false; s.head.NumSides = 14
for _, o in pairs(s) do o.Visible = false end
pool[i] = s
return s
end
local function hideFrom(n) for i = n, #pool do for _, o in pairs(pool[i]) do o.Visible = false end end end
local function hideAll() hideFrom(1) end
local chamsHolder
pcall(function()
chamsHolder = Instance.new("Folder"); chamsHolder.Name = "TTK_Chams"
chamsHolder.Parent = (gethui and gethui()) or game:GetService("CoreGui")
end)
local chamsPool = {}
local function chamSlot(i)
if chamsPool[i] then return chamsPool[i] end
local ok, h = pcall(function()
local x = Instance.new("Highlight")
x.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
x.FillTransparency = 0.55; x.OutlineTransparency = 0
x.Enabled = false; x.Parent = chamsHolder
return x
end)
if not ok then return nil end
chamsPool[i] = h; return h
end
local function hideChams(from) for i = from, #chamsPool do chamsPool[i].Enabled = false; chamsPool[i].Adornee = nil end end
RunService.RenderStepped:Connect(function()
if not cfg.esp then hideAll(); hideChams(1); return end
local list = targets(cfg.enemyOnly)
if cfg.chams then
local c = 0
for _, t in ipairs(list) do
if t.visual then
c = c + 1
local h = chamSlot(c)
if h then
local col = t.enemy and COL_ENEMY or COL_ALLY
h.Adornee = t.visual; h.FillColor = col; h.OutlineColor = col; h.Enabled = true
end
end
end
hideChams(c + 1)
else hideChams(1) end
if not Drawing then hideAll(); return end
local eye = cam() and cam().CFrame.Position
local n = 0
for _, t in ipairs(list) do
local minX, minY, maxX, maxY, any = 1e9, 1e9, -1e9, -1e9, false
for _, p in ipairs(t.parts) do
local s, on = w2s(p.Position)
if on then
any = true
if s.X < minX then minX = s.X end
if s.Y < minY then minY = s.Y end
if s.X > maxX then maxX = s.X end
if s.Y > maxY then maxY = s.Y end
end
end
if any then
n = n + 1
local s = slot(n)
if s then
local col = t.enemy and COL_ENEMY or COL_ALLY
local w, h = (maxX - minX), (maxY - minY)
local padX, padY = w * 0.15 + 2, h * 0.08 + 2
if cfg.box then
s.box.Position = Vector2.new(minX - padX, minY - padY)
s.box.Size = Vector2.new(w + padX * 2, h + padY * 2)
s.box.Color = col; s.box.Visible = true
else s.box.Visible = false end
if cfg.names then
s.name.Text = t.name; s.name.Color = col
s.name.Position = Vector2.new((minX + maxX) / 2, minY - padY - 15); s.name.Visible = true
else s.name.Visible = false end
if cfg.dist and eye then
local ref = (t.head or t.parts[1]).Position
s.dist.Text = ("%dm"):format((ref - eye).Magnitude)
s.dist.Color = col
s.dist.Position = Vector2.new((minX + maxX) / 2, maxY + padY + 1); s.dist.Visible = true
else s.dist.Visible = false end
if cfg.head and t.head then
local hs, on = w2s(t.head.Position)
if on then s.head.Position = hs; s.head.Radius = math.max(h * 0.06, 2); s.head.Color = col; s.head.Visible = true
else s.head.Visible = false end
else s.head.Visible = false end
end
end
end
hideFrom(n + 1)
end)
local aiming = false
UIS.InputBegan:Connect(function(i, gpe) if not gpe and i.UserInputType == Enum.UserInputType.MouseButton2 then aiming = true end end)
UIS.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton2 then aiming = false end end)
local fovCircle
RunService:BindToRenderStep("TTK_Aim", Enum.RenderPriority.Last.Value + 10, function()
local c = cam(); if not c then return end
if Drawing and cfg.aim and cfg.showFov then
if not fovCircle then
local ok, x = pcall(function() local o = Drawing.new("Circle"); o.Thickness = 1; o.Filled = false; o.NumSides = 48; o.Color = Color3.fromRGB(255, 255, 255); o.Transparency = 0.5; return o end)
fovCircle = ok and x or nil
end
if fovCircle then fovCircle.Position = c.ViewportSize / 2; fovCircle.Radius = cfg.aimFov; fovCircle.Visible = true end
elseif fovCircle then fovCircle.Visible = false end
if not cfg.aim or not aiming then aimActive = false; return end
local center = c.ViewportSize / 2
local best, bestD
for _, t in ipairs(targets(true)) do
local part = (cfg.aimHead and t.head) or t.parts[1]
if part then
local sp, on = w2s(part.Position)
if on then
local d = (sp - center).Magnitude
if d < cfg.aimFov and (not bestD or d < bestD) then bestD, best = d, part.Position end
end
end
end
aimActive = best ~= nil
if best then
local pos = c.CFrame.Position
local alpha = math.clamp(1 - cfg.aimSmooth, 0.06, 1)
c.CFrame = c.CFrame:Lerp(CFrame.lookAt(pos, best), alpha)
end
end)
local localGun, gunObj, camCtrl, firearmClass
task.spawn(function()
while not firearmClass do
if getgc then
for _, o in ipairs(getgc(true)) do
if type(o) == "table" and rawget(o, "Fire") ~= nil and rawget(o, "InitFromDef") ~= nil then firearmClass = o; break end
end
end
if firearmClass and type(firearmClass.Fire) == "function" then
local origFire = firearmClass.Fire
firearmClass.Fire = function(self, ...)
localGun = self
if cfg.infAmmo then self.MagAmmo = self.MaxMagSize + 1 end
if cfg.rapid then self.CanFire = true; self.FireRate = math.min(self.FireRate or 0.1, cfg.rapidRate) end
return origFire(self, ...)
end
local origReserve = firearmClass.GetReserve
if type(origReserve) == "function" then
firearmClass.GetReserve = function(self, ...) if cfg.infReserve then return 999 end return origReserve(self, ...) end
end
else firearmClass = nil; task.wait(2) end
end
end)
pcall(function()
local GC = require(RS.Modules.Client.Controllers.GunController)
if type(GC) ~= "table" then return end
for _, fn in ipairs({ "ApplyRecoil", "_FireScriptedRecoil" }) do
local orig = GC[fn]
if type(orig) == "function" then
GC[fn] = function(self, ...) gunObj = self; if cfg.noRecoil then return end return orig(self, ...) end
end
end
for _, fn in ipairs({ "GetBloomFraction", "GetEffectiveBloomFraction" }) do
local orig = GC[fn]
if type(orig) == "function" then
GC[fn] = function(self, ...) if cfg.noSpread then return 0 end return orig(self, ...) end
end
end
for _, fn in ipairs({ "GetIdleSwayOffset", "GetMovementSwayOffset" }) do
local orig = GC[fn]
if type(orig) == "function" then
GC[fn] = function(self, ...) if cfg.noSway or aimActive then return CFrame.new() end return orig(self, ...) end
end
end
local origAim = GC._ApplyAimSpeed
if type(origAim) == "function" then
GC._ApplyAimSpeed = function(self, ...)
local a, b, c = origAim(self, ...)
if cfg.instantADS and self.AimSpring then pcall(function() self.AimSpring:setStiffness(500, 1) end) end
return a, b, c
end
end
end)
pcall(function()
local CC = require(RS.Modules.Client.Controllers.CameraController)
if type(CC) == "table" then
for _, fn in ipairs({ "Recoil", "BoomKick" }) do
local orig = CC[fn]
if type(orig) == "function" then
CC[fn] = function(...) if cfg.noRecoil then return end return orig(...) end
end
end
end
end)
task.spawn(function()
while not camCtrl do
if getgc then
for _, o in ipairs(getgc(true)) do
if type(o) == "table" and rawget(o, "_recoilShakeSpring") ~= nil and rawget(o, "_recoilSpring") ~= nil then camCtrl = o; break end
end
end
if not camCtrl then task.wait(2) end
end
end)
pcall(function()
local BC = require(RS.Modules.Client.Controllers.BulletController)
if type(BC) == "table" and type(BC._ClaimMercHit) == "function" then
local orig = BC._ClaimMercHit
BC._ClaimMercHit = function(self, a2, a3, a4, ...)
if cfg.silentAim then
local c = cam()
if c then
local center = c.ViewportSize / 2
local best, bestD
for _, t in ipairs(targets(true)) do
if t.head then
local sp, on = w2s(t.head.Position)
if on then local d = (sp - center).Magnitude; if not bestD or d < bestD then bestD, best = d, t.head end end
end
end
if best then a3 = best; a4 = best.Position end
end
end
return orig(self, a2, a3, a4, ...)
end
end
end)
local ZERO = Vector3.new(0, 0, 0)
local function rest(sp) if type(sp) == "table" then pcall(function() sp.t = ZERO end); pcall(function() sp.p = ZERO end) end end
RunService:BindToRenderStep("TTK_Weapon", Enum.RenderPriority.First.Value, function()
if gunObj then
if cfg.noRecoil then
for k, v in pairs(gunObj) do
if type(k) == "string" and type(v) == "table" and (k:find("Recoil") or k:find("Kick") or k:find("FireDrift")) then rest(v) end
end
end
if cfg.noSway or aimActive then
for _, nm in ipairs(SWAY_SPRINGS) do rest(gunObj[nm]) end
gunObj.WalkSwayX = 0; gunObj.WalkSwayY = 0
end
if cfg.instantADS and gunObj.AimSpring then pcall(function() gunObj.AimSpring:setStiffness(500, 1) end) end
end
if camCtrl then
if cfg.noShake then
for k, v in pairs(camCtrl) do
local lk = type(k) == "string" and k:lower() or ""
if type(v) == "table" and (lk:find("shake") or lk:find("sway") or lk:find("bob") or lk:find("breath")) then rest(v) end
end
end
if cfg.noRecoil then
for k, v in pairs(camCtrl) do
if type(k) == "string" and type(v) == "table" and (k:lower():find("recoil")) then rest(v) end
end
end
end
end)
RunService.Heartbeat:Connect(function()
if not localGun then return end
if cfg.infAmmo then localGun.MagAmmo = localGun.MaxMagSize + 1 end
if cfg.noReload then localGun.IsReloading = false end
if cfg.fullAuto or cfg.rapid then localGun.FireMode = "auto" end
if cfg.rapid then localGun.CanFire = true end
if cfg.infReserve and localGun._magazines then
for i = 1, #localGun._magazines do localGun._magazines[i] = localGun.MaxMagSize end
end
end)
pcall(function()
local TC = require(RS.Modules.Client.Controllers.ThrowableController)
if type(TC) == "table" and type(TC.GetAmmo) == "function" then
local orig = TC.GetAmmo
TC.GetAmmo = function(...) if cfg.infThrow then return 99 end return orig(...) end
end
end)
local VibeUI = loadstring(game:HttpGet("https://sirmemegithub.com/RealSlimShady2000/VibeUI/raw/branch/main/VibeUI.luau"))()
local Window = VibeUI:Window({ Title = "TTK", Keybind = Enum.KeyCode.RightControl, Layout = "Side" })
local T1 = Window:Tab({ Name = "Visuals & Aim", Columns = 2 })
local espS = T1:Section({ Name = "ESP", Side = 1 })
espS:Toggle({ Name = "Enable ESP", Flag = "esp", Default = false, Callback = function(v) cfg.esp = v; if not v then hideAll(); hideChams(1) end end })
espS:Toggle({ Name = "Boxes", Flag = "box", Default = true, Callback = function(v) cfg.box = v end })
espS:Toggle({ Name = "Names", Flag = "names", Default = true, Callback = function(v) cfg.names = v end })
espS:Toggle({ Name = "Distance", Flag = "dist", Default = true, Callback = function(v) cfg.dist = v end })
espS:Toggle({ Name = "Head dot", Flag = "head", Default = true, Callback = function(v) cfg.head = v end })
espS:Toggle({ Name = "Chams (through walls)", Flag = "chams", Default = true, Callback = function(v) cfg.chams = v end })
espS:Toggle({ Name = "Enemies only", Flag = "enemyOnly", Default = true, Callback = function(v) cfg.enemyOnly = v end })
local aimS = T1:Section({ Name = "Aimbot", Side = 2 })
aimS:Toggle({ Name = "Enable Aimbot (hold RMB)", Flag = "aim", Default = false, Callback = function(v) cfg.aim = v end })
aimS:Toggle({ Name = "Silent Aim Wallbang", Flag = "silent", Default = false, Callback = function(v) cfg.silentAim = v end })
aimS:Toggle({ Name = "Target head", Flag = "aimHead", Default = true, Callback = function(v) cfg.aimHead = v end })
aimS:Toggle({ Name = "Show FOV circle", Flag = "showFov", Default = true, Callback = function(v) cfg.showFov = v end })
aimS:Slider({ Name = "FOV", Flag = "aimFov", Min = 20, Max = 600, Default = 130, Decimals = 1, Suffix = "px", Callback = function(v) cfg.aimFov = v end })
aimS:Slider({ Name = "Smoothness", Flag = "aimSmooth", Min = 0, Max = 0.95, Default = 0.25, Decimals = 0.01, Callback = function(v) cfg.aimSmooth = v end })
local T2 = Window:Tab({ Name = "Weapon", Columns = 2 })
local wA = T2:Section({ Name = "Recoil / Aim", Side = 1 })
wA:Toggle({ Name = "No spread", Flag = "noSpread", Default = false, Callback = function(v) cfg.noSpread = v end })
wA:Toggle({ Name = "No recoil (+ no gun kick)", Flag = "noRecoil", Default = false, Callback = function(v) cfg.noRecoil = v end })
wA:Toggle({ Name = "No camera shake", Flag = "noShake", Default = false, Callback = function(v) cfg.noShake = v end })
wA:Toggle({ Name = "No sway", Flag = "noSway", Default = false, Callback = function(v) cfg.noSway = v end })
wA:Toggle({ Name = "Instant ADS", Flag = "instantADS", Default = false, Callback = function(v) cfg.instantADS = v end })
local wB = T2:Section({ Name = "Ammo / Fire", Side = 2 })
wB:Toggle({ Name = "Infinite ammo", Flag = "infAmmo", Default = false, Callback = function(v) cfg.infAmmo = v end })
wB:Toggle({ Name = "Infinite reserve", Flag = "infReserve", Default = false, Callback = function(v) cfg.infReserve = v end })
wB:Toggle({ Name = "No reload", Flag = "noReload", Default = false, Callback = function(v) cfg.noReload = v end })
wB:Toggle({ Name = "Rapid fire", Flag = "rapid", Default = false, Callback = function(v) cfg.rapid = v end })
wB:Slider({ Name = "Fire delay", Flag = "rapidRate", Min = 0.01, Max = 0.2, Default = 0.05, Decimals = 0.01, Suffix = "s", Callback = function(v) cfg.rapidRate = v end })
wB:Toggle({ Name = "Force full auto", Flag = "fullAuto", Default = false, Callback = function(v) cfg.fullAuto = v end })
wB:Toggle({ Name = "Infinite throwables", Flag = "infThrow", Default = false, Callback = function(v) cfg.infThrow = v end })
pcall(function() VibeUI:CreateSettingsPage(Window) end)
VibeUI:Notification({ Title = "TTK loaded", Description = "RightControl to toggle the menu", Type = "success" })