KAT X Script

KAT X Script is a powerful Roblox script designed to enhance gameplay in KAT X by providing aim assistance, enemy detection, faster reactions, and smoother combat performance. It helps players dominate matches with better accuracy and awareness.

What is KAT X Script?

The KAT X Script is a Roblox Lua script made specifically for the KAT X game, allowing players to automate aiming, track enemies, and improve combat efficiency without manual effort.

KAT X Script

Features Of KAT X Script

1

Auto Aim / Aim Assist

Automatically locks aim onto nearby enemies.

2

ESP (Enemy Detection)

See enemies through walls and obstacles.

3

Hitbox Expander

Increases hitbox size for easier hits.

Download & Copy All KAT X Script 2026

1. KAT X Script

local uiLoader = loadstring(game:HttpGet('https://raw.githubusercontent.com/topitbopit/dollarware/main/library.lua'))

local ui = uiLoader({
rounding = false, -- Whether certain features get rounded
theme = 'orange', -- The theme. Available themes are: cherry, orange, lemon, lime, raspberry, blueberry, grape, watermelon
smoothDragging = false -- Smooth dragging
})

ui.autoDisableToggles = true -- All toggles will automatically be disabled when the ui is destroyed (window is closed)

-- Make a window
local window = ui.newWindow({
text = 'Katware', -- Title of window
resize = true, -- Ability to resize
size = Vector2.new(650, 500), -- Increased window size for bulk opener
position = nil -- Custom position, defaults to roughly the bottom right corner
})

-- Services
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local StarterGui = game:GetService("StarterGui")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local camera = workspace.CurrentCamera
local player = Players.LocalPlayer
local mouse = player:GetMouse()

-- Models to track and their corresponding labels
local modelsToTrack = {
CrateModelHW = "Halloween Crate",
Sacrifice = "Sacrifice",
CrateModel = "Tier 0 Crate",
CrateModel_T1 = "Normal Crate",
CrateModel_T2 = "Tier 2 Crate",
CrateModel_T0 = "Tier 0 Crate",
GemPickupModel = "Gem Pickup" -- Added gem pickup
}

-- ESP enabled states
local espEnabled = {
players = false,
crates = false,
sacrifice = false,
gems = false -- Added gems ESP toggle
}

-- Teleport settings
local teleportEnabled = {
crates = false,
sacrifice = false,
gems = false -- Added gems teleport toggle
}

-- Bulk Opener Variables
local bulkOpenerAmounts = {
halloween = 50,
blackmarket = 50,
t0 = 50
}

-- Cursor aimbot enabled state
local aimbotEnabled = false
local isLeftClickHeld = false
local aimbotSmoothing = 0.5 -- Smoothing factor for aimbot
local fovRadius = 100 -- FOV circle radius
local showFovCircle = false

-- Rapid Fire No Scope macro
local rapidFireEnabled = false

-- Anti-AFK Variables
local antiAfkEnabled = false
local antiAfkGui = nil
local antiAfkConnection = nil

-- Logs Variables
local logs = {}
local maxLogs = 8
local logsSection = nil
local logLabels = {} -- Keep track of static labels

-- Crate Counter Variables
local crateCounter = {
hwCrates = 0,
t0Crates = 0
}

-- Gem Counter Variable
local gemCounter = 0

-- Create Crate Counter GUI
local function createCrateCounterGUI()
local playerGui = player:WaitForChild("PlayerGui")

-- Create ScreenGui
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "CrateCounterGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = playerGui

-- Create Frame
local frame = Instance.new("Frame")
frame.Name = "CounterFrame"
frame.Size = UDim2.new(0, 300, 0, 150) -- Increased height for gem counter
frame.Position = UDim2.new(1, -320, 1, -170) -- Adjusted position for larger frame
frame.BackgroundTransparency = 0.3
frame.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
frame.BorderSizePixel = 2
frame.BorderColor3 = Color3.fromRGB(255, 255, 255)
frame.Parent = screenGui

-- Add corner rounding
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 10)
corner.Parent = frame

-- Create HW Crate Counter Label
local hwLabel = Instance.new("TextLabel")
hwLabel.Name = "HWLabel"
hwLabel.Size = UDim2.new(1, 0, 0.33, 0)
hwLabel.Position = UDim2.new(0, 0, 0, 0)
hwLabel.BackgroundTransparency = 1
hwLabel.Text = "HW Crates: 0"
hwLabel.TextColor3 = Color3.fromRGB(138, 43, 226) -- Purple Halloween color
hwLabel.TextScaled = true
hwLabel.Font = Enum.Font.SourceSansBold
hwLabel.TextStrokeTransparency = 0
hwLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
hwLabel.Parent = frame

-- Create T0 Crate Counter Label
local t0Label = Instance.new("TextLabel")
t0Label.Name = "T0Label"
t0Label.Size = UDim2.new(1, 0, 0.33, 0)
t0Label.Position = UDim2.new(0, 0, 0.33, 0)
t0Label.BackgroundTransparency = 1
t0Label.Text = "T0 Crates: 0"
t0Label.TextColor3 = Color3.fromRGB(128, 128, 128) -- Grey color for T0
t0Label.TextScaled = true
t0Label.Font = Enum.Font.SourceSansBold
t0Label.TextStrokeTransparency = 0
t0Label.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
t0Label.Parent = frame

-- Create Gem Counter Label
local gemLabel = Instance.new("TextLabel")
gemLabel.Name = "GemLabel"
gemLabel.Size = UDim2.new(1, 0, 0.34, 0)
gemLabel.Position = UDim2.new(0, 0, 0.66, 0)
gemLabel.BackgroundTransparency = 1
gemLabel.Text = "Gems: 0"
gemLabel.TextColor3 = Color3.fromRGB(255, 0, 0) -- Red color for gems
gemLabel.TextScaled = true
gemLabel.Font = Enum.Font.SourceSansBold
gemLabel.TextStrokeTransparency = 0
gemLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
gemLabel.Parent = frame

return screenGui
end

-- Create the counter GUI
local crateCounterGui = createCrateCounterGUI()

-- Function to add log entry to UI
local function addLog(message, logType)
local timestamp = os.date("[%H:%M:%S]")
local logEntry = {
time = timestamp,
message = message,
type = logType or "info"
}

table.insert(logs, 1, logEntry) -- Insert at beginning for newest first

-- Remove old logs if we exceed max
if #logs > maxLogs then
table.remove(logs, maxLogs + 1)
end

-- Update the logs section if it exists
if logsSection then
updateLogsInUI()
end

-- Also show in chat for immediate feedback
local chatColor = Color3.fromRGB(255, 255, 255)
if logType == "success" then chatColor = Color3.fromRGB(0, 255, 0)
elseif logType == "warning" then chatColor = Color3.fromRGB(255, 165, 0)
elseif logType == "error" then chatColor = Color3.fromRGB(255, 100, 100)
elseif logType == "anti-afk" then chatColor = Color3.fromRGB(0, 255, 255) end

pcall(function()
StarterGui:SetCore("ChatMakeSystemMessage", {
Text = timestamp .. " " .. message;
Color = chatColor;
Font = Enum.Font.SourceSans;
TextSize = 16;
})
end)
end

-- Function to update logs in the UI section
local function updateLogsInUI()
if not logsSection then return end

-- Clear existing log entries from UI
for _, entry in ipairs(logEntries) do
if entry and entry.destroy then
pcall(function() entry:destroy() end)
end
end
logEntries = {}

-- Add current logs as label elements in the UI
for i, log in ipairs(logs) do
if i <= 8 then -- Only show latest 8 in UI to prevent clutter
local logText = log.time .. " " .. log.message
local labelElement = logsSection:addLabel({
text = logText
})
table.insert(logEntries, labelElement)
end
end
end

-- Function to clear logs
local function clearLogs()
logs = {}
if logsSection then
updateLogsInUI()
end
addLog("All logs cleared!", "warning")
end

-- Function to update the counter display
local function updateCrateCounterDisplay()
local hwLabel = crateCounterGui.CounterFrame.HWLabel
local t0Label = crateCounterGui.CounterFrame.T0Label
local gemLabel = crateCounterGui.CounterFrame.GemLabel

hwLabel.Text = "HW Crates: " .. crateCounter.hwCrates
t0Label.Text = "T0 Crates: " .. crateCounter.t0Crates
gemLabel.Text = "Gems: " .. gemCounter
end

-- Function to increment crate counter
local function incrementCrateCounter(crateType)
if crateType == "HW" then
crateCounter.hwCrates = crateCounter.hwCrates + 1
elseif crateType == "T0" then
crateCounter.t0Crates = crateCounter.t0Crates + 1
end
updateCrateCounterDisplay()
end

-- Function to increment gem counter
local function incrementGemCounter()
gemCounter = gemCounter + 1
updateCrateCounterDisplay()
end

-- Bulk Crate Opening Functions
local function openHalloweenCrates(amount)
local ohString1 = "43"
local ohNumber2 = 2
local ohString3 = "SID"
local ohString4 = "cratet1_hw"

addLog("Opening " .. amount .. " Halloween crates...", "success")

for i = 1, amount do
game:GetService("ReplicatedStorage").GameEvents.Misk.RequestOpenCrate:FireServer(ohString1, ohNumber2, ohString3, ohString4)
if i % 10 == 0 then -- Wait every 10 crates to prevent potential rate limiting
wait(0.1)
end
end

addLog("Finished opening " .. amount .. " Halloween crates!", "success")
end

local function openBlackMarketCrates(amount)
local ohString1 = "43"
local ohNumber2 = 2
local ohString3 = "SID"
local ohString4 = "cratet1_bm"

addLog("Opening " .. amount .. " Black Market crates...", "success")

