Description

Run this Huss Valley keyless script made by elite with many features like Movement, Dash and Powerups.

Features

  • + Movement
  • + Dash
  • + PowerUps
  • + ESP
  • + Super Speed value
  • + Infinite Jump
  • + Infinite Dash
  • + Dash Boost
  • + Dash Multiplier
  • + Manual Force Dash
  • + Force Dash Now
  • + Infinite PowerUp
  • + No Cooldown
  • + Ability Spam
  • + Spam Delay
  • + Wipe Cooldowns Now
  • + Traces
  • + Names
  • + Distance
  • + Role Tags
  • + No clip
  • + Fly
  • + Fly Speed

Supported Executors

Xeno Volt Potassium Wave Delta Solara Opiumware Codex MacSploit Vega X Velocity

Script

Add Xeno Scripts as a preferred source
--[[
    HUSS VALLEY  ·  ELITE
    Rayfield Gen-2 UI · Elite purple branding

    SPEED · INFINITE DASH · CHASER ESP (FIXED) · HITBOX EXPANDER · INFINITE POWERUP
    Only shows real Chasers. Hitbox expander for easy knife tags.

    Use: paste into any UNC executor (Xeno / JJSploit / etc) while in Huss Valley
    Keyless · free
]]

local Rayfield = loadstring(game:HttpGet("https://sirius.menu/rayfield"))()

