local Rayfield = loadstring(game:HttpGet('https://[Log in to view URL]'))()

local Window = Rayfield:CreateWindow({
    Name = "Astra Ware Ultimate",
    LoadingTitle = "Astra Ware Interface Suite",
    LoadingSubtitle = "by zqint",
    ShowText = "Astra Ware",
    Theme = "AmberGlow",
    ToggleUIKeybind = "K",
    ConfigurationSaving = { Enabled = true, FileName = "AstraWareUltimateConfig" },
    Discord = { Enabled = true, Invite = "xdefAXQfn8", RememberJoins = true },
    KeySystem = true,
    KeySettings = {
        Title = "Astra Key System",
        Subtitle = "Key System",
        Note = "Join our discord https://[Log in to view URL]",
        FileName = "Key",
        SaveKey = true,
        GrabKeyFromSite = false,
        Key = {"test"}
    }
})

local Tab = Window:CreateTab("Main", 4483362458)
local SectionCombat = Tab:CreateSection("Combat")
local SectionMovement = Tab:CreateSection("Movement")

local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local Camera = workspace.CurrentCamera

-- Settings
local AimPart = "Head"

local ESPEnabled, AimbotEnabled, SilentAimEnabled, InfAmmoEnabled, AutoShootEnabled, AutoReloadPreventEnabled = false, false, false, false, false, false
local FlyEnabled, NoclipEnabled = false, false
local SpeedHackEnabled = false

local AimSensitivity = 0.3
local FOVRadius = 150

local ESPColor = Color3.fromRGB(255, 0, 0)
local ESPThickness = 1.5
local TracerColor = Color3.fromRGB(255, 0, 0)
local TracerThickness = 1

local AimToggleKey = Enum.KeyCode.X
local AimbotActive = false

local FlySpeed = 100
local WalkSpeedDefault = 16
local JumpPowerDefault = 50
local SpeedHackValue = 40
local JumpPowerValue = 100

-- FOV Circle
local FOVCircle = Drawing.new("Circle")
FOVCircle.Visible = false
FOVCircle.Radius = FOVRadius
FOVCircle.Color = ESPColor
FOVCircle.Thickness = ESPThickness
FOVCircle.NumSides = 64
FOVCircle.Filled = false
FOVCircle.Transparency = 0.8

-- ESP storage
local ESPObjects = {}

-- Create ESP for player
local function createESP(player)
    local box = Drawing.new("Square")
    box.Color = ESPColor
    box.Thickness = ESPThickness
    box.Filled = false

    local name = Drawing.new("Text")
    name.Text = player.Name
    name.Size = 14
    name.Color = ESPColor
    name.Center = true
    name.Outline = true

    local tracer = Drawing.new("Line")
    tracer.Color = TracerColor
    tracer.Thickness = TracerThickness

    return {
        Box = box,
        Name = name,
        Tracer = tracer
    }
end

local function updateESP()
    for _, player in pairs(Players:GetPlayers()) do
        if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild(AimPart) then
            local rootPart = player.Character[AimPart]
            local pos, onScreen = Camera:WorldToViewportPoint(rootPart.Position)
            if onScreen then
                if not ESPObjects[player] then
                    ESPObjects[player] = createESP(player)
                end

                local box = ESPObjects[player].Box
                local name = ESPObjects[player].Name
                local tracer = ESPObjects[player].Tracer

                local sizeFactor = 1000 / pos.Z
                local boxSize = sizeFactor * 50

                box.Size = Vector2.new(boxSize, boxSize)
                box.Position = Vector2.new(pos.X - box.Size.X/2, pos.Y - box.Size.Y/2)
                box.Visible = true

                name.Position = Vector2.new(pos.X, pos.Y - box.Size.Y/2 - 15)
                name.Visible = true

                tracer.From = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y)
                tracer.To = Vector2.new(pos.X, pos.Y)
                tracer.Visible = true
            else
                if ESPObjects[player] then
                    ESPObjects[player].Box.Visible = false
                    ESPObjects[player].Name.Visible = false
                    ESPObjects[player].Tracer.Visible = false
                end
            end
        else
            if ESPObjects[player] then
                ESPObjects[player].Box:Remove()
                ESPObjects[player].Name:Remove()
                ESPObjects[player].Tracer:Remove()
                ESPObjects[player] = nil
            end
        end
    end
