ttk script rapidfire,infammo,silent aim and more!!!
Key Required

ttk script rapidfire,infammo,silent aim and more!!!

TTK Testing [CUSTOMIZATION]smertni*qqsmertni*qq 2.5K views 10.8K executesUpdated Sep 16, 2026
Unrated
00
Lua Script•894 lines (36021 chars)
--[[
    RONALDO MENU | Pure Ultra-Clean Minimalist Dark Interface
    
    UI Cleanups:
    - 🧼 Completely removed all emojis/icons from tabs, title, and buttons.
    - 🧹 Removed bottom footer bar.
    - 🖤 Pure clean dark minimalist layout.
    - ⌨️ Menu Toggle set to [G]. All features OFF by default.
--]]

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Lighting = game:GetService("Lighting")

local Camera = workspace.CurrentCamera
local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()

--------------------------------------------------------------------------------
-- 100% ABSOLUTE TEARDOWN OF PREVIOUS RUNS
--------------------------------------------------------------------------------
local function purgePreviousRuns()
    pcall(function()
        if cleardrawcache then cleardrawcache() end
    end)
    
    local targets = {game:GetService("CoreGui")}
    if gethui then pcall(function() table.insert(targets, gethui()) end) end
    
    for _, container in ipairs(targets) do
        for _, child in ipairs(container:GetChildren()) do
            if child:IsA("ScreenGui") and (string.find(child.Name, "Ronaldo") or string.find(child.Name, "Zenith") or string.find(child.Name, "Matcha")) then
                pcall(function() child:Destroy() end)
            end
        end
    end
end

purgePreviousRuns()

--------------------------------------------------------------------------------
-- STATE CLEANUP REGISTRY (LIVE RELOAD SUPPORT)
--------------------------------------------------------------------------------
local cleanups = {}
local function addCleanup(fn)
    table.insert(cleanups, fn)
end

if STATE then
    STATE.onCleanup(function()
        for _, fn in ipairs(cleanups) do
            pcall(fn)
        end
        purgePreviousRuns()
    end)
end

--------------------------------------------------------------------------------
-- GAME CONTROLLERS
--------------------------------------------------------------------------------
local GunController = nil
local CameraController = nil
local currentTarget = nil

pcall(function() GunController = require(ReplicatedStorage.Modules.Client.Controllers.GunController) end)
pcall(function() CameraController = require(ReplicatedStorage.Modules.Client.Controllers.CameraController) end)

local Orig_GunApplyRecoil = GunController and GunController.ApplyRecoil
local Orig_GunGetFireDir = GunController and GunController.GetFireDirection

local Orig_CamRecoil = CameraController and CameraController.Recoil
local Orig_CamBoomKick = CameraController and CameraController.BoomKick
local Orig_CamShakeImpulse = CameraController and CameraController.ShakeImpulse

--------------------------------------------------------------------------------
-- CONFIGURATION (ALL OFF BY DEFAULT)
--------------------------------------------------------------------------------
local Config = {
    Combat = {
        SilentAim = false,        -- Muzzle Bullet Redirection
        CameraAim = false,        -- Muzzle Camera Lock
        AimKey = Enum.UserInputType.MouseButton2,
        AimPart = "Head",        -- "Head", "Torso", "HumanoidRootPart"
        FOV = 120,
        ShowFOV = false,
        FOVCenterMode = "ScreenCenter",
        Smoothness = 0.35,
        TeamCheck = true,         -- Team Check
    },
    GunMod = {
        NoRecoil = false,         -- 100% Zero Camera + Gun Recoil
        NoSpread = false,         -- 100% Pinpoint Accuracy
        InfiniteAmmo = false,     -- Instant Ammo Refill
        RapidFire = false,       -- Custom Rate of Fire
        CustomFireRate = 0.02,
        ForceAuto = false,        -- Full Auto Mode
    },
    Visuals = {
        Enabled = false,
        Boxes = false,
        Names = false,
        HealthBar = false,
        Tracers = false,
        Highlights = false,
        Crosshair = false,
        ShowTeammates = false,
        BoxColor = Color3.fromRGB(0, 230, 180),
        TracerColor = Color3.fromRGB(0, 190, 255),
        HighlightColor = Color3.fromRGB(255, 45, 85),
        TeammateColor = Color3.fromRGB(0, 200, 255),
    },
    Movement = {
        JumpEnabled = true,       -- Enable custom jump physics in TTK
        JumpPower = 38,           -- Clean ~5 stud jump height with gravity 128
        Bhop = false,             -- Auto-Jump on landing while Space held
        AirStrafe = false,        -- Instant air direction control
        StrafeSpeed = 28,         -- Air strafe velocity
        SpeedHack = false,
        SpeedValue = 32,
        Fullbright = false,
        CustomCamFOV = false,
        CamFOVValue = 90,
    }
}