local Players          = game:GetService("Players")
local RunService       = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Workspace        = game:GetService("Workspace")
local Lighting         = game:GetService("Lighting")
local TweenService     = game:GetService("TweenService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local StarterGui       = game:GetService("StarterGui")
local CollectionService = game:GetService("CollectionService")

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

-- ======================== SETTINGS ========================
local S = {
    -- Movement
    Speed         = false,
    WalkSpeed     = 48,
    SuperSpeed    = false,
    SuperSpeedVal = 90,
    InfiniteJump  = false,
    Noclip        = false,
    Fly           = false,
    FlySpeed      = 70,

    -- Dash
    InfiniteDash  = false,
    DashBoost     = false,
    DashMult      = 2.4,
    AutoDash      = false,
    AutoDashKey   = Enum.KeyCode.Q,

    -- Powerups / Abilities
    InfinitePower = false,
    NoCooldown    = false,
    AutoAbility   = false,
    AbilitySpam   = false,
    SpamDelay     = 0.35,

    -- ESP (CHASER ONLY)
    ChaserESP     = true,
    Box           = true,
    Tracer        = true,
    Name          = true,
    Distance      = true,
    RoleTag       = true,
    MaxDist       = 2500,
    ChaserColor   = Color3.fromRGB(188, 78, 255),
    TracerColor   = Color3.fromRGB(160, 60, 240),
    NameColor     = Color3.fromRGB(240, 230, 255),

    -- Hitbox Expander (for when YOU are Chaser)
    HitboxExpand  = false,
    HitboxSize    = 8,          -- studs (default humanoid is ~2)
    HitboxVisible = false,      -- show expanded parts
    HitboxColor   = Color3.fromRGB(188, 78, 255),

    -- Visual
    FullBright    = false,
    NoFog         = false,
    FOVUnlock     = false,
    CustomFOV     = 90,

    -- Misc
    AntiAFK       = true,
    AutoReattach  = true,
    DiscordLED    = true,
    DiscordLEDColor = Color3.fromRGB(188, 78, 255),
    DiscordLink   = "https://discord.gg/JyHTa3M7h",
}

-- ======================== STATE ========================
local espCache   = {}
local flyBV, flyBG
local connections = {}
local originalWalkSpeed = 16
local noclipConn
local speedConn
local dashConn
local abilityConn
local hitboxConn
local lastAbility = 0
local expandedParts = {} -- [BasePart] = originalSize

-- LED Discord footer
local DiscordLEDGlow = Drawing.new("Text")
DiscordLEDGlow.Text = "discord.gg/JyHTa3M7h"
DiscordLEDGlow.Size = 13
DiscordLEDGlow.Center = true
DiscordLEDGlow.Outline = false
DiscordLEDGlow.Color = S.DiscordLEDColor
DiscordLEDGlow.Transparency = 0.72
DiscordLEDGlow.Visible = S.DiscordLED

local DiscordLEDText = Drawing.new("Text")
DiscordLEDText.Text = "discord.gg/JyHTa3M7h"
DiscordLEDText.Size = 12
DiscordLEDText.Center = true
DiscordLEDText.Outline = true
DiscordLEDText.Color = S.DiscordLEDColor
DiscordLEDText.Transparency = 1
DiscordLEDText.Visible = S.DiscordLED

local DiscordLEDLine = Drawing.new("Line")
DiscordLEDLine.Thickness = 1
DiscordLEDLine.Color = S.DiscordLEDColor
DiscordLEDLine.Transparency = 0.6
DiscordLEDLine.Visible = S.DiscordLED

-- ======================== UI ========================
local Window = Rayfield:CreateWindow({
    Name = "ELITE  ·  HUSS VALLEY",
    LoadingTitle = "Elite Scripts",
    LoadingSubtitle = "Huss Valley — Chaser ESP + Hitbox",
    Theme = "Default",
    ConfigurationSaving = {
        Enabled = true,
        FolderName = "EliteScripts",
        FileName = "HussValleyConfig"
    },
    Discord = { Enabled = false },
    KeySystem = false
})

local TabMove   = Window:CreateTab("MOVEMENT", 7743878308)
local TabDash   = Window:CreateTab("DASH", 7743878308)
local TabPower  = Window:CreateTab("POWERUPS", 7743878308)
local TabESP    = Window:CreateTab("ESP", 7743878308)
local TabHitbox = Window:CreateTab("HITBOX", 7743878308)
local TabVisual = Window:CreateTab("VISUAL", 7743878308)
local TabMisc   = Window:CreateTab("MISC", 7743878308)
local TabAbout  = Window:CreateTab("ABOUT", 7743878308)

-- ======================== HELPERS ========================
local function getChar()
    return LocalPlayer.Character
end

local function getHum()
    local c = getChar()
    return c and c:FindFirstChildOfClass("Humanoid")
end

local function getHRP()
    local c = getChar()
    return c and c:FindFirstChild("HumanoidRootPart")
end

local function notify(title, content, dur)
    Rayfield:Notify({
        Title = title or "ELITE",
        Content = content or "",
        Duration = dur or 3,
        Image = 4483362458
    })
end

--[[
    FIXED CHASER DETECTION
    Priority order (most reliable first):
    1. Knife / Tool named Knife / Dagger / Weapon in character
    2. Attribute Role / IsChaser / TeamRole
    3. CollectionService tags
    4. Team name containing "Chaser" / "Hunter"
    5. Child folder/value named Chaser
]]
local function isChaser(plr)
    if not plr or plr == LocalPlayer then return false end
    local char = plr.Character
    if not char then return false end

    -- 1. Knife / melee tool (strongest signal in Huss Valley)
    for _, child in ipairs(char:GetChildren()) do
        if child:IsA("Tool") or child:IsA("Model") then
            local n = string.lower(child.Name)
            if n == "knife" or n == "dagger" or n == "weapon" or n == "sword"
                or string.find(n, "knife") or string.find(n, "dagger")
                or string.find(n, "chaser") then
                return true
            end
        end
    end
    -- also check backpack (sometimes equipped state lags)
    local bp = plr:FindFirstChild("Backpack")
    if bp then
        for _, child in ipairs(bp:GetChildren()) do
            if child:IsA("Tool") then
                local n = string.lower(child.Name)
                if n == "knife" or n == "dagger" or string.find(n, "knife") then
                    return true
                end
            end
        end
    end

    -- 2. Attributes
    local roleAttr = char:GetAttribute("Role") or char:GetAttribute("role")
        or char:GetAttribute("TeamRole") or char:GetAttribute("PlayerRole")
    if roleAttr then
        local r = string.lower(tostring(roleAttr))
        if r == "chaser" or r == "hunter" or r == "catcher" or r == "killer" then
            return true
        end
        if r == "runner" or r == "survivor" then
            return false
        end
    end
    if char:GetAttribute("IsChaser") == true or char:GetAttribute("isChaser") == true then
        return true
    end
    if char:GetAttribute("IsRunner") == true then
        return false
    end

    local hum = char:FindFirstChildOfClass("Humanoid")
    if hum then
        local hRole = hum:GetAttribute("Role") or hum:GetAttribute("role")
        if hRole then
            local r = string.lower(tostring(hRole))
            if r == "chaser" or r == "hunter" then return true end
            if r == "runner" then return false end
        end
    end

    -- 3. CollectionService tags
    pcall(function()
        for _, tag in ipairs(CollectionService:GetTags(char)) do
            local t = string.lower(tostring(tag))
            if t == "chaser" or t == "hunter" or t == "catcher" then
                return true
            end
        end
    end)

    -- 4. Team name
    if plr.Team then
        local tn = string.lower(plr.Team.Name)
        if string.find(tn, "chaser") or string.find(tn, "hunter") or string.find(tn, "catcher") then
            return true
        end
        if string.find(tn, "runner") or string.find(tn, "survivor") then
            return false
        end
    end

    -- 5. Explicit child markers
    if char:FindFirstChild("Chaser") or char:FindFirstChild("IsChaser")
        or char:FindFirstChild("Hunter") or char:FindFirstChild("KnifeMarker") then
        return true
    end

    return false
end

-- ======================== MOVEMENT ========================
-- Soft speed: no BodyVelocity (causes rubberband vs server).
-- Pin WalkSpeed + gentle velocity assist only when moving.

local function getTargetSpeed()
    if S.SuperSpeed then return S.SuperSpeedVal end
    if S.Speed then return S.WalkSpeed end
    return nil
end

local function applySpeed()
    local hum = getHum()
    local hrp = getHRP()
    if not hum or not hrp then return end

    local target = getTargetSpeed()
    if not target then
        hum.WalkSpeed = originalWalkSpeed
        return
    end

    -- pin WalkSpeed every frame (game may overwrite)
    hum.WalkSpeed = target

    local move = hum.MoveDirection
    if move.Magnitude < 0.08 then return end

    local flat = Vector3.new(move.X, 0, move.Z)
    if flat.Magnitude < 0.01 then return end
    flat = flat.Unit

    local vel = hrp.AssemblyLinearVelocity
    local horizontal = Vector3.new(vel.X, 0, vel.Z)
    local currentSpeed = horizontal.Magnitude

    -- only assist if we're below target (don't fight dashes / server)
    if currentSpeed < target * 0.92 then
        local blend = 0.22 -- soft lerp — low = less rubberband
        local desired = flat * target
        local newHoriz = horizontal:Lerp(desired, blend)
        hrp.AssemblyLinearVelocity = Vector3.new(newHoriz.X, vel.Y, newHoriz.Z)
    end
end

local function setupSpeedLoop()
    if speedConn then speedConn:Disconnect() speedConn = nil end
    speedConn = RunService.Heartbeat:Connect(function()
        if S.Speed or S.SuperSpeed then
            applySpeed()
        else
            local hum = getHum()
            if hum then hum.WalkSpeed = originalWalkSpeed end
        end
    end)
end

