-- AIM V1- ESP JKK con FOV  CENTRADO ECXATO (SCRIPT COMPLETO)
local success, err = pcall(function()

local Rayfield
local ok, result = pcall(function()
    return loadstring(game:HttpGet('https://[Log in to view URL]'))()
end)
if ok and result then
    Rayfield = result
else
    ok, result = pcall(function()
        return loadstring(game:HttpGet('https://[Log in to view URL]'))()
    end)
    if ok and result then Rayfield = result end
end

if not Rayfield then
    game:GetService("StarterGui"):SetCore("SendNotification", {Title="Erro", Text="Não foi possível carregar o painel.", Duration=5})
    return
end

local Window = Rayfield:CreateWindow({
    Name = "AIM V1 BY JKK",
    LoadingTitle = "AIM V1",
    LoadingSubtitle = "Cargando aim",
    TouchCompatible = true
})

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

-- Variables
local aimbot = false
local aimassist = false
local showfov = false
local spin = false
local fov = 150
local spinspeed = 10
local esp = false
local tracer = false
local espcolor = Color3.fromRGB(255,255,255)
local noclip = false

-- Carpeta organizadora
local ESP_Folder = Instance.new("Folder")
ESP_Folder.Name = "AIMDEX_ESP_System"
pcall(function() ESP_Folder.Parent = game.CoreGui end)
if not ESP_Folder.Parent then
    ESP_Folder.Parent = LocalPlayer:WaitForChild("PlayerGui")
end

local TracerGui = Instance.new("ScreenGui")
TracerGui.Name = "Tracers"
TracerGui.Parent = ESP_Folder
TracerGui.IgnoreGuiInset = true

-- Altura deseada de la barra de salud en studs (del mismo tamaño que el avatar)
local BAR_WORLD_HEIGHT = 5

local espObjects = {}

local function criarESP(player)
    if player == LocalPlayer then return end

    -- Borrar el espacio anterior
    if espObjects[player] then
        local obj = espObjects[player]
        if obj.connection then obj.connection:Disconnect() end
        if obj.highlight then obj.highlight:Destroy() end
        if obj.billboardInfo then obj.billboardInfo:Destroy() end
        if obj.billboardHealth then obj.billboardHealth:Destroy() end
        if obj.tracerLine then obj.tracerLine:Destroy() end
        espObjects[player] = nil
    end

    -- Highlight (contorno)
    local highlight = Instance.new("Highlight")
    highlight.Name = player.Name .. "_Highlight"
    highlight.FillTransparency = 1
    highlight.OutlineColor = espcolor
    highlight.OutlineTransparency = 0
    highlight.Enabled = esp
    highlight.Parent = ESP_Folder

    -- Cartel informativo (nombre + distancia)
    local billboardInfo = Instance.new("BillboardGui")
    billboardInfo.Name = player.Name .. "_Info"
    billboardInfo.Size = UDim2.new(0, 200, 0, 48)      -- largura x altura
    billboardInfo.StudsOffset = Vector3.new(0, 2.5, 0) -- encima de la cabeza
    billboardInfo.AlwaysOnTop = true
    billboardInfo.MaxDistance = 2000
    billboardInfo.Enabled = false
    billboardInfo.Parent = ESP_Folder

    local nameLabel = Instance.new("TextLabel", billboardInfo)
    nameLabel.Size = UDim2.new(1, 0, 0.5, 0)
    nameLabel.Position = UDim2.new(0, 0, 0, 0)
    nameLabel.BackgroundTransparency = 1
    nameLabel.Text = player.Name
    nameLabel.TextColor3 = espcolor
    nameLabel.Font = Enum.Font.Code
    nameLabel.TextSize = 14
    nameLabel.TextScaled = false
    nameLabel.TextXAlignment = Enum.TextXAlignment.Center
    nameLabel.TextTruncate = Enum.TextTruncate.AtEnd

    local distLabel = Instance.new("TextLabel", billboardInfo)
    distLabel.Size = UDim2.new(1, 0, 0.5, 0)
    distLabel.Position = UDim2.new(0, 0, 0.5, 0)
    distLabel.BackgroundTransparency = 1
    distLabel.Text = ""
    distLabel.TextColor3 = espcolor
    distLabel.Font = Enum.Font.Code
    distLabel.TextSize = 14
    distLabel.TextScaled = false
    distLabel.TextXAlignment = Enum.TextXAlignment.Center

    -- Cartel publicitario de barra de vida (tamaño ajustable)
    local billboardHealth = Instance.new("BillboardGui")
    billboardHealth.Name = player.Name .. "_HealthBar"
    billboardHealth.AlwaysOnTop = true
    billboardHealth.MaxDistance = 2000
    billboardHealth.Enabled = false
    billboardHealth.Parent = ESP_Folder

    local healthBg = Instance.new("Frame", billboardHealth)
    healthBg.Name = "HealthBg"
    healthBg.Size = UDim2.new(1, 0, 1, 0)           -- ocupará toda la valla publicitaria
    healthBg.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
    healthBg.BorderSizePixel = 0

    local healthBar = Instance.new("Frame", healthBg)
    healthBar.Name = "HealthBar"
    healthBar.Size = UDim2.new(1, 0, 1, 0)          -- será ajustado via script
    healthBar.Position = UDim2.new(0, 0, 1, 0)      
    healthBar.BackgroundColor3 = Color3.fromRGB(0, 255, 0)
    healthBar.BorderSizePixel = 0
    healthBar.AnchorPoint = Vector2.new(0, 1)       -- crece para cima

    -- Linea tracer
    local tracerLine = Instance.new("Frame")
    tracerLine.Name = "TracerLine"                  -- nombre para identificar
    tracerLine.AnchorPoint = Vector2.new(0.5, 0.5)
    tracerLine.BackgroundColor3 = espcolor
    tracerLine.BorderSizePixel = 0
    tracerLine.Parent = TracerGui

    -- Actualizacion contínua
    local connection
    connection = RunService.RenderStepped:Connect(function()
        local character = player.Character
        if character and character:FindFirstChild("HumanoidRootPart") and character:FindFirstChild("Humanoid") and character.Humanoid.Health > 0 then
            local hrp = character.HumanoidRootPart
            local humanoid = character.Humanoid
            local head = character:FindFirstChild("Head") or hrp

            billboardInfo.Adornee = head
            billboardHealth.Adornee = head
            highlight.Parent = character

            -- Calcula tamaño visual dañe barra (proporcional al jugador)
            local barBottom = head.Position
            local barTop = head.Position + Vector3.new(0, BAR_WORLD_HEIGHT, 0)
            local screenBottom, onBottom = Camera:WorldToViewportPoint(barBottom)
            local screenTop, onTop = Camera:WorldToViewportPoint(barTop)
            if onBottom and onTop then
                local barPixelHeight = math.abs(screenTop.Y - screenBottom.Y)
                billboardHealth.Size = UDim2.new(0, 4, 0, math.max(barPixelHeight, 1))
                -- Ajusta offset para centtralizar la barra del PJ
                billboardHealth.StudsOffset = Vector3.new(1.5, -BAR_WORLD_HEIGHT/2, 0)
            end

            -- Actualiza barra de vida
            local healthPct = math.clamp(humanoid.Health / humanoid.MaxHealth, 0, 1)
            healthBar.Size = UDim2.new(1, 0, healthPct, 0)
            healthBar.BackgroundColor3 = Color3.new(1 - healthPct, healthPct, 0)

            -- Distancia
            if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
                local dist = math.floor((LocalPlayer.Character.HumanoidRootPart.Position - hrp.Position).Magnitude)
                distLabel.Text = dist .. " studs"
            end

            -- Visibilidad general (ESP)
            highlight.Enabled = esp
            billboardInfo.Enabled = esp
            billboardHealth.Enabled = esp
            highlight.OutlineColor = espcolor
            nameLabel.TextColor3 = espcolor
            distLabel.TextColor3 = espcolor

            -- Tracers
            if tracer and esp then
                local vector, onScreen = Camera:WorldToViewportPoint(hrp.Position)
                if onScreen then
                    tracerLine.Visible = true
                    local bottomCenter = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y)
                    local targetPos = Vector2.new(vector.X, vector.Y)
                    local distance = (bottomCenter - targetPos).Magnitude
                    tracerLine.Size = UDim2.new(0, 2, 0, distance)
                    local center = (bottomCenter + targetPos) / 2
                    tracerLine.Position = UDim2.new(0, center.X, 0, center.Y)
                    local angle = math.atan2(targetPos.Y - bottomCenter.Y, targetPos.X - bottomCenter.X)
                    tracerLine.Rotation = math.deg(angle) + 90
                else
                    tracerLine.Visible = false
                end
            else
                tracerLine.Visible = false
            end
        else
            billboardInfo.Adornee = nil
            billboardHealth.Adornee = nil
            highlight.Parent = ESP_Folder
            tracerLine.Visible = false
        end
    end)

    espObjects[player] = {
        highlight = highlight,
        billboardInfo = billboardInfo,
        billboardHealth = billboardHealth,
        tracerLine = tracerLine,
        connection = connection
    }
end

-- Inicializa jugadores existentes
for _, player in ipairs(Players:GetPlayers()) do criarESP(player) end
Players.PlayerAdded:Connect(criarESP)
Players.PlayerRemoving:Connect(function(player)
    if espObjects[player] then
        local obj = espObjects[player]
        if obj.connection then obj.connection:Disconnect() end
        if obj.highlight then obj.highlight:Destroy() end
        if obj.billboardInfo then obj.billboardInfo:Destroy() end
        if obj.billboardHealth then obj.billboardHealth:Destroy() end
        if obj.tracerLine then obj.tracerLine:Destroy() end
        espObjects[player] = nil
    end
end)

-- Círculo de FOV
local fovGui = Instance.new("ScreenGui", game.CoreGui)
local fovCircle = Instance.new("Frame", fovGui)
fovCircle.AnchorPoint = Vector2.new(0.5, 0.5)
fovCircle.Position = UDim2.new(0.5, 0, 0.5, 0)
fovCircle.BackgroundTransparency = 1
fovCircle.Visible = false
local uiCorner = Instance.new("UICorner", fovCircle)
uiCorner.CornerRadius = UDim.new(1, 0)
local fovStroke = Instance.new("UIStroke", fovCircle)
fovStroke.Color = Color3.new(1,1,1)
fovStroke.Thickness = 1
fovStroke.Transparency = 0.3

-- Funciones auxiliares
local function toScreen(pos)
    local v, on = Camera:WorldToViewportPoint(pos)
    return Vector2.new(v.X, v.Y), v.Z > 0
end

local function isTargetVisible(head)
    local camPos = Camera.CFrame.Position
    local targetPos = head.Position
    local dir = (targetPos - camPos).Unit
    local dist = (targetPos - camPos).Magnitude - 0.1
    local ignoreList = { LocalPlayer.Character, head.Parent }
    local hit = workspace:FindPartOnRayWithIgnoreList(Ray.new(camPos, dir * dist), ignoreList)
    return hit == nil
end

-- Loop principal
RunService.RenderStepped:Connect(function(delta)
    if aimbot or aimassist then
        local char = LocalPlayer.Character
        if char and char:FindFirstChild("HumanoidRootPart") then
            local closest = nil
            local minDist = fov
            for _, p in ipairs(Players:GetPlayers()) do
                if p ~= LocalPlayer and p.Character and p.Character:FindFirstChild("Head") then
                    local head = p.Character.Head
                    local pos, on = toScreen(head.Position)
                    if on then
                        local d = (Vector2.new(pos.X, pos.Y) - Camera.ViewportSize/2).Magnitude
                        if d < minDist and isTargetVisible(head) then
                            minDist = d
                            closest = head
                        end
                    end
                end
            end
            if closest then
                local targetPos = closest.Position
                if aimbot then Camera.CFrame = CFrame.new(Camera.CFrame.Position, targetPos)
                elseif aimassist then Camera.CFrame = Camera.CFrame:Lerp(CFrame.new(Camera.CFrame.Position, targetPos), 0.3) end
            end
        end
    end

    if spin then
        local char = LocalPlayer.Character
        if char then
            local hum = char:FindFirstChildOfClass("Humanoid")
            local hrp = char:FindFirstChild("HumanoidRootPart")
            if hum and hrp then
                if hum.AutoRotate then hum.AutoRotate = false end
                hrp.CFrame = hrp.CFrame * CFrame.Angles(0, math.rad(spinspeed * 60 * delta), 0)
            end
        end
    else
        local char = LocalPlayer.Character
        if char then
            local hum = char:FindFirstChildOfClass("Humanoid")
            if hum and not hum.AutoRotate then hum.AutoRotate = true end
        end
    end

    if showfov then
        local diameter = fov * 2
        fovCircle.Size = UDim2.new(0, diameter, 0, diameter)
        fovCircle.Visible = true
    else
        fovCircle.Visible = false
    end
end)