for i = 1, amount do
game:GetService("ReplicatedStorage").GameEvents.Misk.RequestOpenCrate:FireServer(ohString1, ohNumber2, ohString3, ohString4)
if i % 10 == 0 then -- Wait every 10 crates to prevent potential rate limiting
wait(0.1)
end
end

addLog("Finished opening " .. amount .. " Black Market crates!", "success")
end

local function openT0Crates(amount)
-- This script was generated by Hydroxide's RemoteSpy: https://github.com/Upbolt/Hydroxide

local ohString1 = "66"
local ohNumber2 = 63
local ohString3 = "SID"
local ohString4 = "cratet1"

addLog("Opening " .. amount .. " T0 crates...", "success")

for i = 1, amount do
game:GetService("ReplicatedStorage").GameEvents.Misk.RequestOpenCrate:FireServer(ohString1, ohNumber2, ohString3, ohString4)
if i % 10 == 0 then -- Wait every 10 crates to prevent potential rate limiting
wait(0.1)
end
end

addLog("Finished opening " .. amount .. " T0 crates!", "success")
end

-- FOV Circle creation
local fovCircle = Drawing.new("Circle")
fovCircle.Thickness = 2
fovCircle.NumSides = 64
fovCircle.Radius = fovRadius
fovCircle.Filled = false
fovCircle.Color = Color3.fromRGB(255, 255, 255)
fovCircle.Transparency = 0.7
fovCircle.Visible = false

-- ESP colors (updated with specific crate colors and gem color)
local espColors = {
players = Color3.fromRGB(255, 0, 0),
tier0Crate = Color3.fromRGB(128, 128, 128), -- Grey for Tier 0 Crate
halloweenCrate = Color3.fromRGB(138, 43, 226), -- Purple Halloween color
sacrifice = Color3.fromRGB(0, 0, 0), -- Black outline
regularCrates = Color3.fromRGB(0, 255, 0), -- Green for other crates
gems = Color3.fromRGB(255, 0, 0) -- Red for gem pickups
}

-- Cache for tracked objects to avoid repeated searches
local trackedModels = {}
local trackedPlayers = {}
local trackedGems = {} -- New cache for gem pickups

-- Teleport function with return teleport feature
local function teleportToModel(model)
if not model or not model.Parent then return end

local character = player.Character
if not character or not character:FindFirstChild("HumanoidRootPart") then return end

local humanoidRootPart = character.HumanoidRootPart

-- Store original position before teleporting
local originalPosition = humanoidRootPart.Position
local originalCFrame = humanoidRootPart.CFrame

-- Get the model's position
local targetPosition
if model:FindFirstChild("HumanoidRootPart") then
targetPosition = model.HumanoidRootPart.Position
elseif model.PrimaryPart then
targetPosition = model.PrimaryPart.Position
else
-- Find the first part in the model to use as reference
local firstPart = model:FindFirstChildOfClass("Part") or model:FindFirstChildOfClass("MeshPart")
if firstPart then
targetPosition = firstPart.Position
else
return -- No valid part found
end
end

-- Teleport slightly above the target to avoid getting stuck
targetPosition = targetPosition + Vector3.new(0, 5, 0)

-- Perform the teleport
humanoidRootPart.CFrame = CFrame.new(targetPosition)

-- Increment counter if it's a trackable item
if model.Name == "CrateModelHW" then
incrementCrateCounter("HW")
elseif model.Name == "CrateModel_T0" or model.Name == "CrateModel" then
incrementCrateCounter("T0")
elseif model.Name == "GemPickupModel" then
incrementGemCounter()
end

-- Notify the player
pcall(function()
StarterGui:SetCore("ChatMakeSystemMessage", {
Text = "Teleported to " .. modelsToTrack[model.Name] .. "!";
Color = Color3.fromRGB(0, 255, 255);
Font = Enum.Font.SourceSansBold;
TextSize = 20;
})
end)

-- Wait 0.5 seconds and teleport back to original position
spawn(function()
wait(0.5)
-- Check if character still exists before teleporting back
if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
player.Character.HumanoidRootPart.CFrame = originalCFrame

-- Notify about return teleport
pcall(function()
StarterGui:SetCore("ChatMakeSystemMessage", {
Text = "Returned to original position!";
Color = Color3.fromRGB(255, 255, 0);
Font = Enum.Font.SourceSansBold;
TextSize = 18;
})
end)
end
end)
end

-- Function to create an outline
local function createOutline(model, color)
local highlight = Instance.new("Highlight")
highlight.Parent = model
highlight.Adornee = model
highlight.FillColor = color
highlight.OutlineColor = color
highlight.FillTransparency = 1 -- Make the fill transparent
highlight.OutlineTransparency = 0 -- Make the outline visible
highlight.Name = "ESPHighlight"
return highlight
end

-- Function to create a label above the model
local function createLabel(model, text)
local billboardGui = Instance.new("BillboardGui")
billboardGui.Size = UDim2.new(1, 0, 1, 0)
billboardGui.StudsOffset = Vector3.new(0, 3, 0)
billboardGui.AlwaysOnTop = true
billboardGui.Parent = model
billboardGui.Name = "ESPLabel"

local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0)
textLabel.BackgroundTransparency = 1
textLabel.Text = text
textLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
textLabel.TextScaled = true
textLabel.Font = Enum.Font.SourceSansBold
textLabel.TextStrokeTransparency = 0
textLabel.TextStrokeColor3 = Color3.fromRGB(0, 0, 0)
textLabel.Parent = billboardGui

return textLabel
end

-- Function to update the text size based on distance
local function updateTextSize(textLabel, model)
if not model.Parent or not textLabel.Parent then return end
local distance = (model.Position - camera.CFrame.Position).Magnitude
local scaleFactor = math.clamp(100 / distance, 0.5, 3) -- Improved scaling
textLabel.TextScaled = false
textLabel.TextSize = math.floor(14 * scaleFactor)
end

-- Function to clean up ESP elements
local function cleanupESP(object)
local highlight = object:FindFirstChild("ESPHighlight")
local label = object:FindFirstChild("ESPLabel")
if highlight then highlight:Destroy() end
if label then label:Destroy() end
end

-- Function to check for gem pickups in WorldIgnore.Pickups
local function checkForGems()
if not espEnabled.gems and not teleportEnabled.gems then return end

local worldIgnore = workspace:FindFirstChild("WorldIgnore")
if not worldIgnore then return end

local pickups = worldIgnore:FindFirstChild("Pickups")
if not pickups then return end

-- Clean up destroyed gems from cache
for i = #trackedGems, 1, -1 do
if not trackedGems[i] or not trackedGems[i].Parent then
table.remove(trackedGems, i)
end
end

-- Search for GemPickupModel instances
for _, model in ipairs(pickups:GetChildren()) do
if model:IsA("Model") and model.Name == "GemPickupModel" then
local alreadyTracked = false
for _, tracked in ipairs(trackedGems) do
if tracked == model then
alreadyTracked = true
break
end
end

if not alreadyTracked then
-- Add ESP if enabled
if espEnabled.gems then
createOutline(model, espColors.gems)
createLabel(model, "Gem Pickup")
end

table.insert(trackedGems, model)

-- Teleport if enabled
if teleportEnabled.gems then
teleportToModel(model)
end

-- Notify the player
pcall(function()
StarterGui:SetCore("ChatMakeSystemMessage", {
Text = "Gem Pickup spawned!";
Color = espColors.gems;
Font = Enum.Font.SourceSansBold;
TextSize = 24;
})
end)
end
end
end
end

-- Function to check for models in the workspace (fixed ESP with specific colors + teleport)
local function checkForModels()
if not espEnabled.crates and not espEnabled.sacrifice and not teleportEnabled.crates and not teleportEnabled.sacrifice then return end

-- Clean up destroyed models from cache
for i = #trackedModels, 1, -1 do
if not trackedModels[i] or not trackedModels[i].Parent then
table.remove(trackedModels, i)
end
end

-- Search through workspace descendants for models
for _, model in ipairs(workspace:GetDescendants()) do
if model:IsA("Model") and modelsToTrack[model.Name] and model.Name ~= "GemPickupModel" then
local alreadyTracked = false
for _, tracked in ipairs(trackedModels) do
if tracked == model then
alreadyTracked = true
break
end
end

if not alreadyTracked then
local color
local isESPEnabled
local isTeleportEnabled

-- Assign specific colors based on model name
if model.Name == "Sacrifice" then
color = espColors.sacrifice
isESPEnabled = espEnabled.sacrifice
isTeleportEnabled = teleportEnabled.sacrifice
elseif model.Name == "CrateModelHW" then -- Halloween Crate
color = espColors.halloweenCrate
isESPEnabled = espEnabled.crates
isTeleportEnabled = teleportEnabled.crates
elseif model.Name == "CrateModel_T0" or model.Name == "CrateModel" then -- Tier 0 Crate
color = espColors.tier0Crate
isESPEnabled = espEnabled.crates
isTeleportEnabled = teleportEnabled.crates
else -- All other crates (T1, T2, etc.)
color = espColors.regularCrates
isESPEnabled = espEnabled.crates
isTeleportEnabled = teleportEnabled.crates
end

-- Add ESP if enabled
if isESPEnabled then
createOutline(model, color)
createLabel(model, modelsToTrack[model.Name])
end

table.insert(trackedModels, model)

-- Teleport if enabled
if isTeleportEnabled then
teleportToModel(model)
end

-- Notify the player
pcall(function()
StarterGui:SetCore("ChatMakeSystemMessage", {
Text = model.Name .. " has spawned!";
Color = color;
Font = Enum.Font.SourceSansBold;
TextSize = 24;
})
end)
end
end
end
end

-- Function to check for players in the workspace (fixed ESP)
local function checkForPlayers()
if not espEnabled.players then
-- Clean up player ESP if disabled
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= Players.LocalPlayer and plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then
cleanupESP(plr.Character.HumanoidRootPart)
end
end
return
end

for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= Players.LocalPlayer then
local character = plr.Character
if character and character:FindFirstChild("HumanoidRootPart") then
local humanoidRootPart = character.HumanoidRootPart
if not humanoidRootPart:FindFirstChild("ESPHighlight") then
createOutline(humanoidRootPart, espColors.players)
createLabel(humanoidRootPart, plr.Name) -- Add player name label
end
end
end
end
end

-- Improved cursor aimbot function (targets nearest player to cursor)
local function aimbot()
if not aimbotEnabled then return end

local target = nil
local shortestDistance = math.huge
local mousePos = Vector2.new(mouse.X, mouse.Y)

for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= Players.LocalPlayer then
local character = plr.Character
if character and character:FindFirstChild("Head") and character:FindFirstChild("HumanoidRootPart") then
local head = character.Head
local screenPos, onScreen = camera:WorldToViewportPoint(head.Position)

if onScreen then
-- Target the head position, move up significantly to ensure it's at head level
local targetPos = Vector2.new(screenPos.X, screenPos.Y - 50)
local distance = (targetPos - mousePos).Magnitude

-- Only target players within FOV circle and closer than current target
if distance <= fovRadius and distance < shortestDistance then
shortestDistance = distance
target = targetPos
end
end
end
end
end

if target and isLeftClickHeld then
-- Smooth mouse movement
local currentPos = Vector2.new(mouse.X, mouse.Y)
local targetPos = target
local smoothPos = currentPos:lerp(targetPos, aimbotSmoothing)

-- Use mousemoverel for more reliable movement
local deltaX = smoothPos.X - currentPos.X
local deltaY = smoothPos.Y - currentPos.Y
mousemoverel(deltaX, deltaY)
end
end

-- Update FOV circle position
local function updateFovCircle()
if showFovCircle and aimbotEnabled then
fovCircle.Position = Vector2.new(mouse.X, mouse.Y)
fovCircle.Radius = fovRadius
fovCircle.Visible = true
else
fovCircle.Visible = false
end
end

-- Connect functions with optimized delays
local modelCheckDelay = 0.3 -- Check every 0.3 seconds
local gemCheckDelay = 0.2 -- Check gems more frequently since they might spawn and disappear quickly
local playerCheckDelay = 0.5 -- Check players less frequently
local lastModelCheck = tick()
local lastGemCheck = tick()
local lastPlayerCheck = tick()

RunService.Stepped:Connect(function()
local currentTime = tick()

if currentTime - lastModelCheck >= modelCheckDelay then
checkForModels()
lastModelCheck = currentTime
end

if currentTime - lastGemCheck >= gemCheckDelay then
checkForGems()
lastGemCheck = currentTime
end

if currentTime - lastPlayerCheck >= playerCheckDelay then
checkForPlayers()
lastPlayerCheck = currentTime
end
end)

-- Optimized text size updates (less frequent)
local textUpdateDelay = 0.1 -- Update every 0.1 seconds instead of every frame
local lastTextUpdate = tick()

RunService.RenderStepped:Connect(function()
if tick() - lastTextUpdate >= textUpdateDelay then
-- Update text for tracked models
for _, model in ipairs(trackedModels) do
if model.Parent then
local label = model:FindFirstChild("ESPLabel")
if label and label:FindFirstChildOfClass("TextLabel") then
updateTextSize(label.TextLabel, model)
end
end
end

-- Update text for tracked gems
for _, gem in ipairs(trackedGems) do
if gem.Parent then
local label = gem:FindFirstChild("ESPLabel")
if label and label:FindFirstChildOfClass("TextLabel") then
updateTextSize(label.TextLabel, gem)
end
end
end

-- Update text for players
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= Players.LocalPlayer and plr.Character then
local humanoidRootPart = plr.Character:FindFirstChild("HumanoidRootPart")
if humanoidRootPart then
local label = humanoidRootPart:FindFirstChild("ESPLabel")
if label and label:FindFirstChildOfClass("TextLabel") then
updateTextSize(label.TextLabel, humanoidRootPart)
end
end
end
end

lastTextUpdate = tick()
end
end)

-- Update aimbot and FOV circle
RunService.RenderStepped:Connect(aimbot)
RunService.RenderStepped:Connect(updateFovCircle)

-- Detect left mouse button press
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.UserInputType == Enum.UserInputType.MouseButton1 then
isLeftClickHeld = true
end
end)

UserInputService.InputEnded:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.UserInputType == Enum.UserInputType.MouseButton1 then
isLeftClickHeld = false
-- Trigger rapid fire macro when left click is released
if rapidFireEnabled then
spawn(rapidFireNoScope)
end
end
end)

-- Clean up function for when ESP is disabled
local function toggleESP(espType, enabled)
if not enabled then
if espType == "players" then
for _, plr in ipairs(Players:GetPlayers()) do
if plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") then
cleanupESP(plr.Character.HumanoidRootPart)
end
end
elseif espType == "crates" or espType == "sacrifice" then
for _, model in ipairs(trackedModels) do
if model.Parent then
local shouldClean = false
if espType == "crates" and model.Name ~= "Sacrifice" then
shouldClean = true
elseif espType == "sacrifice" and model.Name == "Sacrifice" then
shouldClean = true
end