--------------------------------------------------------------------------------
-- RECOIL & GUN HOOKS
--------------------------------------------------------------------------------
if GunController then
    GunController.ApplyRecoil = function(self, ...)
        if Config.GunMod.NoRecoil then
            pcall(function()
                if self.RecoilSpring then self.RecoilSpring.t = Vector3.zero end
                if self.RecoilPushSpring then self.RecoilPushSpring.t = Vector3.zero end
                if self.RecoilShakeSpring then self.RecoilShakeSpring.t = Vector3.zero end
                if self.RecoilTiltSpring then self.RecoilTiltSpring.t = Vector3.zero end
            end)
            return
        end
        if Orig_GunApplyRecoil then return Orig_GunApplyRecoil(self, ...) end
    end
    addCleanup(function() if Orig_GunApplyRecoil then GunController.ApplyRecoil = Orig_GunApplyRecoil end end)

    GunController.GetFireDirection = function(self, ...)
        if Config.Combat.SilentAim and currentTarget and currentTarget.Character then
            local targetPart = currentTarget.Character:FindFirstChild(Config.Combat.AimPart) or currentTarget.Character:FindFirstChild("HumanoidRootPart")
            if targetPart then
                local muzzlePos = nil
                pcall(function()
                    local muzzleCFrame = self:GetActiveProjectileMuzzleWorldCFrame()
                    if muzzleCFrame then muzzlePos = muzzleCFrame.Position end
                end)
                if not muzzlePos then muzzlePos = Camera.CFrame.Position end
                return (targetPart.Position - muzzlePos).Unit
            end
        end

        if Config.GunMod.NoSpread and self.GetAimDirection then
            return self:GetAimDirection()
        end

        if Orig_GunGetFireDir then return Orig_GunGetFireDir(self, ...) end
    end
    addCleanup(function() if Orig_GunGetFireDir then GunController.GetFireDirection = Orig_GunGetFireDir end end)
end

if CameraController then
    CameraController.Recoil = function(self, ...)
        if Config.GunMod.NoRecoil then return end
        if Orig_CamRecoil then return Orig_CamRecoil(self, ...) end
    end
    addCleanup(function() if Orig_CamRecoil then CameraController.Recoil = Orig_CamRecoil end end)

    CameraController.BoomKick = function(self, ...)
        if Config.GunMod.NoRecoil then return end
        if Orig_CamBoomKick then return Orig_CamBoomKick(self, ...) end
    end
    addCleanup(function() if Orig_CamBoomKick then CameraController.BoomKick = Orig_CamBoomKick end end)

    CameraController.ShakeImpulse = function(self, ...)
        if Config.GunMod.NoRecoil then return end
        if Orig_CamShakeImpulse then return Orig_CamShakeImpulse(self, ...) end
    end
end

--------------------------------------------------------------------------------
-- CUSTOM JUMP & BHOP PHYSICS (TTK TESTING COMPATIBLE)
--------------------------------------------------------------------------------
local lastJumpTick = 0
local function isOnGround(char)
    if not char then return false end
    local hrp = char:FindFirstChild("HumanoidRootPart")
    local hum = char:FindFirstChildOfClass("Humanoid")
    if not hrp or not hum then return false end
    if hum.FloorMaterial ~= Enum.Material.Air then return true end
    local rayParams = RaycastParams.new()
    rayParams.FilterDescendantsInstances = {char}
    rayParams.FilterType = Enum.RaycastFilterType.Exclude
    local hit = workspace:Raycast(hrp.Position, Vector3.new(0, -3.4, 0), rayParams)
    return hit ~= nil
end

local function performJump()
    local now = tick()
    if now - lastJumpTick < 0.22 then return end
    local char = LocalPlayer.Character
    local hrp = char and char:FindFirstChild("HumanoidRootPart")
    if hrp and isOnGround(char) then
        lastJumpTick = now
        hrp.AssemblyLinearVelocity = Vector3.new(hrp.AssemblyLinearVelocity.X, Config.Movement.JumpPower or 38, hrp.AssemblyLinearVelocity.Z)
    end
end

local jumpKeyConn = UserInputService.InputBegan:Connect(function(input, gpe)
    if not gpe and input.KeyCode == Enum.KeyCode.Space and Config.Movement.JumpEnabled then
        performJump()
    end
end)
addCleanup(function() jumpKeyConn:Disconnect() end)

--------------------------------------------------------------------------------
-- TARGET ACQUISITION, TEAM CHECK & CENTERING
--------------------------------------------------------------------------------
local function getScreenCenter()
    return Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)
end

local function isTeammate(player)
    if not Config.Combat.TeamCheck then return false end
    if player == LocalPlayer then return true end

    local myTeam = LocalPlayer:GetAttribute("Team")
    local theirTeam = player:GetAttribute("Team")
    if myTeam and theirTeam and myTeam ~= "" and myTeam == theirTeam then
        return true
    end

    if LocalPlayer.Team and player.Team and LocalPlayer.Team == player.Team then
        return true
    end

    if not LocalPlayer.Neutral and not player.Neutral and LocalPlayer.TeamColor == player.TeamColor then
        return true
    end

    return false