end

local function clearESP()
    for _, esp in pairs(ESPObjects) do
        esp.Box:Remove()
        esp.Name:Remove()
        esp.Tracer:Remove()
    end
    ESPObjects = {}
end

local function getClosestEnemy()
    local closestPlayer = nil
    local shortestDistance = FOVRadius
    local mousePos = UserInputService:GetMouseLocation()

    for _, player in pairs(Players:GetPlayers()) do
        if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild(AimPart) then
            local pos, onScreen = Camera:WorldToViewportPoint(player.Character[AimPart].Position)
            if onScreen then
                local dist = (Vector2.new(pos.X, pos.Y) - Vector2.new(mousePos.X, mousePos.Y)).Magnitude
                if dist < shortestDistance then
                    shortestDistance = dist
                    closestPlayer = player
                end
            end
        end
    end

    return closestPlayer
end

local function aimAtPosition(pos, sensitivity)
    sensitivity = sensitivity or AimSensitivity
    local mousePos = UserInputService:GetMouseLocation()
    local delta = Vector2.new(pos.X - mousePos.X, pos.Y - mousePos.Y)
    local moveX = delta.X * sensitivity
    local moveY = delta.Y * sensitivity
    pcall(function()
        mousemoverel(moveX, moveY)
    end)
end

local function infiniteAmmo()
    local char = LocalPlayer.Character
    if char then
        local tool = char:FindFirstChildOfClass("Tool")
        if tool and tool:FindFirstChild("Ammo") then
            local ammoValue = tool.Ammo
            if ammoValue.Value < ammoValue.MaxValue then
                ammoValue.Value = ammoValue.MaxValue
            end
        end
    end
end

local function autoShoot()
    local mouse = LocalPlayer:GetMouse()
    if mouse then
        mouse1press()
        task.wait(0.01)
        mouse1release()
    end
end

-- Fly Implementation
local flySpeed = FlySpeed
local flying = false
local bodyVelocity
local bodyGyro

local function startFly()
    local character = LocalPlayer.Character
    local hrp = character and character:FindFirstChild("HumanoidRootPart")
    if not hrp then return end

    bodyVelocity = Instance.new("BodyVelocity")
    bodyVelocity.Velocity = Vector3.new(0,0,0)
    bodyVelocity.MaxForce = Vector3.new(1e5,1e5,1e5)
    bodyVelocity.Parent = hrp

    bodyGyro = Instance.new("BodyGyro")
    bodyGyro.MaxTorque = Vector3.new(1e5,1e5,1e5)
    bodyGyro.P = 20e3
    bodyGyro.Parent = hrp

    flying = true
end

local function stopFly()
    if bodyVelocity then
        bodyVelocity:Destroy()
        bodyVelocity = nil
    end
    if bodyGyro then
        bodyGyro:Destroy()
        bodyGyro = nil
    end
    flying = false
end

local function updateFly()
    if not flying then return end
    local character = LocalPlayer.Character
    local hrp = character and character:FindFirstChild("HumanoidRootPart")
    local humanoid = character and character:FindFirstChildOfClass("Humanoid")
    if not hrp or not humanoid then return end

    local cameraCFrame = workspace.CurrentCamera.CFrame
    local moveDirection = Vector3.new()

    if UserInputService:IsKeyDown(Enum.KeyCode.W) then
        moveDirection = moveDirection + cameraCFrame.LookVector
    end
    if UserInputService:IsKeyDown(Enum.KeyCode.S) then
        moveDirection = moveDirection - cameraCFrame.LookVector
    end
    if UserInputService:IsKeyDown(Enum.KeyCode.A) then
        moveDirection = moveDirection - cameraCFrame.RightVector
    end
    if UserInputService:IsKeyDown(Enum.KeyCode.D) then
        moveDirection = moveDirection + cameraCFrame.RightVector
    end
    if UserInputService:IsKeyDown(Enum.KeyCode.Space) then
        moveDirection = moveDirection + Vector3.new(0,1,0)
    end
    if UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then
        moveDirection = moveDirection - Vector3.new(0,1,0)
    end

    moveDirection = moveDirection.Unit * flySpeed
    if moveDirection ~= moveDirection then moveDirection = Vector3.new(0,0,0) end -- handle NaN
    bodyVelocity.Velocity = moveDirection
    bodyGyro.CFrame = workspace.CurrentCamera.CFrame
