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

local Window = Rayfield:CreateWindow({
    Name = "ability arena",
    LoadingTitle = "Loading...",
    LoadingSubtitle = "uhhhh",
    ConfigurationSaving = { Enabled = false, FolderName = "ability arena", FileName = "Main" }
})

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

local LocalPlayer = Players.LocalPlayer

local CharacterUtility = require(ReplicatedStorage.Files.Shared.Utility.CharacterUtility)
local CombatUtility = require(ReplicatedStorage.Files.Shared.Utility.CombatUtility)

local JoltRemote = ReplicatedStorage.Files.Shared.Components.Jolt.Utils.Remotes.Jolt_Reliable
local PunchAuraEnabled = false
local LastHitTime = {}
local SpeedValue = 16
local ESP_Enabled = false
local InfiniteJumpEnabled = false

local function CreateHighlight(char)
    if not char or char:FindFirstChild("ESP_Highlight") then return end
    local highlight = Instance.new("Highlight")
    highlight.Name = "ESP_Highlight"
    highlight.FillTransparency = 0.75
    highlight.OutlineTransparency = 0
    highlight.OutlineColor = Color3.fromRGB(255, 0, 0)
    highlight.FillColor = Color3.fromRGB(255, 80, 80)
    highlight.Adornee = char
    highlight.Parent = char
end

local function applyInsaneBypasses(char)
    if not char then return end
    CharacterUtility.SetState(char, "Free")
    pcall(function()
        CharacterUtility.UpdateTimestamp(char, "M1", workspace:GetServerTimeNow() - 100000, 0)
        local data = CharacterUtility.GetCharacterData(char)
        data.Combo = CombatUtility.GetMaxCombo(char) or 5
    end)
    pcall(function()
        CombatUtility.CharacterCanAttack = function() return true end
    end)
end

RunService.Heartbeat:Connect(function()
    local char = LocalPlayer.Character
    if not char or not char:FindFirstChild("HumanoidRootPart") then return end
    local root = char.HumanoidRootPart
    local hum = char:FindFirstChild("Humanoid")

    if SpeedValue > 16 and root and hum then
        local moveDir = hum.MoveDirection
        if moveDir.Magnitude > 0 then
            root.AssemblyLinearVelocity = moveDir * SpeedValue * 2.8   --
        end
    end

    if PunchAuraEnabled then
        applyInsaneBypasses(char)

        local currentTime = workspace:GetServerTimeNow()

        for _, plr in ipairs(Players:GetPlayers()) do
            if plr == LocalPlayer then continue end
            local tchar = plr.Character
            if not tchar then continue end

            local thum = tchar:FindFirstChild("Humanoid")
            local thrp = tchar:FindFirstChild("HumanoidRootPart")

            if thum and thrp and thum.Health > 0 then
                local dist = (thrp.Position - root.Position).Magnitude
                if dist <= 35 then
                    if not LastHitTime[plr] or (currentTime - LastHitTime[plr]) >= 0.1 then
                        LastHitTime[plr] = currentTime

                        pcall(function()
                            local bufferData = buffer.fromstring(
                                "\005UseM1A\016\003\tTimestamp\002" ..
                                string.pack("<d", currentTime) ..
                                "\003\005Index\017" .. string.char(math.random(60, 240)) ..
                                "\003\004Hits\016\017\001\f\001\000\000"
                            )
                            JoltRemote:FireServer(bufferData, {thum})
                        end)
                    end
                end
            end
        end
    end
end)

UserInputService.JumpRequest:Connect(function()
    if InfiniteJumpEnabled then
        local hum = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Humanoid")
        if hum then
            hum:ChangeState(Enum.HumanoidStateType.Jumping)
        end
    end
end)

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local LocalPlayer = Players.LocalPlayer

local TWEEN_SPEED = 150 
local LOBBY_Y_THRESHOLD = 90

local AutoFollowEnabled = false
local AutoEnterArenaEnabled = false

local CurrentTarget = nil
local CurrentTween = nil
local LastTargetSwitchTime = 0

