local ffi = require "ffi"
local bit = require "bit"
local vector = require "vector"
local aa_funcs = require "gamesense/antiaim_funcs" or error "Missing gamesense/antiaim_funcs"
local clipboard = require "gamesense/clipboard" or error("Clipboard library required")
local json = require("json")
local weapons = require("gamesense/csgo_weapons")

-- [[ UI Helper / Renaming ]]
local function prefix(x, z) 
    return (z and ("\\a698a6dFF~ \\a414141FF(\\ab5b5b5FF%s\\a414141FF) \\a89f596FF%s"):format(x, z) or ("\\a89f596FF%s"):format(x)) 
end

local PROJ_NAME = "SXPHORA.SENSE"

-- [[ Variables & State ]]
local menu = {}
local notifications = {}
local hitmarker_queue = {}
local tracer_queue = {}
local last_tag_time = 0
local aa_dir = 0 
local timer = globals.tickcount()

-- [[ Notification System ]]
local notify = (function()
    local b = vector
    local c = function(d, b, c) return d + (b - d) * c end
    local e = function() return b(client.screen_size()) end
    local f = function(d, ...) local c = {...} local c = table.concat(c, "") return b(renderer.measure_text(d, c)) end
    local g = { notifications = { bottom = {} }, max = { bottom = 5 } }
    g.__index = g
    g.new_bottom = function(h, i, j, text, color_key)
        table.insert(g.notifications.bottom, {
            started = false,
            instance = setmetatable({ active = false, timeout = 7, color = { ["r"] = h, ["g"] = i, ["b"] = j, a = 0 }, x = e().x / 2, y = e().y, text = text, color_key = color_key }, g)
        })
        if #g.notifications.bottom > g.max.bottom then table.remove(g.notifications.bottom, 1) end
    end
    function g:handler()
        local d, b = 0, 0
        for d, b in pairs(g.notifications.bottom) do
            if not b.instance.active and b.started then table.remove(g.notifications.bottom, d) end
        end
        for d = 1, #g.notifications.bottom do if g.notifications.bottom[d].instance.active then b = b + 1 end end
        for c, e in pairs(g.notifications.bottom) do
            if c > g.max.bottom then return end
            if e.instance.active then e.instance:render_bottom(d, b) d = d + 1 end
            if not e.started then e.instance:start() e.started = true end
        end
    end
    function g:start() self.active = true self.delay = globals.realtime() + self.timeout end
    function g:get_text()
        local d = ""
        for b, b in pairs(self.text) do d = d .. b[1] end
        return d
    end
    function g:render_bottom(g, l)
        local e, r_size = e(), ui.get(menu["Visuals"]["notheight"])
        local n = self:get_text()
        local text_size = f("", n)
        local q = text_size.x + 50
        local s, t = (e.x / 2 - q / 2), math.ceil(self.y - 40)
        local u = globals.frametime()
        if globals.realtime() < self.delay then
            self.y = c(self.y, e.y - 45 - (l - g) * r_size * 1.4, u * 7)
            self.color.a = c(self.color.a, 255, u * 2)
        else
            self.y = c(self.y, self.y - 10, u * 15)
            self.color.a = c(self.color.a, 0, u * 20)
            if self.color.a <= 1 then self.active = false end
        end
        renderer.rectangle(s, t, q, r_size, 25, 25, 25, self.color.a, 10)
        renderer.text(s + q/2, t + r_size/2, 255, 255, 255, self.color.a, "c", 0, n)
    end
    return g
end)()

-- [[ MENU SETUP ]]
local function setup_menu()
    ui.new_label("aa", "anti-aimbot angles", prefix("------------------------------------------"))
    ui.new_label("aa", "anti-aimbot angles", prefix("         " .. PROJ_NAME .. " ENHANCEMENTS            "))
    ui.new_label("aa", "anti-aimbot angles", prefix("------------------------------------------"))

    menu["Rage"] = {
        resolver_enable = ui.new_checkbox("aa", "anti-aimbot angles", prefix("adaptive resolver")),
        resolver_mode = ui.new_combobox("aa", "anti-aimbot angles", "\nresolver_mode", {"standard", "bruteforce", "experimental"}),
    }

    menu["AA"] = {
        fake_pitch = ui.new_combobox("aa", "anti-aimbot angles", prefix("impossible pitch"), {"off", "head-to-feet", "jitter down", "zero snap"}),
        m_left = ui.new_hotkey("aa", "anti-aimbot angles", "manual left", true),
        m_right = ui.new_hotkey("aa", "anti-aimbot angles", "manual right", true),
        m_back = ui.new_hotkey("aa", "anti-aimbot angles", "manual back", true),
    }

    menu["Visuals"] = {
        tracer = ui.new_checkbox("VISUALS", "Effects", prefix("bullet tracers redux")),
        tracer_color = ui.new_color_picker("VISUALS", "Effects", "Tracer Color", 255, 255, 255, 255),
        hitmark = ui.new_checkbox("aa", "anti-aimbot angles", prefix("world hitmarker")),
        notheight = ui.new_slider("aa", "anti-aimbot angles", prefix("notify height"), 10, 50, 25),
        indicators = ui.new_checkbox("aa", "anti-aimbot angles", prefix("indicators"), true),
    }

    menu["Misc"] = {
        tag_enable = ui.new_checkbox("aa", "anti-aimbot angles", prefix("custom clan tag")),
        tag_input = ui.new_textbox("aa", "anti-aimbot angles", prefix("tag text")),
        tag_speed = ui.new_slider("aa", "anti-aimbot angles", prefix("tag speed"), 1, 10, 5),
        killsay = ui.new_checkbox("aa", "anti-aimbot angles", prefix("killsay")),
    }