end

-- Speed Hack
local function setSpeed(value)
    local humanoid = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
    if humanoid then
        humanoid.WalkSpeed = value
    end
end

-- Jump Power Hack
local function setJumpPower(value)
    local humanoid = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
    if humanoid then
        humanoid.JumpPower = value
    end
end

-- Teleport to nearest enemy
local function teleportToNearestEnemy()
    local target = getClosestEnemy()
    if target and target.Character and target.Character:FindFirstChild("HumanoidRootPart") then
        local hrp = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
        if hrp then
            hrp.CFrame = target.Character.HumanoidRootPart.CFrame + Vector3.new(0, 3, 0)
        end
    end
end

-- Aimbot key toggle (default X)
UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if not gameProcessed and input.KeyCode == AimToggleKey then
        AimbotActive = not AimbotActive
    end
end)

RunService.RenderStepped:Connect(function()
    FOVCircle.Position = Vector2.new(UserInputService:GetMouseLocation().X, UserInputService:GetMouseLocation().Y)
    FOVCircle.Radius = FOVRadius
    FOVCircle.Color = ESPColor
    FOVCircle.Thickness = ESPThickness
    FOVCircle.Visible = ESPEnabled or AimbotEnabled or AimbotActive

    if ESPEnabled then
        updateESP()
    else
        clearESP()
    end

    local aiming = AimbotEnabled or AimbotActive

    if aiming then
        local target = getClosestEnemy()
        if target and target.Character and target.Character:FindFirstChild(AimPart) then
            local screenPos, onScreen = Camera:WorldToViewportPoint(target.Character[AimPart].Position)
            if onScreen then
                if SilentAimEnabled then
                    -- Silent aim remote hook placeholder
                else
                    aimAtPosition(Vector2.new(screenPos.X, screenPos.Y), AimSensitivity)
                end

                if AutoShootEnabled then
                    autoShoot()
                end
            end
        end
    end

    if InfAmmoEnabled then
        infiniteAmmo()
    end

    if FlyEnabled then
        updateFly()
    elseif bodyVelocity or bodyGyro then
        stopFly()
    end

    if SpeedHackEnabled then
        setSpeed(SpeedHackValue)
    else
        setSpeed(WalkSpeedDefault)
    end

    if AutoReloadPreventEnabled then
        -- Auto reload prevention placeholder
    end
end)

-- UI Setup

-- Combat Toggles
Tab:CreateToggle({
    Name = "Enable ESP",
    CurrentValue = false,
    Flag = "ArsenalESP",
    Callback = function(value)
        ESPEnabled = value
    end,
})

Tab:CreateToggle({
    Name = "Enable Aimbot",
    CurrentValue = false,
    Flag = "ArsenalAimbot",
    Callback = function(value)
        AimbotEnabled = value
    end,
})

Tab:CreateToggle({
    Name = "Enable Silent Aim (Experimental)",
    CurrentValue = false,
    Flag = "ArsenalSilentAim",
    Callback = function(value)
        SilentAimEnabled = value
    end,
})

Tab:CreateToggle({
    Name = "Enable Infinite Ammo",
    CurrentValue = false,
    Flag = "ArsenalInfAmmo",
    Callback = function(value)
        InfAmmoEnabled = value
    end,
})

Tab:CreateToggle({
    Name = "Enable Auto Shoot",
    CurrentValue = false,
    Flag = "ArsenalAutoShoot",
    Callback = function(value)
        AutoShootEnabled = value
    end,
})