if shouldClean then
cleanupESP(model)
end
end
end
elseif espType == "gems" then
for _, gem in ipairs(trackedGems) do
if gem.Parent then
cleanupESP(gem)
end
end
end
end
end

-- Add menus and sections to the UI
local menu = window:addMenu({
text = 'Main Features'
})

local section = menu:addSection({
text = 'ESP & Aimbot',
side = 'auto',
showMinButton = true,
})

do
local playerEspToggle = section:addToggle({
text = 'Player ESP',
state = false
})

playerEspToggle:bindToEvent('onToggle', function(newState)
espEnabled.players = newState
toggleESP("players", newState)
end)

local crateEspToggle = section:addToggle({
text = 'Crate ESP',
state = false
})

crateEspToggle:bindToEvent('onToggle', function(newState)
espEnabled.crates = newState
toggleESP("crates", newState)
end)

local sacrificeEspToggle = section:addToggle({
text = 'Sacrifice Knife ESP',
state = false
})

sacrificeEspToggle:bindToEvent('onToggle', function(newState)
espEnabled.sacrifice = newState
toggleESP("sacrifice", newState)
end)

-- New Gem ESP Toggle
local gemEspToggle = section:addToggle({
text = 'Gem Pickup ESP',
state = false
})

gemEspToggle:bindToEvent('onToggle', function(newState)
espEnabled.gems = newState
toggleESP("gems", newState)
end)

local aimbotToggle = section:addToggle({
text = 'Cursor Aimbot',
state = false
})

aimbotToggle:bindToEvent('onToggle', function(newState)
aimbotEnabled = newState
end)

local rapidFireToggle = section:addToggle({
text = 'Rapid Fire No Scope',
state = false
})

rapidFireToggle:bindToEvent('onToggle', function(newState)
rapidFireEnabled = newState
end)

local fovToggle = section:addToggle({
text = 'Show FOV Circle',
state = false
})

fovToggle:bindToEvent('onToggle', function(newState)
showFovCircle = newState
end)

local smoothingSlider = section:addSlider({
text = 'Aimbot Smoothing',
min = 0.1,
max = 1.0,
value = aimbotSmoothing,
increment = 0.1
})

smoothingSlider:bindToEvent('onValueChange', function(newValue)
aimbotSmoothing = newValue
end)

local fovSlider = section:addSlider({
text = 'FOV Radius',
min = 50,
max = 300,
value = fovRadius,
increment = 10
})

fovSlider:bindToEvent('onValueChange', function(newValue)
fovRadius = newValue
end)
end

-- New Teleport Section
local teleportSection = menu:addSection({
text = 'Teleport Features',
side = 'right',
showMinButton = true,
})

do
local crateTeleportToggle = teleportSection:addToggle({
text = 'Auto Teleport to Crates',
state = false
})

crateTeleportToggle:bindToEvent('onToggle', function(newState)
teleportEnabled.crates = newState
if newState then
pcall(function()
StarterGui:SetCore("ChatMakeSystemMessage", {
Text = "Auto teleport to crates enabled!";
Color = Color3.fromRGB(0, 255, 0);
Font = Enum.Font.SourceSansBold;
TextSize = 18;
})
end)
end
end)

local sacrificeTeleportToggle = teleportSection:addToggle({
text = 'Auto Teleport to Sacrifice',
state = false
})

sacrificeTeleportToggle:bindToEvent('onToggle', function(newState)
teleportEnabled.sacrifice = newState
if newState then
pcall(function()
StarterGui:SetCore("ChatMakeSystemMessage", {
Text = "Auto teleport to sacrifice enabled!";
Color = Color3.fromRGB(255, 165, 0);
Font = Enum.Font.SourceSansBold;
TextSize = 18;
})
end)
end
end)

-- New Gem Teleport Toggle
local gemTeleportToggle = teleportSection:addToggle({
text = 'Auto Teleport to Gems',
state = false
})

gemTeleportToggle:bindToEvent('onToggle', function(newState)
teleportEnabled.gems = newState
if newState then
pcall(function()
StarterGui:SetCore("ChatMakeSystemMessage", {
Text = "Auto teleport to gems enabled!";
Color = Color3.fromRGB(255, 0, 0);
Font = Enum.Font.SourceSansBold;
TextSize = 18;
})
end)
end
end)

-- Reset Counter Button
local resetCounterButton = teleportSection:addButton({
text = 'Reset All Counters'
})

resetCounterButton:bindToEvent('onPress', function()
crateCounter.hwCrates = 0
crateCounter.t0Crates = 0
gemCounter = 0
updateCrateCounterDisplay()
pcall(function()
StarterGui:SetCore("ChatMakeSystemMessage", {
Text = "All counters reset!";
Color = Color3.fromRGB(255, 255, 0);
Font = Enum.Font.SourceSansBold;
TextSize = 18;
})
end)
end)
end

-- NEW BULK CRATE OPENER MENU
local bulkMenu = window:addMenu({
text = 'Bulk Crate Opener'
})

local bulkSection = bulkMenu:addSection({
text = 'Halloween Crates',
side = 'auto',
showMinButton = true,
})

do
local halloweenSlider = bulkSection:addSlider({
text = 'Halloween Crate Amount',
min = 5,
max = 200,
value = bulkOpenerAmounts.halloween,
increment = 5
})

halloweenSlider:bindToEvent('onValueChange', function(newValue)
bulkOpenerAmounts.halloween = newValue
end)

local halloweenOpenButton = bulkSection:addButton({
text = 'Open Halloween Crates'
})

halloweenOpenButton:bindToEvent('onPress', function()
spawn(function()
openHalloweenCrates(bulkOpenerAmounts.halloween)
end)
end)
end

local bulkSection2 = bulkMenu:addSection({
text = 'Black Market Crates',
side = 'right',
showMinButton = true,
})

do
local blackMarketSlider = bulkSection2:addSlider({
text = 'Black Market Amount',
min = 5,
max = 200,
value = bulkOpenerAmounts.blackmarket,
increment = 5
})

blackMarketSlider:bindToEvent('onValueChange', function(newValue)
bulkOpenerAmounts.blackmarket = newValue
end)

local blackMarketOpenButton = bulkSection2:addButton({
text = 'Open Black Market Crates'
})

blackMarketOpenButton:bindToEvent('onPress', function()
spawn(function()
openBlackMarketCrates(bulkOpenerAmounts.blackmarket)
end)
end)
end

local bulkSection3 = bulkMenu:addSection({
text = 'T0 Crates',
side = 'auto',
showMinButton = true,
})

do
local t0Slider = bulkSection3:addSlider({
text = 'T0 Crate Amount',
min = 5,
max = 200,
value = bulkOpenerAmounts.t0,
increment = 5
})

t0Slider:bindToEvent('onValueChange', function(newValue)
bulkOpenerAmounts.t0 = newValue
end)

local t0OpenButton = bulkSection3:addButton({
text = 'Open T0 Crates'
})

t0OpenButton:bindToEvent('onPress', function()
spawn(function()
openT0Crates(bulkOpenerAmounts.t0)
end)
end)
end

-- Utils menu
local utilsMenu = window:addMenu({
text = 'Utils'
})

local utilsSection = utilsMenu:addSection({
text = 'Utility Features',
side = 'auto',
showMinButton = true
})

do
local antiAfkToggle = utilsSection:addToggle({
text = 'Anti-AFK',
state = false
})

antiAfkToggle:bindToEvent('onToggle', function(newState)
antiAfkEnabled = newState
if newState then
enableAntiAfk()
else
disableAntiAfk()
end
end)
end

-- Logs menu
local logsMenu = window:addMenu({
text = 'Activity Logs'
})

logsSection = logsMenu:addSection({
text = 'Live Activity Monitor',
side = 'auto',
showMinButton = false
})

do
-- Add static labels that will show log information
logsSection:addLabel({
text = '=== ACTIVITY MONITOR ==='
})

logsSection:addLabel({
text = 'Check chat for live log updates!'
})

local clearLogsButton = logsSection:addButton({
text = 'Clear All Logs',
style = 'small'
})

clearLogsButton:bindToEvent('onClick', function()
clearLogs()
end)

local testAntiAfkButton = logsSection:addButton({
text = 'Test Anti-AFK',
style = 'small'
})

testAntiAfkButton:bindToEvent('onClick', function()
addLog("SIMULATED KICK BLOCK - System working!", "error")
end)

-- Add status labels
logsSection:addLabel({
text = 'Status indicators:'
})

logsSection:addLabel({
text = 'GREEN = System events'
})

logsSection:addLabel({
text = 'RED = Blocked kicks/Gems'
})

logsSection:addLabel({
text = 'CYAN = Anti-AFK ready'
})

logsSection:addLabel({
text = 'ORANGE = Warnings'
})
end

-- Colors menu
local colorsMenu = window:addMenu({
text = 'ESP Colors'
})

local section = colorsMenu:addSection({
text = 'Customize Colors',
side = 'auto',
showMinButton = false
})

do
local playerEspColorPicker = section:addColorPicker({
text = 'Player ESP Color',
color = espColors.players
})

playerEspColorPicker:bindToEvent('onColorChange', function(newColor)
espColors.players = newColor
-- Update all existing player highlights immediately
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= Players.LocalPlayer then
local character = plr.Character
if character and character:FindFirstChild("HumanoidRootPart") then
local highlight = character.HumanoidRootPart:FindFirstChild("ESPHighlight")
if highlight then
highlight.OutlineColor = newColor
highlight.FillColor = newColor
end
end
end
end
end)

local tier0CrateColorPicker = section:addColorPicker({
text = 'Tier 0 Crate Color',
color = espColors.tier0Crate
})

tier0CrateColorPicker:bindToEvent('onColorChange', function(newColor)
espColors.tier0Crate = newColor
-- Update all existing tier 0 crate highlights immediately
for _, model in ipairs(trackedModels) do
if model.Parent and (model.Name == "CrateModel_T0" or model.Name == "CrateModel") then
local highlight = model:FindFirstChild("ESPHighlight")
if highlight then
highlight.OutlineColor = newColor
highlight.FillColor = newColor
end
end
end
end)

local halloweenCrateColorPicker = section:addColorPicker({
text = 'Halloween Crate Color',
color = espColors.halloweenCrate
})

halloweenCrateColorPicker:bindToEvent('onColorChange', function(newColor)
espColors.halloweenCrate = newColor
-- Update all existing halloween crate highlights immediately
for _, model in ipairs(trackedModels) do
if model.Parent and model.Name == "CrateModelHW" then
local highlight = model:FindFirstChild("ESPHighlight")
if highlight then
highlight.OutlineColor = newColor
highlight.FillColor = newColor
end
end
end
end)

local regularCrateColorPicker = section:addColorPicker({
text = 'Regular Crate Color',
color = espColors.regularCrates
})

regularCrateColorPicker:bindToEvent('onColorChange', function(newColor)
espColors.regularCrates = newColor
-- Update all existing regular crate highlights immediately
for _, model in ipairs(trackedModels) do
if model.Parent and (model.Name == "CrateModel_T1" or model.Name == "CrateModel_T2") then
local highlight = model:FindFirstChild("ESPHighlight")
if highlight then
highlight.OutlineColor = newColor
highlight.FillColor = newColor
end
end
end
end)

local sacrificeEspColorPicker = section:addColorPicker({
text = 'Sacrifice Knife Color',
color = espColors.sacrifice
})

sacrificeEspColorPicker:bindToEvent('onColorChange', function(newColor)
espColors.sacrifice = newColor
-- Update all existing sacrifice highlights immediately
for _, model in ipairs(trackedModels) do
if model.Parent and model.Name == "Sacrifice" then
local highlight = model:FindFirstChild("ESPHighlight")
if highlight then
highlight.OutlineColor = newColor
highlight.FillColor = newColor
end
end
end
end)

-- New Gem ESP Color Picker
local gemEspColorPicker = section:addColorPicker({
text = 'Gem Pickup Color',
color = espColors.gems
})

gemEspColorPicker:bindToEvent('onColorChange', function(newColor)
espColors.gems = newColor
-- Update all existing gem highlights immediately
for _, gem in ipairs(trackedGems) do
if gem.Parent then
local highlight = gem:FindFirstChild("ESPHighlight")
if highlight then
highlight.OutlineColor = newColor
highlight.FillColor = newColor
end
end
end
-- Also update the counter GUI color
local gemLabel = crateCounterGui.CounterFrame.GemLabel
gemLabel.TextColor3 = newColor
end)
end

-- Initialize the counter display
updateCrateCounterDisplay()

-- Add initial log entry
addLog("FuzzHub v2.2 with Bulk Opener loaded successfully!", "success")

-- Anti-AFK Functions
local function enableAntiAfk()
if antiAfkConnection then return end -- Already enabled

addLog("Anti-AFK system activated!", "success")

local bb = game:service('VirtualUser')
antiAfkConnection = game:service('Players').LocalPlayer.Idled:connect(function()
bb:CaptureController()
bb:ClickButton2(Vector2.new())
addLog("BLOCKED IDLE KICK ATTEMPT!", "error")
wait(2)
addLog("System ready - monitoring for kicks", "anti-afk")
end)
end

local function disableAntiAfk()
if antiAfkConnection then
antiAfkConnection:Disconnect()
antiAfkConnection = nil
addLog("Anti-AFK system deactivated", "warning")
end
end

2. Script Tap Simulator Roblox

--CurrentKEY: "Bean" or Join discord https://discord.gg/V5TwMPa7mY
loadstring(game:HttpGet("https://raw.githubusercontent.com/bigbeanscripts/TapSim/refs/heads/main/Main"))()

Also Read: Eurotunnel, Border Roleplay Script

How to use KAT X Script

Using KAT X Script is very simple. Follow these steps:

  • Open Roblox and launch KAT X
  • Open your preferred script executor
  • Paste the KAT X Script
  • Click Execute
  • Enable aim, ESP, and combat features
  • Start dominating the match

Always make sure to use safe and trusted executors to avoid problems.

Frequently Asked Questions (FAQs)

Is KAT X Script safe to use?

Does the script work on all KAT X maps?

Can I turn off aim assist anytime?

Does ESP show all players?

Is KAT X Script free?

Conclusion

The KAT X Script is perfect for players who want a competitive edge in KAT X. With auto aim, ESP, hitbox expansion, and movement control, it significantly improves combat performance while keeping gameplay smooth and enjoyable.

Leave a Comment