end

local function getTarget()
    local closest = nil
    local shortestDist = Config.Combat.FOV
    local center = getScreenCenter()

    for _, player in ipairs(Players:GetPlayers()) do
        if player ~= LocalPlayer and not isTeammate(player) and player.Character and player.Character:FindFirstChild("Humanoid") and player.Character.Humanoid.Health > 0 then
            local targetPart = player.Character:FindFirstChild(Config.Combat.AimPart) or player.Character:FindFirstChild("HumanoidRootPart")
            if targetPart then
                local screenPos, onScreen = Camera:WorldToViewportPoint(targetPart.Position)
                if onScreen then
                    local dist = (Vector2.new(screenPos.X, screenPos.Y) - center).Magnitude
                    if dist < shortestDist then
                        shortestDist = dist
                        closest = player
                    end
                end
            end
        end
    end
    return closest
end

--------------------------------------------------------------------------------
-- GUI CREATION (PURE MINIMALIST DARK THEME - NO EMOJIS, NO FOOTER)
--------------------------------------------------------------------------------
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "RonaldoMenuV3"
ScreenGui.ResetOnSpawn = false
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling

local parentTarget = game:GetService("CoreGui")
pcall(function()
    if gethui then
        parentTarget = gethui()
    end
end)
ScreenGui.Parent = parentTarget

addCleanup(function() ScreenGui:Destroy() end)

-- Main Window
local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(0, 580, 0, 360)
MainFrame.Position = UDim2.new(0.5, -290, 0.5, -180)
MainFrame.BackgroundColor3 = Color3.fromRGB(14, 15, 20)
MainFrame.BorderSizePixel = 0
MainFrame.Active = true
MainFrame.Draggable = true
MainFrame.Parent = ScreenGui

local MainCorner = Instance.new("UICorner")
MainCorner.CornerRadius = UDim.new(0, 8)
MainCorner.Parent = MainFrame

local MainStroke = Instance.new("UIStroke")
MainStroke.Color = Color3.fromRGB(28, 32, 44)
MainStroke.Thickness = 1
MainStroke.Parent = MainFrame

-- Header
local Header = Instance.new("Frame")
Header.Size = UDim2.new(1, 0, 0, 42)
Header.Position = UDim2.new(0, 0, 0, 0)
Header.BackgroundColor3 = Color3.fromRGB(18, 20, 27)
Header.BorderSizePixel = 0
Header.Parent = MainFrame

local HeaderCorner = Instance.new("UICorner")
HeaderCorner.CornerRadius = UDim.new(0, 8)
HeaderCorner.Parent = Header

local Title = Instance.new("TextLabel")
Title.Text = "RONALDO MENU"
Title.Font = Enum.Font.GothamBold
Title.TextSize = 13
Title.TextColor3 = Color3.fromRGB(240, 243, 250)
Title.Position = UDim2.new(0, 16, 0, 0)
Title.Size = UDim2.new(0, 200, 1, 0)
Title.TextXAlignment = Enum.TextXAlignment.Left
Title.BackgroundTransparency = 1
Title.Parent = Header

local KeyHint = Instance.new("TextLabel")
KeyHint.Text = "[G] Toggle Menu"
KeyHint.Font = Enum.Font.GothamMedium
KeyHint.TextSize = 11
KeyHint.TextColor3 = Color3.fromRGB(120, 125, 145)
KeyHint.Position = UDim2.new(1, -140, 0, 0)
KeyHint.Size = UDim2.new(0, 124, 1, 0)
KeyHint.TextXAlignment = Enum.TextXAlignment.Right
KeyHint.BackgroundTransparency = 1
KeyHint.Parent = Header

-- Sidebar Navigation
local Sidebar = Instance.new("Frame")
Sidebar.Size = UDim2.new(0, 140, 1, -42)
Sidebar.Position = UDim2.new(0, 0, 0, 42)
Sidebar.BackgroundColor3 = Color3.fromRGB(16, 17, 23)
Sidebar.BorderSizePixel = 0
Sidebar.Parent = MainFrame

local SideList = Instance.new("UIListLayout")
SideList.SortOrder = Enum.SortOrder.LayoutOrder
SideList.Padding = UDim.new(0, 4)
SideList.Parent = Sidebar

local SidePad = Instance.new("UIPadding")
SidePad.PaddingTop = UDim.new(0, 10)
SidePad.PaddingLeft = UDim.new(0, 8)
SidePad.PaddingRight = UDim.new(0, 8)
SidePad.Parent = Sidebar

-- Content Container
local Content = Instance.new("Frame")
Content.Size = UDim2.new(1, -140, 1, -42)
Content.Position = UDim2.new(0, 140, 0, 42)
Content.BackgroundTransparency = 1
Content.Parent = MainFrame