Tab:CreateToggle({
    Name = "Enable Auto Reload Prevention",
    CurrentValue = false,
    Flag = "ArsenalAutoReloadPrevent",
    Callback = function(value)
        AutoReloadPreventEnabled = value
    end,
})

Tab:CreateKeybind({
    Name = "Toggle Aimbot Keybind",
    CurrentValue = AimToggleKey,
    Flag = "AimbotToggleKeybind",
    HoldToInteract = false,
    Mode = "Toggle",
    Blacklist = {},
    Callback = function(key)
        AimToggleKey = key
    end,
})

Tab:CreateSlider({
    Name = "Aim Sensitivity",
    Range = {0.05, 1},
    Increment = 0.01,
    Suffix = "",
    CurrentValue = AimSensitivity,
    Flag = "AimSensitivity",
    Callback = function(value)
        AimSensitivity = value
    end,
})

Tab:CreateSlider({
    Name = "FOV Radius",
    Range = {50, 400},
    Increment = 5,
    Suffix = "px",
    CurrentValue = FOVRadius,
    Flag = "FOVRadius",
    Callback = function(value)
        FOVRadius = value
    end,
})

Tab:CreateColorPicker({
    Name = "ESP Color",
    Default = ESPColor,
    Flag = "ESPColor",
    Callback = function(color)
        ESPColor = color
    end,
})

Tab:CreateSlider({
    Name = "ESP Box Thickness",
    Range = {1, 5},
    Increment = 0.1,
    Suffix = "px",
    CurrentValue = ESPThickness,
    Flag = "ESPThickness",
    Callback = function(value)
        ESPThickness = value
    end,
})

Tab:CreateColorPicker({
    Name = "Tracer Color",
    Default = TracerColor,
    Flag = "TracerColor",
    Callback = function(color)
        TracerColor = color
    end,
})

Tab:CreateSlider({
    Name = "Tracer Thickness",
    Range = {1, 5},
    Increment = 0.1,
    Suffix = "px",
    CurrentValue = TracerThickness,
    Flag = "TracerThickness",
    Callback = function(value)
        TracerThickness = value
    end,
})

-- Movement Toggles & Sliders

Tab:CreateToggle({
    Name = "Enable Fly",
    CurrentValue = false,
    Flag = "FlyToggle",
    Callback = function(value)
        FlyEnabled = value
        if not value then
            stopFly()
        else
            startFly()
        end
    end,
})

Tab:CreateSlider({
    Name = "Fly Speed",
    Range = {10, 300},
    Increment = 5,
    Suffix = "",
    CurrentValue = FlySpeed,
    Flag = "FlySpeed",
    Callback = function(value)
        FlySpeed = value
    end,
})

Tab:CreateToggle({
    Name = "Enable Noclip",
    CurrentValue = false,
    Flag = "NoclipToggle",
    Callback = function(value)
        NoclipEnabled = value
    end,
})

Tab:CreateToggle({
    Name = "Enable Speed Hack",
    CurrentValue = false,
    Flag = "SpeedHackToggle",
    Callback = function(value)
        SpeedHackEnabled = value
    end,
})

Tab:CreateSlider({
    Name = "Speed Value",
    Range = {16, 200},
    Increment = 1,
    Suffix = "",
    CurrentValue = SpeedHackValue,
    Flag = "SpeedValue",
    Callback = function(value)
        SpeedHackValue = value
    end,
})

Tab:CreateSlider({
    Name = "Jump Power",
    Range = {50, 300},
    Increment = 5,
    Suffix = "",
    CurrentValue = JumpPowerValue,
    Flag = "JumpPowerValue",
    Callback = function(value)
        JumpPowerValue = value
        setJumpPower(value)
    end,
})

Tab:CreateButton({
    Name = "Teleport to Nearest Enemy",
    Callback = function()
        teleportToNearestEnemy()
    end,
})

-- Noclip implementation
RunService.Stepped:Connect(function()
    if NoclipEnabled then
        for _, part in pairs(LocalPlayer.Character:GetDescendants()) do
            if part:IsA("BasePart") and part.CanCollide == true then
                part.CanCollide = false
            end
        end
    end
end)

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: