Script
Key Required

Script

Knife Ability Testx6kex6ke 21.8K views 819 executesUpdated Sep 24, 2025
1.7/ 5(3 votes)
1233% Positive
Lua Script•1346 lines (43097 chars)
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

Features & Information

MAKE SURE YOU COPY EVERYTHING!! (do copy script) If some features don't work, your executor is too weak. A few features: Crate teleport (autofarm) Player ESP Aimbot (Hold down) Sacrifice knife teleport (rare asf) Bulk open crates
#katx#kat#aimbot#esp

Community Comments (1)

ericcalderon9090ericcalderon9090Oct 16, 2025

for some reason it doesnt work

More Scripts for Knife Ability Test