local function setupNoclip()
    if noclipConn then noclipConn:Disconnect() noclipConn = nil end
    if not S.Noclip then return end
    noclipConn = RunService.Stepped:Connect(function()
        local char = getChar()
        if not char then return end
        for _, part in ipairs(char:GetDescendants()) do
            if part:IsA("BasePart") then
                part.CanCollide = false
            end
        end
    end)
end

local function setupFly()
    if flyBV then flyBV:Destroy() flyBV = nil end
    if flyBG then flyBG:Destroy() flyBG = nil end
    if not S.Fly then return end
    local hrp = getHRP()
    if not hrp then return end
    flyBV = Instance.new("BodyVelocity")
    flyBV.MaxForce = Vector3.new(9e9, 9e9, 9e9)
    flyBV.Velocity = Vector3.zero
    flyBV.Parent = hrp
    flyBG = Instance.new("BodyGyro")
    flyBG.MaxTorque = Vector3.new(9e9, 9e9, 9e9)
    flyBG.P = 9e4
    flyBG.Parent = hrp
    if connections.fly then connections.fly:Disconnect() end
    connections.fly = RunService.RenderStepped:Connect(function()
        if not S.Fly or not flyBV or not flyBG then return end
        local cam = Workspace.CurrentCamera
        flyBG.CFrame = cam.CFrame
        local dir = Vector3.zero
        if UserInputService:IsKeyDown(Enum.KeyCode.W) then dir = dir + cam.CFrame.LookVector end
        if UserInputService:IsKeyDown(Enum.KeyCode.S) then dir = dir - cam.CFrame.LookVector end
        if UserInputService:IsKeyDown(Enum.KeyCode.A) then dir = dir - cam.CFrame.RightVector end
        if UserInputService:IsKeyDown(Enum.KeyCode.D) then dir = dir + cam.CFrame.RightVector end
        if UserInputService:IsKeyDown(Enum.KeyCode.Space) then dir = dir + Vector3.new(0, 1, 0) end
        if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then dir = dir - Vector3.new(0, 1, 0) end
        if dir.Magnitude > 0 then
            flyBV.Velocity = dir.Unit * S.FlySpeed
        else
            flyBV.Velocity = Vector3.zero
        end
    end)
end

UserInputService.JumpRequest:Connect(function()
    if S.InfiniteJump then
        local hum = getHum()
        if hum then hum:ChangeState(Enum.HumanoidStateType.Jumping) end
    end
end)

-- ======================== DASH (HARDENED) ========================
local lastForcedDash = 0
local dashRemoteCache = {}

local function wipeDashState(char, hum)
    if not char then return end
    pcall(function()
        -- attributes (all common names)
        local attrNames = {
            "DashCooldown", "DashCD", "DashReady", "CanDash", "DashAvailable",
            "IsDashing", "DashTimer", "LastDash", "DashCharge", "Charges",
            "dashCooldown", "canDash", "dashReady", "DashEnabled"
        }
        for _, name in ipairs(attrNames) do
            local v = char:GetAttribute(name)
            if v ~= nil then
                if typeof(v) == "boolean" then
                    char:SetAttribute(name, true)
                elseif typeof(v) == "number" then
                    char:SetAttribute(name, 0)
                end
            end
            if hum then
                local hv = hum:GetAttribute(name)
                if hv ~= nil then
                    if typeof(hv) == "boolean" then
                        hum:SetAttribute(name, true)
                    elseif typeof(hv) == "number" then
                        hum:SetAttribute(name, 0)
                    end
                end
            end
        end

        -- NumberValue / IntValue / BoolValue descendants
        for _, v in ipairs(char:GetDescendants()) do
            if v:IsA("NumberValue") or v:IsA("IntValue") then
                local n = string.lower(v.Name)
                if string.find(n, "dash") or string.find(n, "cooldown") or string.find(n, "cd")
                    or string.find(n, "charge") or string.find(n, "stamina") then
                    v.Value = 0
                end
            elseif v:IsA("BoolValue") then
                local n = string.lower(v.Name)
                if string.find(n, "dash") or string.find(n, "ready") or string.find(n, "can")
                    or string.find(n, "available") then
                    v.Value = true
                end
            end
        end

        -- PlayerGui / modules often hold cooldown timers
        local pg = LocalPlayer:FindFirstChild("PlayerGui")
        if pg then
            for _, v in ipairs(pg:GetDescendants()) do
                if (v:IsA("NumberValue") or v:IsA("IntValue")) and string.find(string.lower(v.Name), "dash") then
                    v.Value = 0
                end
            end
        end
    end)
end

local function fireDashRemotes()
    -- cache remotes once, then spam safe fires
    if #dashRemoteCache == 0 then
        pcall(function()
            for _, v in ipairs(ReplicatedStorage:GetDescendants()) do
                if v:IsA("RemoteEvent") then
                    local n = string.lower(v.Name)
                    if string.find(n, "dash") or string.find(n, "slide") or string.find(n, "dodge")
                        or string.find(n, "sidestep") or string.find(n, "lateral") then
                        table.insert(dashRemoteCache, v)
                    end
                end
            end
            -- also check character for local remotes
            local char = getChar()
            if char then
                for _, v in ipairs(char:GetDescendants()) do
                    if v:IsA("RemoteEvent") then
                        local n = string.lower(v.Name)
                        if string.find(n, "dash") or string.find(n, "slide") then
                            table.insert(dashRemoteCache, v)
                        end
                    end
                end
            end
        end)
    end
    for _, r in ipairs(dashRemoteCache) do
        pcall(function()
            r:FireServer()
            r:FireServer(true)
            r:FireServer("Dash")
            r:FireServer(Vector3.new(1, 0, 0))
        end)
    end
end

local function forceDash()
    local char = getChar()
    local hrp = getHRP()
    local hum = getHum()
    if not char or not hrp or not hum then return end
    if tick() - lastForcedDash < 0.12 then return end -- anti-spam
    lastForcedDash = tick()

    wipeDashState(char, hum)
    fireDashRemotes()

    -- pure velocity dash (works even if remote is blocked)
    local cam = Workspace.CurrentCamera
    local right = cam.CFrame.RightVector
    local look = cam.CFrame.LookVector
    local moveDir = Vector3.zero

    if UserInputService:IsKeyDown(Enum.KeyCode.A) then moveDir = moveDir - right end
    if UserInputService:IsKeyDown(Enum.KeyCode.D) then moveDir = moveDir + right end
    -- mild forward bias so it feels like the game's sideways-forward dash
    if UserInputService:IsKeyDown(Enum.KeyCode.W) then
        moveDir = moveDir + Vector3.new(look.X, 0, look.Z).Unit * 0.55
    end
    if moveDir.Magnitude < 0.1 then
        moveDir = right -- default right
    end
    moveDir = Vector3.new(moveDir.X, 0, moveDir.Z).Unit

    local mult = S.DashBoost and S.DashMult or 2.1
    local boost = 48 * mult
    local vy = hrp.AssemblyLinearVelocity.Y
    hrp.AssemblyLinearVelocity = Vector3.new(moveDir.X * boost, math.max(vy, 6), moveDir.Z * boost)

    -- second pulse after a short delay for games that clamp velocity once
    task.delay(0.05, function()
        if not hrp or not hrp.Parent then return end
        local current = hrp.AssemblyLinearVelocity
        hrp.AssemblyLinearVelocity = Vector3.new(moveDir.X * boost * 0.85, current.Y, moveDir.Z * boost * 0.85)
    end)
end

local function setupInfiniteDash()
    if dashConn then dashConn:Disconnect() dashConn = nil end
    if not S.InfiniteDash and not S.DashBoost then return end

    dashConn = RunService.Heartbeat:Connect(function()
        local char = getChar()
        local hum = getHum()
        if not char then return end
        wipeDashState(char, hum)

        -- keep remote cache fresh every few seconds
        if tick() % 4 < 0.03 then
            dashRemoteCache = {}
        end
    end)
end

-- Space / Q / bound key
UserInputService.InputBegan:Connect(function(input, gp)
    if gp then return end

    if input.KeyCode == S.AutoDashKey and (S.AutoDash or S.InfiniteDash) then
        forceDash()
        return
    end

    -- Space while Infinite Dash is on = free dash (Huss Valley dash is lateral on Space)
    if input.KeyCode == Enum.KeyCode.Space and S.InfiniteDash then
        local char = getChar()
        local hum = getHum()
        wipeDashState(char, hum)
        -- small delay so game scripts that set cooldown on Space still get wiped
        task.defer(function()
            wipeDashState(getChar(), getHum())
            if S.DashBoost then
                forceDash()
            end
        end)
        task.delay(0.08, function()
            wipeDashState(getChar(), getHum())
        end)
    end
end)

-- ======================== POWERUPS ========================
local function wipeCooldowns()
    local char = getChar()
    local hum = getHum()
    if not char then return end
    pcall(function()
        for _, v in ipairs(char:GetDescendants()) do
            if v:IsA("NumberValue") or v:IsA("IntValue") or v:IsA("BoolValue") then
                local n = string.lower(v.Name)
                if string.find(n, "cd") or string.find(n, "cooldown") or string.find(n, "delay") or string.find(n, "timer") then
                    if v:IsA("BoolValue") then v.Value = false else v.Value = 0 end
                end
                if string.find(n, "ready") or string.find(n, "available") or string.find(n, "canuse") then
                    if v:IsA("BoolValue") then v.Value = true end
                end
            end
        end
        if hum then
            for attr, _ in pairs(hum:GetAttributes()) do
                local n = string.lower(tostring(attr))
                if string.find(n, "cd") or string.find(n, "cooldown") then
                    hum:SetAttribute(attr, 0)
                end
            end
        end
        for attr, _ in pairs(char:GetAttributes()) do
            local n = string.lower(tostring(attr))
            if string.find(n, "cd") or string.find(n, "cooldown") or string.find(n, "power") then
                char:SetAttribute(attr, 0)
            end
        end
    end)
end

local function setupInfinitePower()
    if abilityConn then abilityConn:Disconnect() end
    if not S.InfinitePower and not S.NoCooldown then return end
    abilityConn = RunService.Heartbeat:Connect(function()
        wipeCooldowns()
    end)
end

local function tryFireAbility()
    if not S.AbilitySpam and not S.AutoAbility then return end
    if tick() - lastAbility < S.SpamDelay then return end
    lastAbility = tick()
    local char = getChar()
    if not char then return end

    local remotes = {}
    pcall(function()
        for _, v in ipairs(ReplicatedStorage:GetDescendants()) do
            if v:IsA("RemoteEvent") or v:IsA("RemoteFunction") then
                local n = string.lower(v.Name)
                if string.find(n, "ability") or string.find(n, "power") or string.find(n, "skill")
                    or string.find(n, "use") or string.find(n, "activate") or string.find(n, "dash")
                    or string.find(n, "rocket") or string.find(n, "leash") or string.find(n, "cloak") then
                    table.insert(remotes, v)
                end
            end
        end
    end)

    for _, r in ipairs(remotes) do
        pcall(function()
            if r:IsA("RemoteEvent") then
                r:FireServer()
                r:FireServer(true)
                r:FireServer("Use")
            end
        end)
    end
end

