UNIVERSAL AIMBOT AND ESP
Key RequiredUniversal

UNIVERSAL AIMBOT AND ESP

Universal Scriptgw_jayy0061gw_jayy0061 1.7K views 128 executesUpdated Mar 18, 2026
2.5/ 5(2 votes)
1150% Positive
Lua Script•392 lines (11742 chars)
local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()

local Window = Rayfield:CreateWindow({
   Name = "UNIVERSAL AIMBOT AND ESP",
   LoadingTitle = "Universal Cheat",
   LoadingSubtitle = "loading...",
   ConfigurationSaving = {
      Enabled = true,
      FolderName = nil,
      FileName = "universalcheat"
   },
   KeySystem = true,
   KeySettings = {
      Title = "UNIVERSAL CHEAT",
      Subtitle = "Enter key",
      Note = "DM gw_jayy0161 for key",
      FileName = "universal_key",
      SaveKey = true,
      GrabKeyFromSite = false,
      Key = {"simonisgay"}
   }
})

local AimbotTab = Window:CreateTab("Aimbot", "target")
local VisualsTab = Window:CreateTab("Visuals", "eye")
local CreditsTab = Window:CreateTab("Credits", "heart")

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

local aimEnabled = false
local fov = 120
local smoothing = 4
local wallcheck = true

local fovCircle = Drawing.new("Circle")
fovCircle.Thickness = 2
fovCircle.NumSides = 100
fovCircle.Radius = fov
fovCircle.Color = Color3.fromRGB(255, 0, 0)
fovCircle.Transparency = 0.8
fovCircle.Visible = false
fovCircle.Filled = false

local function updateFovCircle()
    fovCircle.Radius = fov
    fovCircle.Visible = aimEnabled
    fovCircle.Position = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)
end

AimbotTab:CreateToggle({
   Name = "Enable Aimbot (RMB hold)",
   CurrentValue = false,
   Callback = function(Value)
      aimEnabled = Value
      updateFovCircle()
   end
})

AimbotTab:CreateToggle({
   Name = "Wall Check (no wall lock)",
   CurrentValue = true,
   Callback = function(Value)
      wallcheck = Value
   end
})

AimbotTab:CreateSlider({
   Name = "FOV",
   Range = {0, 300},
   Increment = 1,
   Suffix = "",
   CurrentValue = 120,
   Callback = function(Value)
      fov = Value
      updateFovCircle()
   end
})

AimbotTab:CreateSlider({
   Name = "Smoothing (1=strong, 10=light)",
   Range = {1, 10},
   Increment = 1,
   Suffix = "",
   CurrentValue = 4,
   Callback = function(Value)
      smoothing = Value
   end
})

local aiming = false

UserInputService.InputBegan:Connect(function(input, gpe)
    if gpe then return end
    if input.UserInputType == Enum.UserInputType.MouseButton2 then
        aiming = true
    end
end)

UserInputService.InputEnded:Connect(function(input, gpe)
    if gpe then return end
    if input.UserInputType == Enum.UserInputType.MouseButton2 then
        aiming = false
    end
end)

local function isVisible(targetHead)
    if not wallcheck then return true end

    local origin = Camera.CFrame.Position
    local direction = targetHead.Position - origin

    local rayParams = RaycastParams.new()
    rayParams.FilterDescendantsInstances = {LocalPlayer.Character or {}}
    rayParams.FilterType = Enum.RaycastFilterType.Exclude
    rayParams.IgnoreWater = true

    local result = workspace:Raycast(origin, direction, rayParams)

    return result == nil or result.Instance:IsDescendantOf(targetHead.Parent)
end

local function getClosestInFov()
    local closest, dist = nil, fov
    local center = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2)

    for _, plr in Players:GetPlayers() do
        if plr ~= LocalPlayer and plr.Character and plr.Character:FindFirstChild("Humanoid") and plr.Character.Humanoid.Health > 0 and plr.Character:FindFirstChild("Head") then
            local head = plr.Character.Head
            local screen, onScreen = Camera:WorldToViewportPoint(head.Position)
            if onScreen then
                local mag = (Vector2.new(screen.X, screen.Y) - center).Magnitude
                if mag < dist and isVisible(head) then
                    dist = mag
                    closest = plr
                end
            end
        end
    end
    return closest
