Basic Mouse Aimbot

local function get_closest_player()
    local cursor_pos = vector(input.cursor_position())

    local closest_distance = math.huge
    local closest_player = 0

    local players = entity.get_players(true)
    for _, player in next, players do
        local head_pos = vector(player:bone_position("Head"))
        if (head_pos:is_zero()) then goto continue end

        local screen_pos = vector(utility.world_to_screen(head_pos:unpack()))
        if (screen_pos:is_zero()) then goto continue end

        local delta = vector(screen_pos.x - cursor_pos.x, screen_pos.y - cursor_pos.y, 0)
        local distance = delta:length()

        if (distance < closest_distance) then
            closest_distance = distance
            closest_player = player
        end

        ::continue::
    end

    return closest_player
end

local function on_update()
    local cursor_pos = vector(input.cursor_position())
    local player = get_closest_player()

    local root_pos = vector(player:bone_position("Head"))
    if (root_pos:is_zero()) then return end

    local screen_pos = vector(utility.world_to_screen(root_pos:unpack()))
    if (screen_pos:is_zero()) then return end

    local delta = vector(screen_pos.x - cursor_pos.x, screen_pos.y - cursor_pos.y, 0):scale(0.3);

    input.mouse_move(delta.x, delta.y)
end

cheat.set_callback("update", on_update)

Last updated