-- ======================== HITBOX EXPANDER ========================
local function restoreHitboxes()
    for part, orig in pairs(expandedParts) do
        if part and part.Parent then
            pcall(function()
                part.Size = orig
                part.Transparency = part.Name == "HumanoidRootPart" and 1 or part.Transparency
                part.CanCollide = part.Name ~= "HumanoidRootPart" and part.CanCollide or false
            end)
        end
    end
    expandedParts = {}
end

local function expandHitboxes()
    if not S.HitboxExpand then
        restoreHitboxes()
        return
    end

    for _, plr in ipairs(Players:GetPlayers()) do
        if plr == LocalPlayer then continue end
        -- only expand RUNNERS (people you want to knife)
        if isChaser(plr) then continue end

        local char = plr.Character
        if not char then continue end
        local hum = char:FindFirstChildOfClass("Humanoid")
        if not hum or hum.Health <= 0 then continue end

        local targets = {
            char:FindFirstChild("HumanoidRootPart"),
            char:FindFirstChild("UpperTorso") or char:FindFirstChild("Torso"),
            char:FindFirstChild("Head"),
            char:FindFirstChild("LowerTorso"),
        }

        for _, part in ipairs(targets) do
            if part and part:IsA("BasePart") then
                if not expandedParts[part] then
                    expandedParts[part] = part.Size
                end
                local s = S.HitboxSize
                -- keep height reasonable, expand X/Z hard
                local newSize = Vector3.new(s, math.max(part.Size.Y, s * 0.6), s)
                if part.Name == "Head" then
                    newSize = Vector3.new(s * 0.7, s * 0.7, s * 0.7)
                end
                pcall(function()
                    part.Size = newSize
                    part.Massless = true
                    part.CanCollide = false
                    if S.HitboxVisible then
                        part.Transparency = 0.65
                        part.Color = S.HitboxColor
                        part.Material = Enum.Material.ForceField
                    end
                end)
            end
        end
    end
end

local function setupHitbox()
    if hitboxConn then hitboxConn:Disconnect() hitboxConn = nil end
    if not S.HitboxExpand then
        restoreHitboxes()
        return
    end
    hitboxConn = RunService.Heartbeat:Connect(function()
        expandHitboxes()
    end)
end

-- ======================== ESP (CHASER ONLY) ========================
local function clearESP(plr)
    if espCache[plr] then
        for _, d in pairs(espCache[plr]) do
            pcall(function() d:Remove() end)
        end
        espCache[plr] = nil
    end
end

local function createESP(plr)
    if espCache[plr] then return end
    local box = Drawing.new("Square")
    box.Thickness = 1.6
    box.Filled = false
    box.Visible = false
    local tracer = Drawing.new("Line")
    tracer.Thickness = 1.5
    tracer.Visible = false
    local nameTag = Drawing.new("Text")
    nameTag.Size = 14
    nameTag.Center = true
    nameTag.Outline = true
    nameTag.Visible = false
    local distTag = Drawing.new("Text")
    distTag.Size = 12
    distTag.Center = true
    distTag.Outline = true
    distTag.Visible = false
    local roleTag = Drawing.new("Text")
    roleTag.Size = 13
    roleTag.Center = true
    roleTag.Outline = true
    roleTag.Visible = false
    espCache[plr] = {
        Box = box,
        Tracer = tracer,
        Name = nameTag,
        Dist = distTag,
        Role = roleTag
    }
end

local function updateESP()
    if not S.ChaserESP then
        for plr, _ in pairs(espCache) do
            clearESP(plr)
        end
        return
    end

    local myHRP = getHRP()
    local myPos = myHRP and myHRP.Position or Vector3.zero

    for _, plr in ipairs(Players:GetPlayers()) do
        if plr == LocalPlayer then
            clearESP(plr)
            continue
        end

        local char = plr.Character
        local hrp = char and char:FindFirstChild("HumanoidRootPart")
        local hum = char and char:FindFirstChildOfClass("Humanoid")
        if not char or not hrp or not hum or hum.Health <= 0 then
            clearESP(plr)
            continue
        end

        -- ONLY show real Chasers
        if not isChaser(plr) then
            clearESP(plr)
            continue
        end

        local dist = (hrp.Position - myPos).Magnitude
        if dist > S.MaxDist then
            clearESP(plr)
            continue
        end

        createESP(plr)
        local cache = espCache[plr]
        local color = S.ChaserColor
        local pos, onScreen = Camera:WorldToViewportPoint(hrp.Position)

        if not onScreen then
            cache.Box.Visible = false
            cache.Tracer.Visible = false
            cache.Name.Visible = false
            cache.Dist.Visible = false
            cache.Role.Visible = false
            continue
        end

        local size = math.clamp(2200 / dist, 20, 60)

        if S.Box then
            cache.Box.Size = Vector2.new(size * 0.72, size)
            cache.Box.Position = Vector2.new(pos.X - size * 0.36, pos.Y - size * 0.5)
            cache.Box.Color = color
            cache.Box.Visible = true
        else
            cache.Box.Visible = false
        end

        if S.Tracer then
            local bottom = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y)
            cache.Tracer.From = bottom
            cache.Tracer.To = Vector2.new(pos.X, pos.Y + size * 0.5)
            cache.Tracer.Color = S.TracerColor
            cache.Tracer.Visible = true
        else
            cache.Tracer.Visible = false
        end

        if S.Name then
            cache.Name.Text = plr.Name
            cache.Name.Position = Vector2.new(pos.X, pos.Y - size * 0.55 - 16)
            cache.Name.Color = S.NameColor
            cache.Name.Visible = true
        else
            cache.Name.Visible = false
        end

        if S.Distance then
            cache.Dist.Text = string.format("[%dm]", math.floor(dist))
            cache.Dist.Position = Vector2.new(pos.X, pos.Y + size * 0.55 + 2)
            cache.Dist.Color = color
            cache.Dist.Visible = true
        else
            cache.Dist.Visible = false
        end

        if S.RoleTag then
            cache.Role.Text = "CHASER"
            cache.Role.Position = Vector2.new(pos.X, pos.Y - size * 0.55 - 30)
            cache.Role.Color = color
            cache.Role.Visible = true
        else
            cache.Role.Visible = false
        end
    end
end

RunService.RenderStepped:Connect(function()
    updateESP()
    if S.DiscordLED then
        local vs = Camera.ViewportSize
        local cx = vs.X / 2
        local cy = vs.Y - 28
        DiscordLEDText.Position = Vector2.new(cx, cy)
        DiscordLEDGlow.Position = Vector2.new(cx, cy)
        DiscordLEDLine.From = Vector2.new(cx - 70, cy + 10)
        DiscordLEDLine.To = Vector2.new(cx + 70, cy + 10)
        DiscordLEDText.Visible = true
        DiscordLEDGlow.Visible = true
        DiscordLEDLine.Visible = true
    else
        DiscordLEDText.Visible = false
        DiscordLEDGlow.Visible = false
        DiscordLEDLine.Visible = false
    end
end)

Players.PlayerRemoving:Connect(function(plr)
    clearESP(plr)
end)

-- ======================== VISUAL ========================
local function applyFullBright()
    if S.FullBright then
        Lighting.Brightness = 2
        Lighting.ClockTime = 14
        Lighting.FogEnd = 100000
        Lighting.GlobalShadows = false
        Lighting.OutdoorAmbient = Color3.fromRGB(180, 180, 180)
    end
end

local function applyNoFog()
    if S.NoFog then
        Lighting.FogEnd = 100000
        Lighting.FogStart = 0
    end
end

local function applyFOV()
    if S.FOVUnlock then
        Camera.FieldOfView = S.CustomFOV
    end
end

-- ======================== REATTACH ========================
local function onCharacter(char)
    task.wait(0.45)
    local hum = char:FindFirstChildOfClass("Humanoid")
    if hum then originalWalkSpeed = hum.WalkSpeed end
    if S.Speed or S.SuperSpeed then
        setupSpeedLoop()
        applySpeed()
    end
    if S.Noclip then setupNoclip() end
    if S.Fly then setupFly() end
    if S.InfiniteDash or S.DashBoost then setupInfiniteDash() end
    if S.InfinitePower or S.NoCooldown then setupInfinitePower() end
    if S.HitboxExpand then setupHitbox() end
    if S.FullBright then applyFullBright() end
    if S.NoFog then applyNoFog() end
    if S.FOVUnlock then applyFOV() end
end

if LocalPlayer.Character then onCharacter(LocalPlayer.Character) end
LocalPlayer.CharacterAdded:Connect(onCharacter)

if S.AntiAFK then
    local vu = game:GetService("VirtualUser")
    LocalPlayer.Idled:Connect(function()
        vu:CaptureController()
        vu:ClickButton2(Vector2.new())
    end)
end

-- ======================== TABS ========================

-- MOVEMENT
TabMove:CreateSection("Speed Control")
TabMove:CreateToggle({
    Name = "Speed Hack",
    CurrentValue = S.Speed,
    Flag = "Speed",
    Callback = function(v)
        S.Speed = v
        if v then S.SuperSpeed = false end
        applySpeed()
        setupSpeedLoop()
        notify("MOVEMENT", v and ("Speed ON · " .. S.WalkSpeed) or "Speed OFF")
    end
})
TabMove:CreateSlider({
    Name = "WalkSpeed",
    Range = {16, 120},
    Increment = 1,
    CurrentValue = S.WalkSpeed,
    Flag = "WalkSpeed",
    Callback = function(v)
        S.WalkSpeed = v
        if S.Speed then applySpeed() end
    end
})
TabMove:CreateToggle({
    Name = "Super Speed",
    CurrentValue = S.SuperSpeed,
    Flag = "SuperSpeed",
    Callback = function(v)
        S.SuperSpeed = v
        if v then S.Speed = false end
        applySpeed()
        setupSpeedLoop()
        notify("MOVEMENT", v and ("SUPER · " .. S.SuperSpeedVal) or "Super OFF")
    end
})
TabMove:CreateSlider({
    Name = "Super Speed Value",
    Range = {40, 200},
    Increment = 5,
    CurrentValue = S.SuperSpeedVal,
    Flag = "SuperSpeedVal",
    Callback = function(v)
        S.SuperSpeedVal = v
        if S.SuperSpeed then applySpeed() end
    end
})
TabMove:CreateSection("Extra Movement")
TabMove:CreateToggle({
    Name = "Infinite Jump",
    CurrentValue = S.InfiniteJump,
    Flag = "InfJump",
    Callback = function(v) S.InfiniteJump = v end
})
TabMove:CreateToggle({
    Name = "Noclip",
    CurrentValue = S.Noclip,
    Flag = "Noclip",
    Callback = function(v)
        S.Noclip = v
        setupNoclip()
        notify("MOVEMENT", v and "Noclip ON" or "Noclip OFF")
    end
})
TabMove:CreateToggle({
    Name = "Fly",
    CurrentValue = S.Fly,
    Flag = "Fly",
    Callback = function(v)
        S.Fly = v
        setupFly()
        notify("MOVEMENT", v and "Fly ON" or "Fly OFF")
    end
})
TabMove:CreateSlider({
    Name = "Fly Speed",
    Range = {20, 200},
    Increment = 5,
    CurrentValue = S.FlySpeed,
    Flag = "FlySpeed",
    Callback = function(v) S.FlySpeed = v end
})