end
setup_menu()

-- [[ Bullet Tracers Logic ]]
client.set_event_callback("bullet_impact", function(e)
    if ui.get(menu["Visuals"]["tracer"]) and client.userid_to_entindex(e.userid) == entity.get_local_player() then
        local lx, ly, lz = client.eye_position()
        table.insert(tracer_queue, {lx, ly, lz, e.x, e.y, e.z, globals.curtime() + 2})
    end
end)

-- [[ Resolver Logic ]]
client.set_event_callback("net_update_end", function()
    if not ui.get(menu["Rage"].resolver_enable) then return end
    local enemies = entity.get_players(true)
    for i=1, #enemies do
        local ent = enemies[i]
        if entity.is_alive(ent) and not entity.is_dormant(ent) then
            local pitch = entity.get_prop(ent, "m_angEyeAngles", 0)
            if math.abs(pitch) >= 89 then
                entity.set_prop(ent, "m_angEyeAngles", 89, 0)
            end
            if ui.get(menu["Rage"].resolver_mode) == "bruteforce" then
                local yaw = entity.get_prop(ent, "m_angEyeAngles", 1)
                entity.set_prop(ent, "m_angEyeAngles", pitch, yaw + client.random_int(-30, 30))
            end
        end
    end
end)

-- [[ Anti-Aim & Manuals ]]
client.set_event_callback("setup_command", function(cmd)
    local lp = entity.get_local_player()
    if not lp or not entity.is_alive(lp) then return end

    if ui.get(menu["AA"].m_left) then aa_dir = 1
    elseif ui.get(menu["AA"].m_right) then aa_dir = 2
    elseif ui.get(menu["AA"].m_back) then aa_dir = 0 end

    local p_mode = ui.get(menu["AA"].fake_pitch)
    if p_mode ~= "off" then
        local p_val = 89
        if p_mode == "head-to-feet" then p_val = (globals.tickcount() % 2 == 0) and 89 or -89
        elseif p_mode == "jitter down" then p_val = 89 + client.random_float(-0.5, 0.5)
        elseif p_mode == "zero snap" then p_val = (globals.tickcount() % 4 == 0) and 0 or 89 end
        entity.set_prop(lp, "m_angEyeAngles", p_val, 0)
    end

    local yaw_ref = ui.reference("aa", "anti-aimbot angles", "yaw")
    if aa_dir == 1 then ui.set(yaw_ref, 90)
    elseif aa_dir == 2 then ui.set(yaw_ref, -90)
    elseif aa_dir == 0 then ui.set(yaw_ref, 0) end
end)

-- [[ Paint & Indicators ]]
client.set_event_callback("paint", function()
    notify:handler()

    -- Render Tracers
    if ui.get(menu["Visuals"]["tracer"]) then
        local r, g, b, a = ui.get(menu["Visuals"]["tracer_color"])
        for i, data in pairs(tracer_queue) do
            if globals.curtime() <= data[7] then
                local x1, y1 = renderer.world_to_screen(data[1], data[2], data[3])
                local x2, y2 = renderer.world_to_screen(data[4], data[5], data[6])
                if x1 and x2 then renderer.line(x1, y1, x2, y2, r, g, b, a) end
            else table.remove(tracer_queue, i) end
        end
    end

    -- Render Indicators
    if ui.get(menu["Visuals"]["indicators"]) then
        local lp = entity.get_local_player()
        if not lp or not entity.is_alive(lp) then return end
        local w, h = client.screen_size()
        renderer.text(w/2, h/2 + 20, 255, 255, 255, 255, "cb", 0, PROJ_NAME)
        
        local desync = math.floor(math.abs(entity.get_prop(lp, "m_flPoseParameter", 11) * 120 - 60))
        renderer.text(w/2, h/2 + 30, 150, 200, 60, 255, "c-", 0, "DESYNC: " .. desync .. "°")
    end
end)

-- [[ Clan Tag Logic ]]
client.set_event_callback("run_command", function()
    if not ui.get(menu["Misc"].tag_enable) then return end
    local cur_time = globals.realtime()
    if cur_time - last_tag_time < (11 - ui.get(menu["Misc"].tag_speed)) * 0.1 then return end
    
    local tag = ui.get(menu["Misc"].tag_input)
    if tag ~= "" then
        client.set_clan_tag(tag)
        last_tag_time = cur_time
    end
end)

-- [[ Killsay (Gucci style) ]]
local killsays = {"Powered by " .. PROJ_NAME, "Sit down", "Nice desync, easy tap", "Get SXPHORA'D"}
client.set_event_callback("player_death", function(e)
    if not ui.get(menu["Misc"].killsay) then return end
    if client.userid_to_entindex(e.attacker) == entity.get_local_player() then
        client.exec("say " .. killsays[client.random_int(1, #killsays)])
    end
end)

client.log(PROJ_NAME .. " Integrated Successfully.")

Embed on website

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