local function getLobbyFloors()
    local floors = {}
    local lobby = workspace:FindFirstChild("Lobby")
    if lobby then
        local children = lobby:GetChildren()
        floors[1] = children[137]
        floors[2] = children[112]
        floors[3] = children[132]
    end
    return floors
end

local function isInLobby(char)
    if not char or not char:FindFirstChild("HumanoidRootPart") then return false end
    local rootPart = char.HumanoidRootPart
    local rootPos = rootPart.Position
    
    if rootPos.Y > LOBBY_Y_THRESHOLD then  
        return true
    end
    
    local targetFloors = getLobbyFloors()
    if #targetFloors > 0 then
        local extents = char:GetBoundingBox()
        local overlapParams = OverlapParams.new()
        overlapParams.FilterType = Enum.RaycastFilterType.Include
        overlapParams.FilterDescendantsInstances = targetFloors
        
        local partsOverlapping = workspace:GetPartBoundsInBox(rootPart.CFrame - Vector3.new(0, 3, 0), Vector3.new(4, 2, 4), overlapParams)
        if #partsOverlapping > 0 then
            return true 
        end
    end
    
    return false
end

local function stopTween()
    if CurrentTween then
        CurrentTween:Cancel()
        CurrentTween = nil
    end
end

local function getNextTarget()
    local myChar = LocalPlayer.Character
    if not myChar or not myChar:FindFirstChild("HumanoidRootPart") then return nil end
    local myRoot = myChar.HumanoidRootPart

    local best = nil
    local bestDist = math.huge

    for _, plr in ipairs(Players:GetPlayers()) do
        if plr == LocalPlayer then continue end
        local char = plr.Character
        if not char then continue end
        
        local hrp = char:FindFirstChild("HumanoidRootPart")
        local hum = char:FindFirstChild("Humanoid")
        
        if hrp and hum and hum.Health > 0 then
            if isInLobby(char) then continue end 
            
            local dist = (hrp.Position - myRoot.Position).Magnitude
            if dist < bestDist then
                bestDist = dist
                best = char
            end
        end
    end
    return best
end

local function tryEnterArena()
    local char = LocalPlayer.Character
    if not char or not char:FindFirstChild("HumanoidRootPart") then return end
    
    if isInLobby(char) then
        local lobbyZone = workspace:FindFirstChild("Lobby")
        if lobbyZone and lobbyZone:FindFirstChild("DeployParts", true) then
            local deploy = lobbyZone:FindFirstChild("DeployParts", true)
            if deploy:FindFirstChild("Deploy") then
                local touchPart = deploy.Deploy
                firetouchinterest(char.HumanoidRootPart, touchPart, 0)
                task.wait(0.02) 
                firetouchinterest(char.HumanoidRootPart, touchPart, 1)
            end
        end
    end
end

RunService.Heartbeat:Connect(function()
    local myChar = LocalPlayer.Character
    if not myChar or not myChar:FindFirstChild("HumanoidRootPart") or not myChar:FindFirstChild("Humanoid") then return end
    local myRoot = myChar.HumanoidRootPart
    local myHum = myChar.Humanoid

    if AutoEnterArenaEnabled then
        tryEnterArena()
    end

    if not AutoFollowEnabled then
        stopTween()
        CurrentTarget = nil
        return
    end

    if CurrentTarget then
        if isInLobby(CurrentTarget) or not CurrentTarget:FindFirstChild("Humanoid") or CurrentTarget.Humanoid.Health <= 0 then
            CurrentTarget = nil
            stopTween()
            myHum:Move(Vector3.new(0,0,0))
        end
    end

    if not CurrentTarget then
        if tick() - LastTargetSwitchTime > 0.1 then
            CurrentTarget = getNextTarget()
            LastTargetSwitchTime = tick()
        end
    end

    if CurrentTarget and CurrentTarget:FindFirstChild("HumanoidRootPart") then
        local targetRoot = CurrentTarget.HumanoidRootPart
        local dist = (targetRoot.Position - myRoot.Position).Magnitude
        
        if dist > 5 then
            local duration = dist / TWEEN_SPEED
            stopTween() 
            
            local tweenInfo = TweenInfo.new(duration, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut)
            CurrentTween = TweenService:Create(myRoot, tweenInfo, {
                CFrame = CFrame.new(targetRoot.Position + Vector3.new(0, 1.5, 0)) 
            })
            CurrentTween:Play()
        elseif dist > 0 and dist <= 5 then
            stopTween()
            myHum:MoveTo(targetRoot.Position)
        else
            stopTween()
            myHum:MoveTo(myRoot.Position)
        end
    else
        stopTween()
    end
end)