-- DASH
TabDash:CreateSection("Dash System")
TabDash:CreateToggle({
    Name = "Infinite Dash",
    CurrentValue = S.InfiniteDash,
    Flag = "InfDash",
    Callback = function(v)
        S.InfiniteDash = v
        setupInfiniteDash()
        notify("DASH", v and "Infinite Dash ONLINE" or "Infinite Dash OFF")
    end
})
TabDash:CreateToggle({
    Name = "Dash Boost",
    CurrentValue = S.DashBoost,
    Flag = "DashBoost",
    Callback = function(v)
        S.DashBoost = v
        setupInfiniteDash()
        notify("DASH", v and ("Boost x" .. S.DashMult) or "Boost OFF")
    end
})
TabDash:CreateSlider({
    Name = "Dash Multiplier",
    Range = {1.2, 5},
    Increment = 0.1,
    CurrentValue = S.DashMult,
    Flag = "DashMult",
    Callback = function(v) S.DashMult = v end
})
TabDash:CreateToggle({
    Name = "Manual Force Dash (Q)",
    CurrentValue = S.AutoDash,
    Flag = "AutoDash",
    Callback = function(v)
        S.AutoDash = v
        notify("DASH", v and "Force Dash bound to Q" or "Force Dash unbound")
    end
})
TabDash:CreateButton({
    Name = "Force Dash Now",
    Callback = function()
        forceDash()
        notify("DASH", "Dash forced")
    end
})

-- POWERUPS
TabPower:CreateSection("Ability Control")
TabPower:CreateToggle({
    Name = "Infinite Powerup",
    CurrentValue = S.InfinitePower,
    Flag = "InfPower",
    Callback = function(v)
        S.InfinitePower = v
        setupInfinitePower()
        notify("POWER", v and "Infinite Power ONLINE" or "Infinite Power OFF")
    end
})
TabPower:CreateToggle({
    Name = "No Cooldown",
    CurrentValue = S.NoCooldown,
    Flag = "NoCD",
    Callback = function(v)
        S.NoCooldown = v
        setupInfinitePower()
        notify("POWER", v and "Cooldowns wiped" or "Cooldowns normal")
    end
})
TabPower:CreateToggle({
    Name = "Ability Spam",
    CurrentValue = S.AbilitySpam,
    Flag = "AbilitySpam",
    Callback = function(v)
        S.AbilitySpam = v
        if v then
            if connections.spam then connections.spam:Disconnect() end
            connections.spam = RunService.Heartbeat:Connect(function()
                tryFireAbility()
            end)
        else
            if connections.spam then connections.spam:Disconnect() connections.spam = nil end
        end
        notify("POWER", v and "Ability Spam ON" or "Ability Spam OFF")
    end
})
TabPower:CreateSlider({
    Name = "Spam Delay",
    Range = {0.1, 1.5},
    Increment = 0.05,
    CurrentValue = S.SpamDelay,
    Flag = "SpamDelay",
    Callback = function(v) S.SpamDelay = v end
})
TabPower:CreateButton({
    Name = "Wipe Cooldowns Now",
    Callback = function()
        wipeCooldowns()
        notify("POWER", "All cooldowns forced to 0")
    end
})

-- ESP (CHASER ONLY)
TabESP:CreateSection("Chaser ESP Only")
TabESP:CreateToggle({
    Name = "Chaser ESP",
    CurrentValue = S.ChaserESP,
    Flag = "ChaserESP",
    Callback = function(v)
        S.ChaserESP = v
        if not v then
            for plr, _ in pairs(espCache) do clearESP(plr) end
        end
        notify("ESP", v and "Chaser ESP ONLINE (fixed detection)" or "Chaser ESP OFF")
    end
})
TabESP:CreateToggle({
    Name = "Boxes",
    CurrentValue = S.Box,
    Flag = "Box",
    Callback = function(v) S.Box = v end
})
TabESP:CreateToggle({
    Name = "Tracers",
    CurrentValue = S.Tracer,
    Flag = "Tracer",
    Callback = function(v) S.Tracer = v end
})
TabESP:CreateToggle({
    Name = "Names",
    CurrentValue = S.Name,
    Flag = "Name",
    Callback = function(v) S.Name = v end
})
TabESP:CreateToggle({
    Name = "Distance",
    CurrentValue = S.Distance,
    Flag = "Distance",
    Callback = function(v) S.Distance = v end
})
TabESP:CreateToggle({
    Name = "Role Tags",
    CurrentValue = S.RoleTag,
    Flag = "RoleTag",
    Callback = function(v) S.RoleTag = v end
})
TabESP:CreateSlider({
    Name = "Max Distance",
    Range = {200, 5000},
    Increment = 50,
    CurrentValue = S.MaxDist,
    Flag = "MaxDist",
    Callback = function(v) S.MaxDist = v end
})
TabESP:CreateColorPicker({
    Name = "Chaser Color",
    Color = S.ChaserColor,
    Flag = "ChaserColor",
    Callback = function(c) S.ChaserColor = c end
})
TabESP:CreateParagraph({
    Title = "Detection",
    Content = "Uses knife/tool + attributes + team + tags. Only real Chasers show. Runners are ignored."
})

-- HITBOX
TabHitbox:CreateSection("Hitbox Expander (easy kills as Chaser)")
TabHitbox:CreateToggle({
    Name = "Hitbox Expander",
    CurrentValue = S.HitboxExpand,
    Flag = "HitboxExpand",
    Callback = function(v)
        S.HitboxExpand = v
        setupHitbox()
        notify("HITBOX", v and ("Expand ON · size " .. S.HitboxSize) or "Hitbox restored")
    end
})
TabHitbox:CreateSlider({
    Name = "Hitbox Size",
    Range = {3, 20},
    Increment = 0.5,
    CurrentValue = S.HitboxSize,
    Flag = "HitboxSize",
    Callback = function(v)
        S.HitboxSize = v
        if S.HitboxExpand then
            -- force re-expand next frame
            restoreHitboxes()
        end
    end
})
TabHitbox:CreateToggle({
    Name = "Show Expanded Hitbox",
    CurrentValue = S.HitboxVisible,
    Flag = "HitboxVisible",
    Callback = function(v)
        S.HitboxVisible = v
        if not v then
            for part, _ in pairs(expandedParts) do
                if part and part.Parent then
                    pcall(function() part.Transparency = (part.Name == "HumanoidRootPart") and 1 or 0 end)
                end
            end
        end
    end
})
TabHitbox:CreateColorPicker({
    Name = "Hitbox Color",
    Color = S.HitboxColor,
    Flag = "HitboxColor",
    Callback = function(c) S.HitboxColor = c end
})
TabHitbox:CreateParagraph({
    Title = "How it works",
    Content = "Expands Runner HRP / Torso / Head while you are Chaser. Bigger = easier knife tags. Size 6–10 is usually enough. Does not expand other Chasers."
})
TabHitbox:CreateButton({
    Name = "Restore All Hitboxes",
    Callback = function()
        restoreHitboxes()
        notify("HITBOX", "All hitboxes restored")
    end
})

-- VISUAL
TabVisual:CreateSection("World")
TabVisual:CreateToggle({
    Name = "FullBright",
    CurrentValue = S.FullBright,
    Flag = "FullBright",
    Callback = function(v)
        S.FullBright = v
        if v then applyFullBright() else
            Lighting.Brightness = 1
            Lighting.GlobalShadows = true
        end
    end
})
TabVisual:CreateToggle({
    Name = "No Fog",
    CurrentValue = S.NoFog,
    Flag = "NoFog",
    Callback = function(v)
        S.NoFog = v
        if v then applyNoFog() end
    end
})
TabVisual:CreateToggle({
    Name = "Custom FOV",
    CurrentValue = S.FOVUnlock,
    Flag = "FOVUnlock",
    Callback = function(v)
        S.FOVUnlock = v
        if v then applyFOV() else Camera.FieldOfView = 70 end
    end
})
TabVisual:CreateSlider({
    Name = "FOV Value",
    Range = {60, 120},
    Increment = 1,
    CurrentValue = S.CustomFOV,
    Flag = "CustomFOV",
    Callback = function(v)
        S.CustomFOV = v
        if S.FOVUnlock then applyFOV() end
    end
})

-- MISC
TabMisc:CreateSection("Utility")
TabMisc:CreateToggle({
    Name = "Anti-AFK",
    CurrentValue = S.AntiAFK,
    Flag = "AntiAFK",
    Callback = function(v) S.AntiAFK = v end
})
TabMisc:CreateToggle({
    Name = "Discord LED Footer",
    CurrentValue = S.DiscordLED,
    Flag = "DiscordLED",
    Callback = function(v)
        S.DiscordLED = v
        DiscordLEDText.Visible = v
        DiscordLEDGlow.Visible = v
        DiscordLEDLine.Visible = v
    end
})
TabMisc:CreateButton({
    Name = "Re-apply All",
    Callback = function()
        local char = getChar()
        if char then onCharacter(char) end
        notify("MISC", "All systems re-applied")
    end
})
TabMisc:CreateButton({
    Name = "Destroy ESP",
    Callback = function()
        for plr, _ in pairs(espCache) do clearESP(plr) end
        notify("MISC", "ESP cleared")
    end
})

-- ABOUT
TabAbout:CreateSection("ELITE · HUSS VALLEY")
TabAbout:CreateParagraph({
    Title = "Build Info",
    Content = "Elite Scripts · Rayfield Gen-2 · Purple brand\nChaser ESP (fixed) · Hitbox Expander · Speed · Infinite Dash · Infinite Powerup\nKeyless · Config auto-save"
})
TabAbout:CreateParagraph({
    Title = "Chaser Detection",
    Content = "Knife/Tool first, then attributes, CollectionService tags, team name. Only real Chasers are drawn. Runners never show on ESP."
})
TabAbout:CreateParagraph({
    Title = "Hitbox",
    Content = "When you are Chaser, enable Hitbox Expander. It only expands Runners so your knife has a much larger hit volume."
})
TabAbout:CreateButton({
    Name = "Copy Discord",
    Callback = function()
        setclipboard(S.DiscordLink)
        notify("ELITE", "Discord link copied")
    end
})
TabAbout:CreateButton({
    Name = "Unload Script",
    Callback = function()
        for _, conn in pairs(connections) do
            pcall(function() conn:Disconnect() end)
        end
        if speedConn then speedConn:Disconnect() end
        if noclipConn then noclipConn:Disconnect() end
        if dashConn then dashConn:Disconnect() end
        if abilityConn then abilityConn:Disconnect() end
        if hitboxConn then hitboxConn:Disconnect() end
        restoreHitboxes()
        for plr, _ in pairs(espCache) do clearESP(plr) end
        DiscordLEDText:Remove()
        DiscordLEDGlow:Remove()
        DiscordLEDLine:Remove()
        Rayfield:Destroy()
    end
})

notify("ELITE", "Huss Valley loaded · Elite purple", 4)
print("[ELITE] Huss Valley online — Chaser ESP fixed, Hitbox Expander ready")
Script worked? 🚀 Boost it to #1 so others find it too.

Comments (0)

Log in to add a comment.