end

RunService.RenderStepped:Connect(function()
    updateFovCircle()

    if not aimEnabled or not aiming then return end

    local target = getClosestInFov()
    if not target or not target.Character or not target.Character:FindFirstChild("Head") then return end

    local headPos = target.Character.Head.Position
    local targetCFrame = CFrame.new(Camera.CFrame.Position, headPos)

    local lerpAlpha = 1 / smoothing
    Camera.CFrame = Camera.CFrame:Lerp(targetCFrame, lerpAlpha)
end)

-- ESP
local espEnabled = false
local showBox = true
local showSkeleton = true
local showDistance = true
local showName = true
local teamCheck = true
local showTracers = true

local espDrawings = {}

local function addEsp(plr)
    if plr == LocalPlayer then return end

    local box = Drawing.new("Square")
    box.Thickness = 2
    box.Color = Color3.fromRGB(255, 255, 255)
    box.Transparency = 1
    box.Filled = false
    box.Visible = false

    local nameText = Drawing.new("Text")
    nameText.Size = 14
    nameText.Color = Color3.fromRGB(255, 255, 255)
    nameText.Outline = true
    nameText.Center = true
    nameText.Visible = false

    local distText = Drawing.new("Text")
    distText.Size = 13
    distText.Color = Color3.fromRGB(255, 255, 255)
    distText.Outline = true
    distText.Center = true
    distText.Visible = false

    local tracer = Drawing.new("Line")
    tracer.Color = Color3.fromRGB(255, 255, 255)
    tracer.Thickness = 2
    tracer.Transparency = 1
    tracer.Visible = false

    local skeletonLines = {}
    for i = 1, 8 do
        local line = Drawing.new("Line")
        line.Color = Color3.fromRGB(255, 255, 255)
        line.Thickness = 2
        line.Transparency = 1
        line.Visible = false
        table.insert(skeletonLines, line)
    end

    espDrawings[plr] = {box = box, name = nameText, dist = distText, tracer = tracer, skeleton = skeletonLines}
end

for _, plr in Players:GetPlayers() do
    addEsp(plr)
end

Players.PlayerAdded:Connect(addEsp)