local pages = {}
local tabBtns = {}

local function createTab(name)
    local page = Instance.new("ScrollingFrame")
    page.Name = name .. "Page"
    page.Size = UDim2.new(1, -20, 1, -20)
    page.Position = UDim2.new(0, 10, 0, 10)
    page.BackgroundTransparency = 1
    page.BorderSizePixel = 0
    page.ScrollBarThickness = 3
    page.ScrollBarImageColor3 = Color3.fromRGB(0, 230, 180)
    page.Visible = false
    page.Parent = Content

    local list = Instance.new("UIListLayout")
    list.SortOrder = Enum.SortOrder.LayoutOrder
    list.Padding = UDim.new(0, 6)
    list.Parent = page

    pages[name] = page

    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(1, 0, 0, 34)
    btn.BackgroundColor3 = Color3.fromRGB(21, 23, 31)
    btn.Text = name
    btn.Font = Enum.Font.GothamMedium
    btn.TextSize = 12
    btn.TextColor3 = Color3.fromRGB(140, 145, 170)
    btn.TextXAlignment = Enum.TextXAlignment.Center
    btn.AutoButtonColor = false
    btn.Parent = Sidebar

    local btnCorner = Instance.new("UICorner")
    btnCorner.CornerRadius = UDim.new(0, 6)
    btnCorner.Parent = btn

    btn.MouseButton1Click:Connect(function()
        for pName, p in pairs(pages) do p.Visible = (pName == name) end
        for _, b in pairs(tabBtns) do
            b.BackgroundColor3 = Color3.fromRGB(21, 23, 31)
            b.TextColor3 = Color3.fromRGB(140, 145, 170)
        end
        btn.BackgroundColor3 = Color3.fromRGB(0, 180, 140)
        btn.TextColor3 = Color3.fromRGB(255, 255, 255)
    end)

    table.insert(tabBtns, btn)
    return page
end

-- Controls Helpers
local function addToggle(page, labelText, defaultVal, callback)
    local f = Instance.new("Frame")
    f.Size = UDim2.new(1, -6, 0, 34)
    f.BackgroundColor3 = Color3.fromRGB(20, 22, 30)
    f.Parent = page

    local fc = Instance.new("UICorner")
    fc.CornerRadius = UDim.new(0, 6)
    fc.Parent = f

    local fs = Instance.new("UIStroke")
    fs.Color = Color3.fromRGB(28, 31, 44)
    fs.Thickness = 1
    fs.Parent = f

    local t = Instance.new("TextLabel")
    t.Text = labelText
    t.Font = Enum.Font.Gotham
    t.TextSize = 12
    t.TextColor3 = Color3.fromRGB(225, 230, 245)
    t.Position = UDim2.new(0, 12, 0, 0)
    t.Size = UDim2.new(0.7, 0, 1, 0)
    t.TextXAlignment = Enum.TextXAlignment.Left
    t.BackgroundTransparency = 1
    t.Parent = f

    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(0, 38, 0, 18)
    btn.Position = UDim2.new(1, -48, 0.5, -9)
    btn.BackgroundColor3 = defaultVal and Color3.fromRGB(0, 200, 140) or Color3.fromRGB(38, 41, 56)
    btn.Text = ""
    btn.Parent = f

    local bc = Instance.new("UICorner")
    bc.CornerRadius = UDim.new(0, 9)
    bc.Parent = btn

    local ind = Instance.new("Frame")
    ind.Size = UDim2.new(0, 14, 0, 14)
    ind.Position = defaultVal and UDim2.new(1, -16, 0.5, -7) or UDim2.new(0, 2, 0.5, -7)
    ind.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
    ind.Parent = btn

    local ic = Instance.new("UICorner")
    ic.CornerRadius = UDim.new(1, 0)
    ic.Parent = ind

    local state = defaultVal
    btn.MouseButton1Click:Connect(function()
        state = not state
        btn.BackgroundColor3 = state and Color3.fromRGB(0, 200, 140) or Color3.fromRGB(38, 41, 56)
        ind.Position = state and UDim2.new(1, -16, 0.5, -7) or UDim2.new(0, 2, 0.5, -7)
        pcall(callback, state)
    end)
end

