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.

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?
Yes, when used with a reliable and updated executor.
Does the script work on all KAT X maps?
Yes, it works across all supported maps.
Can I turn off aim assist anytime?
Yes, all features are toggle-based.
Does ESP show all players?
Yes, it highlights enemies clearly.
Is KAT X Script free?
Most versions are free to use.
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.