RunService.RenderStepped:Connect(function()
    if not espEnabled then
        for _, d in espDrawings do
            d.box.Visible = false
            d.name.Visible = false
            d.dist.Visible = false
            d.tracer.Visible = false
            for _, line in d.skeleton do line.Visible = false end
        end
        return
    end

    local screenBottom = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y)

    for plr, d in espDrawings do
        if plr.Character and plr.Character:FindFirstChild("HumanoidRootPart") and plr.Character:FindFirstChild("Head") and plr.Character.Humanoid.Health > 0 then
            if teamCheck and plr.Team == LocalPlayer.Team then
                d.box.Visible = false
                d.name.Visible = false
                d.dist.Visible = false
                d.tracer.Visible = false
                for _, line in d.skeleton do line.Visible = false end
                continue
            end

            local root = plr.Character.HumanoidRootPart
            local head = plr.Character.Head
            local rootPos, onScreen = Camera:WorldToViewportPoint(root.Position)
            local headPos = Camera:WorldToViewportPoint(head.Position)

            if onScreen then
                local size = (Camera:WorldToViewportPoint(root.Position - Vector3.new(0, 3, 0)).Y - headPos.Y) * 1.5

                if showBox then
                    d.box.Size = Vector2.new(size * 1.2, size * 2.5)
                    d.box.Position = Vector2.new(rootPos.X - d.box.Size.X / 2, headPos.Y - 20)
                    d.box.Visible = true
                else
                    d.box.Visible = false
                end

                if showName then
                    d.name.Text = plr.Name
                    d.name.Position = Vector2.new(rootPos.X, headPos.Y - 50)
                    d.name.Visible = true
                else
                    d.name.Visible = false
                end

                if showDistance then
                    local dist = (LocalPlayer.Character.HumanoidRootPart.Position - root.Position).Magnitude / 3.281
                    d.dist.Text = string.format("%.1f M", dist)
                    d.dist.Position = Vector2.new(rootPos.X, headPos.Y - 35)
                    d.dist.Visible = true
                else
                    d.dist.Visible = false
                end

                if showTracers then
                    d.tracer.From = screenBottom
                    d.tracer.To = Vector2.new(rootPos.X, rootPos.Y)
                    d.tracer.Visible = true
                else
                    d.tracer.Visible = false
                end

                if showSkeleton then
                    local parts = {
                        {head.Position, head.Position + Vector3.new(0, -1, 0)},
                        {head.Position + Vector3.new(0, -1, 0), root.Position},
                        {root.Position, root.Position + Vector3.new(-1, -2, 0)},
                        {root.Position, root.Position + Vector3.new(1, -2, 0)},
                        {root.Position + Vector3.new(-1, -1, 0), root.Position + Vector3.new(-2, -2, 0)},
                        {root.Position + Vector3.new(1, -1, 0), root.Position + Vector3.new(2, -2, 0)}
                    }

                    for i, pair in ipairs(parts) do
                        local p1 = Camera:WorldToViewportPoint(pair[1])
                        local p2 = Camera:WorldToViewportPoint(pair[2])
                        local line = d.skeleton[i]
                        line.From = Vector2.new(p1.X, p1.Y)
                        line.To = Vector2.new(p2.X, p2.Y)
                        line.Visible = true
                    end
                else
                    for _, line in d.skeleton do line.Visible = false end
                end
            else
                d.box.Visible = false
                d.name.Visible = false
                d.dist.Visible = false
                d.tracer.Visible = false
                for _, line in d.skeleton do line.Visible = false end
            end
        else
            d.box.Visible = false
            d.name.Visible = false
            d.dist.Visible = false
            d.tracer.Visible = false
            for _, line in d.skeleton do line.Visible = false end
        end
    end
end)

Players.PlayerRemoving:Connect(function(plr)
    if espDrawings[plr] then
        espDrawings[plr].box:Remove()
        espDrawings[plr].name:Remove()
        espDrawings[plr].dist:Remove()
        espDrawings[plr].tracer:Remove()
        for _, line in espDrawings[plr].skeleton do line:Remove() end
        espDrawings[plr] = nil
    end
end)

VisualsTab:CreateToggle({
   Name = "Enable ESP",
   CurrentValue = false,
   Callback = function(Value)
      espEnabled = Value
   end
})

VisualsTab:CreateToggle({
   Name = "Show Box",
   CurrentValue = true,
   Callback = function(Value)
      showBox = Value
   end
})

VisualsTab:CreateToggle({
   Name = "Show Skeleton",
   CurrentValue = true,
   Callback = function(Value)
      showSkeleton = Value
   end
})

VisualsTab:CreateToggle({
   Name = "Show Distance (M)",
   CurrentValue = true,
   Callback = function(Value)
      showDistance = Value
   end
})

VisualsTab:CreateToggle({
   Name = "Show Player Name",
   CurrentValue = true,
   Callback = function(Value)
      showName = Value
   end
})

VisualsTab:CreateToggle({
   Name = "Show Tracers",
   CurrentValue = true,
   Callback = function(Value)
      showTracers = Value
   end
})

VisualsTab:CreateToggle({
   Name = "Team Check",
   CurrentValue = true,
   Callback = function(Value)
      teamCheck = Value
   end
})

CreditsTab:CreateLabel("Made with love by gw_jayy0161")

Features & Information

aimbot visuals universal script key: simonisgay

Community Comments (4)

BackzBackzMar 18, 2026

yk people dont need to get the key if you just post the code:sob:

Replying to @Backz
gw_jayy0061gw_jayy0061Mar 18, 2026

@Westz ik but i just thought it would be funny with a key so yeah

TiredZombieTiredZombieMar 19, 2026

Im banned from discord so lowkey gang just post the key man

Replying to @TiredZombie
BackzBackzMar 20, 2026

@TiredZombie THE KEY IS simonisgay

More Scripts for Universal Scripts