local CombatTab = Window:CreateTab("Combat", 4483362458)
local PlayerTab = Window:CreateTab("Player", 4483362458)

CombatTab:CreateToggle({
    Name = "Punch Aura",
    CurrentValue = false,
    Callback = function(Value)
        PunchAuraEnabled = Value
        if not Value then LastHitTime = {} end
    end
})

 CombatTab:CreateToggle({
     Name = "Auto Follow (good for afk autofarming)",
     CurrentValue = false,
     Callback = function(Value)
         AutoFollowEnabled = Value
         if not Value then
             CurrentTarget = nil
             if CurrentTween then
                 CurrentTween:Cancel()
                 CurrentTween = nil
            end
         end
     end
 })

CombatTab:CreateToggle({
    Name = "Auto Enter Arena",
    CurrentValue = false,
    Callback = function(Value)
        AutoEnterArenaEnabled = Value
    end
})

PlayerTab:CreateToggle({
    Name = "Player ESP (Highlight)",
    CurrentValue = false,
    Callback = function(Value)
        ESP_Enabled = Value
        
        for _, plr in ipairs(Players:GetPlayers()) do
            if plr ~= LocalPlayer then
                local char = plr.Character
                if char then
                    local hl = char:FindFirstChild("ESP_Highlight")
                    if hl then hl:Destroy() end
                end
            end
        end

        if not Value then return end

        for _, plr in ipairs(Players:GetPlayers()) do
            if plr ~= LocalPlayer and plr.Character then
                CreateHighlight(plr.Character)
            end
        end
    end
})

PlayerTab:CreateSlider({
    Name = "Speed",
    Range = {16, 300},
    Increment = 1,
    CurrentValue = 16,
    Callback = function(Value)
        SpeedValue = Value
    end
})

PlayerTab:CreateToggle({
    Name = "Infinite Jump",
    CurrentValue = false,
    Callback = function(Value)
        InfiniteJumpEnabled = Value
    end
})

Players.PlayerAdded:Connect(function(plr)
    plr.CharacterAdded:Connect(function(char)
        task.wait(0.5)
        if ESP_Enabled then
            CreateHighlight(char)
        end
    end)
end)

for _, plr in ipairs(Players:GetPlayers()) do
    if plr ~= LocalPlayer then
        plr.CharacterAdded:Connect(function(char)
            task.wait(0.5)
            if ESP_Enabled then
                CreateHighlight(char)
            end
        end)
        if plr.Character then
            CreateHighlight(plr.Character)
        end
    end
end

Rayfield:Notify({
    Title = "ability arena",
    Content = "Successfully Loaded",
    Duration = 6
})
Ability Arena πŸ’₯ (OP) Auto Combat, Auto Farm, ESP, Speed & More
Mobile Friendly
2,664 views
4 months ago

(OP) Auto Combat, Auto Farm, ESP, Speed & More

WORKING
Free

Description

Discover advanced Ability Arena gameplay utilities including combat assistance, player ESP visuals, target tracking, movement customization, arena automation, and enhanced player controls. Features include auto targeting, auto follow systems, player highlighting, speed adjustments, and more.

Features

  • Auto Punch
  • Auto Combat
  • Auto Target System
  • Arena Auto Join
  • AFK Farming Support
  • Inf jump
  • inf speed
  • Esp

Related Scripts