RunService.Stepped:Connect(function()
    if noclip and LocalPlayer.Character then
        for _, v in ipairs(LocalPlayer.Character:GetDescendants()) do
            if v:IsA("BasePart") and v.CanCollide then v.CanCollide = false end
        end
    end
end)

-- Interface
local t1 = Window:CreateTab("🎯 Aim")
t1:CreateToggle({Name="AIMBOT Principal", Callback=function(v) aimbot=v end})
t1:CreateToggle({Name="Aim Assist  (Aim)", Callback=function(v) aimassist=v end})
t1:CreateSlider({Name="FOV de Aimbot", Range={0,300}, Increment=1, Suffix=" studs", CurrentValue=150, Callback=function(v) fov=v end})
t1:CreateToggle({Name="Mostrar FOV", Callback=function(v) showfov=v end})
t1:CreateToggle({Name="Spin Bot (Giro)", Callback=function(v) spin=v end})
t1:CreateSlider({Name="Velocidade de Spin", Range={1,50}, Increment=1, Suffix="x", CurrentValue=10, Callback=function(v) spinspeed=v end})

local t2 = Window:CreateTab(" 👀 Visuales")
t2:CreateToggle({Name="Master ESP", Callback=function(v) esp=v end})
t2:CreateToggle({Name="ESP Tracer (Lineas)", Callback=function(v) tracer=v end})
t2:CreateColorPicker({Name="Color do ESP", Color=espcolor, Callback=function(v) 
    espcolor=v 
    -- Actualiza contornos e textos existentes
    for _, obj in pairs(ESP_Folder:GetDescendants()) do
        if obj:IsA("Highlight") then obj.OutlineColor = v end
        if obj:IsA("TextLabel") then obj.TextColor3 = v end
    end
    -- Actualiza todas las lineas tracer (dentro de TracerGui)
    for _, line in pairs(TracerGui:GetDescendants()) do
        if line:IsA("Frame") and line.Name == "TracerLine" then
            line.BackgroundColor3 = v
        end
    end
    -- Tambiem actualiazacion futuras
end})

local t3 = Window:CreateTab("🏃 Player Cheat Menu ")
t3:CreateToggle({Name="Noclip", Callback=function(v) noclip=v end})
t3:CreateButton({Name="Ajustar Colisioo", Callback=function()
    if not noclip then Rayfield:Notify({Title="Aviso", Content="Aticva el Noclip primero.", Duration=3}) return end
    if LocalPlayer.Character then for _, p in ipairs(LocalPlayer.Character:GetDescendants()) do if p:IsA("BasePart") and p.CanCollide then p.CanCollide = false end end end
    Rayfield:Notify({Title="OK", Content="Colisino ajustada.", Duration=2})
end})

local t4 = Window:CreateTab("⚙️ Sistema & IA")
t4:CreateButton({Name="Modo Rápido (Fast Mode)", Callback=function()
    pcall(function()
        local l = game:GetService("Lighting"); l.GlobalShadows=false; l.Brightness=2
        for _, v in ipairs(l:GetChildren()) do if v:IsA("PostEffect") or v:IsA("BloomEffect") or v:IsA("BlurEffect") then v.Enabled=false end end
        for _, v in ipairs(workspace:GetDescendants()) do
            if v:IsA("ParticleEmitter") or v:IsA("Smoke") or v:IsA("Fire") then v.Enabled=false end
            if v:IsA("BasePart") and v.Material~=Enum.Material.SmoothPlastic then v.Material=Enum.Material.SmoothPlastic end
        end
    end)
    Rayfield:Notify({Title="Fast Mode", Content="Optimizacion aplicada.", Duration=3})
end})
t4:CreateButton({Name="MODO IA JKK", Callback=function()
    pcall(function()
        collectgarbage()
        local l = game:GetService("Lighting"); l.GlobalShadows=false; l.Brightness=2; l.FogEnd=10000; l.ClockTime=14
        l.Ambient=Color3.new(1,1,1); l.OutdoorAmbient=Color3.new(1,1,1)
        for _, v in ipairs(l:GetChildren()) do if v:IsA("PostEffect") or v:IsA("BloomEffect") or v:IsA("BlurEffect") or v:IsA("SunRaysEffect") then v.Enabled=false end end
        for _, v in ipairs(workspace:GetDescendants()) do
            if v:IsA("ParticleEmitter") or v:IsA("Smoke") or v:IsA("Fire") or v:IsA("Sparkles") then v.Enabled=false end
            if v:IsA("BasePart") then v.Material=Enum.Material.SmoothPlastic end
            if v:IsA("Decal") or v:IsA("Texture") then v.Transparency=1 end
        end
    end)
    Rayfield:Notify({Title="IA Optimizacion ", Content="Optimizacion máxima establecida, scripter.", Duration=4})
end})

-- Monitor de FPS/Ping
local fpsGui = Instance.new("ScreenGui", game.CoreGui)
local fpsFrame = Instance.new("Frame", fpsGui)
fpsFrame.Size = UDim2.new(0,120,0,24)
fpsFrame.Position = UDim2.new(1,-130,0,10)
fpsFrame.BackgroundColor3 = Color3.fromRGB(10,10,10)
fpsFrame.BackgroundTransparency = 0.4
fpsFrame.BorderSizePixel = 0
Instance.new("UIStroke", fpsFrame).Color = Color3.fromRGB(255,255,255)
fpsFrame.UIStroke.Thickness = 1
fpsFrame.UIStroke.Transparency = 0.7
local fpsLabel = Instance.new("TextLabel", fpsFrame)
fpsLabel.Size = UDim2.new(1,-4,1,0)
fpsLabel.Position = UDim2.new(0,2,0,0)
fpsLabel.BackgroundTransparency = 1
fpsLabel.TextColor3 = Color3.fromRGB(255,255,255)
fpsLabel.Font = Enum.Font.Code
fpsLabel.TextSize = 12
fpsLabel.TextXAlignment = Enum.TextXAlignment.Center
fpsLabel.Text = "FPS: -- | Ping: --"
fpsFrame.Visible = false
t4:CreateToggle({Name="Monitor de FPS", Callback=function(v) fpsFrame.Visible=v end})
local fc, tt = 0, 0
RunService.Heartbeat:Connect(function(delta)
    fc = fc + 1; tt = tt + delta
    if tt >= 0.5 then
        local fps = math.floor(fc / tt)
        local ping = math.floor(LocalPlayer:GetNetworkPing() * 1000)
        fpsLabel.Text = string.format("FPS: %d | Ping: %d ms", fps, ping)
        fc, tt = 0, 0
    end
end)

Rayfield:Notify({Title="Universal Aim ", Content="AIM UNIVERSAL FUE CREADO PARA DESTROSAR HACKERS", Duration=5})

end)

if not success then
    warn("Erro: "..tostring(err))
    game:GetService("StarterGui"):SetCore("SendNotification", {Title="Error Hub", Text=tostring(err), Duration=4.5})
end

Embed on website

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