local function addSlider(page, labelText, minVal, maxVal, defaultVal, callback)
    local f = Instance.new("Frame")
    f.Size = UDim2.new(1, -6, 0, 46)
    f.BackgroundColor3 = Color3.fromRGB(20, 22, 30)
    f.Parent = page

    local fc = Instance.new("UICorner")
    fc.CornerRadius = UDim.new(0, 6)
    fc.Parent = f

    local fs = Instance.new("UIStroke")
    fs.Color = Color3.fromRGB(28, 31, 44)
    fs.Thickness = 1
    fs.Parent = f

    local t = Instance.new("TextLabel")
    t.Text = labelText
    t.Font = Enum.Font.Gotham
    t.TextSize = 12
    t.TextColor3 = Color3.fromRGB(225, 230, 245)
    t.Position = UDim2.new(0, 12, 0, 4)
    t.Size = UDim2.new(0.6, 0, 0, 18)
    t.TextXAlignment = Enum.TextXAlignment.Left
    t.BackgroundTransparency = 1
    t.Parent = f

    local valTxt = Instance.new("TextLabel")
    valTxt.Text = tostring(defaultVal)
    valTxt.Font = Enum.Font.GothamBold
    valTxt.TextSize = 12
    valTxt.TextColor3 = Color3.fromRGB(0, 230, 180)
    valTxt.Position = UDim2.new(1, -68, 0, 4)
    valTxt.Size = UDim2.new(0, 56, 0, 18)
    valTxt.TextXAlignment = Enum.TextXAlignment.Right
    valTxt.BackgroundTransparency = 1
    valTxt.Parent = f

    local bg = Instance.new("Frame")
    bg.Size = UDim2.new(1, -24, 0, 5)
    bg.Position = UDim2.new(0, 12, 0, 30)
    bg.BackgroundColor3 = Color3.fromRGB(38, 41, 56)
    bg.Parent = f

    local bgc = Instance.new("UICorner")
    bgc.CornerRadius = UDim.new(1, 0)
    bgc.Parent = bg

    local fill = Instance.new("Frame")
    local pct = (defaultVal - minVal) / (maxVal - minVal)
    fill.Size = UDim2.new(pct, 0, 1, 0)
    fill.BackgroundColor3 = Color3.fromRGB(0, 200, 140)
    fill.Parent = bg

    local fillc = Instance.new("UICorner")
    fillc.CornerRadius = UDim.new(1, 0)
    fillc.Parent = fill

    local dragging = false
    local function update(input)
        local pos = math.clamp((input.Position.X - bg.AbsolutePosition.X) / bg.AbsoluteSize.X, 0, 1)
        fill.Size = UDim2.new(pos, 0, 1, 0)
        local val = math.floor(minVal + (maxVal - minVal) * pos)
        valTxt.Text = tostring(val)
        pcall(callback, val)
    end

    bg.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true update(input) end
    end)
    UserInputService.InputEnded:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end
    end)
    UserInputService.InputChanged:Connect(function(input)
        if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then update(input) end
    end)
end

-- Create Pages
local combatPage = createTab("Combat")
local gunModPage = createTab("Gun Mods")
local visualsPage = createTab("Visuals")
local movementPage = createTab("Movement")

tabBtns[1].BackgroundColor3 = Color3.fromRGB(0, 180, 140)
tabBtns[1].TextColor3 = Color3.fromRGB(255, 255, 255)
pages["Combat"].Visible = true

-- Combat Controls
addToggle(combatPage, "Team Check (Ignore Allies)", Config.Combat.TeamCheck, function(v) Config.Combat.TeamCheck = v end)
addToggle(combatPage, "Muzzle Silent Aim (Bullet Trace)", Config.Combat.SilentAim, function(v) Config.Combat.SilentAim = v end)
addToggle(combatPage, "Muzzle Camera Lock (RMB)", Config.Combat.CameraAim, function(v) Config.Combat.CameraAim = v end)
addToggle(combatPage, "Show FOV Circle", Config.Combat.ShowFOV, function(v) Config.Combat.ShowFOV = v end)
addSlider(combatPage, "Aimbot FOV Radius", 30, 400, Config.Combat.FOV, function(v) Config.Combat.FOV = v end)

-- Gun Mod Controls
addToggle(gunModPage, "100% No Recoil (Cam + Weapon)", Config.GunMod.NoRecoil, function(v) Config.GunMod.NoRecoil = v end)
addToggle(gunModPage, "100% No Spread (Pinpoint)", Config.GunMod.NoSpread, function(v) Config.GunMod.NoSpread = v end)
addToggle(gunModPage, "Infinite Ammo Refill", Config.GunMod.InfiniteAmmo, function(v) Config.GunMod.InfiniteAmmo = v end)
addToggle(gunModPage, "Force Full-Auto Mode", Config.GunMod.ForceAuto, function(v) Config.GunMod.ForceAuto = v end)
addToggle(gunModPage, "Rapid Fire Boost", Config.GunMod.RapidFire, function(v) Config.GunMod.RapidFire = v end)

-- Visuals Controls
addToggle(visualsPage, "Master ESP Toggle", Config.Visuals.Enabled, function(v) Config.Visuals.Enabled = v end)
addToggle(visualsPage, "Chams (Wallhack Highlight)", Config.Visuals.Highlights, function(v) Config.Visuals.Highlights = v end)
addToggle(visualsPage, "Show Teammates in ESP", Config.Visuals.ShowTeammates, function(v) Config.Visuals.ShowTeammates = v end)
addToggle(visualsPage, "2D Bounding Boxes", Config.Visuals.Boxes, function(v) Config.Visuals.Boxes = v end)
addToggle(visualsPage, "Name & Distance", Config.Visuals.Names, function(v) Config.Visuals.Names = v end)
addToggle(visualsPage, "Health Bars", Config.Visuals.HealthBar, function(v) Config.Visuals.HealthBar = v end)
addToggle(visualsPage, "Tracers", Config.Visuals.Tracers, function(v) Config.Visuals.Tracers = v end)

-- Movement & World Controls
addToggle(movementPage, "Enable Jump in TTK", Config.Movement.JumpEnabled, function(v) Config.Movement.JumpEnabled = v end)
addSlider(movementPage, "Jump Height", 25, 55, Config.Movement.JumpPower, function(v) Config.Movement.JumpPower = v end)
addToggle(movementPage, "Bunny Hop (Hold Space)", Config.Movement.Bhop, function(v) Config.Movement.Bhop = v end)
addToggle(movementPage, "Air Strafe (Instant Direction)", Config.Movement.AirStrafe, function(v) Config.Movement.AirStrafe = v end)
addSlider(movementPage, "Air Strafe Speed", 16, 60, Config.Movement.StrafeSpeed, function(v) Config.Movement.StrafeSpeed = v end)
addToggle(movementPage, "Speed Hack (Fast Movement)", Config.Movement.SpeedHack, function(v) Config.Movement.SpeedHack = v end)
addSlider(movementPage, "Speed Multiplier", 20, 100, Config.Movement.SpeedValue, function(v) Config.Movement.SpeedValue = v end)
addToggle(movementPage, "Infinite Jump (Air Jump)", Config.Movement.InfiniteJump, function(v) Config.Movement.InfiniteJump = v end)
addToggle(movementPage, "Custom Camera FOV", Config.Movement.CustomCamFOV, function(v) Config.Movement.CustomCamFOV = v end)
addSlider(movementPage, "Camera Field of View", 70, 120, Config.Movement.CamFOVValue, function(v) Config.Movement.CamFOVValue = v end)
addToggle(movementPage, "Fullbright / Clear World", Config.Movement.Fullbright, function(v)
    Config.Movement.Fullbright = v
    if v then
        Lighting.Ambient = Color3.new(1, 1, 1)
        Lighting.Brightness = 2
        Lighting.GlobalShadows = false
        Lighting.FogEnd = 9e9
    else
        Lighting.GlobalShadows = true
    end
end)

-- Keybind Toggle (G Key)
local uiVisible = true
local inputConn = UserInputService.InputBegan:Connect(function(input, gpe)
    if not gpe and input.KeyCode == Enum.KeyCode.G then
        uiVisible = not uiVisible
        MainFrame.Visible = uiVisible
    end
end)
addCleanup(function() inputConn:Disconnect() end)

--------------------------------------------------------------------------------
-- DRAWING OVERLAYS & RENDER STEP
--------------------------------------------------------------------------------
local fovCircle = Drawing.new("Circle")
fovCircle.Color = Color3.fromRGB(0, 230, 180)
fovCircle.Thickness = 1.5
fovCircle.Filled = false
fovCircle.Transparency = 0.85
fovCircle.Visible = false

addCleanup(function() fovCircle:Remove() end)

local crosshairH = Drawing.new("Line")
local crosshairV = Drawing.new("Line")
crosshairH.Color = Color3.fromRGB(0, 230, 180)
crosshairH.Thickness = 1
crosshairH.Transparency = 0.7

crosshairV.Color = Color3.fromRGB(0, 230, 180)
crosshairV.Thickness = 1
crosshairV.Transparency = 0.7

addCleanup(function()
    crosshairH:Remove()
    crosshairV:Remove()
end)

local espCache = {}
local function removePlayerESP(player)
    if espCache[player] then
        for _, obj in pairs(espCache[player]) do
            if obj and obj.Remove then pcall(function() obj:Remove() end)
            elseif typeof(obj) == "Instance" then pcall(function() obj:Destroy() end) end
        end
        espCache[player] = nil
    end
end

addCleanup(function()
    for player, _ in pairs(espCache) do removePlayerESP(player) end
end)

local function getPlayerESP(player)
    if espCache[player] then return espCache[player] end

    local cache = {
        box = Drawing.new("Square"),
        name = Drawing.new("Text"),
        healthBg = Drawing.new("Square"),
        healthFill = Drawing.new("Square"),
        tracer = Drawing.new("Line"),
    }

    cache.box.Thickness = 1.5
    cache.box.Color = Config.Visuals.BoxColor
    cache.box.Filled = false

    cache.name.Size = 13
    cache.name.Center = true
    cache.name.Outline = true
    cache.name.Color = Color3.fromRGB(255, 255, 255)

    cache.healthBg.Filled = true
    cache.healthBg.Color = Color3.fromRGB(20, 20, 20)
    cache.healthFill.Filled = true

    cache.tracer.Thickness = 1
    cache.tracer.Color = Config.Visuals.TracerColor

    espCache[player] = cache
    return cache
end

--------------------------------------------------------------------------------
-- MAIN STEPPING LOOP
--------------------------------------------------------------------------------
local renderConn = RunService.RenderStepped:Connect(function()
    local screenCenter = getScreenCenter()
    currentTarget = getTarget()

    -- Custom Camera FOV
    if Config.Movement.CustomCamFOV then
        Camera.FieldOfView = Config.Movement.CamFOVValue
    end

    -- Speed Hack (CFrame Boost)
    if Config.Movement.SpeedHack and LocalPlayer.Character then
        local hum = LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
        local hrp = LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
        if hum and hrp and hum.MoveDirection.Magnitude > 0 then
            hrp.CFrame = hrp.CFrame + (hum.MoveDirection * ((Config.Movement.SpeedValue - 16) / 60))
        end
    end

    -- Bunny Hop (Auto Jump on ground while Space is held)
    if Config.Movement.Bhop and UserInputService:IsKeyDown(Enum.KeyCode.Space) then
        performJump()
    end

    -- Air Strafe (Instant air direction control without cooldown or inertia lag)
    if Config.Movement.AirStrafe and LocalPlayer.Character then
        local char = LocalPlayer.Character
        local hum = char:FindFirstChildOfClass("Humanoid")
        local hrp = char:FindFirstChild("HumanoidRootPart")
        if hum and hrp and hum.Health > 0 and not isOnGround(char) then
            if hum.MoveDirection.Magnitude > 0.05 then
                local currentVy = hrp.AssemblyLinearVelocity.Y
                local horizMag = Vector3.new(hrp.AssemblyLinearVelocity.X, 0, hrp.AssemblyLinearVelocity.Z).Magnitude
                local strafeSpeed = math.max(horizMag, Config.Movement.StrafeSpeed or 28)
                local newHoriz = hum.MoveDirection.Unit * strafeSpeed
                hrp.AssemblyLinearVelocity = Vector3.new(newHoriz.X, currentVy, newHoriz.Z)
            end
        end
    end

    -- FOV Circle
    fovCircle.Position = screenCenter
    fovCircle.Radius = Config.Combat.FOV
    fovCircle.Visible = Config.Combat.ShowFOV

    -- Centered Crosshair
    if Config.Visuals.Crosshair then
        crosshairH.From = Vector2.new(screenCenter.X - 6, screenCenter.Y)
        crosshairH.To = Vector2.new(screenCenter.X + 6, screenCenter.Y)
        crosshairH.Visible = true

        crosshairV.From = Vector2.new(screenCenter.X, screenCenter.Y - 6)
        crosshairV.To = Vector2.new(screenCenter.X, screenCenter.Y + 6)
        crosshairV.Visible = true
    else
        crosshairH.Visible = false
        crosshairV.Visible = false
    end

    -- Gun Mods Handling
    if GunController and GunController.Weapon and GunController.Weapon.IsEquipped then
        local weapon = GunController.Weapon
        if Config.GunMod.InfiniteAmmo and weapon.MagAmmo and weapon.MaxMagSize then
            weapon.MagAmmo = weapon.MaxMagSize
        end
        if Config.GunMod.ForceAuto then
            weapon.FireMode = "auto"
        end
        if Config.GunMod.RapidFire and weapon.FireRate then
            weapon.FireRate = Config.GunMod.CustomFireRate
            if weapon.Config then weapon.Config.fire_rate = Config.GunMod.CustomFireRate end
        end
    end

    -- Camera Lock Aimbot
    if Config.Combat.CameraAim and UserInputService:IsMouseButtonPressed(Config.Combat.AimKey) and currentTarget and currentTarget.Character then
        local targetPart = currentTarget.Character:FindFirstChild(Config.Combat.AimPart) or currentTarget.Character:FindFirstChild("HumanoidRootPart")
        if targetPart then
            local targetViewport = Camera:WorldToViewportPoint(targetPart.Position)
            local target2D = Vector2.new(targetViewport.X, targetViewport.Y)
            local delta = target2D - screenCenter
            mousemoverel(delta.X * Config.Combat.Smoothness, delta.Y * Config.Combat.Smoothness)
        end
    end

    -- ESP & Chams Loop
    for _, player in ipairs(Players:GetPlayers()) do
        if player ~= LocalPlayer then
            local esp = getPlayerESP(player)
            local char = player.Character
            local hum = char and char:FindFirstChildOfClass("Humanoid")
            local hrp = char and char:FindFirstChild("HumanoidRootPart")
            local isAlly = isTeammate(player)

            -- Chams (Highlights) - Independent of 2D screen visibility for true wallhack
            local shouldShowChams = Config.Visuals.Highlights and Config.Visuals.Enabled and char and hum and hum.Health > 0
            if shouldShowChams and isAlly and not Config.Visuals.ShowTeammates then
                shouldShowChams = false
            end

            if shouldShowChams then
                local hl = esp.highlight
                if not hl or hl.Parent ~= char then
                    if hl then pcall(function() hl:Destroy() end) end
                    hl = Instance.new("Highlight")
                    hl.Name = "Ronaldo_Chams"
                    hl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
                    hl.FillTransparency = 0.45
                    hl.OutlineTransparency = 0
                    hl.Adornee = char
                    hl.Parent = char
                    esp.highlight = hl
                end
                hl.FillColor = isAlly and Config.Visuals.TeammateColor or Config.Visuals.HighlightColor
                hl.OutlineColor = Color3.fromRGB(255, 255, 255)
                hl.Enabled = true
            elseif esp.highlight then
                pcall(function() esp.highlight:Destroy() end)
                esp.highlight = nil
            end

            -- 2D Drawings (Boxes, Names, HealthBar, Tracers)
            local shouldShow2D = Config.Visuals.Enabled and char and hum and hum.Health > 0 and hrp
            if shouldShow2D and isAlly and not Config.Visuals.ShowTeammates then
                shouldShow2D = false
            end

            if shouldShow2D then
                local head = char:FindFirstChild("Head") or hrp
                local headPos, headOnScreen = Camera:WorldToViewportPoint(head.Position + Vector3.new(0, 0.6, 0))
                local footPos, footOnScreen = Camera:WorldToViewportPoint(hrp.Position - Vector3.new(0, 3.2, 0))

                if headOnScreen and footOnScreen then
                    local boxHeight = math.abs(footPos.Y - headPos.Y)
                    local boxWidth = boxHeight * 0.6
                    local boxPos = Vector2.new(headPos.X - boxWidth / 2, headPos.Y)
                    local drawColor = isAlly and Config.Visuals.TeammateColor or Config.Visuals.BoxColor

                    if Config.Visuals.Boxes then
                        esp.box.Size = Vector2.new(boxWidth, boxHeight)
                        esp.box.Position = boxPos
                        esp.box.Color = drawColor
                        esp.box.Visible = true
                    else esp.box.Visible = false end

                    if Config.Visuals.Names then
                        local dist = math.floor((hrp.Position - Camera.CFrame.Position).Magnitude)
                        esp.name.Text = string.format("%s [%dm]", player.DisplayName or player.Name, dist)
                        esp.name.Position = Vector2.new(headPos.X, headPos.Y - 16)
                        esp.name.Color = isAlly and Config.Visuals.TeammateColor or Color3.fromRGB(255, 255, 255)
                        esp.name.Visible = true
                    else esp.name.Visible = false end

                    if Config.Visuals.HealthBar then
                        local hpPct = math.clamp(hum.Health / hum.MaxHealth, 0, 1)
                        local barWidth = 3
                        local barHeight = boxHeight
                        esp.healthBg.Size = Vector2.new(barWidth, barHeight)
                        esp.healthBg.Position = Vector2.new(boxPos.X - 6, boxPos.Y)
                        esp.healthBg.Visible = true

                        esp.healthFill.Size = Vector2.new(barWidth, barHeight * hpPct)
                        esp.healthFill.Position = Vector2.new(boxPos.X - 6, boxPos.Y + (barHeight * (1 - hpPct)))
                        esp.healthFill.Color = Color3.fromRGB(255 * (1 - hpPct), 255 * hpPct, 0)
                        esp.healthFill.Visible = true
                    else
                        esp.healthBg.Visible = false
                        esp.healthFill.Visible = false
                    end

                    if Config.Visuals.Tracers then
                        esp.tracer.From = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y)
                        esp.tracer.To = Vector2.new(footPos.X, footPos.Y)
                        esp.tracer.Color = isAlly and Config.Visuals.TeammateColor or Config.Visuals.TracerColor
                        esp.tracer.Visible = true
                    else esp.tracer.Visible = false end
                else
                    esp.box.Visible = false
                    esp.name.Visible = false
                    esp.healthBg.Visible = false
                    esp.healthFill.Visible = false
                    esp.tracer.Visible = false
                end
            else
                esp.box.Visible = false
                esp.name.Visible = false
                esp.healthBg.Visible = false
                esp.healthFill.Visible = false
                esp.tracer.Visible = false
            end
        end
    end
end)

addCleanup(function() renderConn:Disconnect() end)

print("[RONALDO MENU] Pure Dark Minimalist Loaded!")

Features & Information

ai coded maybe detected so dont use too much rage like rapidfire silent fully working but chams not movement hacks is kinda bad but

Community Comments (1)

321321321321Sep 18, 2026

этот скрипт ломает мою игру

More Scripts for TTK Testing [CUSTOMIZATION]