LUA скрипт Nova.tech [NL]

666
Забаненный
Статус
Оффлайн
Регистрация
9 Ноя 2020
Сообщения
468
Реакции[?]
65
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
ffi.cdef[[
    typedef struct {
        unsigned short wYear;
        unsigned short wMonth;
        unsigned short wDayOfWeek;
        unsigned short wDay;
        unsigned short wHour;
        unsigned short wMinute;
        unsigned short wSecond;
        unsigned short wMilliseconds;
    } SYSTEMTIME, *LPSYSTEMTIME;
    void GetSystemTime(LPSYSTEMTIME lpSystemTime);
    void GetLocalTime(LPSYSTEMTIME lpSystemTime);

    typedef struct {
        float x;
        float y;
        float z;
    } vec3_struct;

    typedef void*(__thiscall* c_entity_list_get_client_entity_t)(void*, int);
    typedef void*(__thiscall* c_entity_list_get_client_entity_from_handle_t)(void*, uintptr_t);

    typedef int(__thiscall* c_weapon_get_muzzle_attachment_index_first_person_t)(void*, void*);
    typedef int(__thiscall* c_weapon_get_muzzle_attachment_index_third_person_t)(void*);
    typedef bool(__thiscall* c_entity_get_attachment_t)(void*, int, vec3_struct*);
   
    bool CreateDirectoryA(const char* lpPathName, void* lpSecurityAttributes);
    void* __stdcall URLDownloadToFileA(void* LPUNKNOWN, const char* LPCSTR, const char* LPCSTR2, int a, int LPBINDSTATUSCALLBACK);
    void* __stdcall ShellExecuteA(void* hwnd, const char* op, const char* file, const char* params, const char* dir, int show_cmd);

    bool DeleteUrlCacheEntryA(const char* lpszUrlName);
]]

local urlmon = ffi.load 'UrlMon'
local wininet = ffi.load 'WinInet'
local gdi = ffi.load 'Gdi32'

Download = function(from, to)
    wininet.DeleteUrlCacheEntryA(from)
    urlmon.URLDownloadToFileA(nil, from, to, 0,0)
    print('Successfully!')
end

CreateDir = function(path)
    ffi.C.CreateDirectoryA(path, NULL)
end

local engineClient = Utils.CreateInterface("engine.dll", "VEngineClient014")
local engineClientClass = ffi.cast(ffi.typeof("void***"), engineClient)
local isConsoleVisible = ffi.cast("bool(__thiscall*)(void*)", engineClientClass[0][11])

local consoleMaterials = {"vgui_white", "vgui/hud/800corner1", "vgui/hud/800corner2", "vgui/hud/800corner3", "vgui/hud/800corner4"}
local materialList = {}

local oldColor = Color.new(1.0, 1.0, 1.0, 1.0)
local oldConsoleIsVisible = false

local materials = {
    "particle/fire_burning_character/fire_env_fire_depthblend_oriented",
    "particle/fire_burning_character/fire_burning_character",
    "particle/fire_explosion_1/fire_explosion_1_oriented",
    "particle/fire_explosion_1/fire_explosion_1_bright",
    "particle/fire_burning_character/fire_burning_character_depthblend",
    "particle/fire_burning_character/fire_env_fire_depthblend",
}

local ffi_handler = {}
local muzzle = {}

ffi_handler.bind_argument = function(fn, arg)
    return function(...)
        return fn(arg, ...)
    end
end

ffi_handler.interface_type = ffi.typeof("uintptr_t**")

ffi_handler.i_client_entity_list = ffi.cast(ffi_handler.interface_type, Utils.CreateInterface("client.dll", "VClientEntityList003"))
ffi_handler.get_client_entity = ffi_handler.bind_argument(ffi.cast("c_entity_list_get_client_entity_t", ffi_handler.i_client_entity_list[0][3]), ffi_handler.i_client_entity_list)

muzzle.attachment_index = 84
muzzle.muzzle_attachment_index_1st = 468
muzzle.muzzle_attachment_index_3rd = 469

muzzle.pos = Vector.new(0, 0, 0)

muzzle.get = function()

    if not EngineClient.IsInGame() then return end

    local me = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
    if not me or EntityList.GetLocalPlayer():GetProp("DT_BasePlayer", "m_iHealth") < 1 then return end

    local my_weapon = EntityList.GetClientEntityFromHandle(me:GetProp("DT_BaseCombatCharacter", "m_hActiveWeapon"))
    if not my_weapon then return end

    local my_address = ffi_handler.get_client_entity(me:EntIndex())
    if not my_address then return end

    local my_weapon_address = ffi_handler.get_client_entity(my_weapon:EntIndex())
    if not my_weapon_address then return end

    local viewmodel = EntityList.GetClientEntityFromHandle(me:GetProp("DT_BasePlayer", "m_hViewModel[0]"))
    if not viewmodel then return end

    local viewmodel_ent = ffi_handler.get_client_entity(viewmodel:EntIndex())
    if not viewmodel_ent then return end

    local weaponworldmodel = EntityList.GetClientEntityFromHandle(my_weapon:GetProp("DT_BaseCombatWeapon", "m_hWeaponWorldModel"))
    if not weaponworldmodel then return end

    local weaponworldmodel_ent = ffi_handler.get_client_entity(weaponworldmodel:EntIndex())
    if not weaponworldmodel_ent then return end

    local viewmodel_vtbl = ffi.cast(ffi_handler.interface_type, viewmodel_ent)[0]
    local weaponworldmodel_vtbl = ffi.cast(ffi_handler.interface_type, weaponworldmodel_ent)[0]
    local weapon_vtbl = ffi.cast(ffi_handler.interface_type, my_weapon_address)[0]

    local get_viewmodel_attachment_fn = ffi.cast("c_entity_get_attachment_t", viewmodel_vtbl[muzzle.attachment_index])
    local get_weaponworldmodel_attachment_fn = ffi.cast("c_entity_get_attachment_t", weaponworldmodel_vtbl[muzzle.attachment_index])
    local get_muzzle_attachment_index_1st_fn = ffi.cast("c_weapon_get_muzzle_attachment_index_first_person_t", weapon_vtbl[muzzle.muzzle_attachment_index_1st])
    local get_muzzle_attachment_index_3rd_fn = ffi.cast("c_weapon_get_muzzle_attachment_index_third_person_t", weapon_vtbl[muzzle.muzzle_attachment_index_3rd])

    local muzzle_attachment_index_1st = get_muzzle_attachment_index_1st_fn(my_weapon_address, viewmodel_ent)
    local muzzle_attachment_index_3rd = get_muzzle_attachment_index_3rd_fn(my_weapon_address)

    local ret = ffi.new("vec3_struct[1]")
    local is_thirdperson = Menu.FindVar("Visuals", "View", "Thirdperson", "Enable Thirdperson")

    if is_thirdperson:Get() then
        state = get_weaponworldmodel_attachment_fn(weaponworldmodel_ent, muzzle_attachment_index_3rd, ret)
    else
        state = get_viewmodel_attachment_fn(viewmodel_ent, muzzle_attachment_index_1st, ret)
    end

    return {state = state, pos = Vector.new(ret[0].x, ret[0].y, ret[0].z)}
end

local x = EngineClient.GetScreenSize().x
local y = EngineClient.GetScreenSize().y
local sc = EngineClient.GetScreenSize()
local aa = {}
local state = {"Global", "Stand", "Move", "Air", "Duck", "Slow walk"}
local hitboxes = {"generic","head","chest","stomach","left arm","right arm","left leg","right leg","neck"};
local logs = {}
logs[#logs+1] = {("[nova.tech] Welcome back, "..Cheat.GetCheatUserName().."!"), GlobalVars.tickcount + 300, 0}
logs[#logs+1] = {("[nova.tech] Download font in Global Tab!"), GlobalVars.tickcount + 300, 0}
local ui =
{
    --rage
    antidefensive = Menu.Switch("Global","Rage", "Anti-Defensive", false),
    autopeek = Menu.Switch("Global","Rage", "Quick Peek", false),
    disable_os = Menu.Switch("Global","Rage", "Disable FL on Hide Shots", false),
    idealtick = Menu.Switch("Global","Rage", "Idealtick", false, "Works when autopeek"),
    add_idealtick = Menu.MultiCombo("Global","Rage", "Idealtick Options", {"Freestand", "Override Damage", "Safe Head"}, 0),
    idealtick_damage = Menu.SliderInt("Global","Rage","Idealtick Damage", 10, 0, 130),
    air_hitchance = Menu.Switch("Global","Rage", "In-Air Hitchance", false),
    air_hitchance_value = Menu.SliderInt("Global","Rage","Air Hitchance Value", 50, 1, 100),
    ns_hitchance = Menu.Switch("Global","Rage", "Noscope Hitchance", false),
    ns_hitchance_value = Menu.SliderInt("Global","Rage","NS Hitchance Value", 50, 1, 100),

    --visuals
    state_panel = Menu.Switch("Visuals","Main","State Panel", false),
    circle = Menu.SwitchColor("Visuals","Main", "Anti-Aim Crosshair Indicator", false, Color.new(0.57, 0.57, 1, 1)),
    circle_style = Menu.Combo("Visuals","Main", "Style", {"Circle", "Arrows"}, 0),
    glowpeek = Menu.SwitchColor("Visuals","Main", "Glow Autopeek", false, Color.new(0.47, 0.47, 1, 0.5)),
    viewmodel = Menu.Switch("Visuals","Main", "Viewmodel in Scope", false),
    scope = Menu.SwitchColor("Visuals","Main", "Custom Scope", false, Color.new(1, 1, 1, 1)),
    offset = Menu.SliderInt("Visuals","Main", "Offset", 5, -500, 500),
    length = Menu.SliderInt("Visuals","Main", "Length", 25, 0, 1000),
    color = Menu.ColorEdit("Visuals","Main", "Accent Color", Color.new(0.57, 0.57, 1, 1)),

    --indicators
    indicators = Menu.MultiCombo("Visuals","Indicators","Indicators", {"Nova.tech #1", "Nova.tech #2", "Nova.tech #3", "Ideal Yaw", "Skeet"}, 0),
    add_indicators = Menu.MultiCombo("Visuals","Indicators","Additional Indicators", {"Freestand", "Exploit", "Damage", "Freestand"}, 0),
    damage_indicator = Menu.Switch("Visuals","Indicators", "Damage Indicator", false),
    manual_arrows = Menu.Switch("Visuals","Indicators","Manual Arrows", false),
    arrows_style = Menu.Combo("Visuals","Indicators","Arrows Style", {"Default", "TeamSkeet"}, 0),
    color1 = Menu.ColorEdit("Visuals","Indicators", "First Color", Color.RGBA(175, 255, 0, 255)),
    color2 = Menu.ColorEdit("Visuals","Indicators", "Second Color", Color.RGBA(0, 200, 255, 255)),

    --solus ui
    windows = Menu.MultiCombo("Visuals","UI","Windows", {"Watermark", "Spectators", "Keybinds", "FAKE & DT", "Holo Panel"}, 0),
    alpha = Menu.SliderInt("Visuals","UI", "Box Alpha", 75, 0, 255),
    holo_on_tp = Menu.Switch("Visuals","UI","Disable in Thirdperson", false),
    binds_x = Menu.SliderInt("Visuals","UI", "X", 300, 0, x),
    binds_y = Menu.SliderInt("Visuals","UI", "Y", 300, 0, y),
    specs_x = Menu.SliderInt("Visuals","UI", "X ", 300, 0, x),
    specs_y = Menu.SliderInt("Visuals","UI", "Y ", 500, 0, y),

    --misc
    hitlogs = Menu.Switch("Misc","Misc","Hitlogs", false),
    hitlogs_type = Menu.MultiCombo("Misc","Misc", "Hitlogs Type", {"Custom", "Console", "Event"}, 0),
    console = Menu.SwitchColor("Misc", "Misc", "Console Color Changer", false, Color.new(1.0, 1.0, 1.0)),
    hitsound = Menu.Combo("Misc","Misc","Hitsound", {"Disable","Skeet", "Alternative", "Custom"}, 0),
    custom_hitsound = Menu.TextBox("Misc","Misc","Filepath", 64, "nova.tech/hitsound/hitsound.wav"),
    wireframe = Menu.Switch("Misc","Misc","Molotov Wireframe", false),
    ignorez = Menu.Switch("Misc","Misc","Ignore-Z", false),
    blur = Menu.Switch("Misc","Misc","Menu Blur", false),
    trashtalk = Menu.Switch("Misc","Misc","Trashtalk", false),
    tpanim = Menu.Switch("Misc","Misc","Disable Thirdperson Animation", false),
}

--anti-aims
aa[0] =
{
    antiaims = Menu.Switch("Anti-Aim","Main","Enable Anti Aim's", false),
    tp_in_air = Menu.Switch("Anti-Aim","Main","Teleport In Air", false),
    fake_flick = Menu.Switch("Anti-Aim","Main","Fake Flick", false),
    on_key = Menu.Switch("Anti-Aim","Main","Legit AA", false),
    antibackstab = Menu.Switch("Anti-Aim","Main","Anti Backstab", false),
    manual = Menu.Combo("Anti-Aim","Main", "Override Yaw Base", {"Disable", "Forward", "Backward", "Right", "Left", "At Target", "Freestanding"}, 0, "Bind it"),
    antiaim = Menu.Combo("Anti-Aim","Main", "Conditions", state, 0),
}
for i = 1, 6 do
    aa[i] = {
        custom_enable = Menu.Switch("Anti-Aim",state[i], string.format("Enable %s Anti Aim", state[i]), false,string.format("Override %s settings", state[i])),
        custom_yaw_base = Menu.Combo("Anti-Aim",state[i], "Yaw Base", {"Forward", "Backward", "Right", "Left", "At Target", "Freestanding"}, 1),
        custom_yaw_add_left = Menu.SliderInt("Anti-Aim",state[i], "Yaw Add Left", 0, -180, 180),
        custom_yaw_add_right = Menu.SliderInt("Anti-Aim",state[i], "Yaw Add Right", 0, -180, 180),
        custom_yaw_modifier = Menu.Combo("Anti-Aim",state[i], "Yaw Modifier", {"Disabled", "Center", "Offset", "Random", "Spin"}, 0),
        custom_modifier_degree = Menu.SliderInt("Anti-Aim",state[i], "Modifier Degree", 0, -180, 180),
        custom_fake_type = Menu.Combo("Anti-Aim",state[i],"Fake Type", {"Static","Jitter","Random"}, 0),
        custom_left_limit = Menu.SliderInt("Anti-Aim",state[i], "Left Limit", 60, 0, 60),
        custom_right_limit = Menu.SliderInt("Anti-Aim",state[i], "Right Limit", 60, 0, 60),
        custom_left_limit2 = Menu.SliderInt("Anti-Aim",state[i], "Left Limit [2]", 60, 0, 60),
        custom_right_limit2 = Menu.SliderInt("Anti-Aim",state[i], "Right Limit [2]", 60, 0, 60),
        custom_options = Menu.MultiCombo("Anti-Aim",state[i],"Fake Options", {"Avoid Overlap","Jitter","Randomize Jitter", "Anti Bruteforce"}, 0),
        custom_lby = Menu.Combo("Anti-Aim",state[i],"LBY Mode", {"Disabled","Opposite","Sway"}, 1),
        custom_fs = Menu.Combo("Anti-Aim",state[i],"Freestanding Desync", {"Off","Peek Fake","Peek Real"}, 0),
        custom_onshot = Menu.Combo("Anti-Aim",state[i],"Desync On Shot", {"Disabled","Opposite","Freestanding","Switch"}, 0),
    }
end
local preset = Menu.Button("Anti-Aim","Main", "Load Default Preset", "Load Default Preset", function()
    aa[1].custom_yaw_base:SetInt(4)
    aa[1].custom_yaw_add_left:SetInt(0)
    aa[1].custom_yaw_add_right:SetInt(0)
    aa[1].custom_yaw_modifier:SetInt(2)
    aa[1].custom_modifier_degree:SetInt(20)
    aa[1].custom_fake_type:SetInt(0)
    aa[1].custom_left_limit:SetInt(42)
    aa[1].custom_right_limit:SetInt(42)
    aa[1].custom_lby:SetInt(0)
    aa[1].custom_fs:SetInt(0)
    aa[1].custom_onshot:SetInt(1)
end)

CreateDir("nl\\nova.tech\\")
--info
Menu.Text("Global","Info","Welcome to Nova.tech, "..Cheat.GetCheatUserName().."!")

local get_discord = Menu.Button("Global","Info","Discord", "Discord", function()
    Panorama.Open().SteamOverlayAPI.OpenExternalBrowserURL("https://discord.gg/X85QFvdSgT")
end)

local get_font = Menu.Button("Global","Info","Download Font", "Download Font", function()
    CreateDir("nl\\nova.tech\\fonts\\")
    Download('https://fontsforyou.com/downloads/99851-smallestpixel7', 'nl\\nova.tech\\fonts\\pixel.ttf')
    logs[#logs+1] = {("[nova.tech] Font installed, restart script!"), GlobalVars.tickcount + 300, 0}
end)

CreateDir("csgo\\sound\\nova.tech\\")
CreateDir("csgo\\sound\\nova.tech\\hitsound\\")
Download('https://cdn.discordapp.com/attachments/856592298132242432/931265632861818930/skeet.wav', 'csgo\\sound\\nova.tech\\hitsound\\hitsound.wav')

Menu.Text("Global","Info","Hitsound Filepath: csgo/sounds | File type .wav")
Menu.Text("Global","Info","  ")
Menu.Text("Global","Info","V1.2.1")
Menu.Text("Global","Info","Nova.tech")

--fonts
local font =
{
    pixel = Render.InitFont("nl\\nova.tech\\fonts\\pixel.ttf", 10),
    verdana = Render.InitFont("Verdana", 11, {'r'}),
    verdanabd = Render.InitFont("Verdana Bold", 11, {'r'}),
    verdanabd12 = Render.InitFont("Verdana Bold", 12),
    calibrib = Render.InitFont("Calibri Bold", 30),
    tahoma = Render.InitFont("Tahoma", 12),
}

--menu reference
local MD = Menu.FindVar("Aimbot","Ragebot","Accuracy","Minimum Damage")
local BA = Menu.FindVar("Aimbot","Ragebot","Misc","Body Aim")
local SP = Menu.FindVar("Aimbot","Ragebot","Misc","Safe Points")
local DT = Menu.FindVar("Aimbot","Ragebot","Exploits","Double Tap")
local AP = Menu.FindVar("Miscellaneous","Main","Movement","Auto Peek")
local SW = Menu.FindVar("Aimbot","Anti Aim","Misc","Slow Walk")
local HS = Menu.FindVar("Aimbot","Ragebot","Exploits","Hide Shots")
local PING = Menu.FindVar("Miscellaneous", "Main", "Other", "Fake Ping")
local FL = Menu.FindVar("Aimbot","Anti Aim","Fake Lag","Limit")
local FLR = Menu.FindVar("Aimbot","Anti Aim","Fake Lag","Randomization")
local FD = Menu.FindVar("Aimbot","Anti Aim","Misc","Fake Duck")
local TP = Menu.FindVar("Visuals", "View", "Thirdperson", "Enable Thirdperson")
local removals = Menu.FindVar("Visuals", "World", "Main", "Removals")

--menu reference for aa
local left_limit = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","Left Limit")
local right_limit = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","Right Limit")
local options = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","Fake Options")
local lby_mode = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","LBY Mode")
local freestand = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","Freestanding Desync")
local onshot = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","Desync On Shot")
local yaw_base = Menu.FindVar("Aimbot","Anti Aim","Main","Yaw Base")
local pitch = Menu.FindVar("Aimbot","Anti Aim","Main","Pitch")
local yaw_add = Menu.FindVar("Aimbot","Anti Aim","Main","Yaw Add")
local yaw_modifier = Menu.FindVar("Aimbot","Anti Aim","Main","Yaw Modifier")
local modifier_degree = Menu.FindVar("Aimbot","Anti Aim","Main","Modifier Degree")
local legmovement = Menu.FindVar("Aimbot", "Anti Aim", "Misc", "Leg Movement")

local normalize_yaw = function(yaw)
    while yaw > 180 do yaw = yaw - 360 end
    while yaw < -180 do yaw = yaw + 360 end
    return yaw
end

function C_BasePlayer:IsLocalPlayer()
    return self == EntityList.GetLocalPlayer()
end

function C_BasePlayer:IsEnemy()
    return EntityList.GetLocalPlayer() and self:IsTeamMate() == false
end

function GetEnemiesWithKnife()
    local ret = {}

    local players = EntityList.GetPlayers()
    if #players < 0 then return {} end

    for i, player in pairs(players) do
        local player_active_weapon = player:GetActiveWeapon()

        if not player_active_weapon then return end

        if player:IsEnemy() and player:IsAlive() and player_active_weapon:IsKnife() then
            table.insert(ret, player)
        end
    end

    return ret
end

--jitter
local jitter = function(c, q)
    local f = math.random(0, 1)
    local b = 0
    if f == 0 then
        b = c
    elseif f == 1 then
        b = q
    end
    return b
end

--set movement
function setmovement(xz,yz,cmd)
    local local_player = EntityList.GetLocalPlayer()
    local_player = local_player:GetPlayer()
    local current_pos = local_player:GetProp("m_vecOrigin")
    local yaw = EngineClient:GetViewAngles().yaw
    local vector_forward = {
        x = current_pos.x - xz,
        y = current_pos.y - yz,
    }  
    local velocity = {
        x = -(vector_forward.x * math.cos(yaw / 180 * math.pi) + vector_forward.y * math.sin(yaw / 180 * math.pi)),
        y = vector_forward.y * math.cos(yaw / 180 * math.pi) - vector_forward.x * math.sin(yaw / 180 * math.pi),
    }
    cmd.forwardmove = velocity.x * 15
    cmd.sidemove = velocity.y * 15
end

--yaw
local yaw = function(h, l, y)
    local invert = AntiAim.GetInverterState()
    if invert == true then
        h:SetInt(l)
    elseif invert == false then
        h:SetInt(y)
    end
end

--lerp
local lerp = function (a, b, percentage) return math.floor(a + (b - a) * percentage) end

local function isColorEquals(clr1, clr2)
    return (clr1.r == clr2.r and clr1.g == clr2.g and clr1.b == clr2.b and clr1.a == clr2.a)
end

local function copyColor(src, dest)
    dest.r, dest.g, dest.b, dest.a = src.r, src.g, src.b, src.a
end

local function findConsoleMaterials()
    if materialList[1] then return end

    local material = MatSystem.FirstMaterial()
    local foundCount = 0

    while(foundCount < 5)
    do
        local mat = MatSystem.GetMaterial(material)
        local name = mat:GetName()

        for i = 1, #consoleMaterials do
            if name == consoleMaterials[i] then
                materialList[i] = mat
                foundCount = foundCount + 1
                break
            end
        end

        material = MatSystem.NextMaterial(material)
    end
end

local function updateConsoleColor(r, g, b, a)
    for i = 1, #materialList do
        local mat = materialList[i]
        mat:ColorModulate(r, g, b)
        mat:AlphaModulate(a)
    end
end

local function cfgConsoleCallback()
    local color = ui.console:Get()

    if not ui.console:Get() then
        updateConsoleColor(1, 1, 1, 1)
    elseif isConsoleVisible(engineClientClass) then
        updateConsoleColor(color.r, color.g, color.b, color.a)
        copyColor(color, oldColor)
    end
end

--angle
local adjust_angle = function(angle)
    if(angle < 0) then
        angle = (90 + angle * (-1))
    elseif(angle > 0) then
        angle = (90 - angle)
    end
    return angle
end

local OldChoke, toDraw0, toDraw1, toDraw2, toDraw3, toDraw4, on_plant_time, fill, text, planting_site, planting, autopeek_origin = 0, 0, 0, 0, 0, 0, 0, 0, "", "", false, nil

--hitgroups
Cheat.RegisterCallback("registered_shot", function(shot)
    local reason_list = {
        "resolver",
        "spread",
        "occlusion",
        "prediction error"
    }
    local reason = shot.reason
    local entity = EntityList.GetClientEntity(shot.target_index)
    local Name = entity:GetPlayer():GetName()
    if ui.hitlogs:Get() then
        if reason == 0 then
            if ui.hitlogs_type:Get(1) then
                logs[#logs+1] = {("[nova.tech] Hit "..Name.."'s in "..hitboxes[shot.hitgroup+1].." for ".. shot.damage .." dmg (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)"), GlobalVars.tickcount + 300, 0}
            end
            if ui.hitlogs_type:Get(2) then
                print("[nova.tech] Hit "..Name.."'s in "..hitboxes[shot.hitgroup+1].." for ".. shot.damage .." dmg (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)")
            end
            if ui.hitlogs_type:Get(3) then
                Cheat.AddEvent("[nova.tech] Hit "..Name.."'s in "..hitboxes[shot.hitgroup+1].." for ".. shot.damage .." dmg (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)")
            end
        else
            if ui.hitlogs_type:Get(1) then
                logs[#logs+1] = {("[nova.tech] Missed ".. Name .. "'s in " .. hitboxes[shot.wanted_hitgroup+1] .. " due to "..reason_list[reason].." (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)"), GlobalVars.tickcount + 300, 0}
            end
            if ui.hitlogs_type:Get(2) then
                print("[nova.tech] Missed ".. Name .. "'s in " .. hitboxes[shot.wanted_hitgroup+1] .. " due to "..reason_list[reason].." (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)")
            end
            if ui.hitlogs_type:Get(3) then
                Cheat.AddEvent("[nova.tech] Missed ".. Name .. "'s in " .. hitboxes[shot.wanted_hitgroup+1] .. " due to "..reason_list[reason].." (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)")
            end
        end
    end
end)

--velocity
local velocity = function(ent)
    local speed = Vector.new(ent:GetProp("DT_BasePlayer", "m_vecVelocity[0]"), ent:GetProp("DT_BasePlayer", "m_vecVelocity[1]"), ent:GetProp("DT_BasePlayer", "m_vecVelocity[2]")):Length2D()
    return speed
end

local drag = {false, false}
local toDraw = {0, 0, 0, 0, 0, 0,}
local keysAnim = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}

local Visuals_HoloX, Visuals_HoloY, fake, curtime, ts, ts2, aastate, legit_aa, in_use, call_once = 0, 0, GlobalVars.curtime, 0, 0, 0, "DEFAULT", false, false, true


local anim = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}

local legitaa = function(cmd)
    local lp = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
    if lp == nil then return end
    in_use = false
    if aa[0].on_key:Get() == false then legit_aa = false return else legit_aa = true end
    if(bit.band(cmd.buttons, 32) == 32 and call_once == true) then
        call_once = false
    end

    if(bit.band(cmd.buttons, 32) == 0 and call_once == false) then
        call_once = true
    end

    if bit.band(cmd.buttons, 32) == 32 then
        in_use = true
        cmd.buttons = bit.band(cmd.buttons, bit.bnot(32))
    end
end

local use = function(cmd)
    if in_use == true then
        cmd.buttons = bit.bor(cmd.buttons, 32)
        in_use = false
    end
end

local Render_Indicator = function(text, ay2, color, size, font, outline)
    ts = Render.CalcTextSize(text, size, font)
    Render.Text(text, Vector2.new(x/2-ts.x/2, y/2+ay2), color, size, font, outline)
end

local Render_Indicator2 = function(text, ay2, color, size, font, outline, ts2)
    ts = Render.CalcTextSize(text, size, font)
    Render.Text(text, Vector2.new(x/2-ts.x/2-ts2, y/2+ay2), color, size, font, outline)
end
     
local Render_Indicator3 = function(text, ay3, color, size, font)
    ts = Render.CalcTextSize(text, size, font)
    Render.Text(text, Vector2.new(x/2+1, y/2+1+ay3), Color.RGBA(0,0,0,255), size, font)
    Render.Text(text, Vector2.new(x/2, y/2+ay3), color, size, font)
end

local Render_Skeet = function(text, ay, color, size, fonts)
    ts = Render.CalcTextSize(text, size, fonts)
    Render.GradientBoxFilled(Vector2.new(13, sc.y/1.48 - 5 + ay), Vector2.new(13 + (ts.x) / 2, sc.y/1.48 - 5 + ay + 28), Color.RGBA(0, 0, 0, 0), Color.RGBA(0, 0, 0, 65), Color.RGBA(0, 0, 0, 0), Color.RGBA(0, 0, 0, 65))
    Render.GradientBoxFilled(Vector2.new(13 + (ts.x) / 2, sc.y/1.48 - 5 + ay), Vector2.new(13 + (ts.x), sc.y/1.48 - 5 + ay + 28), Color.RGBA(0, 0, 0, 65), Color.RGBA(0, 0, 0, 0), Color.RGBA(0, 0, 0, 65), Color.RGBA(0, 0, 0, 0))
    Render.Text(text, Vector2.new(sc.x/100 + 2, sc.y/1.48 - 5 + 5 + ay), Color.new(0, 0, 0, 1), size, fonts)
    Render.Text(text, Vector2.new(sc.x/100 + 2, sc.y/1.48 - 5 + 4 + ay), color, size, fonts)
end

Cheat.RegisterCallback("prediction", function(cmd)
    local lp = EntityList.GetLocalPlayer()
    local forw = bit.band(cmd.buttons, 8) == 8
    local back = bit.band(cmd.buttons, 16) == 16
    local righ = bit.band(cmd.buttons, 512) == 512
    local left = bit.band(cmd.buttons, 1024) == 1024

    local originalpos = lp:GetProp("m_vecOrigin")
    local OnGround = bit.band(lp:GetProp("m_hGroundEntity"), 1);

    if OnGround == 1 then
        air = true
    else
        air = false
    end
    if AP:Get() == false then
        curpos = lp:GetProp("m_vecOrigin");
    end
    if ui.autopeek:Get() then
        if AP:Get() then
            if forw == false and back == false and left == false and righ == false and curpos.x ~= originalpos.x and curpos.y ~= originalpos.y and air == false then
                setmovement(curpos.x,curpos.y, cmd);
            end
        end
    end

    if GlobalVars.tickcount%64<2 and aa[0].fake_flick:Get() and aa[0].antiaims:Get() then
        AntiAim.OverrideYawOffset(90*(AntiAim.GetInverterState()and-1 or 1))
    end
end)

local zxc = 0
local draw = function()
    add_y = 0

    --colors
    local r = math.floor(ui.color:Get().r*255)
    local g = math.floor(ui.color:Get().g*255)
    local b = math.floor(ui.color:Get().b*255)
    local a = ui.alpha:Get()
   
    local dmg = false
    local binds = Cheat.GetBinds()
    for i = 1, #binds do
        if binds[i]:GetName() == "Minimum Damage" and binds[i]:IsActive() then
            dmg = true
        end
    end

    local manuals = yaw_base:Get() == 2 or yaw_base:Get() == 3

    --menu blur
    if ui.blur:Get() then
        if Cheat.IsMenuVisible() then
            if anim[1] < 255 then anim[1] = anim[1] + 10 end
        else
            if anim[1] > 0 then anim[1] = anim[1] - 10 end
        end
        Render.Blur(Vector2.new(0, 0), Vector2.new(x, y), Color.RGBA(255,255,255, anim[1]))
    end

    if ui.disable_os:GetBool() then
        if HS:GetBool() then
            FL:SetInt(1)
        else
            FL:SetInt(14)
        end
    end

    --molotov wireframe
    for _, v in pairs(materials) do
        local material = MatSystem.FindMaterial(v, "")

        if material ~= nil then
            material:SetMaterialVarFlag(bit.lshift(1, 28), ui.wireframe:Get())
            material:SetMaterialVarFlag(bit.lshift(1, 15), ui.ignorez:Get())
        end
    end

    --console color changer
    if ui.console:Get() then
        findConsoleMaterials()

        local color = ui.console:GetColor()
        local consoleVisible = isConsoleVisible(engineClientClass)

        if consoleVisible and not isColorEquals(oldColor, color) then
            updateConsoleColor(color.r, color.g, color.b, color.a)
            copyColor(color, oldColor)
        end

        if consoleVisible ~= oldConsoleIsVisible then
            if not consoleVisible then
                updateConsoleColor(1, 1, 1, 1)
            else
                updateConsoleColor(color.r, color.g, color.b, color.a)
            end

            oldConsoleIsVisible = consoleVisible
        end
    end

    --anti defensive
    local lc = CVar.FindVar("cl_lagcompensation")
    if ui.antidefensive:Get() then
        if lc:GetInt() == 1 then
            EngineClient.ExecuteClientCmd("jointeam 1")
            lc:SetInt(0)
        end
    else
        if lc:GetInt() == 0 then
            EngineClient.ExecuteClientCmd("jointeam 1")
            lc:SetInt(1)
        end
    end

    local lp = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
    if lp == nil then
        logs = {}
        return
    end
   
    if AP:Get() and ui.glowpeek:Get() then
        if autopeek_origin == nil then
            autopeek_origin = lp:GetProp('m_vecOrigin')
        end
        for i = 1, 60 do
            local autopeek_value = 1/i
            if i <= 60 then
                autopeek_value = autopeek_value + 1.5
            end
            local autopeek_color = ui.glowpeek:GetColor()
            if AP:Get() then
                Render.Circle3DFilled(autopeek_origin, 28, i / -2.5, Color.new(autopeek_color.r, autopeek_color.g, autopeek_color.b, autopeek_value / 50 * autopeek_color.a))
                Render.Circle3DFilled(autopeek_origin, 18, i / -2.6, Color.new(autopeek_color.r, autopeek_color.g, autopeek_color.b, autopeek_value / 50 * autopeek_color.a))
            end
        end
    else
        autopeek_origin = nil
    end

    --hitlogs
    if #logs > 0 then
        if GlobalVars.tickcount >= logs[1][2] then
            if logs[1][3] > 0 then
                logs[1][3] = logs[1][3] - 2
            elseif logs[1][3] <= 0 then
                table.remove(logs, 1)
            end
        end
        if #logs > 5 then
            table.remove(logs, 1)
        end
        for i = 1, #logs do
            ts = Render.CalcTextSize(logs[i][1], 11, font.verdana)
            if logs[i][3] < 255 then logs[i][3] = logs[i][3] + 1 end
            Render.Blur(Vector2.new(math.min(50, logs[i][3]*2)-60 + x/2-ts.x/2, y-256+34*i), Vector2.new(math.min(50, logs[i][3]*2)-40 + x/2+ts.x/2, y-242+34*i+ts.y), Color.RGBA(0,0,0, math.min(255, logs[i][3]*5)), 100)
            Render.BoxFilled(Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2-ts.x/2, y-256+34*i), Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2-ts.x/2+math.min(ts.x, logs[i][3]*7), y-254+34*i), Color.RGBA(r,g,b,math.min(255, logs[i][3]*5)))
            Render.BoxFilled(Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2+ts.x/2-math.min(ts.x, logs[i][3]*7), y-241+ts.y+34*i), Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2+ts.x/2, y-243+ts.y+34*i), Color.RGBA(r,g,b,math.min(255, logs[i][3]*5)))
            Render.Circle(Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2-ts.x/2, y-243+34*i), 12, 32, Color.RGBA(r,g,b,math.min(255, logs[i][3]*5)), 2, 270-math.min(180, logs[i][3]*3), 270)
            Render.Circle(Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2+ts.x/2, y-243+34*i), 12, 32, Color.RGBA(r,g,b,math.min(255, logs[i][3]*5)), 2.5, 90, 90-math.min(180, logs[i][3]*3))
            Render.Text(logs[i][1], Vector2.new(math.min(50, logs[i][3]*2)-49 + x/2-ts.x/2, y-249+34*i), Color.RGBA(0,0,0, math.min(255, logs[i][3]*5)), 11, font.verdana)
            Render.Text(logs[i][1], Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2-ts.x/2, y-250+34*i), Color.RGBA(255,255,255, math.min(255, logs[i][3]*5)), 11, font.verdana)
            Render.Text("[nova.tech] ", Vector2.new(math.min(50, logs[i][3]*2)-49 + x/2-ts.x/2, y-249+34*i), Color.RGBA(0,0,0, math.min(255, logs[i][3]*5)), 11, font.verdana)
            Render.Text("[nova.tech] ", Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2-ts.x/2, y-250+34*i), Color.RGBA(r,g,b, math.min(255, logs[i][3]*5)), 11, font.verdana)
        end
    end
    local delta_to_draw = math.abs(normalize_yaw(AntiAim.GetCurrentRealRotation()%360 - AntiAim.GetFakeRotation()%360))/2
   
    local chocking = ClientState.m_choked_commands
    if chocking < OldChoke then
        toDraw0 = toDraw1
        toDraw1 = toDraw2
        toDraw2 = toDraw3
        toDraw3 = toDraw4
        toDraw4 = OldChoke
    end
    OldChoke = chocking

    --skeet indicators
    if ui.indicators:Get(5) then
        add_y = 0

        if ui.add_indicators:Get(1) then
            Render_Skeet(string.format('%i-%i-%i-%i-%i',toDraw4,toDraw3,toDraw2,toDraw1,toDraw0), add_y, Color.RGBA(235 ,235, 235, 255), 22, font.calibrib)
            add_y = add_y - 35
        end

        if ui.add_indicators:Get(2) and lp:GetPlayer():IsAlive() then
            Render_Skeet("EX", add_y, DT:Get() and bit.band(lp:GetPlayer():GetProp("m_fFlags"), bit.lshift(1,0)) == 0 and Color.RGBA(132, 195, 16, 255) or Color.RGBA(208, 208, 20, 255), 22, font.calibrib)
            add_y = add_y - 35
        end

        if ui.add_indicators:Get(3) and dmg == true then
            Render_Skeet("DMG:"..MD:Get(), add_y, Color.RGBA(255, 255, 255, 150), 22, font.calibrib)
            add_y = add_y - 35
        end

        if ui.add_indicators:Get(4) and yaw_base:Get() == 5 then
            Render_Skeet("FS", add_y, Color.RGBA(235 ,235, 235, 255), 22, font.calibrib)
            add_y = add_y - 35
        end

        if PING:Get() > 0 then
            Render_Skeet("PING", add_y, Color.RGBA(math.floor(255 - ((PING:Get() / 189 * 60) * 2.29824561404)), math.floor((PING:Get() / 189 * 60) * 3.42105263158), math.floor((PING:Get() / 189 * 60) * 0.22807017543), 255), 22, font.calibrib)
            add_y = add_y - 35
           end
       
        if FD:Get() then
            Render_Skeet("DUCK", add_y, Color.RGBA(235 ,235, 235, 255), 22, font.calibrib)
            add_y = add_y - 35
        end

        local c4 = EntityList.GetEntitiesByClassID(129)[1];
        if c4 ~= nil then
            local time = ((c4:GetProp("m_flC4Blow") - GlobalVars.curtime)*10) / 10
            local timer = string.format("%.1f", time)
            local defused = c4:GetProp("m_bBombDefused")
            if math.floor(timer) > 0 and not defused then
                local defusestart = c4:GetProp("m_hBombDefuser") ~= 4294967295
                local defuselength = c4:GetProp("m_flDefuseLength")
                local defusetimer = defusestart and math.floor((c4:GetProp("m_flDefuseCountDown") - GlobalVars.curtime)*10) / 10 or -1
                if defusetimer > 0 then
                    local color = math.floor(timer) > defusetimer and Color.RGBA(58, 191, 54, 160) or Color.RGBA(252, 18, 19, 125)
                   
                    local barlength = (((sc.y - 50) / defuselength) * (defusetimer))
                    Render.BoxFilled(Vector2.new(0.0, 0.0), Vector2.new(16, sc.y), Color.RGBA(25, 25, 25, 160))
                    Render.Box(Vector2.new(0.0, 0.0), Vector2.new(16, sc.y), Color.RGBA(25, 25, 25, 160))
                   
                    Render.BoxFilled(Vector2.new(0, sc.y - barlength), Vector2.new(16, sc.y), color)
                end
               
                local bombsite = c4:GetProp("m_nBombSite") == 0 and "A" or "B"
                local health = lp:GetProp("m_iHealth")
                local armor = lp:GetProp("m_ArmorValue")
                local willKill = false
                local eLoc = c4:GetRenderOrigin()
                local lLoc = lp:GetRenderOrigin()
                local distance = eLoc:DistTo(lLoc)
                local a = 450.7
                local b = 75.68
                local c = 789.2
                local d = (distance - b) / c;

                local damage = a * math.exp(-d * d)
                if armor > 0 then
                    local newDmg = damage * 0.5;
   
                    local armorDmg = (damage - newDmg) * 0.5
                    if armorDmg > armor then
                        armor = armor * (1 / .5)
                        newDmg = damage - armorDmg
                    end
                    damage = newDmg;
                end
                local dmg = math.ceil(damage)
                    if dmg >= health then
                    willKill = true
                else
                    willKill = false
                end
                Render_Skeet(bombsite.." - "..string.format("%.1f", timer).."s", add_y, Color.RGBA(235 ,235, 235, 255), 22, font.calibrib)
                add_y = add_y - 35
                if lp then
                    if willKill == true then
                        Render_Skeet("FATAL", add_y, Color.RGBA(255, 0, 0, 255), 22, font.calibrib)
                        add_y = add_y - 35
                    elseif damage > 0.5 then
                        Render_Skeet("-"..dmg.." HP", add_y, Color.RGBA(210, 216, 112, 255), 22, font.calibrib)
                        add_y = add_y - 35
                    end
                end
            end
        end
        if planting then
            Render_Skeet(planting_site, add_y, Color.RGBA(210, 216, 112, 255), 22, font.calibrib)
            fill = 3.125 - (3.125 + on_plant_time - GlobalVars.curtime)
            if(fill > 3.125) then
                fill = 3.125
            end
            ts = Render.CalcTextSize(planting_site, 22, font.calibrib)
            Render.Circle(Vector2.new(sc.x/100 + 2 + ts.x+18, sc.y/1.48 - 5+add_y+ts.y/2+3), 8, 32, Color.RGBA(0, 0, 0, 255), 4, 0, 360)
            Render.Circle(Vector2.new(sc.x/100 + 2 + ts.x+18, sc.y/1.48 - 5+add_y+ts.y/2+3), 8, 32, Color.RGBA(235 ,235, 235, 255), 3, 0, (fill/3.3)*360)
            add_y = add_y - 35
        end      
       
        if DT:Get() then
            Render_Skeet("DT", add_y, Exploits.GetCharge() == 1 and Color.RGBA(235 ,235, 235, 255) or Color.RGBA(255, 0, 0, 255), 22, font.calibrib)
            add_y = add_y - 35
        end
    end
   
    if ui.windows:Get(1) then
        local ping = math.floor(EngineClient.GetNetChannelInfo():GetLatency(0)*1000)
        local local_time = ffi.new("SYSTEMTIME")
        ffi.C.GetLocalTime(local_time)

        text_wm = "nova.tech | "..Cheat.GetCheatUserName().." | delay: "..ping.." | "..string.format("%02d:%02d:%02d", local_time.wHour, local_time.wMinute, local_time.wSecond)
        ts_wm = Render.CalcTextSize(text_wm, 11, font.verdana) + 16

        Render.Blur(Vector2.new(x-ts_wm.x-6, 10), Vector2.new(x-10, 28), Color.RGBA(100, 100, 100, a))
        Render.BoxFilled(Vector2.new(x-ts_wm.x-6, 8), Vector2.new(x-10, 10), Color.RGBA(r, g, b, 255))

        Render.Text(text_wm, Vector2.new(x-ts_wm.x+1, 13), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
        Render.Text(text_wm, Vector2.new(x-ts_wm.x, 12), Color.RGBA(255, 255, 255, 255), 11, font.verdana)
    end

    if ui.windows:Get(2) then
        local players = EntityList.GetPlayers()
        local specs = {}
        local local_player = EntityList.GetLocalPlayer()
        for table_index, player_pointer in pairs(players) do
            if player_pointer and player_pointer:GetProp("m_iHealth") <= 0 then
                local local_player = EntityList.GetLocalPlayer()
                if local_player:IsAlive() then
                    local player = player_pointer
                    local spec_handle = player:GetProp("m_hObserverTarget")
                    local spec_player = EntityList.GetClientEntityFromHandle(spec_handle)
                    if spec_player ~= nil then
                        if spec_player:GetPlayer() == local_player:GetPlayer() then
                            specs[#specs+1] = player_pointer:GetName()
                        end
                    end
                else
                    local observer = player_pointer:GetProp('m_hObserverTarget')
                    local player = EntityList.GetLocalPlayer()
                    local localtarget = player:GetProp('m_hObserverTarget')
                    if observer == localtarget then
                        specs[#specs+1] = player_pointer:GetName()
                    end
                end
            end
        end
        xxx = ui.specs_x:Get()
        yyy = ui.specs_y:Get()
        if #specs > 0 or Cheat.IsMenuVisible() then
            Render.Blur(Vector2.new(xxx - 80, yyy - 4), Vector2.new(xxx + 80, yyy + 14), Color.RGBA(100, 100, 100, a))
            Render.BoxFilled(Vector2.new(xxx - 80, yyy - 6), Vector2.new(xxx + 80, yyy - 4), Color.RGBA(r, g, b, 255))
            ts = Render.CalcTextSize("spectators", 11, font.verdana)
            Render.Text("spectators", Vector2.new(xxx - ts.x/2+1, yyy - 1), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
            Render.Text("spectators", Vector2.new(xxx - ts.x/2, yyy - 2), Color.RGBA(255, 255, 255, 255), 11, font.verdana)
            for i = 1, #specs do
                Render.Text(specs[i], Vector2.new(xxx - 76, yyy + 1 + i * 17), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
                Render.Text(specs[i], Vector2.new(xxx - 77, yyy + i * 17), Color.RGBA(255, 255, 255, 255), 11, font.verdana)
            end
        end
        if Cheat.IsKeyDown(0x1) then
            local mouse = Cheat.GetMousePos()
            local ts = Render.CalcTextSize("spectators", 12)
            if drag[2] == true then
                ui.specs_x:SetInt(mouse.x)
                ui.specs_y:SetInt(mouse.y)
            end
            if mouse.x >= xxx - 70 and mouse.y >= yyy and mouse.x <= xxx + 70 and mouse.y <= yyy + ts.y then
                if drag[1] == false then drag[2] = true end
            end
        else
            drag[2] = false
        end
    end

    if ui.windows:Get(3) then
        local binds = Cheat.GetBinds()
        xx = ui.binds_x:Get()
        yy = ui.binds_y:Get()
        if #binds > 0 or Cheat.IsMenuVisible() then
            for i = 1, #binds do
                if binds[i]:IsActive() then
                    if keysAnim[i] < 255 then keysAnim[i] = keysAnim[i] + 30 else keysAnim[i] = 255 end
                else
                    if keysAnim[i] > 0 then keysAnim[i] = keysAnim[i] - 30 else keysAnim[i] = 0 end
                end
                mode = binds[i]:GetMode() == 0 and "[toggled]" or binds[i]:GetMode() == 1 and "[holding]"
                ts = Render.CalcTextSize(mode, 11, font.verdana)
                Render.Text(binds[i]:GetName(), Vector2.new(xx - 76, yy + 1 + i * 17), Color.RGBA(0, 0, 0, keysAnim[i]), 11, font.verdana)
                Render.Text(binds[i]:GetName(), Vector2.new(xx - 77, yy + i * 17), Color.RGBA(255, 255, 255, keysAnim[i]), 11, font.verdana)

                Render.Text(mode, Vector2.new(xx + 78-ts.x, yy + 1 + i * 17), Color.RGBA(0, 0, 0, keysAnim[i]), 11, font.verdana)
                Render.Text(mode, Vector2.new(xx + 77-ts.x, yy + i * 17), Color.RGBA(255, 255, 255, keysAnim[i]), 11, font.verdana)
            end
            Render.Blur(Vector2.new(xx - 80, yy - 4), Vector2.new(xx + 80, yy + 14), Color.RGBA(100, 100, 100, a))
            Render.BoxFilled(Vector2.new(xx - 80, yy - 6), Vector2.new(xx + 80, yy - 4), Color.RGBA(r, g, b, 255))
            ts = Render.CalcTextSize("keybinds", 11, font.verdana)
            Render.Text("keybinds", Vector2.new(xx - ts.x/2+1, yy - 1), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
            Render.Text("keybinds", Vector2.new(xx - ts.x/2, yy - 2), Color.RGBA(255, 255, 255, 255), 11, font.verdana)
        end
        if Cheat.IsKeyDown(0x1) then
            local mouse = Cheat.GetMousePos()
            local ts = Render.CalcTextSize("keybinds", 12)
            if drag[1] == true then
                ui.binds_x:SetInt(mouse.x)
                ui.binds_y:SetInt(mouse.y)
            end
            if mouse.x >= xx - 70 and mouse.y >= yy and mouse.x <= xx + 70 and mouse.y <= yy + ts.y then
                if drag[2] == false then drag[1] = true end
            end
        else
            drag[1] = false
        end
    end

    if ui.windows:Get(4) then
        --fl
        text_fl = DT:Get() and "FL: "..chocking.." | SHIFTING" or "FL: "..chocking
        ts_fl = Render.CalcTextSize(text_fl, 11, font.verdana) + 16
        fl_clr = Color.RGBA(math.floor(255 - (chocking * 8.57142857142)), math.floor(chocking * 14.28105263158), math.floor(chocking * 0.84807017543), 255)
        fl_clr1 = Color.RGBA(math.floor(255 - (chocking * 8.57142857142)), math.floor(chocking * 14.28105263158), math.floor(chocking * 0.84807017543), 0)
        Render.Blur(Vector2.new(x-ts_fl.x-6, 35), Vector2.new(x-10, 53), Color.RGBA(100, 100, 100, a))
        Render.GradientBoxFilled(Vector2.new(x-ts_fl.x/2-6, 53), Vector2.new(x-10, 54), fl_clr, fl_clr1, fl_clr, fl_clr1)
        Render.GradientBoxFilled(Vector2.new(x-ts_fl.x-6, 53), Vector2.new(x-ts_fl.x/2-6, 54), fl_clr1, fl_clr, fl_clr1, fl_clr)
        Render.Text(text_fl, Vector2.new(x-ts_fl.x+1, 38), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
        Render.Text(text_fl, Vector2.new(x-ts_fl.x, 37), Color.RGBA(255, 255, 255, 255), 11, font.verdana)

        --fake
        text_fake = string.format("FAKE (%.1f°)",delta_to_draw)
        ts_fake = Render.CalcTextSize(text_fake, 11, font.verdana) + 16
        local fake_clr = Color.RGBA(math.floor(255 - (delta_to_draw * 2.29824561404)), math.floor(delta_to_draw * 3.42105263158), math.floor(delta_to_draw * 0.22807017543), 255)
        local fake_clr1 = Color.RGBA(math.floor(255 - (delta_to_draw * 2.29824561404)), math.floor(delta_to_draw * 3.42105263158), math.floor(delta_to_draw * 0.22807017543), 0)
        Render.GradientBoxFilled(Vector2.new(x-(ts_fl.x+ts_fake.x/2)-6, 35), Vector2.new(x-ts_fl.x-10, 53), Color.RGBA(0, 0, 0, a), Color.new(0, 0, 0, 0), Color.RGBA(0, 0, 0, a), Color.new(0, 0, 0, 0))
        Render.GradientBoxFilled(Vector2.new(x-(ts_fl.x+ts_fake.x)-6, 35), Vector2.new(x-(ts_fl.x+ts_fake.x/2)-6, 53), Color.new(0, 0, 0, 0), Color.RGBA(0, 0, 0, a), Color.new(0, 0, 0, 0), Color.RGBA(0, 0, 0, a))

        Render.GradientBoxFilled(Vector2.new(x-(ts_fl.x+ts_fake.x)-4, 34), Vector2.new(x-(ts_fl.x+ts_fake.x)-6, 44), fake_clr1, fake_clr1, fake_clr, fake_clr)
        Render.GradientBoxFilled(Vector2.new(x-(ts_fl.x+ts_fake.x)-4, 44), Vector2.new(x-(ts_fl.x+ts_fake.x)-6, 54), fake_clr, fake_clr, fake_clr1, fake_clr1)
        Render.Text(text_fake, Vector2.new(x-(ts_fl.x+ts_fake.x)+1, 38), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
        Render.Text(text_fake, Vector2.new(x-(ts_fl.x+ts_fake.x), 37), Color.RGBA(255, 255, 255, 255), 11, font.verdana)
    end

    local calcs = {
        deg2rad = function(self, x)
            return x * (math.pi / 180.0)
        end,
   
        rotated_position = function(self, start, rotation, distance)
            local rad = self:deg2rad(rotation)
            local new_start = Vector.new(start.x, start.y, start.z)
            new_start.x = new_start.x + math.cos(rad) * distance
            new_start.y = new_start.y + math.sin(rad) * distance
   
            return new_start
        end
    }

    if lp:GetPlayer():IsAlive() then
        local view_angles = EngineClient.GetViewAngles()
        local real_yaw = AntiAim.GetCurrentRealRotation()
        local view_yaw = view_angles.yaw - 180;
        local fake = adjust_angle(real_yaw - view_yaw);
        local fake_clr = Color.RGBA(math.floor(255 - (delta_to_draw * 2.29824561404)), math.floor(delta_to_draw * 3.42105263158), math.floor(delta_to_draw * 0.22807017543), 255)
        local clr = Color.new(ui.circle:GetColor().r, ui.circle:GetColor().g, ui.circle:GetColor().b, 1)
        if ui.circle:GetBool() then
            if ui.circle_style:GetInt() == 0 then
                Render.Circle(Vector2.new(x/2, y/2), 7, 32, Color.new(0, 0, 0, 1), 4, 0, 360)
                Render.Circle(Vector2.new(x/2, y/2), 7, 32, fake_clr, 4, 90, AntiAim.GetInverterState() == false and -90 or 270)
                Render.Circle(Vector2.new(x/2, y/2), 15, 32, fake_clr, 4, fake+30, fake-30)
            else
                local real_rotation = calcs:deg2rad(view_angles.yaw - AntiAim.GetCurrentRealRotation() - 90);
                Render.PolyFilled(AntiAim.GetInverterState() and Color.new(1, 1, 1, 1) or clr,
                    Vector2.new(x/2 + math.cos(real_rotation) * 45,
                                y/2 + math.sin(real_rotation) * 45),
                    Vector2.new(x/2 + math.cos(real_rotation - calcs:deg2rad(20)) * (45 - 15),
                                y/2 + math.sin(real_rotation - calcs:deg2rad(20)) * (45 - 15)),
                    Vector2.new(x/2 + math.cos(real_rotation) * (45 - 13),
                                y/2 + math.sin(real_rotation) * (45 - 13))
                )
                Render.PolyFilled(AntiAim.GetInverterState() and clr or Color.new(1, 1, 1, 1),
                Vector2.new(x/2 + math.cos(real_rotation) * 45,
                            y/2 + math.sin(real_rotation) * 45),
                Vector2.new(x/2 + math.cos(real_rotation + calcs:deg2rad(20)) * (45 - 15),
                            y/2 + math.sin(real_rotation + calcs:deg2rad(20)) * (45 - 15)),
                Vector2.new(x/2 + math.cos(real_rotation) * (45 - 13),
                            y/2 + math.sin(real_rotation) * (45 - 13))
            )
            end
        end

        if ui.idealtick:Get() and AP:Get() then
            if ui.add_idealtick:Get(1) then
                aa[0].manual:SetInt(6)
            end
            zxc = 1
        elseif zxc == 1 then
            aa[0].manual:SetInt(0)
            zxc = 0
        end

        --hitchance and dmg
        local active_weapon = lp:GetPlayer():GetActiveWeapon()
        if active_weapon == nil then return end
        local weapon_id = active_weapon:GetWeaponID()
        local players = EntityList.GetPlayers()
        for _, player in ipairs(players) do
            if not player:IsTeamMate() then
                local user_index = player:EntIndex()
                if ui.air_hitchance:Get() and weapon_id == 40 and bit.band(lp:GetProp("m_fFlags"), bit.lshift(1,0)) == 0 then
                    RageBot.OverrideHitchance(user_index, ui.air_hitchance_value:Get())
                end
                if ui.ns_hitchance:Get() and weapon_id == 11 or weapon_id == 38 and not lp:GetPlayer():GetProp("m_bIsScoped") then
                    RageBot.OverrideHitchance(user_index, ui.ns_hitchance_value:Get())
                end
                if ui.idealtick:Get() and AP:Get() then
                    if ui.add_idealtick:Get(2) then
                        RageBot.OverrideMinDamage(user_index, ui.idealtick_damage:Get())
                    end
                    if ui.add_idealtick:Get(3) then
                        RageBot.ForceHitboxSafety(user_index, 0)
                    end
                end
            end
        end
       
        --state
        local ax = 0
        if ui.state_panel:Get() then
            arrows = AntiAim.GetInverterState() and "<" or ">"
            Render.Text("NOVA.TECH - V1.2.1 | "..Cheat.GetCheatUserName(), Vector2.new(x/20, y/2.4+30), Color.RGBA(255,255,255,255), 10, font.pixel, true)
            Render.Text("+ INVERTER: "..arrows.." | STATE: "..aastate, Vector2.new(x/20, y/2.4+42), Color.RGBA(125, 125, 125, 255), 10, font.pixel, true)
            Render.Text("+ FAKELAG COUNTER: "..string.format("%i-%i-%i-%i-%i",toDraw4,toDraw3,toDraw2,toDraw1,toDraw0), Vector2.new(x/20, y/2.4+54), Color.RGBA(125, 125, 125, 255), 10, font.pixel, true)
            Render.Text("+ DOUBLE-TAP: ", Vector2.new(x/20, y/2.4+66), Color.RGBA(125, 125, 125, 255), 10, font.pixel, true)
            ax = ax + Render.CalcTextSize("+ DOUBLE-TAP: ", 10, font.pixel).x
            Render.Text(DT:Get() and "ON" or "OFF", Vector2.new(x/20+ax, y/2.4+66), DT:Get() and Color.RGBA(80, 255, 80, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)
            ax = ax + Render.CalcTextSize(DT:Get() and "ON " or "OFF ", 10, font.pixel).x
            Render.Text("| OS-AA: ", Vector2.new(x/20+ax, y/2.4+66), Color.RGBA(125, 125, 125, 255),10, font.pixel, true)
            ax = ax + Render.CalcTextSize("| OS-AA: ", 10, font.pixel).x
            Render.Text(HS:Get() and "ON" or "OFF", Vector2.new(x/20+ax, y/2.4+66), HS:Get() and Color.RGBA(80, 255, 80, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)
        end

        --holo panel
        ay = 0
        if ui.windows:Get(5) and ui.viewmodel:Get() or ui.windows:Get(5) and not lp:GetPlayer():GetProp("m_bIsScoped") then
            if ui.holo_on_tp:Get() and not TP:Get() or ui.holo_on_tp:Get() == false and TP:Get() or TP:Get() == false then
                local muzzle_temp = muzzle.get()

                if muzzle_temp then
                    muzzle.pos = muzzle_temp.pos
                end
               
                local hitbox = lp:GetPlayer():GetHitboxCenter(3)
                local world_stand =  Render.WorldToScreen(hitbox)
                local pos2d = Render.WorldToScreen(muzzle.pos)
                if DT:Get() then
                    ay = 13
                else
                    ay = 0
                end
                if TP:Get() then
                    if world_stand.x ~= nil and world_stand.y ~= nil then
                        Render.Line(Vector2.new(Visuals_HoloX, Visuals_HoloY+ay+65), Vector2.new(x/2, world_stand.y), Color.RGBA(100,100,100,220))
                        local lerpx = lerp(Visuals_HoloX, world_stand.x + 10, GlobalVars.frametime * 8)
                        local lerpy = lerp(Visuals_HoloY, world_stand.y - 90, GlobalVars.frametime * 8)
                        if lerpx >= 0 and lerpx <= 2000 and lerpy >= 0 and lerpy <= 1500 then
                            Visuals_HoloX = lerp(Visuals_HoloX, world_stand.x + 10, GlobalVars.frametime * 8)
                            Visuals_HoloY = lerp(Visuals_HoloY, world_stand.y - 90, GlobalVars.frametime * 8)
                        else
                            Visuals_HoloX = world_stand.x + 10
                            Visuals_HoloY = world_stand.y - 90
                        end
                    end
                else
                    if pos2d.x ~= nil and pos2d.y ~= nil then
                        local lerpx = lerp(Visuals_HoloX, pos2d.x - 20, GlobalVars.frametime * 8)
                        local lerpy = lerp(Visuals_HoloY, pos2d.y - 125, GlobalVars.frametime * 8)
                        Render.Line(Vector2.new(Visuals_HoloX, Visuals_HoloY+ay+65), Vector2.new(pos2d.x, pos2d.y), Color.RGBA(100,100,100,220))
                        if lerpx >= 0 and lerpx <= 3000 and lerpy >= 0 and lerpy <= 2000 then
                            Visuals_HoloX = lerp(Visuals_HoloX, pos2d.x - 20, GlobalVars.frametime * 8)
                            Visuals_HoloY = lerp(Visuals_HoloY, pos2d.y - 125, GlobalVars.frametime * 8)
                        else
                            Visuals_HoloX = pos2d.x - 20
                            Visuals_HoloY = pos2d.y - 125
                        end
                    end
                end  

                Render.Blur(Vector2.new(Visuals_HoloX, Visuals_HoloY), Vector2.new(170 + Visuals_HoloX, (65 + ay) + Visuals_HoloY))
               
                Render.BoxFilled(Vector2.new(Visuals_HoloX, Visuals_HoloY), Vector2.new(170 + Visuals_HoloX, 2 + Visuals_HoloY), Color.RGBA(r, g, b, 255))
               

                Render.Text("ANTI-AIMBOT DEBUG", Vector2.new(Visuals_HoloX + 7, Visuals_HoloY + 5 ), Color.new(1.0, 1.0, 1.0, 1.0), 10, font.pixel, true)

                local fake_clr = Color.RGBA(math.floor(255 - (delta_to_draw * 2.29824561404)), math.floor(delta_to_draw * 3.42105263158), math.floor(delta_to_draw * 0.22807017543), 255)
                local fake_clr1 = Color.RGBA(math.floor(255 - (delta_to_draw * 2.29824561404)), math.floor(delta_to_draw * 3.42105263158), math.floor(delta_to_draw * 0.22807017543), 0)

                Render.GradientBoxFilled(Vector2.new(Visuals_HoloX + 8, Visuals_HoloY+36), Vector2.new(Visuals_HoloX + 10, Visuals_HoloY+46), fake_clr, fake_clr, fake_clr1, fake_clr1)
                Render.GradientBoxFilled(Vector2.new(Visuals_HoloX + 8, Visuals_HoloY+26), Vector2.new(Visuals_HoloX + 10, Visuals_HoloY+36), fake_clr1, fake_clr1, fake_clr, fake_clr)

                local view_angles = EngineClient.GetViewAngles()
                local fake_yaw = AntiAim.GetFakeRotation()
                local real_yaw = AntiAim.GetCurrentRealRotation()
                local view_yaw = view_angles.yaw - 180;
                local fake = adjust_angle(fake_yaw - view_yaw);
                local real = adjust_angle(real_yaw - view_yaw);

                Render.Circle(Vector2.new(Visuals_HoloX + 150, Visuals_HoloY+22), 9, 32, Color.RGBA(25,25,25,200), 2, 0, 360)
                Render.Circle(Vector2.new(Visuals_HoloX + 150, Visuals_HoloY+22), 9, 32, Color.RGBA(r, g, b, 255), 2, fake+20, fake-20)
                Render.Circle(Vector2.new(Visuals_HoloX + 150, Visuals_HoloY+22), 9, 32, Color.RGBA(200, 200, 200, 255), 2, real+10, real-10)

                Render.Text(string.format("FAKE (%.1f°)", delta_to_draw), Vector2.new(Visuals_HoloX + 14, Visuals_HoloY + 30), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
                Render.Text(string.format("FAKE (%.1f°)", delta_to_draw), Vector2.new(Visuals_HoloX + 13, Visuals_HoloY + 30), Color.RGBA(255, 255, 255, 255), 11, font.verdana)

                Render.Text("SP:", Vector2.new(Visuals_HoloX + 13, Visuals_HoloY + 48), Color.new(1.0, 1.0, 1.0, 1.0), 10, font.pixel, true)

                Render.BoxFilled(Vector2.new(Visuals_HoloX + 27, Visuals_HoloY + 59), Vector2.new(53 + Visuals_HoloX, 51 + Visuals_HoloY), Color.new(0, 0, 0, 1))
                Render.BoxFilled(Vector2.new(Visuals_HoloX+ 61, Visuals_HoloY + 59), Vector2.new(87 + Visuals_HoloX, 51 + Visuals_HoloY), Color.new(0, 0, 0, 1))
               
                if ((AntiAim.GetCurrentRealRotation() - AntiAim.GetFakeRotation()) ~= nil) then
                    Render.BoxFilled(Vector2.new(Visuals_HoloX + 28, Visuals_HoloY + 58), Vector2.new(30 + Visuals_HoloX + (delta_to_draw / 2.7), 52 + Visuals_HoloY), Color.RGBA(r, g, b, 255))
                else if ((AntiAim.GetCurrentRealRotation() - AntiAim.GetFakeRotation()) < 0 and (AntiAim.GetCurrentRealRotation() - AntiAim.GetFakeRotation()) ~= nil) then
                    Render.BoxFilled(Vector2.new(Visuals_HoloX + 61, Visuals_HoloY + 59), Vector2.new(87 + Visuals_HoloX, 51 + Visuals_HoloY), Color.RGBA(r, g, b, 255))
                end
                end

                local alpha = math.min(math.floor(math.sin((GlobalVars.realtime%3) * 4) * 175 + 50), 255)
                if DT:Get() then
                    Render.Text("SHIFTING TICKBASE", Vector2.new(Visuals_HoloX + 12, Visuals_HoloY + 62), Color.RGBA(255, 255, 255, alpha), 10, font.pixel, true)
                end
                Render.Text("OSAA:", Vector2.new(Visuals_HoloX + 110, Visuals_HoloY + 49 + ay), Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                Render.Text(HS:Get() and "ON" or "OFF", Vector2.new(Visuals_HoloX + 140, Visuals_HoloY + 49 + ay), HS:Get() and Color.RGBA(80, 255, 80, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)      
            end
        end
        --indicators
        ay = 0
        if ui.indicators:Get(1) then
            add_y = 0
            add_y = add_y + 40
            ts = Render.CalcTextSize("NOVA", 10, font.pixel)
            Render.Text("NOVA", Vector2.new(x/2 - ts.x, y/2 + add_y + 2), AntiAim.GetInverterState() and Color.RGBA(r, g, b, 255) or Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
            Render.Text("TECH", Vector2.new(x/2, y/2 + add_y + 2), AntiAim.GetInverterState() and Color.RGBA(255, 255, 255, 255) or Color.RGBA(r, g, b, 255), 10, font.pixel, true)
            add_y = add_y + 14
            Render.GradientBoxFilled(Vector2.new(x/2-math.floor(delta_to_draw)-7, y/2+add_y), Vector2.new(x/2, y/2+add_y+2), Color.RGBA(r, g, b, 0), Color.RGBA(r, g, b, 255), Color.RGBA(r, g, b, 0), Color.RGBA(r, g, b, 255))
            Render.GradientBoxFilled(Vector2.new(x/2+math.floor(delta_to_draw)+7, y/2+add_y), Vector2.new(x/2, y/2+add_y+2), Color.RGBA(r, g, b, 0), Color.RGBA(r, g, b, 255), Color.RGBA(r, g, b, 0), Color.RGBA(r, g, b, 255))
            add_y = add_y + 3
            if DT:Get() then
                Render_Indicator(Exploits.GetCharge() == 1 and "DOUBLETAP" or "CHARGING", add_y, Exploits.GetCharge() == 1 and Color.RGBA(255, 255, 255, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if HS:Get() then
                Render_Indicator("ON-SHOT", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if dmg == true then
                Render_Indicator("DAMAGE", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if FD:Get() then
                Render_Indicator("DUCK", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if BA:Get() == 2 then
                Render_Indicator("BAIM", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if SP:Get() == 2 then
                Render_Indicator("SP", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
        end
        if ui.indicators:Get(2) then
            add_y = 0
            add_y = add_y + 40
            Render_Indicator("NOVATECH", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
            add_y = add_y + 9
            Render_Indicator(aastate, add_y, Color.RGBA(125, 125, 125, 255), 10, font.pixel, true)
            add_y = add_y + 9
            Render_Indicator(string.format("%i-%i-%i-%i-%i",toDraw4,toDraw3,toDraw2,toDraw1,toDraw0), add_y, Color.RGBA(125, 125, 125, 255), 10, font.pixel, true)
            add_y = add_y + 9
            if DT:Get() then
                Render_Indicator("DOUBLETAP", add_y, Exploits.GetCharge() == 1 and Color.RGBA(255, 255, 255, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if HS:Get() then
                Render_Indicator("OSAA", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if SP:Get() == 2 then
                Render_Indicator("SAFE", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if BA:Get() == 2 then
                Render_Indicator("BODY", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
        end
        if ui.indicators:Get(3) then
            add_y = 0
            add_y = add_y + 40
            ts = Render.CalcTextSize("*nova", 11, font.verdanabd)
            Render.Text("*nova", Vector2.new(x/2 - ts.x, y/2 + add_y + 2), AntiAim.GetInverterState() and Color.RGBA(r, g, b, 255) or Color.RGBA(255, 255, 255, 255), 11, font.verdanabd, true)
            Render.Text("tech*", Vector2.new(x/2, y/2 + add_y + 2), AntiAim.GetInverterState() and Color.RGBA(255, 255, 255, 255) or Color.RGBA(r, g, b, 255), 11, font.verdanabd, true)
            add_y = add_y + 13
            if HS:Get() then
                Render_Indicator("ON-SHOT", add_y, Color.RGBA(r, g, b, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if dmg == true then
                Render_Indicator("DMG", add_y, Color.RGBA(r, g, b, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if DT:Get() then
                Render_Indicator("DT", add_y, Exploits.GetCharge() == 1 and Color.RGBA(r, g, b, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if SP:Get() == 2 then
                Render_Indicator("SP", add_y, Color.RGBA(r, g, b, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if BA:Get() == 2 then
                Render_Indicator("BA", add_y, Color.RGBA(r, g, b, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
        end
        if ui.indicators:Get(4) then
            add_y = 0
            add_y = add_y + 40
            Render_Indicator3(manuals and "FAKE YAW" or "IDEAL YAW", add_y, manuals and Color.RGBA(159, 159, 230, 255) or Color.RGBA(220, 135, 49, 255), 12, font.tahoma)
            add_y = add_y + 10
            Render_Indicator3(yaw_base:Get() == 5 and "FREESTAND" or "DYNAMIC", add_y, Color.RGBA(209, 159, 230, 255), 12, font.tahoma)
            add_y = add_y + 10
            if DT:Get() then
                Render_Indicator3(FD:Get() and "DT (fakeduck)" or "DT", add_y, Exploits.GetCharge() == 1 and Color.RGBA(0, 255, 0, 255) or Color.RGBA(255, 0, 0, 255), 12, font.tahoma)
                add_y = add_y + 10
            end
            if HS:Get() then
                Render_Indicator3("AA", add_y, Color.RGBA(120, 128, 200, 255), 12, font.tahoma)
                add_y = add_y + 10
            end
            if dmg == true then
                Render_Indicator3("DMG", add_y, Color.RGBA(200, 185, 255, 255), 12, font.tahoma)
                add_y = add_y + 10
            end
        end

        --viewmodel in scope
        local cheats = CVar.FindVar("sv_cheats")
        local scope = CVar.FindVar("fov_cs_debug")
        if ui.viewmodel:Get() then
            cheats:SetInt(1)
            scope:SetInt(90)
        else
            scope:SetInt(0)
        end

        --custom scope
        if ui.scope:GetColor() and lp:GetPlayer():GetProp("m_bIsScoped") then
            local offset = ui.offset:Get()
            local length = ui.length:Get()
            local col = Color.new(ui.scope:GetColor().r, ui.scope:GetColor().g, ui.scope:GetColor().b, 1)
            local col1 = Color.new(ui.scope:GetColor().r, ui.scope:GetColor().g, ui.scope:GetColor().b, 0)
            Render.GradientBoxFilled(Vector2.new(x/2 - offset, y/2), Vector2.new(x/2 - offset - length, y/2 + 1), col, col1, col, col1)
            Render.GradientBoxFilled(Vector2.new(x/2 + offset, y/2), Vector2.new(x/2 + offset + length, y/2 + 1), col, col1, col, col1)
            Render.GradientBoxFilled(Vector2.new(x/2, y/2 + offset), Vector2.new(x/2 + 1, y/2 + offset + length), col, col, col1, col1)
            Render.GradientBoxFilled(Vector2.new(x/2, y/2 - offset), Vector2.new(x/2 + 1, y/2 - offset - length), col, col, col1, col1)
        end

        --manual arrows
        if ui.manual_arrows:Get() then
            local r1 = math.floor(ui.color1:Get().r*255)
            local g1 = math.floor(ui.color1:Get().g*255)
            local b1 = math.floor(ui.color1:Get().b*255)

            local r2 = math.floor(ui.color2:Get().r*255)
            local g2 = math.floor(ui.color2:Get().g*255)
            local b2 = math.floor(ui.color2:Get().b*255)

            if ui.arrows_style:Get() == 0 then
                if velocity(lp) > 44 then
                    if anim[3] < 150 then anim[3] = anim[4] + 10 end
                else
                    if anim[3] > 0 then anim[3] = anim[4] - 10 end
                end
                Render.Text(">", Vector2.new(x/2 + 45, y/2 - Render.CalcTextSize(">", 22).y/2), yaw_base:Get() == 2 and Color.RGBA(r1, g1, b1, 255) or Color.RGBA(255, 255, 255, 255 - anim[3]), 22, true)
                Render.Text("<", Vector2.new(x/2 - 45 - Render.CalcTextSize("<", 22).x, y/2 - Render.CalcTextSize("<", 22).y/2), yaw_base:Get() == 3 and Color.RGBA(r1, g1, b1, 255) or Color.RGBA(255, 255, 255, 255 - anim[3]), 22, true)
                Render.Text("v", Vector2.new(x/2 - Render.CalcTextSize("v", 19).x/2+1, y/2 + 25), yaw_base:Get() == 1 and Color.RGBA(r1, g1, b1, 255) or Color.RGBA(255, 255, 255, 255 - anim[3]), 19, true)
            elseif ui.arrows_style:Get() == 1 then
                Render.PolyFilled(yaw_base:Get() == 2 and Color.RGBA(r1, g1, b1, 255) or Color.RGBA(25, 25, 25, 150), Vector2.new(x/2 + 43, y/2 + 9), Vector2.new(x/2 + 56, y/2), Vector2.new(x/2 + 43, y/2 - 9))
                Render.PolyFilled(yaw_base:Get() == 3 and Color.RGBA(r1, g1, b1, 255) or Color.RGBA(25, 25, 25, 150), Vector2.new(x/2 - 43, y/2 + 9), Vector2.new(x/2 - 56, y/2), Vector2.new(x/2 - 43, y/2 - 9))
                Render.BoxFilled(Vector2.new(x/2 - 40, y/2 - 9),  Vector2.new(x/2 - 42, y/2 + 10), AntiAim.GetInverterState() == false and Color.RGBA(25, 25, 25, 150) or Color.RGBA(r2, g2, b2, 255))
                Render.BoxFilled(Vector2.new(x/2 + 40, y/2 - 9),  Vector2.new(x/2 + 42, y/2 + 10), AntiAim.GetInverterState() == false and Color.RGBA(r2, g2, b2, 255) or Color.RGBA(25, 25, 25, 150))
            end
        end

        --render
        if ui.damage_indicator:Get() then
            local ts = Render.CalcTextSize(tostring(MD:Get()), 10, font.pixel)
            Render.Text(dmg and "1" or "0", Vector2.new(x/2-35, y/2-50), Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
            Render.Text(tostring(MD:Get()), Vector2.new(x/2-ts.x/2+0.5, y/2-50), Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
        end

        --disable thirdperson anim
        if ui.tpanim:Get() then s = false else s = true end
        Cheat.SetThirdPersonAnim(s)
    end
end

local anti_aim = function()
        local lp = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
        if lp == nil then return end

        local active_weapon = lp:GetPlayer():GetActiveWeapon()
        if active_weapon == nil then return end
        local weapon_id = active_weapon:GetWeaponID()

        --anti aims
        if aa[0].antiaims:Get() then
           
            --tp in air
            local players = EntityList.GetPlayers()
           
            if aa[0].tp_in_air:Get() and bit.band(lp:GetPlayer():GetProp("m_fFlags"), bit.lshift(1,0)) == 0 then
                for i = 1, #players do
                    local origin = lp:GetPlayer():GetRenderOrigin()
                    local origin_players = players[i]:GetRenderOrigin()
                    local is_visible = players[i]:IsVisible(origin_players)
                    if players[i]:IsAlive() and not players[i]:IsTeamMate() and players[i]:IsAlive() and not players[i]:IsDormant() and is_visible and not active_weapon:IsKnife() then
                        Exploits.ForceTeleport()
                    end
                end
            end

            if SW:Get() and aa[6].custom_enable:Get() then
                --slow walk
                stateid = 6
                aastate = "SLOWWALKING"
            elseif bit.band(lp:GetPlayer():GetProp("m_fFlags"), bit.lshift(1,0)) == 0 and aa[4].custom_enable:Get() then
                --air
                stateid = 4
                aastate = "IN AIR"
            elseif lp:GetProp("m_flDuckAmount") > 0.8 and aa[5].custom_enable:Get() or FD:Get() and aa[5].custom_enable:Get() then
                --duck
                stateid = 5
                aastate = "CROUCHING"
            elseif velocity(lp) > 2 and aa[3].custom_enable:Get() then
                --move
                stateid = 3
                aastate = "MOVING"
            elseif velocity(lp) < 2 and aa[2].custom_enable:Get() then
                --stand
                stateid = 2
                aastate = "STANDING"
            else
                --global
                stateid = 1
                aastate = "DYNAMIC"
            end

            if legit_aa == false then
                pitch:SetInt(1)
                if aa[0].manual:Get() == 0 then
                    yaw_base:SetInt(aa[stateid].custom_yaw_base:Get())
                else
                    yaw_base:SetInt(aa[0].manual:Get()-1)
                end
                yaw(yaw_add, aa[stateid].custom_yaw_add_right:Get(), aa[stateid].custom_yaw_add_left:Get())
                yaw_modifier:SetInt(aa[stateid].custom_yaw_modifier:Get())
                modifier_degree:SetInt(aa[stateid].custom_modifier_degree:Get())
                if aa[stateid].custom_fake_type:Get() == 0 then
                    left_limit:SetInt(aa[stateid].custom_left_limit:Get())
                    right_limit:SetInt(aa[stateid].custom_right_limit:Get())
                elseif aa[stateid].custom_fake_type:Get() == 1 then
                    left_limit:SetInt(jitter(aa[stateid].custom_left_limit:Get(), aa[stateid].custom_left_limit2:Get()))
                    right_limit:SetInt(jitter(aa[stateid].custom_right_limit:Get(), aa[stateid].custom_right_limit2:Get()))
                elseif aa[stateid].custom_fake_type:Get() == 2 then
                    left_limit:SetInt(math.random(aa[stateid].custom_left_limit:Get(), aa[stateid].custom_left_limit2:Get()))
                    right_limit:SetInt(math.random(aa[stateid].custom_right_limit:Get(), aa[stateid].custom_right_limit2:Get()))
                end
                options:SetInt(aa[stateid].custom_options:Get())
                lby_mode:SetInt(aa[stateid].custom_lby:Get())
                freestand:SetInt(aa[stateid].custom_fs:Get())
                onshot:SetInt(aa[stateid].custom_onshot:Get())

                --anti backstab
                if aa[0].antibackstab:Get() then
                    local enemies = GetEnemiesWithKnife()
                    if enemies ~= nil then
                        if #enemies > 0 then
                            for i, enemy in pairs(enemies) do
                                local enemy_origin = enemy:GetRenderOrigin()
                                local local_player_origin = lp:GetRenderOrigin()
                                local distance_from_local_to_enemy = enemy_origin:DistTo(local_player_origin)              
                                if 200 >= distance_from_local_to_enemy and not players[i]:IsDormant() then
                                    AntiAim.OverrideYawOffset(180)
                                    AntiAim.OverridePitch(0)
                                end
                            end
                        end
                    end
                end
            else
                pitch:SetInt(0)
                yaw_base:SetInt(0)
                yaw(yaw_add, 0, 0)
                yaw_modifier:SetInt(1)
                modifier_degree:SetInt(0)
                left_limit:SetInt(60)
                right_limit:SetInt(60)
                options:SetInt(0)
                lby_mode:SetInt(1)
                freestand:SetInt(1)
                onshot:SetInt(1)
            end
        end
end

local phrases = {
    "Блин, друг, прости пожалуйста, не увидел",
    "Опять ты, прости, я без ников убил",
    "У тебя Ник тема бебриков? Я тебя вчера на Дме видел",
    "Ты с чем ?",
    "Зато ты очень красивый",
    "А фип бы забанил за такое, прости пж",
    "Мне друг (витма) (бигнейм) сказал, что в таких случаях 1 писать, но я добрый так что не буду",
    "Посаны, а как вам микрофон яспер мо о глод, у фипа такой вроде",
    "Возьми печеньки, завари чайочек. И расслабся",
    "Какой у тебя мейн Ник ? Мне сказали, что это важна чтоб медия сделать, ты витма ?",
    "Ну ничего, с кем не бывает",
    "Нифига я чо Лоу дельта убил",
    "Главное, что хоть у тебя голова на месте)",
    "Сколько в человеке доброты, столько в нем и жизни.",
    "Истинная храбрость и доброта идут рука об руку.",
    "ой прости я просто в Five nights at fnay играл и испугался немного",
    "Дай кфг, а то мой сильно жёсткий",
    "Прости, в следующий раз повезет.",
    "ты не знал, а nova.tech то тапает",
}
local get_phrase = function()
    return phrases[Utils.RandomInt(1, #phrases)]:gsub('"', '')
end
           
Cheat.RegisterCallback("events", function(e)
    local player_resource = EntityList.GetPlayerResource()
    if e:GetName() == "bomb_abortplant" then
        planting = false
        fill = 0
        on_plant_time = 0
        planting_site = ""
    end
    if e:GetName() == "bomb_defused" then
        planting = false
        fill = 0
        on_plant_time = 0
        planting_site = ""
    end
    if e:GetName() == "bomb_planted" then
        planting = false
        fill = 0
        on_plant_time = 0
        planting_site = ""
    end
    if e:GetName() == "round_prestart" then
        planting = false
        fill = 0
        on_plant_time = 0
        planting_site = ""
    end
   
    if e:GetName() == "bomb_beginplant" then
        on_plant_time = GlobalVars.curtime
        planting = true
        local m_bombsiteCenterA = player_resource:GetProp("DT_CSPlayerResource", "m_bombsiteCenterA")
        local m_bombsiteCenterB = player_resource:GetProp("DT_CSPlayerResource", "m_bombsiteCenterB")
       
        local player = EntityList.GetPlayerForUserID(e:GetInt("userid", 0))
        local localPos = player:GetRenderOrigin()
        local dist_to_a = localPos:DistTo(m_bombsiteCenterA)
        local dist_to_b = localPos:DistTo(m_bombsiteCenterB)
       
        planting_site = dist_to_a < dist_to_b and "Bombsite A" or "Bombsite B"
    end
    if ui.hitsound:Get() == 0 then
        Menu.FindVar("Visuals","World", "Hit", "Hit Sound"):SetBool(true)
    else
        Menu.FindVar("Visuals","World", "Hit", "Hit Sound"):SetBool(false)
    end
    if e:GetName() == "player_hurt" then
        if e:GetInt("attacker", 0) ==  EntityList.GetLocalPlayer():GetPlayerInfo().userId then
            if ui.hitsound:Get() == 1 then
                EngineClient.ExecuteClientCmd("playvol buttons/arena_switch_press_02 0.75")
            elseif ui.hitsound:Get() == 2 then
                EngineClient.ExecuteClientCmd("playvol nova.tech/hitsound/hitsound.wav 0.75")
            elseif ui.hitsound:Get() == 3 then
                EngineClient.ExecuteClientCmd(string.format("playvol %s 0.75", ui.custom_hitsound:Get()))
            end
        end
    end
    if ui.trashtalk:Get() then
        if e:GetName() == "player_death" then
            local me = EntityList.GetLocalPlayer()
            local victim = EntityList.GetPlayerForUserID(e:GetInt("userid"))
            local attacker = EntityList.GetPlayerForUserID(e:GetInt("attacker"))
            if victim == attacker or attacker ~= me then return end
            EngineClient.ExecuteClientCmd('say "' .. get_phrase() .. '"')
        end
    end
end)

local setvis = function()
    local vis = function(s, d)
        s:SetVisible(d)
    end

    ui.binds_x:SetVisible(false)
    ui.binds_y:SetVisible(false)
    ui.specs_x:SetVisible(false)
    ui.specs_y:SetVisible(false)

    ui.add_idealtick:SetVisible(ui.idealtick:Get())
    ui.idealtick_damage:SetVisible(ui.add_idealtick:GetBool(2))
    ui.ns_hitchance_value:SetVisible(ui.ns_hitchance:Get())
    ui.air_hitchance_value:SetVisible(ui.air_hitchance:Get())
    ui.hitlogs_type:SetVisible(ui.hitlogs:Get())
    ui.custom_hitsound:SetVisible(ui.hitsound:Get() == 3)
    ui.holo_on_tp:SetVisible(ui.windows:Get(5))
    ui.circle_style:SetVisible(ui.circle:Get())
    ui.add_indicators:SetVisible(ui.indicators:Get(5))
    ui.offset:SetVisible(ui.scope:Get())
    ui.length:SetVisible(ui.scope:Get())

    ui.arrows_style:SetVisible(ui.manual_arrows:Get())
    ui.color1:SetVisible(ui.manual_arrows:Get())
    ui.color2:SetVisible(ui.manual_arrows:Get() and ui.arrows_style:Get() == 1)

    vis(preset, aa[0].antiaims:Get())
    vis(aa[0].manual, aa[0].antiaims:Get())
    vis(aa[0].fake_flick, aa[0].antiaims:Get())
    vis(aa[0].tp_in_air, aa[0].antiaims:Get())
    vis(aa[0].on_key, aa[0].antiaims:Get())
    vis(aa[0].antibackstab, aa[0].antiaims:Get())
    vis(aa[0].antiaim, aa[0].antiaims:Get())
   
    currentid = aa[0].antiaim:Get()+1
    vis(aa[1].custom_enable, false)
    aa[1].custom_enable:SetBool(true)
    vis(aa[2].custom_enable, aa[0].antiaims:Get() and currentid == 2)
    vis(aa[3].custom_enable, aa[0].antiaims:Get() and currentid == 3)
    vis(aa[4].custom_enable, aa[0].antiaims:Get() and currentid == 4)
    vis(aa[5].custom_enable, aa[0].antiaims:Get() and currentid == 5)
    vis(aa[6].custom_enable, aa[0].antiaims:Get() and currentid == 6)
   
    for i = 1, 6 do
        local isAA = aa[0].antiaims:Get() and aa[i].custom_enable:Get()
        local isAAF = aa[i].custom_fake_type:Get() == 1 and isAA or aa[i].custom_fake_type:Get() == 2 and isAA
        vis(aa[i].custom_yaw_base, isAA and currentid == i)
        vis(aa[i].custom_yaw_add_left, isAA and currentid == i)
        vis(aa[i].custom_yaw_add_right, isAA and currentid == i)
        vis(aa[i].custom_yaw_modifier, isAA and currentid == i)
        vis(aa[i].custom_modifier_degree, isAA and currentid == i)
        vis(aa[i].custom_left_limit, isAA and currentid == i)
        vis(aa[i].custom_right_limit, isAA and currentid == i)
        vis(aa[i].custom_left_limit2, isAAF and currentid == i)
        vis(aa[i].custom_right_limit2, isAAF and currentid == i)
        vis(aa[i].custom_options, isAA and currentid == i)
        vis(aa[i].custom_lby, isAA and currentid == i)
        vis(aa[i].custom_fs, isAA and currentid == i)
        vis(aa[i].custom_onshot, isAA and currentid == i)
        vis(aa[i].custom_fake_type, isAA and currentid == i)
    end
end

local hook_draw = function()
    draw()
    anti_aim()
    setvis()
end
Cheat.RegisterCallback("draw", hook_draw)
Cheat.RegisterCallback("pre_prediction", legitaa)
Cheat.RegisterCallback("createmove", use)
Cheat.RegisterCallback("destroy", function()
    updateConsoleColor(1, 1, 1, 1)
    for _, v in pairs(materials) do
        local material = MatSystem.FindMaterial(v, "")

        if material ~= nil then
            material:SetMaterialVarFlag(bit.lshift(1, 28), false)
            material:SetMaterialVarFlag(bit.lshift(1, 15), false)
        end
    end
end)
ui.console:RegisterCallback(cfgConsoleCallback)
EngineClient.ExecuteClientCmd("clear")
print("              ...")
print("             ;::::;")
print("           ;::::; :;")
print("         ;:::::'   :;")
print("        ;:::::;     ;.")
print("       ,:::::'       ;           OOO")
print("       ::::::;       ;          OOOOO")
print("       ;:::::;       ;         OOOOOOOO")
print("      ,;::::::;     ;'         / OOOOOOO")
print("    ;:::::::::`. ,,,;.        /  / DOOOOOO")
print("  .';:::::::::::::::::;,     /  /     DOOOO")
print(" ,::::::;::::::;;;;::::;,   /  /        DOOO")
print(";`::::::`'::::::;;;::::: ,#/  /          DOOO")
print(":`:::::::`;::::::;;::: ;::#  /            DOOO")
print("::`:::::::`;:::::::: ;::::# /              DOO")
print("`:`:::::::`;:::::: ;::::::#/               DOO")
print(" :::`:::::::`;; ;:::::::::##                OO")
print(" ::::`:::::::`;::::::::;:::#                OO")
print(" `:::::`::::::::::::;'`:;::#                O")
print("  `:::::`::::::::;' /  / `:#")
print("   ::::::`:::::;'  /  /   `#")
print("")
print("")
print("███╗░░██╗░█████╗░██╗░░░██╗░█████╗░░░░████████╗███████╗░█████╗░██╗░░██╗")
print("████╗░██║██╔══██╗██║░░░██║██╔══██╗░░░╚══██╔══╝██╔════╝██╔══██╗██║░░██║")
print("██╔██╗██║██║░░██║╚██╗░██╔╝███████║░░░░░░██║░░░█████╗░░██║░░╚═╝███████║")
print("██║╚████║██║░░██║░╚████╔╝░██╔══██║░░░░░░██║░░░██╔══╝░░██║░░██╗██╔══██║")
print("██║░╚███║╚█████╔╝░░╚██╔╝░░██║░░██║██╗░░░██║░░░███████╗╚█████╔╝██║░░██║")
print("╚═╝░░╚══╝░╚════╝░░░░╚═╝░░░╚═╝░░╚═╝╚═╝░░░╚═╝░░░╚══════╝░╚════╝░╚═╝░░╚═╝")
print("")
print("")
print("Welcome to Nova.tech,"..Cheat.GetCheatUserName().."!")
print("")
print("Version: 1.2.1")
print("State: Release")
print("")
print("")
print("")
 
Участник
Статус
Оффлайн
Регистрация
29 Дек 2019
Сообщения
382
Реакции[?]
167
Поинты[?]
2K
Код:
ffi.cdef[[
    typedef struct {
        unsigned short wYear;
        unsigned short wMonth;
        unsigned short wDayOfWeek;
        unsigned short wDay;
        unsigned short wHour;
        unsigned short wMinute;
        unsigned short wSecond;
        unsigned short wMilliseconds;
    } SYSTEMTIME, *LPSYSTEMTIME;
    void GetSystemTime(LPSYSTEMTIME lpSystemTime);
    void GetLocalTime(LPSYSTEMTIME lpSystemTime);

    typedef struct {
        float x;
        float y;
        float z;
    } vec3_struct;

    typedef void*(__thiscall* c_entity_list_get_client_entity_t)(void*, int);
    typedef void*(__thiscall* c_entity_list_get_client_entity_from_handle_t)(void*, uintptr_t);

    typedef int(__thiscall* c_weapon_get_muzzle_attachment_index_first_person_t)(void*, void*);
    typedef int(__thiscall* c_weapon_get_muzzle_attachment_index_third_person_t)(void*);
    typedef bool(__thiscall* c_entity_get_attachment_t)(void*, int, vec3_struct*);
  
    bool CreateDirectoryA(const char* lpPathName, void* lpSecurityAttributes);
    void* __stdcall URLDownloadToFileA(void* LPUNKNOWN, const char* LPCSTR, const char* LPCSTR2, int a, int LPBINDSTATUSCALLBACK);
    void* __stdcall ShellExecuteA(void* hwnd, const char* op, const char* file, const char* params, const char* dir, int show_cmd);

    bool DeleteUrlCacheEntryA(const char* lpszUrlName);
]]

local urlmon = ffi.load 'UrlMon'
local wininet = ffi.load 'WinInet'
local gdi = ffi.load 'Gdi32'

Download = function(from, to)
    wininet.DeleteUrlCacheEntryA(from)
    urlmon.URLDownloadToFileA(nil, from, to, 0,0)
    print('Successfully!')
end

CreateDir = function(path)
    ffi.C.CreateDirectoryA(path, NULL)
end

local engineClient = Utils.CreateInterface("engine.dll", "VEngineClient014")
local engineClientClass = ffi.cast(ffi.typeof("void***"), engineClient)
local isConsoleVisible = ffi.cast("bool(__thiscall*)(void*)", engineClientClass[0][11])

local consoleMaterials = {"vgui_white", "vgui/hud/800corner1", "vgui/hud/800corner2", "vgui/hud/800corner3", "vgui/hud/800corner4"}
local materialList = {}

local oldColor = Color.new(1.0, 1.0, 1.0, 1.0)
local oldConsoleIsVisible = false

local materials = {
    "particle/fire_burning_character/fire_env_fire_depthblend_oriented",
    "particle/fire_burning_character/fire_burning_character",
    "particle/fire_explosion_1/fire_explosion_1_oriented",
    "particle/fire_explosion_1/fire_explosion_1_bright",
    "particle/fire_burning_character/fire_burning_character_depthblend",
    "particle/fire_burning_character/fire_env_fire_depthblend",
}

local ffi_handler = {}
local muzzle = {}

ffi_handler.bind_argument = function(fn, arg)
    return function(...)
        return fn(arg, ...)
    end
end

ffi_handler.interface_type = ffi.typeof("uintptr_t**")

ffi_handler.i_client_entity_list = ffi.cast(ffi_handler.interface_type, Utils.CreateInterface("client.dll", "VClientEntityList003"))
ffi_handler.get_client_entity = ffi_handler.bind_argument(ffi.cast("c_entity_list_get_client_entity_t", ffi_handler.i_client_entity_list[0][3]), ffi_handler.i_client_entity_list)

muzzle.attachment_index = 84
muzzle.muzzle_attachment_index_1st = 468
muzzle.muzzle_attachment_index_3rd = 469

muzzle.pos = Vector.new(0, 0, 0)

muzzle.get = function()

    if not EngineClient.IsInGame() then return end

    local me = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
    if not me or EntityList.GetLocalPlayer():GetProp("DT_BasePlayer", "m_iHealth") < 1 then return end

    local my_weapon = EntityList.GetClientEntityFromHandle(me:GetProp("DT_BaseCombatCharacter", "m_hActiveWeapon"))
    if not my_weapon then return end

    local my_address = ffi_handler.get_client_entity(me:EntIndex())
    if not my_address then return end

    local my_weapon_address = ffi_handler.get_client_entity(my_weapon:EntIndex())
    if not my_weapon_address then return end

    local viewmodel = EntityList.GetClientEntityFromHandle(me:GetProp("DT_BasePlayer", "m_hViewModel[0]"))
    if not viewmodel then return end

    local viewmodel_ent = ffi_handler.get_client_entity(viewmodel:EntIndex())
    if not viewmodel_ent then return end

    local weaponworldmodel = EntityList.GetClientEntityFromHandle(my_weapon:GetProp("DT_BaseCombatWeapon", "m_hWeaponWorldModel"))
    if not weaponworldmodel then return end

    local weaponworldmodel_ent = ffi_handler.get_client_entity(weaponworldmodel:EntIndex())
    if not weaponworldmodel_ent then return end

    local viewmodel_vtbl = ffi.cast(ffi_handler.interface_type, viewmodel_ent)[0]
    local weaponworldmodel_vtbl = ffi.cast(ffi_handler.interface_type, weaponworldmodel_ent)[0]
    local weapon_vtbl = ffi.cast(ffi_handler.interface_type, my_weapon_address)[0]

    local get_viewmodel_attachment_fn = ffi.cast("c_entity_get_attachment_t", viewmodel_vtbl[muzzle.attachment_index])
    local get_weaponworldmodel_attachment_fn = ffi.cast("c_entity_get_attachment_t", weaponworldmodel_vtbl[muzzle.attachment_index])
    local get_muzzle_attachment_index_1st_fn = ffi.cast("c_weapon_get_muzzle_attachment_index_first_person_t", weapon_vtbl[muzzle.muzzle_attachment_index_1st])
    local get_muzzle_attachment_index_3rd_fn = ffi.cast("c_weapon_get_muzzle_attachment_index_third_person_t", weapon_vtbl[muzzle.muzzle_attachment_index_3rd])

    local muzzle_attachment_index_1st = get_muzzle_attachment_index_1st_fn(my_weapon_address, viewmodel_ent)
    local muzzle_attachment_index_3rd = get_muzzle_attachment_index_3rd_fn(my_weapon_address)

    local ret = ffi.new("vec3_struct[1]")
    local is_thirdperson = Menu.FindVar("Visuals", "View", "Thirdperson", "Enable Thirdperson")

    if is_thirdperson:Get() then
        state = get_weaponworldmodel_attachment_fn(weaponworldmodel_ent, muzzle_attachment_index_3rd, ret)
    else
        state = get_viewmodel_attachment_fn(viewmodel_ent, muzzle_attachment_index_1st, ret)
    end

    return {state = state, pos = Vector.new(ret[0].x, ret[0].y, ret[0].z)}
end

local x = EngineClient.GetScreenSize().x
local y = EngineClient.GetScreenSize().y
local sc = EngineClient.GetScreenSize()
local aa = {}
local state = {"Global", "Stand", "Move", "Air", "Duck", "Slow walk"}
local hitboxes = {"generic","head","chest","stomach","left arm","right arm","left leg","right leg","neck"};
local logs = {}
logs[#logs+1] = {("[nova.tech] Welcome back, "..Cheat.GetCheatUserName().."!"), GlobalVars.tickcount + 300, 0}
logs[#logs+1] = {("[nova.tech] Download font in Global Tab!"), GlobalVars.tickcount + 300, 0}
local ui =
{
    --rage
    antidefensive = Menu.Switch("Global","Rage", "Anti-Defensive", false),
    autopeek = Menu.Switch("Global","Rage", "Quick Peek", false),
    disable_os = Menu.Switch("Global","Rage", "Disable FL on Hide Shots", false),
    idealtick = Menu.Switch("Global","Rage", "Idealtick", false, "Works when autopeek"),
    add_idealtick = Menu.MultiCombo("Global","Rage", "Idealtick Options", {"Freestand", "Override Damage", "Safe Head"}, 0),
    idealtick_damage = Menu.SliderInt("Global","Rage","Idealtick Damage", 10, 0, 130),
    air_hitchance = Menu.Switch("Global","Rage", "In-Air Hitchance", false),
    air_hitchance_value = Menu.SliderInt("Global","Rage","Air Hitchance Value", 50, 1, 100),
    ns_hitchance = Menu.Switch("Global","Rage", "Noscope Hitchance", false),
    ns_hitchance_value = Menu.SliderInt("Global","Rage","NS Hitchance Value", 50, 1, 100),

    --visuals
    state_panel = Menu.Switch("Visuals","Main","State Panel", false),
    circle = Menu.SwitchColor("Visuals","Main", "Anti-Aim Crosshair Indicator", false, Color.new(0.57, 0.57, 1, 1)),
    circle_style = Menu.Combo("Visuals","Main", "Style", {"Circle", "Arrows"}, 0),
    glowpeek = Menu.SwitchColor("Visuals","Main", "Glow Autopeek", false, Color.new(0.47, 0.47, 1, 0.5)),
    viewmodel = Menu.Switch("Visuals","Main", "Viewmodel in Scope", false),
    scope = Menu.SwitchColor("Visuals","Main", "Custom Scope", false, Color.new(1, 1, 1, 1)),
    offset = Menu.SliderInt("Visuals","Main", "Offset", 5, -500, 500),
    length = Menu.SliderInt("Visuals","Main", "Length", 25, 0, 1000),
    color = Menu.ColorEdit("Visuals","Main", "Accent Color", Color.new(0.57, 0.57, 1, 1)),

    --indicators
    indicators = Menu.MultiCombo("Visuals","Indicators","Indicators", {"Nova.tech #1", "Nova.tech #2", "Nova.tech #3", "Ideal Yaw", "Skeet"}, 0),
    add_indicators = Menu.MultiCombo("Visuals","Indicators","Additional Indicators", {"Freestand", "Exploit", "Damage", "Freestand"}, 0),
    damage_indicator = Menu.Switch("Visuals","Indicators", "Damage Indicator", false),
    manual_arrows = Menu.Switch("Visuals","Indicators","Manual Arrows", false),
    arrows_style = Menu.Combo("Visuals","Indicators","Arrows Style", {"Default", "TeamSkeet"}, 0),
    color1 = Menu.ColorEdit("Visuals","Indicators", "First Color", Color.RGBA(175, 255, 0, 255)),
    color2 = Menu.ColorEdit("Visuals","Indicators", "Second Color", Color.RGBA(0, 200, 255, 255)),

    --solus ui
    windows = Menu.MultiCombo("Visuals","UI","Windows", {"Watermark", "Spectators", "Keybinds", "FAKE & DT", "Holo Panel"}, 0),
    alpha = Menu.SliderInt("Visuals","UI", "Box Alpha", 75, 0, 255),
    holo_on_tp = Menu.Switch("Visuals","UI","Disable in Thirdperson", false),
    binds_x = Menu.SliderInt("Visuals","UI", "X", 300, 0, x),
    binds_y = Menu.SliderInt("Visuals","UI", "Y", 300, 0, y),
    specs_x = Menu.SliderInt("Visuals","UI", "X ", 300, 0, x),
    specs_y = Menu.SliderInt("Visuals","UI", "Y ", 500, 0, y),

    --misc
    hitlogs = Menu.Switch("Misc","Misc","Hitlogs", false),
    hitlogs_type = Menu.MultiCombo("Misc","Misc", "Hitlogs Type", {"Custom", "Console", "Event"}, 0),
    console = Menu.SwitchColor("Misc", "Misc", "Console Color Changer", false, Color.new(1.0, 1.0, 1.0)),
    hitsound = Menu.Combo("Misc","Misc","Hitsound", {"Disable","Skeet", "Alternative", "Custom"}, 0),
    custom_hitsound = Menu.TextBox("Misc","Misc","Filepath", 64, "nova.tech/hitsound/hitsound.wav"),
    wireframe = Menu.Switch("Misc","Misc","Molotov Wireframe", false),
    ignorez = Menu.Switch("Misc","Misc","Ignore-Z", false),
    blur = Menu.Switch("Misc","Misc","Menu Blur", false),
    trashtalk = Menu.Switch("Misc","Misc","Trashtalk", false),
    tpanim = Menu.Switch("Misc","Misc","Disable Thirdperson Animation", false),
}

--anti-aims
aa[0] =
{
    antiaims = Menu.Switch("Anti-Aim","Main","Enable Anti Aim's", false),
    tp_in_air = Menu.Switch("Anti-Aim","Main","Teleport In Air", false),
    fake_flick = Menu.Switch("Anti-Aim","Main","Fake Flick", false),
    on_key = Menu.Switch("Anti-Aim","Main","Legit AA", false),
    antibackstab = Menu.Switch("Anti-Aim","Main","Anti Backstab", false),
    manual = Menu.Combo("Anti-Aim","Main", "Override Yaw Base", {"Disable", "Forward", "Backward", "Right", "Left", "At Target", "Freestanding"}, 0, "Bind it"),
    antiaim = Menu.Combo("Anti-Aim","Main", "Conditions", state, 0),
}
for i = 1, 6 do
    aa[i] = {
        custom_enable = Menu.Switch("Anti-Aim",state[i], string.format("Enable %s Anti Aim", state[i]), false,string.format("Override %s settings", state[i])),
        custom_yaw_base = Menu.Combo("Anti-Aim",state[i], "Yaw Base", {"Forward", "Backward", "Right", "Left", "At Target", "Freestanding"}, 1),
        custom_yaw_add_left = Menu.SliderInt("Anti-Aim",state[i], "Yaw Add Left", 0, -180, 180),
        custom_yaw_add_right = Menu.SliderInt("Anti-Aim",state[i], "Yaw Add Right", 0, -180, 180),
        custom_yaw_modifier = Menu.Combo("Anti-Aim",state[i], "Yaw Modifier", {"Disabled", "Center", "Offset", "Random", "Spin"}, 0),
        custom_modifier_degree = Menu.SliderInt("Anti-Aim",state[i], "Modifier Degree", 0, -180, 180),
        custom_fake_type = Menu.Combo("Anti-Aim",state[i],"Fake Type", {"Static","Jitter","Random"}, 0),
        custom_left_limit = Menu.SliderInt("Anti-Aim",state[i], "Left Limit", 60, 0, 60),
        custom_right_limit = Menu.SliderInt("Anti-Aim",state[i], "Right Limit", 60, 0, 60),
        custom_left_limit2 = Menu.SliderInt("Anti-Aim",state[i], "Left Limit [2]", 60, 0, 60),
        custom_right_limit2 = Menu.SliderInt("Anti-Aim",state[i], "Right Limit [2]", 60, 0, 60),
        custom_options = Menu.MultiCombo("Anti-Aim",state[i],"Fake Options", {"Avoid Overlap","Jitter","Randomize Jitter", "Anti Bruteforce"}, 0),
        custom_lby = Menu.Combo("Anti-Aim",state[i],"LBY Mode", {"Disabled","Opposite","Sway"}, 1),
        custom_fs = Menu.Combo("Anti-Aim",state[i],"Freestanding Desync", {"Off","Peek Fake","Peek Real"}, 0),
        custom_onshot = Menu.Combo("Anti-Aim",state[i],"Desync On Shot", {"Disabled","Opposite","Freestanding","Switch"}, 0),
    }
end
local preset = Menu.Button("Anti-Aim","Main", "Load Default Preset", "Load Default Preset", function()
    aa[1].custom_yaw_base:SetInt(4)
    aa[1].custom_yaw_add_left:SetInt(0)
    aa[1].custom_yaw_add_right:SetInt(0)
    aa[1].custom_yaw_modifier:SetInt(2)
    aa[1].custom_modifier_degree:SetInt(20)
    aa[1].custom_fake_type:SetInt(0)
    aa[1].custom_left_limit:SetInt(42)
    aa[1].custom_right_limit:SetInt(42)
    aa[1].custom_lby:SetInt(0)
    aa[1].custom_fs:SetInt(0)
    aa[1].custom_onshot:SetInt(1)
end)

CreateDir("nl\\nova.tech\\")
--info
Menu.Text("Global","Info","Welcome to Nova.tech, "..Cheat.GetCheatUserName().."!")

local get_discord = Menu.Button("Global","Info","Discord", "Discord", function()
    Panorama.Open().SteamOverlayAPI.OpenExternalBrowserURL("https://discord.gg/X85QFvdSgT")
end)

local get_font = Menu.Button("Global","Info","Download Font", "Download Font", function()
    CreateDir("nl\\nova.tech\\fonts\\")
    Download('https://fontsforyou.com/downloads/99851-smallestpixel7', 'nl\\nova.tech\\fonts\\pixel.ttf')
    logs[#logs+1] = {("[nova.tech] Font installed, restart script!"), GlobalVars.tickcount + 300, 0}
end)

CreateDir("csgo\\sound\\nova.tech\\")
CreateDir("csgo\\sound\\nova.tech\\hitsound\\")
Download('https://cdn.discordapp.com/attachments/856592298132242432/931265632861818930/skeet.wav', 'csgo\\sound\\nova.tech\\hitsound\\hitsound.wav')

Menu.Text("Global","Info","Hitsound Filepath: csgo/sounds | File type .wav")
Menu.Text("Global","Info","  ")
Menu.Text("Global","Info","V1.2.1")
Menu.Text("Global","Info","Nova.tech")

--fonts
local font =
{
    pixel = Render.InitFont("nl\\nova.tech\\fonts\\pixel.ttf", 10),
    verdana = Render.InitFont("Verdana", 11, {'r'}),
    verdanabd = Render.InitFont("Verdana Bold", 11, {'r'}),
    verdanabd12 = Render.InitFont("Verdana Bold", 12),
    calibrib = Render.InitFont("Calibri Bold", 30),
    tahoma = Render.InitFont("Tahoma", 12),
}

--menu reference
local MD = Menu.FindVar("Aimbot","Ragebot","Accuracy","Minimum Damage")
local BA = Menu.FindVar("Aimbot","Ragebot","Misc","Body Aim")
local SP = Menu.FindVar("Aimbot","Ragebot","Misc","Safe Points")
local DT = Menu.FindVar("Aimbot","Ragebot","Exploits","Double Tap")
local AP = Menu.FindVar("Miscellaneous","Main","Movement","Auto Peek")
local SW = Menu.FindVar("Aimbot","Anti Aim","Misc","Slow Walk")
local HS = Menu.FindVar("Aimbot","Ragebot","Exploits","Hide Shots")
local PING = Menu.FindVar("Miscellaneous", "Main", "Other", "Fake Ping")
local FL = Menu.FindVar("Aimbot","Anti Aim","Fake Lag","Limit")
local FLR = Menu.FindVar("Aimbot","Anti Aim","Fake Lag","Randomization")
local FD = Menu.FindVar("Aimbot","Anti Aim","Misc","Fake Duck")
local TP = Menu.FindVar("Visuals", "View", "Thirdperson", "Enable Thirdperson")
local removals = Menu.FindVar("Visuals", "World", "Main", "Removals")

--menu reference for aa
local left_limit = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","Left Limit")
local right_limit = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","Right Limit")
local options = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","Fake Options")
local lby_mode = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","LBY Mode")
local freestand = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","Freestanding Desync")
local onshot = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","Desync On Shot")
local yaw_base = Menu.FindVar("Aimbot","Anti Aim","Main","Yaw Base")
local pitch = Menu.FindVar("Aimbot","Anti Aim","Main","Pitch")
local yaw_add = Menu.FindVar("Aimbot","Anti Aim","Main","Yaw Add")
local yaw_modifier = Menu.FindVar("Aimbot","Anti Aim","Main","Yaw Modifier")
local modifier_degree = Menu.FindVar("Aimbot","Anti Aim","Main","Modifier Degree")
local legmovement = Menu.FindVar("Aimbot", "Anti Aim", "Misc", "Leg Movement")

local normalize_yaw = function(yaw)
    while yaw > 180 do yaw = yaw - 360 end
    while yaw < -180 do yaw = yaw + 360 end
    return yaw
end

function C_BasePlayer:IsLocalPlayer()
    return self == EntityList.GetLocalPlayer()
end

function C_BasePlayer:IsEnemy()
    return EntityList.GetLocalPlayer() and self:IsTeamMate() == false
end

function GetEnemiesWithKnife()
    local ret = {}

    local players = EntityList.GetPlayers()
    if #players < 0 then return {} end

    for i, player in pairs(players) do
        local player_active_weapon = player:GetActiveWeapon()

        if not player_active_weapon then return end

        if player:IsEnemy() and player:IsAlive() and player_active_weapon:IsKnife() then
            table.insert(ret, player)
        end
    end

    return ret
end

--jitter
local jitter = function(c, q)
    local f = math.random(0, 1)
    local b = 0
    if f == 0 then
        b = c
    elseif f == 1 then
        b = q
    end
    return b
end

--set movement
function setmovement(xz,yz,cmd)
    local local_player = EntityList.GetLocalPlayer()
    local_player = local_player:GetPlayer()
    local current_pos = local_player:GetProp("m_vecOrigin")
    local yaw = EngineClient:GetViewAngles().yaw
    local vector_forward = {
        x = current_pos.x - xz,
        y = current_pos.y - yz,
    } 
    local velocity = {
        x = -(vector_forward.x * math.cos(yaw / 180 * math.pi) + vector_forward.y * math.sin(yaw / 180 * math.pi)),
        y = vector_forward.y * math.cos(yaw / 180 * math.pi) - vector_forward.x * math.sin(yaw / 180 * math.pi),
    }
    cmd.forwardmove = velocity.x * 15
    cmd.sidemove = velocity.y * 15
end

--yaw
local yaw = function(h, l, y)
    local invert = AntiAim.GetInverterState()
    if invert == true then
        h:SetInt(l)
    elseif invert == false then
        h:SetInt(y)
    end
end

--lerp
local lerp = function (a, b, percentage) return math.floor(a + (b - a) * percentage) end

local function isColorEquals(clr1, clr2)
    return (clr1.r == clr2.r and clr1.g == clr2.g and clr1.b == clr2.b and clr1.a == clr2.a)
end

local function copyColor(src, dest)
    dest.r, dest.g, dest.b, dest.a = src.r, src.g, src.b, src.a
end

local function findConsoleMaterials()
    if materialList[1] then return end

    local material = MatSystem.FirstMaterial()
    local foundCount = 0

    while(foundCount < 5)
    do
        local mat = MatSystem.GetMaterial(material)
        local name = mat:GetName()

        for i = 1, #consoleMaterials do
            if name == consoleMaterials[i] then
                materialList[i] = mat
                foundCount = foundCount + 1
                break
            end
        end

        material = MatSystem.NextMaterial(material)
    end
end

local function updateConsoleColor(r, g, b, a)
    for i = 1, #materialList do
        local mat = materialList[i]
        mat:ColorModulate(r, g, b)
        mat:AlphaModulate(a)
    end
end

local function cfgConsoleCallback()
    local color = ui.console:Get()

    if not ui.console:Get() then
        updateConsoleColor(1, 1, 1, 1)
    elseif isConsoleVisible(engineClientClass) then
        updateConsoleColor(color.r, color.g, color.b, color.a)
        copyColor(color, oldColor)
    end
end

--angle
local adjust_angle = function(angle)
    if(angle < 0) then
        angle = (90 + angle * (-1))
    elseif(angle > 0) then
        angle = (90 - angle)
    end
    return angle
end

local OldChoke, toDraw0, toDraw1, toDraw2, toDraw3, toDraw4, on_plant_time, fill, text, planting_site, planting, autopeek_origin = 0, 0, 0, 0, 0, 0, 0, 0, "", "", false, nil

--hitgroups
Cheat.RegisterCallback("registered_shot", function(shot)
    local reason_list = {
        "resolver",
        "spread",
        "occlusion",
        "prediction error"
    }
    local reason = shot.reason
    local entity = EntityList.GetClientEntity(shot.target_index)
    local Name = entity:GetPlayer():GetName()
    if ui.hitlogs:Get() then
        if reason == 0 then
            if ui.hitlogs_type:Get(1) then
                logs[#logs+1] = {("[nova.tech] Hit "..Name.."'s in "..hitboxes[shot.hitgroup+1].." for ".. shot.damage .." dmg (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)"), GlobalVars.tickcount + 300, 0}
            end
            if ui.hitlogs_type:Get(2) then
                print("[nova.tech] Hit "..Name.."'s in "..hitboxes[shot.hitgroup+1].." for ".. shot.damage .." dmg (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)")
            end
            if ui.hitlogs_type:Get(3) then
                Cheat.AddEvent("[nova.tech] Hit "..Name.."'s in "..hitboxes[shot.hitgroup+1].." for ".. shot.damage .." dmg (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)")
            end
        else
            if ui.hitlogs_type:Get(1) then
                logs[#logs+1] = {("[nova.tech] Missed ".. Name .. "'s in " .. hitboxes[shot.wanted_hitgroup+1] .. " due to "..reason_list[reason].." (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)"), GlobalVars.tickcount + 300, 0}
            end
            if ui.hitlogs_type:Get(2) then
                print("[nova.tech] Missed ".. Name .. "'s in " .. hitboxes[shot.wanted_hitgroup+1] .. " due to "..reason_list[reason].." (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)")
            end
            if ui.hitlogs_type:Get(3) then
                Cheat.AddEvent("[nova.tech] Missed ".. Name .. "'s in " .. hitboxes[shot.wanted_hitgroup+1] .. " due to "..reason_list[reason].." (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)")
            end
        end
    end
end)

--velocity
local velocity = function(ent)
    local speed = Vector.new(ent:GetProp("DT_BasePlayer", "m_vecVelocity[0]"), ent:GetProp("DT_BasePlayer", "m_vecVelocity[1]"), ent:GetProp("DT_BasePlayer", "m_vecVelocity[2]")):Length2D()
    return speed
end

local drag = {false, false}
local toDraw = {0, 0, 0, 0, 0, 0,}
local keysAnim = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}

local Visuals_HoloX, Visuals_HoloY, fake, curtime, ts, ts2, aastate, legit_aa, in_use, call_once = 0, 0, GlobalVars.curtime, 0, 0, 0, "DEFAULT", false, false, true


local anim = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}

local legitaa = function(cmd)
    local lp = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
    if lp == nil then return end
    in_use = false
    if aa[0].on_key:Get() == false then legit_aa = false return else legit_aa = true end
    if(bit.band(cmd.buttons, 32) == 32 and call_once == true) then
        call_once = false
    end

    if(bit.band(cmd.buttons, 32) == 0 and call_once == false) then
        call_once = true
    end

    if bit.band(cmd.buttons, 32) == 32 then
        in_use = true
        cmd.buttons = bit.band(cmd.buttons, bit.bnot(32))
    end
end

local use = function(cmd)
    if in_use == true then
        cmd.buttons = bit.bor(cmd.buttons, 32)
        in_use = false
    end
end

local Render_Indicator = function(text, ay2, color, size, font, outline)
    ts = Render.CalcTextSize(text, size, font)
    Render.Text(text, Vector2.new(x/2-ts.x/2, y/2+ay2), color, size, font, outline)
end

local Render_Indicator2 = function(text, ay2, color, size, font, outline, ts2)
    ts = Render.CalcTextSize(text, size, font)
    Render.Text(text, Vector2.new(x/2-ts.x/2-ts2, y/2+ay2), color, size, font, outline)
end
    
local Render_Indicator3 = function(text, ay3, color, size, font)
    ts = Render.CalcTextSize(text, size, font)
    Render.Text(text, Vector2.new(x/2+1, y/2+1+ay3), Color.RGBA(0,0,0,255), size, font)
    Render.Text(text, Vector2.new(x/2, y/2+ay3), color, size, font)
end

local Render_Skeet = function(text, ay, color, size, fonts)
    ts = Render.CalcTextSize(text, size, fonts)
    Render.GradientBoxFilled(Vector2.new(13, sc.y/1.48 - 5 + ay), Vector2.new(13 + (ts.x) / 2, sc.y/1.48 - 5 + ay + 28), Color.RGBA(0, 0, 0, 0), Color.RGBA(0, 0, 0, 65), Color.RGBA(0, 0, 0, 0), Color.RGBA(0, 0, 0, 65))
    Render.GradientBoxFilled(Vector2.new(13 + (ts.x) / 2, sc.y/1.48 - 5 + ay), Vector2.new(13 + (ts.x), sc.y/1.48 - 5 + ay + 28), Color.RGBA(0, 0, 0, 65), Color.RGBA(0, 0, 0, 0), Color.RGBA(0, 0, 0, 65), Color.RGBA(0, 0, 0, 0))
    Render.Text(text, Vector2.new(sc.x/100 + 2, sc.y/1.48 - 5 + 5 + ay), Color.new(0, 0, 0, 1), size, fonts)
    Render.Text(text, Vector2.new(sc.x/100 + 2, sc.y/1.48 - 5 + 4 + ay), color, size, fonts)
end

Cheat.RegisterCallback("prediction", function(cmd)
    local lp = EntityList.GetLocalPlayer()
    local forw = bit.band(cmd.buttons, 8) == 8
    local back = bit.band(cmd.buttons, 16) == 16
    local righ = bit.band(cmd.buttons, 512) == 512
    local left = bit.band(cmd.buttons, 1024) == 1024

    local originalpos = lp:GetProp("m_vecOrigin")
    local OnGround = bit.band(lp:GetProp("m_hGroundEntity"), 1);

    if OnGround == 1 then
        air = true
    else
        air = false
    end
    if AP:Get() == false then
        curpos = lp:GetProp("m_vecOrigin");
    end
    if ui.autopeek:Get() then
        if AP:Get() then
            if forw == false and back == false and left == false and righ == false and curpos.x ~= originalpos.x and curpos.y ~= originalpos.y and air == false then
                setmovement(curpos.x,curpos.y, cmd);
            end
        end
    end

    if GlobalVars.tickcount%64<2 and aa[0].fake_flick:Get() and aa[0].antiaims:Get() then
        AntiAim.OverrideYawOffset(90*(AntiAim.GetInverterState()and-1 or 1))
    end
end)

local zxc = 0
local draw = function()
    add_y = 0

    --colors
    local r = math.floor(ui.color:Get().r*255)
    local g = math.floor(ui.color:Get().g*255)
    local b = math.floor(ui.color:Get().b*255)
    local a = ui.alpha:Get()
  
    local dmg = false
    local binds = Cheat.GetBinds()
    for i = 1, #binds do
        if binds[i]:GetName() == "Minimum Damage" and binds[i]:IsActive() then
            dmg = true
        end
    end

    local manuals = yaw_base:Get() == 2 or yaw_base:Get() == 3

    --menu blur
    if ui.blur:Get() then
        if Cheat.IsMenuVisible() then
            if anim[1] < 255 then anim[1] = anim[1] + 10 end
        else
            if anim[1] > 0 then anim[1] = anim[1] - 10 end
        end
        Render.Blur(Vector2.new(0, 0), Vector2.new(x, y), Color.RGBA(255,255,255, anim[1]))
    end

    if ui.disable_os:GetBool() then
        if HS:GetBool() then
            FL:SetInt(1)
        else
            FL:SetInt(14)
        end
    end

    --molotov wireframe
    for _, v in pairs(materials) do
        local material = MatSystem.FindMaterial(v, "")

        if material ~= nil then
            material:SetMaterialVarFlag(bit.lshift(1, 28), ui.wireframe:Get())
            material:SetMaterialVarFlag(bit.lshift(1, 15), ui.ignorez:Get())
        end
    end

    --console color changer
    if ui.console:Get() then
        findConsoleMaterials()

        local color = ui.console:GetColor()
        local consoleVisible = isConsoleVisible(engineClientClass)

        if consoleVisible and not isColorEquals(oldColor, color) then
            updateConsoleColor(color.r, color.g, color.b, color.a)
            copyColor(color, oldColor)
        end

        if consoleVisible ~= oldConsoleIsVisible then
            if not consoleVisible then
                updateConsoleColor(1, 1, 1, 1)
            else
                updateConsoleColor(color.r, color.g, color.b, color.a)
            end

            oldConsoleIsVisible = consoleVisible
        end
    end

    --anti defensive
    local lc = CVar.FindVar("cl_lagcompensation")
    if ui.antidefensive:Get() then
        if lc:GetInt() == 1 then
            EngineClient.ExecuteClientCmd("jointeam 1")
            lc:SetInt(0)
        end
    else
        if lc:GetInt() == 0 then
            EngineClient.ExecuteClientCmd("jointeam 1")
            lc:SetInt(1)
        end
    end

    local lp = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
    if lp == nil then
        logs = {}
        return
    end
  
    if AP:Get() and ui.glowpeek:Get() then
        if autopeek_origin == nil then
            autopeek_origin = lp:GetProp('m_vecOrigin')
        end
        for i = 1, 60 do
            local autopeek_value = 1/i
            if i <= 60 then
                autopeek_value = autopeek_value + 1.5
            end
            local autopeek_color = ui.glowpeek:GetColor()
            if AP:Get() then
                Render.Circle3DFilled(autopeek_origin, 28, i / -2.5, Color.new(autopeek_color.r, autopeek_color.g, autopeek_color.b, autopeek_value / 50 * autopeek_color.a))
                Render.Circle3DFilled(autopeek_origin, 18, i / -2.6, Color.new(autopeek_color.r, autopeek_color.g, autopeek_color.b, autopeek_value / 50 * autopeek_color.a))
            end
        end
    else
        autopeek_origin = nil
    end

    --hitlogs
    if #logs > 0 then
        if GlobalVars.tickcount >= logs[1][2] then
            if logs[1][3] > 0 then
                logs[1][3] = logs[1][3] - 2
            elseif logs[1][3] <= 0 then
                table.remove(logs, 1)
            end
        end
        if #logs > 5 then
            table.remove(logs, 1)
        end
        for i = 1, #logs do
            ts = Render.CalcTextSize(logs[i][1], 11, font.verdana)
            if logs[i][3] < 255 then logs[i][3] = logs[i][3] + 1 end
            Render.Blur(Vector2.new(math.min(50, logs[i][3]*2)-60 + x/2-ts.x/2, y-256+34*i), Vector2.new(math.min(50, logs[i][3]*2)-40 + x/2+ts.x/2, y-242+34*i+ts.y), Color.RGBA(0,0,0, math.min(255, logs[i][3]*5)), 100)
            Render.BoxFilled(Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2-ts.x/2, y-256+34*i), Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2-ts.x/2+math.min(ts.x, logs[i][3]*7), y-254+34*i), Color.RGBA(r,g,b,math.min(255, logs[i][3]*5)))
            Render.BoxFilled(Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2+ts.x/2-math.min(ts.x, logs[i][3]*7), y-241+ts.y+34*i), Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2+ts.x/2, y-243+ts.y+34*i), Color.RGBA(r,g,b,math.min(255, logs[i][3]*5)))
            Render.Circle(Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2-ts.x/2, y-243+34*i), 12, 32, Color.RGBA(r,g,b,math.min(255, logs[i][3]*5)), 2, 270-math.min(180, logs[i][3]*3), 270)
            Render.Circle(Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2+ts.x/2, y-243+34*i), 12, 32, Color.RGBA(r,g,b,math.min(255, logs[i][3]*5)), 2.5, 90, 90-math.min(180, logs[i][3]*3))
            Render.Text(logs[i][1], Vector2.new(math.min(50, logs[i][3]*2)-49 + x/2-ts.x/2, y-249+34*i), Color.RGBA(0,0,0, math.min(255, logs[i][3]*5)), 11, font.verdana)
            Render.Text(logs[i][1], Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2-ts.x/2, y-250+34*i), Color.RGBA(255,255,255, math.min(255, logs[i][3]*5)), 11, font.verdana)
            Render.Text("[nova.tech] ", Vector2.new(math.min(50, logs[i][3]*2)-49 + x/2-ts.x/2, y-249+34*i), Color.RGBA(0,0,0, math.min(255, logs[i][3]*5)), 11, font.verdana)
            Render.Text("[nova.tech] ", Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2-ts.x/2, y-250+34*i), Color.RGBA(r,g,b, math.min(255, logs[i][3]*5)), 11, font.verdana)
        end
    end
    local delta_to_draw = math.abs(normalize_yaw(AntiAim.GetCurrentRealRotation()%360 - AntiAim.GetFakeRotation()%360))/2
  
    local chocking = ClientState.m_choked_commands
    if chocking < OldChoke then
        toDraw0 = toDraw1
        toDraw1 = toDraw2
        toDraw2 = toDraw3
        toDraw3 = toDraw4
        toDraw4 = OldChoke
    end
    OldChoke = chocking

    --skeet indicators
    if ui.indicators:Get(5) then
        add_y = 0

        if ui.add_indicators:Get(1) then
            Render_Skeet(string.format('%i-%i-%i-%i-%i',toDraw4,toDraw3,toDraw2,toDraw1,toDraw0), add_y, Color.RGBA(235 ,235, 235, 255), 22, font.calibrib)
            add_y = add_y - 35
        end

        if ui.add_indicators:Get(2) and lp:GetPlayer():IsAlive() then
            Render_Skeet("EX", add_y, DT:Get() and bit.band(lp:GetPlayer():GetProp("m_fFlags"), bit.lshift(1,0)) == 0 and Color.RGBA(132, 195, 16, 255) or Color.RGBA(208, 208, 20, 255), 22, font.calibrib)
            add_y = add_y - 35
        end

        if ui.add_indicators:Get(3) and dmg == true then
            Render_Skeet("DMG:"..MD:Get(), add_y, Color.RGBA(255, 255, 255, 150), 22, font.calibrib)
            add_y = add_y - 35
        end

        if ui.add_indicators:Get(4) and yaw_base:Get() == 5 then
            Render_Skeet("FS", add_y, Color.RGBA(235 ,235, 235, 255), 22, font.calibrib)
            add_y = add_y - 35
        end

        if PING:Get() > 0 then
            Render_Skeet("PING", add_y, Color.RGBA(math.floor(255 - ((PING:Get() / 189 * 60) * 2.29824561404)), math.floor((PING:Get() / 189 * 60) * 3.42105263158), math.floor((PING:Get() / 189 * 60) * 0.22807017543), 255), 22, font.calibrib)
            add_y = add_y - 35
           end
      
        if FD:Get() then
            Render_Skeet("DUCK", add_y, Color.RGBA(235 ,235, 235, 255), 22, font.calibrib)
            add_y = add_y - 35
        end

        local c4 = EntityList.GetEntitiesByClassID(129)[1];
        if c4 ~= nil then
            local time = ((c4:GetProp("m_flC4Blow") - GlobalVars.curtime)*10) / 10
            local timer = string.format("%.1f", time)
            local defused = c4:GetProp("m_bBombDefused")
            if math.floor(timer) > 0 and not defused then
                local defusestart = c4:GetProp("m_hBombDefuser") ~= 4294967295
                local defuselength = c4:GetProp("m_flDefuseLength")
                local defusetimer = defusestart and math.floor((c4:GetProp("m_flDefuseCountDown") - GlobalVars.curtime)*10) / 10 or -1
                if defusetimer > 0 then
                    local color = math.floor(timer) > defusetimer and Color.RGBA(58, 191, 54, 160) or Color.RGBA(252, 18, 19, 125)
                  
                    local barlength = (((sc.y - 50) / defuselength) * (defusetimer))
                    Render.BoxFilled(Vector2.new(0.0, 0.0), Vector2.new(16, sc.y), Color.RGBA(25, 25, 25, 160))
                    Render.Box(Vector2.new(0.0, 0.0), Vector2.new(16, sc.y), Color.RGBA(25, 25, 25, 160))
                  
                    Render.BoxFilled(Vector2.new(0, sc.y - barlength), Vector2.new(16, sc.y), color)
                end
              
                local bombsite = c4:GetProp("m_nBombSite") == 0 and "A" or "B"
                local health = lp:GetProp("m_iHealth")
                local armor = lp:GetProp("m_ArmorValue")
                local willKill = false
                local eLoc = c4:GetRenderOrigin()
                local lLoc = lp:GetRenderOrigin()
                local distance = eLoc:DistTo(lLoc)
                local a = 450.7
                local b = 75.68
                local c = 789.2
                local d = (distance - b) / c;

                local damage = a * math.exp(-d * d)
                if armor > 0 then
                    local newDmg = damage * 0.5;
  
                    local armorDmg = (damage - newDmg) * 0.5
                    if armorDmg > armor then
                        armor = armor * (1 / .5)
                        newDmg = damage - armorDmg
                    end
                    damage = newDmg;
                end
                local dmg = math.ceil(damage)
                    if dmg >= health then
                    willKill = true
                else
                    willKill = false
                end
                Render_Skeet(bombsite.." - "..string.format("%.1f", timer).."s", add_y, Color.RGBA(235 ,235, 235, 255), 22, font.calibrib)
                add_y = add_y - 35
                if lp then
                    if willKill == true then
                        Render_Skeet("FATAL", add_y, Color.RGBA(255, 0, 0, 255), 22, font.calibrib)
                        add_y = add_y - 35
                    elseif damage > 0.5 then
                        Render_Skeet("-"..dmg.." HP", add_y, Color.RGBA(210, 216, 112, 255), 22, font.calibrib)
                        add_y = add_y - 35
                    end
                end
            end
        end
        if planting then
            Render_Skeet(planting_site, add_y, Color.RGBA(210, 216, 112, 255), 22, font.calibrib)
            fill = 3.125 - (3.125 + on_plant_time - GlobalVars.curtime)
            if(fill > 3.125) then
                fill = 3.125
            end
            ts = Render.CalcTextSize(planting_site, 22, font.calibrib)
            Render.Circle(Vector2.new(sc.x/100 + 2 + ts.x+18, sc.y/1.48 - 5+add_y+ts.y/2+3), 8, 32, Color.RGBA(0, 0, 0, 255), 4, 0, 360)
            Render.Circle(Vector2.new(sc.x/100 + 2 + ts.x+18, sc.y/1.48 - 5+add_y+ts.y/2+3), 8, 32, Color.RGBA(235 ,235, 235, 255), 3, 0, (fill/3.3)*360)
            add_y = add_y - 35
        end     
      
        if DT:Get() then
            Render_Skeet("DT", add_y, Exploits.GetCharge() == 1 and Color.RGBA(235 ,235, 235, 255) or Color.RGBA(255, 0, 0, 255), 22, font.calibrib)
            add_y = add_y - 35
        end
    end
  
    if ui.windows:Get(1) then
        local ping = math.floor(EngineClient.GetNetChannelInfo():GetLatency(0)*1000)
        local local_time = ffi.new("SYSTEMTIME")
        ffi.C.GetLocalTime(local_time)

        text_wm = "nova.tech | "..Cheat.GetCheatUserName().." | delay: "..ping.." | "..string.format("%02d:%02d:%02d", local_time.wHour, local_time.wMinute, local_time.wSecond)
        ts_wm = Render.CalcTextSize(text_wm, 11, font.verdana) + 16

        Render.Blur(Vector2.new(x-ts_wm.x-6, 10), Vector2.new(x-10, 28), Color.RGBA(100, 100, 100, a))
        Render.BoxFilled(Vector2.new(x-ts_wm.x-6, 8), Vector2.new(x-10, 10), Color.RGBA(r, g, b, 255))

        Render.Text(text_wm, Vector2.new(x-ts_wm.x+1, 13), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
        Render.Text(text_wm, Vector2.new(x-ts_wm.x, 12), Color.RGBA(255, 255, 255, 255), 11, font.verdana)
    end

    if ui.windows:Get(2) then
        local players = EntityList.GetPlayers()
        local specs = {}
        local local_player = EntityList.GetLocalPlayer()
        for table_index, player_pointer in pairs(players) do
            if player_pointer and player_pointer:GetProp("m_iHealth") <= 0 then
                local local_player = EntityList.GetLocalPlayer()
                if local_player:IsAlive() then
                    local player = player_pointer
                    local spec_handle = player:GetProp("m_hObserverTarget")
                    local spec_player = EntityList.GetClientEntityFromHandle(spec_handle)
                    if spec_player ~= nil then
                        if spec_player:GetPlayer() == local_player:GetPlayer() then
                            specs[#specs+1] = player_pointer:GetName()
                        end
                    end
                else
                    local observer = player_pointer:GetProp('m_hObserverTarget')
                    local player = EntityList.GetLocalPlayer()
                    local localtarget = player:GetProp('m_hObserverTarget')
                    if observer == localtarget then
                        specs[#specs+1] = player_pointer:GetName()
                    end
                end
            end
        end
        xxx = ui.specs_x:Get()
        yyy = ui.specs_y:Get()
        if #specs > 0 or Cheat.IsMenuVisible() then
            Render.Blur(Vector2.new(xxx - 80, yyy - 4), Vector2.new(xxx + 80, yyy + 14), Color.RGBA(100, 100, 100, a))
            Render.BoxFilled(Vector2.new(xxx - 80, yyy - 6), Vector2.new(xxx + 80, yyy - 4), Color.RGBA(r, g, b, 255))
            ts = Render.CalcTextSize("spectators", 11, font.verdana)
            Render.Text("spectators", Vector2.new(xxx - ts.x/2+1, yyy - 1), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
            Render.Text("spectators", Vector2.new(xxx - ts.x/2, yyy - 2), Color.RGBA(255, 255, 255, 255), 11, font.verdana)
            for i = 1, #specs do
                Render.Text(specs[i], Vector2.new(xxx - 76, yyy + 1 + i * 17), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
                Render.Text(specs[i], Vector2.new(xxx - 77, yyy + i * 17), Color.RGBA(255, 255, 255, 255), 11, font.verdana)
            end
        end
        if Cheat.IsKeyDown(0x1) then
            local mouse = Cheat.GetMousePos()
            local ts = Render.CalcTextSize("spectators", 12)
            if drag[2] == true then
                ui.specs_x:SetInt(mouse.x)
                ui.specs_y:SetInt(mouse.y)
            end
            if mouse.x >= xxx - 70 and mouse.y >= yyy and mouse.x <= xxx + 70 and mouse.y <= yyy + ts.y then
                if drag[1] == false then drag[2] = true end
            end
        else
            drag[2] = false
        end
    end

    if ui.windows:Get(3) then
        local binds = Cheat.GetBinds()
        xx = ui.binds_x:Get()
        yy = ui.binds_y:Get()
        if #binds > 0 or Cheat.IsMenuVisible() then
            for i = 1, #binds do
                if binds[i]:IsActive() then
                    if keysAnim[i] < 255 then keysAnim[i] = keysAnim[i] + 30 else keysAnim[i] = 255 end
                else
                    if keysAnim[i] > 0 then keysAnim[i] = keysAnim[i] - 30 else keysAnim[i] = 0 end
                end
                mode = binds[i]:GetMode() == 0 and "[toggled]" or binds[i]:GetMode() == 1 and "[holding]"
                ts = Render.CalcTextSize(mode, 11, font.verdana)
                Render.Text(binds[i]:GetName(), Vector2.new(xx - 76, yy + 1 + i * 17), Color.RGBA(0, 0, 0, keysAnim[i]), 11, font.verdana)
                Render.Text(binds[i]:GetName(), Vector2.new(xx - 77, yy + i * 17), Color.RGBA(255, 255, 255, keysAnim[i]), 11, font.verdana)

                Render.Text(mode, Vector2.new(xx + 78-ts.x, yy + 1 + i * 17), Color.RGBA(0, 0, 0, keysAnim[i]), 11, font.verdana)
                Render.Text(mode, Vector2.new(xx + 77-ts.x, yy + i * 17), Color.RGBA(255, 255, 255, keysAnim[i]), 11, font.verdana)
            end
            Render.Blur(Vector2.new(xx - 80, yy - 4), Vector2.new(xx + 80, yy + 14), Color.RGBA(100, 100, 100, a))
            Render.BoxFilled(Vector2.new(xx - 80, yy - 6), Vector2.new(xx + 80, yy - 4), Color.RGBA(r, g, b, 255))
            ts = Render.CalcTextSize("keybinds", 11, font.verdana)
            Render.Text("keybinds", Vector2.new(xx - ts.x/2+1, yy - 1), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
            Render.Text("keybinds", Vector2.new(xx - ts.x/2, yy - 2), Color.RGBA(255, 255, 255, 255), 11, font.verdana)
        end
        if Cheat.IsKeyDown(0x1) then
            local mouse = Cheat.GetMousePos()
            local ts = Render.CalcTextSize("keybinds", 12)
            if drag[1] == true then
                ui.binds_x:SetInt(mouse.x)
                ui.binds_y:SetInt(mouse.y)
            end
            if mouse.x >= xx - 70 and mouse.y >= yy and mouse.x <= xx + 70 and mouse.y <= yy + ts.y then
                if drag[2] == false then drag[1] = true end
            end
        else
            drag[1] = false
        end
    end

    if ui.windows:Get(4) then
        --fl
        text_fl = DT:Get() and "FL: "..chocking.." | SHIFTING" or "FL: "..chocking
        ts_fl = Render.CalcTextSize(text_fl, 11, font.verdana) + 16
        fl_clr = Color.RGBA(math.floor(255 - (chocking * 8.57142857142)), math.floor(chocking * 14.28105263158), math.floor(chocking * 0.84807017543), 255)
        fl_clr1 = Color.RGBA(math.floor(255 - (chocking * 8.57142857142)), math.floor(chocking * 14.28105263158), math.floor(chocking * 0.84807017543), 0)
        Render.Blur(Vector2.new(x-ts_fl.x-6, 35), Vector2.new(x-10, 53), Color.RGBA(100, 100, 100, a))
        Render.GradientBoxFilled(Vector2.new(x-ts_fl.x/2-6, 53), Vector2.new(x-10, 54), fl_clr, fl_clr1, fl_clr, fl_clr1)
        Render.GradientBoxFilled(Vector2.new(x-ts_fl.x-6, 53), Vector2.new(x-ts_fl.x/2-6, 54), fl_clr1, fl_clr, fl_clr1, fl_clr)
        Render.Text(text_fl, Vector2.new(x-ts_fl.x+1, 38), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
        Render.Text(text_fl, Vector2.new(x-ts_fl.x, 37), Color.RGBA(255, 255, 255, 255), 11, font.verdana)

        --fake
        text_fake = string.format("FAKE (%.1f°)",delta_to_draw)
        ts_fake = Render.CalcTextSize(text_fake, 11, font.verdana) + 16
        local fake_clr = Color.RGBA(math.floor(255 - (delta_to_draw * 2.29824561404)), math.floor(delta_to_draw * 3.42105263158), math.floor(delta_to_draw * 0.22807017543), 255)
        local fake_clr1 = Color.RGBA(math.floor(255 - (delta_to_draw * 2.29824561404)), math.floor(delta_to_draw * 3.42105263158), math.floor(delta_to_draw * 0.22807017543), 0)
        Render.GradientBoxFilled(Vector2.new(x-(ts_fl.x+ts_fake.x/2)-6, 35), Vector2.new(x-ts_fl.x-10, 53), Color.RGBA(0, 0, 0, a), Color.new(0, 0, 0, 0), Color.RGBA(0, 0, 0, a), Color.new(0, 0, 0, 0))
        Render.GradientBoxFilled(Vector2.new(x-(ts_fl.x+ts_fake.x)-6, 35), Vector2.new(x-(ts_fl.x+ts_fake.x/2)-6, 53), Color.new(0, 0, 0, 0), Color.RGBA(0, 0, 0, a), Color.new(0, 0, 0, 0), Color.RGBA(0, 0, 0, a))

        Render.GradientBoxFilled(Vector2.new(x-(ts_fl.x+ts_fake.x)-4, 34), Vector2.new(x-(ts_fl.x+ts_fake.x)-6, 44), fake_clr1, fake_clr1, fake_clr, fake_clr)
        Render.GradientBoxFilled(Vector2.new(x-(ts_fl.x+ts_fake.x)-4, 44), Vector2.new(x-(ts_fl.x+ts_fake.x)-6, 54), fake_clr, fake_clr, fake_clr1, fake_clr1)
        Render.Text(text_fake, Vector2.new(x-(ts_fl.x+ts_fake.x)+1, 38), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
        Render.Text(text_fake, Vector2.new(x-(ts_fl.x+ts_fake.x), 37), Color.RGBA(255, 255, 255, 255), 11, font.verdana)
    end

    local calcs = {
        deg2rad = function(self, x)
            return x * (math.pi / 180.0)
        end,
  
        rotated_position = function(self, start, rotation, distance)
            local rad = self:deg2rad(rotation)
            local new_start = Vector.new(start.x, start.y, start.z)
            new_start.x = new_start.x + math.cos(rad) * distance
            new_start.y = new_start.y + math.sin(rad) * distance
  
            return new_start
        end
    }

    if lp:GetPlayer():IsAlive() then
        local view_angles = EngineClient.GetViewAngles()
        local real_yaw = AntiAim.GetCurrentRealRotation()
        local view_yaw = view_angles.yaw - 180;
        local fake = adjust_angle(real_yaw - view_yaw);
        local fake_clr = Color.RGBA(math.floor(255 - (delta_to_draw * 2.29824561404)), math.floor(delta_to_draw * 3.42105263158), math.floor(delta_to_draw * 0.22807017543), 255)
        local clr = Color.new(ui.circle:GetColor().r, ui.circle:GetColor().g, ui.circle:GetColor().b, 1)
        if ui.circle:GetBool() then
            if ui.circle_style:GetInt() == 0 then
                Render.Circle(Vector2.new(x/2, y/2), 7, 32, Color.new(0, 0, 0, 1), 4, 0, 360)
                Render.Circle(Vector2.new(x/2, y/2), 7, 32, fake_clr, 4, 90, AntiAim.GetInverterState() == false and -90 or 270)
                Render.Circle(Vector2.new(x/2, y/2), 15, 32, fake_clr, 4, fake+30, fake-30)
            else
                local real_rotation = calcs:deg2rad(view_angles.yaw - AntiAim.GetCurrentRealRotation() - 90);
                Render.PolyFilled(AntiAim.GetInverterState() and Color.new(1, 1, 1, 1) or clr,
                    Vector2.new(x/2 + math.cos(real_rotation) * 45,
                                y/2 + math.sin(real_rotation) * 45),
                    Vector2.new(x/2 + math.cos(real_rotation - calcs:deg2rad(20)) * (45 - 15),
                                y/2 + math.sin(real_rotation - calcs:deg2rad(20)) * (45 - 15)),
                    Vector2.new(x/2 + math.cos(real_rotation) * (45 - 13),
                                y/2 + math.sin(real_rotation) * (45 - 13))
                )
                Render.PolyFilled(AntiAim.GetInverterState() and clr or Color.new(1, 1, 1, 1),
                Vector2.new(x/2 + math.cos(real_rotation) * 45,
                            y/2 + math.sin(real_rotation) * 45),
                Vector2.new(x/2 + math.cos(real_rotation + calcs:deg2rad(20)) * (45 - 15),
                            y/2 + math.sin(real_rotation + calcs:deg2rad(20)) * (45 - 15)),
                Vector2.new(x/2 + math.cos(real_rotation) * (45 - 13),
                            y/2 + math.sin(real_rotation) * (45 - 13))
            )
            end
        end

        if ui.idealtick:Get() and AP:Get() then
            if ui.add_idealtick:Get(1) then
                aa[0].manual:SetInt(6)
            end
            zxc = 1
        elseif zxc == 1 then
            aa[0].manual:SetInt(0)
            zxc = 0
        end

        --hitchance and dmg
        local active_weapon = lp:GetPlayer():GetActiveWeapon()
        if active_weapon == nil then return end
        local weapon_id = active_weapon:GetWeaponID()
        local players = EntityList.GetPlayers()
        for _, player in ipairs(players) do
            if not player:IsTeamMate() then
                local user_index = player:EntIndex()
                if ui.air_hitchance:Get() and weapon_id == 40 and bit.band(lp:GetProp("m_fFlags"), bit.lshift(1,0)) == 0 then
                    RageBot.OverrideHitchance(user_index, ui.air_hitchance_value:Get())
                end
                if ui.ns_hitchance:Get() and weapon_id == 11 or weapon_id == 38 and not lp:GetPlayer():GetProp("m_bIsScoped") then
                    RageBot.OverrideHitchance(user_index, ui.ns_hitchance_value:Get())
                end
                if ui.idealtick:Get() and AP:Get() then
                    if ui.add_idealtick:Get(2) then
                        RageBot.OverrideMinDamage(user_index, ui.idealtick_damage:Get())
                    end
                    if ui.add_idealtick:Get(3) then
                        RageBot.ForceHitboxSafety(user_index, 0)
                    end
                end
            end
        end
      
        --state
        local ax = 0
        if ui.state_panel:Get() then
            arrows = AntiAim.GetInverterState() and "<" or ">"
            Render.Text("NOVA.TECH - V1.2.1 | "..Cheat.GetCheatUserName(), Vector2.new(x/20, y/2.4+30), Color.RGBA(255,255,255,255), 10, font.pixel, true)
            Render.Text("+ INVERTER: "..arrows.." | STATE: "..aastate, Vector2.new(x/20, y/2.4+42), Color.RGBA(125, 125, 125, 255), 10, font.pixel, true)
            Render.Text("+ FAKELAG COUNTER: "..string.format("%i-%i-%i-%i-%i",toDraw4,toDraw3,toDraw2,toDraw1,toDraw0), Vector2.new(x/20, y/2.4+54), Color.RGBA(125, 125, 125, 255), 10, font.pixel, true)
            Render.Text("+ DOUBLE-TAP: ", Vector2.new(x/20, y/2.4+66), Color.RGBA(125, 125, 125, 255), 10, font.pixel, true)
            ax = ax + Render.CalcTextSize("+ DOUBLE-TAP: ", 10, font.pixel).x
            Render.Text(DT:Get() and "ON" or "OFF", Vector2.new(x/20+ax, y/2.4+66), DT:Get() and Color.RGBA(80, 255, 80, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)
            ax = ax + Render.CalcTextSize(DT:Get() and "ON " or "OFF ", 10, font.pixel).x
            Render.Text("| OS-AA: ", Vector2.new(x/20+ax, y/2.4+66), Color.RGBA(125, 125, 125, 255),10, font.pixel, true)
            ax = ax + Render.CalcTextSize("| OS-AA: ", 10, font.pixel).x
            Render.Text(HS:Get() and "ON" or "OFF", Vector2.new(x/20+ax, y/2.4+66), HS:Get() and Color.RGBA(80, 255, 80, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)
        end

        --holo panel
        ay = 0
        if ui.windows:Get(5) and ui.viewmodel:Get() or ui.windows:Get(5) and not lp:GetPlayer():GetProp("m_bIsScoped") then
            if ui.holo_on_tp:Get() and not TP:Get() or ui.holo_on_tp:Get() == false and TP:Get() or TP:Get() == false then
                local muzzle_temp = muzzle.get()

                if muzzle_temp then
                    muzzle.pos = muzzle_temp.pos
                end
              
                local hitbox = lp:GetPlayer():GetHitboxCenter(3)
                local world_stand =  Render.WorldToScreen(hitbox)
                local pos2d = Render.WorldToScreen(muzzle.pos)
                if DT:Get() then
                    ay = 13
                else
                    ay = 0
                end
                if TP:Get() then
                    if world_stand.x ~= nil and world_stand.y ~= nil then
                        Render.Line(Vector2.new(Visuals_HoloX, Visuals_HoloY+ay+65), Vector2.new(x/2, world_stand.y), Color.RGBA(100,100,100,220))
                        local lerpx = lerp(Visuals_HoloX, world_stand.x + 10, GlobalVars.frametime * 8)
                        local lerpy = lerp(Visuals_HoloY, world_stand.y - 90, GlobalVars.frametime * 8)
                        if lerpx >= 0 and lerpx <= 2000 and lerpy >= 0 and lerpy <= 1500 then
                            Visuals_HoloX = lerp(Visuals_HoloX, world_stand.x + 10, GlobalVars.frametime * 8)
                            Visuals_HoloY = lerp(Visuals_HoloY, world_stand.y - 90, GlobalVars.frametime * 8)
                        else
                            Visuals_HoloX = world_stand.x + 10
                            Visuals_HoloY = world_stand.y - 90
                        end
                    end
                else
                    if pos2d.x ~= nil and pos2d.y ~= nil then
                        local lerpx = lerp(Visuals_HoloX, pos2d.x - 20, GlobalVars.frametime * 8)
                        local lerpy = lerp(Visuals_HoloY, pos2d.y - 125, GlobalVars.frametime * 8)
                        Render.Line(Vector2.new(Visuals_HoloX, Visuals_HoloY+ay+65), Vector2.new(pos2d.x, pos2d.y), Color.RGBA(100,100,100,220))
                        if lerpx >= 0 and lerpx <= 3000 and lerpy >= 0 and lerpy <= 2000 then
                            Visuals_HoloX = lerp(Visuals_HoloX, pos2d.x - 20, GlobalVars.frametime * 8)
                            Visuals_HoloY = lerp(Visuals_HoloY, pos2d.y - 125, GlobalVars.frametime * 8)
                        else
                            Visuals_HoloX = pos2d.x - 20
                            Visuals_HoloY = pos2d.y - 125
                        end
                    end
                end 

                Render.Blur(Vector2.new(Visuals_HoloX, Visuals_HoloY), Vector2.new(170 + Visuals_HoloX, (65 + ay) + Visuals_HoloY))
              
                Render.BoxFilled(Vector2.new(Visuals_HoloX, Visuals_HoloY), Vector2.new(170 + Visuals_HoloX, 2 + Visuals_HoloY), Color.RGBA(r, g, b, 255))
              

                Render.Text("ANTI-AIMBOT DEBUG", Vector2.new(Visuals_HoloX + 7, Visuals_HoloY + 5 ), Color.new(1.0, 1.0, 1.0, 1.0), 10, font.pixel, true)

                local fake_clr = Color.RGBA(math.floor(255 - (delta_to_draw * 2.29824561404)), math.floor(delta_to_draw * 3.42105263158), math.floor(delta_to_draw * 0.22807017543), 255)
                local fake_clr1 = Color.RGBA(math.floor(255 - (delta_to_draw * 2.29824561404)), math.floor(delta_to_draw * 3.42105263158), math.floor(delta_to_draw * 0.22807017543), 0)

                Render.GradientBoxFilled(Vector2.new(Visuals_HoloX + 8, Visuals_HoloY+36), Vector2.new(Visuals_HoloX + 10, Visuals_HoloY+46), fake_clr, fake_clr, fake_clr1, fake_clr1)
                Render.GradientBoxFilled(Vector2.new(Visuals_HoloX + 8, Visuals_HoloY+26), Vector2.new(Visuals_HoloX + 10, Visuals_HoloY+36), fake_clr1, fake_clr1, fake_clr, fake_clr)

                local view_angles = EngineClient.GetViewAngles()
                local fake_yaw = AntiAim.GetFakeRotation()
                local real_yaw = AntiAim.GetCurrentRealRotation()
                local view_yaw = view_angles.yaw - 180;
                local fake = adjust_angle(fake_yaw - view_yaw);
                local real = adjust_angle(real_yaw - view_yaw);

                Render.Circle(Vector2.new(Visuals_HoloX + 150, Visuals_HoloY+22), 9, 32, Color.RGBA(25,25,25,200), 2, 0, 360)
                Render.Circle(Vector2.new(Visuals_HoloX + 150, Visuals_HoloY+22), 9, 32, Color.RGBA(r, g, b, 255), 2, fake+20, fake-20)
                Render.Circle(Vector2.new(Visuals_HoloX + 150, Visuals_HoloY+22), 9, 32, Color.RGBA(200, 200, 200, 255), 2, real+10, real-10)

                Render.Text(string.format("FAKE (%.1f°)", delta_to_draw), Vector2.new(Visuals_HoloX + 14, Visuals_HoloY + 30), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
                Render.Text(string.format("FAKE (%.1f°)", delta_to_draw), Vector2.new(Visuals_HoloX + 13, Visuals_HoloY + 30), Color.RGBA(255, 255, 255, 255), 11, font.verdana)

                Render.Text("SP:", Vector2.new(Visuals_HoloX + 13, Visuals_HoloY + 48), Color.new(1.0, 1.0, 1.0, 1.0), 10, font.pixel, true)

                Render.BoxFilled(Vector2.new(Visuals_HoloX + 27, Visuals_HoloY + 59), Vector2.new(53 + Visuals_HoloX, 51 + Visuals_HoloY), Color.new(0, 0, 0, 1))
                Render.BoxFilled(Vector2.new(Visuals_HoloX+ 61, Visuals_HoloY + 59), Vector2.new(87 + Visuals_HoloX, 51 + Visuals_HoloY), Color.new(0, 0, 0, 1))
              
                if ((AntiAim.GetCurrentRealRotation() - AntiAim.GetFakeRotation()) ~= nil) then
                    Render.BoxFilled(Vector2.new(Visuals_HoloX + 28, Visuals_HoloY + 58), Vector2.new(30 + Visuals_HoloX + (delta_to_draw / 2.7), 52 + Visuals_HoloY), Color.RGBA(r, g, b, 255))
                else if ((AntiAim.GetCurrentRealRotation() - AntiAim.GetFakeRotation()) < 0 and (AntiAim.GetCurrentRealRotation() - AntiAim.GetFakeRotation()) ~= nil) then
                    Render.BoxFilled(Vector2.new(Visuals_HoloX + 61, Visuals_HoloY + 59), Vector2.new(87 + Visuals_HoloX, 51 + Visuals_HoloY), Color.RGBA(r, g, b, 255))
                end
                end

                local alpha = math.min(math.floor(math.sin((GlobalVars.realtime%3) * 4) * 175 + 50), 255)
                if DT:Get() then
                    Render.Text("SHIFTING TICKBASE", Vector2.new(Visuals_HoloX + 12, Visuals_HoloY + 62), Color.RGBA(255, 255, 255, alpha), 10, font.pixel, true)
                end
                Render.Text("OSAA:", Vector2.new(Visuals_HoloX + 110, Visuals_HoloY + 49 + ay), Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                Render.Text(HS:Get() and "ON" or "OFF", Vector2.new(Visuals_HoloX + 140, Visuals_HoloY + 49 + ay), HS:Get() and Color.RGBA(80, 255, 80, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)     
            end
        end
        --indicators
        ay = 0
        if ui.indicators:Get(1) then
            add_y = 0
            add_y = add_y + 40
            ts = Render.CalcTextSize("NOVA", 10, font.pixel)
            Render.Text("NOVA", Vector2.new(x/2 - ts.x, y/2 + add_y + 2), AntiAim.GetInverterState() and Color.RGBA(r, g, b, 255) or Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
            Render.Text("TECH", Vector2.new(x/2, y/2 + add_y + 2), AntiAim.GetInverterState() and Color.RGBA(255, 255, 255, 255) or Color.RGBA(r, g, b, 255), 10, font.pixel, true)
            add_y = add_y + 14
            Render.GradientBoxFilled(Vector2.new(x/2-math.floor(delta_to_draw)-7, y/2+add_y), Vector2.new(x/2, y/2+add_y+2), Color.RGBA(r, g, b, 0), Color.RGBA(r, g, b, 255), Color.RGBA(r, g, b, 0), Color.RGBA(r, g, b, 255))
            Render.GradientBoxFilled(Vector2.new(x/2+math.floor(delta_to_draw)+7, y/2+add_y), Vector2.new(x/2, y/2+add_y+2), Color.RGBA(r, g, b, 0), Color.RGBA(r, g, b, 255), Color.RGBA(r, g, b, 0), Color.RGBA(r, g, b, 255))
            add_y = add_y + 3
            if DT:Get() then
                Render_Indicator(Exploits.GetCharge() == 1 and "DOUBLETAP" or "CHARGING", add_y, Exploits.GetCharge() == 1 and Color.RGBA(255, 255, 255, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if HS:Get() then
                Render_Indicator("ON-SHOT", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if dmg == true then
                Render_Indicator("DAMAGE", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if FD:Get() then
                Render_Indicator("DUCK", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if BA:Get() == 2 then
                Render_Indicator("BAIM", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if SP:Get() == 2 then
                Render_Indicator("SP", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
        end
        if ui.indicators:Get(2) then
            add_y = 0
            add_y = add_y + 40
            Render_Indicator("NOVATECH", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
            add_y = add_y + 9
            Render_Indicator(aastate, add_y, Color.RGBA(125, 125, 125, 255), 10, font.pixel, true)
            add_y = add_y + 9
            Render_Indicator(string.format("%i-%i-%i-%i-%i",toDraw4,toDraw3,toDraw2,toDraw1,toDraw0), add_y, Color.RGBA(125, 125, 125, 255), 10, font.pixel, true)
            add_y = add_y + 9
            if DT:Get() then
                Render_Indicator("DOUBLETAP", add_y, Exploits.GetCharge() == 1 and Color.RGBA(255, 255, 255, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if HS:Get() then
                Render_Indicator("OSAA", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if SP:Get() == 2 then
                Render_Indicator("SAFE", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if BA:Get() == 2 then
                Render_Indicator("BODY", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
        end
        if ui.indicators:Get(3) then
            add_y = 0
            add_y = add_y + 40
            ts = Render.CalcTextSize("*nova", 11, font.verdanabd)
            Render.Text("*nova", Vector2.new(x/2 - ts.x, y/2 + add_y + 2), AntiAim.GetInverterState() and Color.RGBA(r, g, b, 255) or Color.RGBA(255, 255, 255, 255), 11, font.verdanabd, true)
            Render.Text("tech*", Vector2.new(x/2, y/2 + add_y + 2), AntiAim.GetInverterState() and Color.RGBA(255, 255, 255, 255) or Color.RGBA(r, g, b, 255), 11, font.verdanabd, true)
            add_y = add_y + 13
            if HS:Get() then
                Render_Indicator("ON-SHOT", add_y, Color.RGBA(r, g, b, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if dmg == true then
                Render_Indicator("DMG", add_y, Color.RGBA(r, g, b, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if DT:Get() then
                Render_Indicator("DT", add_y, Exploits.GetCharge() == 1 and Color.RGBA(r, g, b, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if SP:Get() == 2 then
                Render_Indicator("SP", add_y, Color.RGBA(r, g, b, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if BA:Get() == 2 then
                Render_Indicator("BA", add_y, Color.RGBA(r, g, b, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
        end
        if ui.indicators:Get(4) then
            add_y = 0
            add_y = add_y + 40
            Render_Indicator3(manuals and "FAKE YAW" or "IDEAL YAW", add_y, manuals and Color.RGBA(159, 159, 230, 255) or Color.RGBA(220, 135, 49, 255), 12, font.tahoma)
            add_y = add_y + 10
            Render_Indicator3(yaw_base:Get() == 5 and "FREESTAND" or "DYNAMIC", add_y, Color.RGBA(209, 159, 230, 255), 12, font.tahoma)
            add_y = add_y + 10
            if DT:Get() then
                Render_Indicator3(FD:Get() and "DT (fakeduck)" or "DT", add_y, Exploits.GetCharge() == 1 and Color.RGBA(0, 255, 0, 255) or Color.RGBA(255, 0, 0, 255), 12, font.tahoma)
                add_y = add_y + 10
            end
            if HS:Get() then
                Render_Indicator3("AA", add_y, Color.RGBA(120, 128, 200, 255), 12, font.tahoma)
                add_y = add_y + 10
            end
            if dmg == true then
                Render_Indicator3("DMG", add_y, Color.RGBA(200, 185, 255, 255), 12, font.tahoma)
                add_y = add_y + 10
            end
        end

        --viewmodel in scope
        local cheats = CVar.FindVar("sv_cheats")
        local scope = CVar.FindVar("fov_cs_debug")
        if ui.viewmodel:Get() then
            cheats:SetInt(1)
            scope:SetInt(90)
        else
            scope:SetInt(0)
        end

        --custom scope
        if ui.scope:GetColor() and lp:GetPlayer():GetProp("m_bIsScoped") then
            local offset = ui.offset:Get()
            local length = ui.length:Get()
            local col = Color.new(ui.scope:GetColor().r, ui.scope:GetColor().g, ui.scope:GetColor().b, 1)
            local col1 = Color.new(ui.scope:GetColor().r, ui.scope:GetColor().g, ui.scope:GetColor().b, 0)
            Render.GradientBoxFilled(Vector2.new(x/2 - offset, y/2), Vector2.new(x/2 - offset - length, y/2 + 1), col, col1, col, col1)
            Render.GradientBoxFilled(Vector2.new(x/2 + offset, y/2), Vector2.new(x/2 + offset + length, y/2 + 1), col, col1, col, col1)
            Render.GradientBoxFilled(Vector2.new(x/2, y/2 + offset), Vector2.new(x/2 + 1, y/2 + offset + length), col, col, col1, col1)
            Render.GradientBoxFilled(Vector2.new(x/2, y/2 - offset), Vector2.new(x/2 + 1, y/2 - offset - length), col, col, col1, col1)
        end

        --manual arrows
        if ui.manual_arrows:Get() then
            local r1 = math.floor(ui.color1:Get().r*255)
            local g1 = math.floor(ui.color1:Get().g*255)
            local b1 = math.floor(ui.color1:Get().b*255)

            local r2 = math.floor(ui.color2:Get().r*255)
            local g2 = math.floor(ui.color2:Get().g*255)
            local b2 = math.floor(ui.color2:Get().b*255)

            if ui.arrows_style:Get() == 0 then
                if velocity(lp) > 44 then
                    if anim[3] < 150 then anim[3] = anim[4] + 10 end
                else
                    if anim[3] > 0 then anim[3] = anim[4] - 10 end
                end
                Render.Text(">", Vector2.new(x/2 + 45, y/2 - Render.CalcTextSize(">", 22).y/2), yaw_base:Get() == 2 and Color.RGBA(r1, g1, b1, 255) or Color.RGBA(255, 255, 255, 255 - anim[3]), 22, true)
                Render.Text("<", Vector2.new(x/2 - 45 - Render.CalcTextSize("<", 22).x, y/2 - Render.CalcTextSize("<", 22).y/2), yaw_base:Get() == 3 and Color.RGBA(r1, g1, b1, 255) or Color.RGBA(255, 255, 255, 255 - anim[3]), 22, true)
                Render.Text("v", Vector2.new(x/2 - Render.CalcTextSize("v", 19).x/2+1, y/2 + 25), yaw_base:Get() == 1 and Color.RGBA(r1, g1, b1, 255) or Color.RGBA(255, 255, 255, 255 - anim[3]), 19, true)
            elseif ui.arrows_style:Get() == 1 then
                Render.PolyFilled(yaw_base:Get() == 2 and Color.RGBA(r1, g1, b1, 255) or Color.RGBA(25, 25, 25, 150), Vector2.new(x/2 + 43, y/2 + 9), Vector2.new(x/2 + 56, y/2), Vector2.new(x/2 + 43, y/2 - 9))
                Render.PolyFilled(yaw_base:Get() == 3 and Color.RGBA(r1, g1, b1, 255) or Color.RGBA(25, 25, 25, 150), Vector2.new(x/2 - 43, y/2 + 9), Vector2.new(x/2 - 56, y/2), Vector2.new(x/2 - 43, y/2 - 9))
                Render.BoxFilled(Vector2.new(x/2 - 40, y/2 - 9),  Vector2.new(x/2 - 42, y/2 + 10), AntiAim.GetInverterState() == false and Color.RGBA(25, 25, 25, 150) or Color.RGBA(r2, g2, b2, 255))
                Render.BoxFilled(Vector2.new(x/2 + 40, y/2 - 9),  Vector2.new(x/2 + 42, y/2 + 10), AntiAim.GetInverterState() == false and Color.RGBA(r2, g2, b2, 255) or Color.RGBA(25, 25, 25, 150))
            end
        end

        --render
        if ui.damage_indicator:Get() then
            local ts = Render.CalcTextSize(tostring(MD:Get()), 10, font.pixel)
            Render.Text(dmg and "1" or "0", Vector2.new(x/2-35, y/2-50), Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
            Render.Text(tostring(MD:Get()), Vector2.new(x/2-ts.x/2+0.5, y/2-50), Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
        end

        --disable thirdperson anim
        if ui.tpanim:Get() then s = false else s = true end
        Cheat.SetThirdPersonAnim(s)
    end
end

local anti_aim = function()
        local lp = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
        if lp == nil then return end

        local active_weapon = lp:GetPlayer():GetActiveWeapon()
        if active_weapon == nil then return end
        local weapon_id = active_weapon:GetWeaponID()

        --anti aims
        if aa[0].antiaims:Get() then
          
            --tp in air
            local players = EntityList.GetPlayers()
          
            if aa[0].tp_in_air:Get() and bit.band(lp:GetPlayer():GetProp("m_fFlags"), bit.lshift(1,0)) == 0 then
                for i = 1, #players do
                    local origin = lp:GetPlayer():GetRenderOrigin()
                    local origin_players = players[i]:GetRenderOrigin()
                    local is_visible = players[i]:IsVisible(origin_players)
                    if players[i]:IsAlive() and not players[i]:IsTeamMate() and players[i]:IsAlive() and not players[i]:IsDormant() and is_visible and not active_weapon:IsKnife() then
                        Exploits.ForceTeleport()
                    end
                end
            end

            if SW:Get() and aa[6].custom_enable:Get() then
                --slow walk
                stateid = 6
                aastate = "SLOWWALKING"
            elseif bit.band(lp:GetPlayer():GetProp("m_fFlags"), bit.lshift(1,0)) == 0 and aa[4].custom_enable:Get() then
                --air
                stateid = 4
                aastate = "IN AIR"
            elseif lp:GetProp("m_flDuckAmount") > 0.8 and aa[5].custom_enable:Get() or FD:Get() and aa[5].custom_enable:Get() then
                --duck
                stateid = 5
                aastate = "CROUCHING"
            elseif velocity(lp) > 2 and aa[3].custom_enable:Get() then
                --move
                stateid = 3
                aastate = "MOVING"
            elseif velocity(lp) < 2 and aa[2].custom_enable:Get() then
                --stand
                stateid = 2
                aastate = "STANDING"
            else
                --global
                stateid = 1
                aastate = "DYNAMIC"
            end

            if legit_aa == false then
                pitch:SetInt(1)
                if aa[0].manual:Get() == 0 then
                    yaw_base:SetInt(aa[stateid].custom_yaw_base:Get())
                else
                    yaw_base:SetInt(aa[0].manual:Get()-1)
                end
                yaw(yaw_add, aa[stateid].custom_yaw_add_right:Get(), aa[stateid].custom_yaw_add_left:Get())
                yaw_modifier:SetInt(aa[stateid].custom_yaw_modifier:Get())
                modifier_degree:SetInt(aa[stateid].custom_modifier_degree:Get())
                if aa[stateid].custom_fake_type:Get() == 0 then
                    left_limit:SetInt(aa[stateid].custom_left_limit:Get())
                    right_limit:SetInt(aa[stateid].custom_right_limit:Get())
                elseif aa[stateid].custom_fake_type:Get() == 1 then
                    left_limit:SetInt(jitter(aa[stateid].custom_left_limit:Get(), aa[stateid].custom_left_limit2:Get()))
                    right_limit:SetInt(jitter(aa[stateid].custom_right_limit:Get(), aa[stateid].custom_right_limit2:Get()))
                elseif aa[stateid].custom_fake_type:Get() == 2 then
                    left_limit:SetInt(math.random(aa[stateid].custom_left_limit:Get(), aa[stateid].custom_left_limit2:Get()))
                    right_limit:SetInt(math.random(aa[stateid].custom_right_limit:Get(), aa[stateid].custom_right_limit2:Get()))
                end
                options:SetInt(aa[stateid].custom_options:Get())
                lby_mode:SetInt(aa[stateid].custom_lby:Get())
                freestand:SetInt(aa[stateid].custom_fs:Get())
                onshot:SetInt(aa[stateid].custom_onshot:Get())

                --anti backstab
                if aa[0].antibackstab:Get() then
                    local enemies = GetEnemiesWithKnife()
                    if enemies ~= nil then
                        if #enemies > 0 then
                            for i, enemy in pairs(enemies) do
                                local enemy_origin = enemy:GetRenderOrigin()
                                local local_player_origin = lp:GetRenderOrigin()
                                local distance_from_local_to_enemy = enemy_origin:DistTo(local_player_origin)             
                                if 200 >= distance_from_local_to_enemy and not players[i]:IsDormant() then
                                    AntiAim.OverrideYawOffset(180)
                                    AntiAim.OverridePitch(0)
                                end
                            end
                        end
                    end
                end
            else
                pitch:SetInt(0)
                yaw_base:SetInt(0)
                yaw(yaw_add, 0, 0)
                yaw_modifier:SetInt(1)
                modifier_degree:SetInt(0)
                left_limit:SetInt(60)
                right_limit:SetInt(60)
                options:SetInt(0)
                lby_mode:SetInt(1)
                freestand:SetInt(1)
                onshot:SetInt(1)
            end
        end
end

local phrases = {
    "Блин, друг, прости пожалуйста, не увидел",
    "Опять ты, прости, я без ников убил",
    "У тебя Ник тема бебриков? Я тебя вчера на Дме видел",
    "Ты с чем ?",
    "Зато ты очень красивый",
    "А фип бы забанил за такое, прости пж",
    "Мне друг (витма) (бигнейм) сказал, что в таких случаях 1 писать, но я добрый так что не буду",
    "Посаны, а как вам микрофон яспер мо о глод, у фипа такой вроде",
    "Возьми печеньки, завари чайочек. И расслабся",
    "Какой у тебя мейн Ник ? Мне сказали, что это важна чтоб медия сделать, ты витма ?",
    "Ну ничего, с кем не бывает",
    "Нифига я чо Лоу дельта убил",
    "Главное, что хоть у тебя голова на месте)",
    "Сколько в человеке доброты, столько в нем и жизни.",
    "Истинная храбрость и доброта идут рука об руку.",
    "ой прости я просто в Five nights at fnay играл и испугался немного",
    "Дай кфг, а то мой сильно жёсткий",
    "Прости, в следующий раз повезет.",
    "ты не знал, а nova.tech то тапает",
}
local get_phrase = function()
    return phrases[Utils.RandomInt(1, #phrases)]:gsub('"', '')
end
          
Cheat.RegisterCallback("events", function(e)
    local player_resource = EntityList.GetPlayerResource()
    if e:GetName() == "bomb_abortplant" then
        planting = false
        fill = 0
        on_plant_time = 0
        planting_site = ""
    end
    if e:GetName() == "bomb_defused" then
        planting = false
        fill = 0
        on_plant_time = 0
        planting_site = ""
    end
    if e:GetName() == "bomb_planted" then
        planting = false
        fill = 0
        on_plant_time = 0
        planting_site = ""
    end
    if e:GetName() == "round_prestart" then
        planting = false
        fill = 0
        on_plant_time = 0
        planting_site = ""
    end
  
    if e:GetName() == "bomb_beginplant" then
        on_plant_time = GlobalVars.curtime
        planting = true
        local m_bombsiteCenterA = player_resource:GetProp("DT_CSPlayerResource", "m_bombsiteCenterA")
        local m_bombsiteCenterB = player_resource:GetProp("DT_CSPlayerResource", "m_bombsiteCenterB")
      
        local player = EntityList.GetPlayerForUserID(e:GetInt("userid", 0))
        local localPos = player:GetRenderOrigin()
        local dist_to_a = localPos:DistTo(m_bombsiteCenterA)
        local dist_to_b = localPos:DistTo(m_bombsiteCenterB)
      
        planting_site = dist_to_a < dist_to_b and "Bombsite A" or "Bombsite B"
    end
    if ui.hitsound:Get() == 0 then
        Menu.FindVar("Visuals","World", "Hit", "Hit Sound"):SetBool(true)
    else
        Menu.FindVar("Visuals","World", "Hit", "Hit Sound"):SetBool(false)
    end
    if e:GetName() == "player_hurt" then
        if e:GetInt("attacker", 0) ==  EntityList.GetLocalPlayer():GetPlayerInfo().userId then
            if ui.hitsound:Get() == 1 then
                EngineClient.ExecuteClientCmd("playvol buttons/arena_switch_press_02 0.75")
            elseif ui.hitsound:Get() == 2 then
                EngineClient.ExecuteClientCmd("playvol nova.tech/hitsound/hitsound.wav 0.75")
            elseif ui.hitsound:Get() == 3 then
                EngineClient.ExecuteClientCmd(string.format("playvol %s 0.75", ui.custom_hitsound:Get()))
            end
        end
    end
    if ui.trashtalk:Get() then
        if e:GetName() == "player_death" then
            local me = EntityList.GetLocalPlayer()
            local victim = EntityList.GetPlayerForUserID(e:GetInt("userid"))
            local attacker = EntityList.GetPlayerForUserID(e:GetInt("attacker"))
            if victim == attacker or attacker ~= me then return end
            EngineClient.ExecuteClientCmd('say "' .. get_phrase() .. '"')
        end
    end
end)

local setvis = function()
    local vis = function(s, d)
        s:SetVisible(d)
    end

    ui.binds_x:SetVisible(false)
    ui.binds_y:SetVisible(false)
    ui.specs_x:SetVisible(false)
    ui.specs_y:SetVisible(false)

    ui.add_idealtick:SetVisible(ui.idealtick:Get())
    ui.idealtick_damage:SetVisible(ui.add_idealtick:GetBool(2))
    ui.ns_hitchance_value:SetVisible(ui.ns_hitchance:Get())
    ui.air_hitchance_value:SetVisible(ui.air_hitchance:Get())
    ui.hitlogs_type:SetVisible(ui.hitlogs:Get())
    ui.custom_hitsound:SetVisible(ui.hitsound:Get() == 3)
    ui.holo_on_tp:SetVisible(ui.windows:Get(5))
    ui.circle_style:SetVisible(ui.circle:Get())
    ui.add_indicators:SetVisible(ui.indicators:Get(5))
    ui.offset:SetVisible(ui.scope:Get())
    ui.length:SetVisible(ui.scope:Get())

    ui.arrows_style:SetVisible(ui.manual_arrows:Get())
    ui.color1:SetVisible(ui.manual_arrows:Get())
    ui.color2:SetVisible(ui.manual_arrows:Get() and ui.arrows_style:Get() == 1)

    vis(preset, aa[0].antiaims:Get())
    vis(aa[0].manual, aa[0].antiaims:Get())
    vis(aa[0].fake_flick, aa[0].antiaims:Get())
    vis(aa[0].tp_in_air, aa[0].antiaims:Get())
    vis(aa[0].on_key, aa[0].antiaims:Get())
    vis(aa[0].antibackstab, aa[0].antiaims:Get())
    vis(aa[0].antiaim, aa[0].antiaims:Get())
  
    currentid = aa[0].antiaim:Get()+1
    vis(aa[1].custom_enable, false)
    aa[1].custom_enable:SetBool(true)
    vis(aa[2].custom_enable, aa[0].antiaims:Get() and currentid == 2)
    vis(aa[3].custom_enable, aa[0].antiaims:Get() and currentid == 3)
    vis(aa[4].custom_enable, aa[0].antiaims:Get() and currentid == 4)
    vis(aa[5].custom_enable, aa[0].antiaims:Get() and currentid == 5)
    vis(aa[6].custom_enable, aa[0].antiaims:Get() and currentid == 6)
  
    for i = 1, 6 do
        local isAA = aa[0].antiaims:Get() and aa[i].custom_enable:Get()
        local isAAF = aa[i].custom_fake_type:Get() == 1 and isAA or aa[i].custom_fake_type:Get() == 2 and isAA
        vis(aa[i].custom_yaw_base, isAA and currentid == i)
        vis(aa[i].custom_yaw_add_left, isAA and currentid == i)
        vis(aa[i].custom_yaw_add_right, isAA and currentid == i)
        vis(aa[i].custom_yaw_modifier, isAA and currentid == i)
        vis(aa[i].custom_modifier_degree, isAA and currentid == i)
        vis(aa[i].custom_left_limit, isAA and currentid == i)
        vis(aa[i].custom_right_limit, isAA and currentid == i)
        vis(aa[i].custom_left_limit2, isAAF and currentid == i)
        vis(aa[i].custom_right_limit2, isAAF and currentid == i)
        vis(aa[i].custom_options, isAA and currentid == i)
        vis(aa[i].custom_lby, isAA and currentid == i)
        vis(aa[i].custom_fs, isAA and currentid == i)
        vis(aa[i].custom_onshot, isAA and currentid == i)
        vis(aa[i].custom_fake_type, isAA and currentid == i)
    end
end

local hook_draw = function()
    draw()
    anti_aim()
    setvis()
end
Cheat.RegisterCallback("draw", hook_draw)
Cheat.RegisterCallback("pre_prediction", legitaa)
Cheat.RegisterCallback("createmove", use)
Cheat.RegisterCallback("destroy", function()
    updateConsoleColor(1, 1, 1, 1)
    for _, v in pairs(materials) do
        local material = MatSystem.FindMaterial(v, "")

        if material ~= nil then
            material:SetMaterialVarFlag(bit.lshift(1, 28), false)
            material:SetMaterialVarFlag(bit.lshift(1, 15), false)
        end
    end
end)
ui.console:RegisterCallback(cfgConsoleCallback)
EngineClient.ExecuteClientCmd("clear")
print("              ...")
print("             ;::::;")
print("           ;::::; :;")
print("         ;:::::'   :;")
print("        ;:::::;     ;.")
print("       ,:::::'       ;           OOO")
print("       ::::::;       ;          OOOOO")
print("       ;:::::;       ;         OOOOOOOO")
print("      ,;::::::;     ;'         / OOOOOOO")
print("    ;:::::::::`. ,,,;.        /  / DOOOOOO")
print("  .';:::::::::::::::::;,     /  /     DOOOO")
print(" ,::::::;::::::;;;;::::;,   /  /        DOOO")
print(";`::::::`'::::::;;;::::: ,#/  /          DOOO")
print(":`:::::::`;::::::;;::: ;::#  /            DOOO")
print("::`:::::::`;:::::::: ;::::# /              DOO")
print("`:`:::::::`;:::::: ;::::::#/               DOO")
print(" :::`:::::::`;; ;:::::::::##                OO")
print(" ::::`:::::::`;::::::::;:::#                OO")
print(" `:::::`::::::::::::;'`:;::#                O")
print("  `:::::`::::::::;' /  / `:#")
print("   ::::::`:::::;'  /  /   `#")
print("")
print("")
print("███╗░░██╗░█████╗░██╗░░░██╗░█████╗░░░░████████╗███████╗░█████╗░██╗░░██╗")
print("████╗░██║██╔══██╗██║░░░██║██╔══██╗░░░╚══██╔══╝██╔════╝██╔══██╗██║░░██║")
print("██╔██╗██║██║░░██║╚██╗░██╔╝███████║░░░░░░██║░░░█████╗░░██║░░╚═╝███████║")
print("██║╚████║██║░░██║░╚████╔╝░██╔══██║░░░░░░██║░░░██╔══╝░░██║░░██╗██╔══██║")
print("██║░╚███║╚█████╔╝░░╚██╔╝░░██║░░██║██╗░░░██║░░░███████╗╚█████╔╝██║░░██║")
print("╚═╝░░╚══╝░╚════╝░░░░╚═╝░░░╚═╝░░╚═╝╚═╝░░░╚═╝░░░╚══════╝░╚════╝░╚═╝░░╚═╝")
print("")
print("")
print("Welcome to Nova.tech,"..Cheat.GetCheatUserName().."!")
print("")
print("Version: 1.2.1")
print("State: Release")
print("")
print("")
print("")
Жееееесть:roflanPominki:
 
Забаненный
Статус
Оффлайн
Регистрация
5 Июн 2020
Сообщения
570
Реакции[?]
132
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
еспшка умирает :roflanEbalo:
 
Забаненный
Статус
Оффлайн
Регистрация
6 Сен 2021
Сообщения
94
Реакции[?]
22
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
ffi.cdef[[
    typedef struct {
        unsigned short wYear;
        unsigned short wMonth;
        unsigned short wDayOfWeek;
        unsigned short wDay;
        unsigned short wHour;
        unsigned short wMinute;
        unsigned short wSecond;
        unsigned short wMilliseconds;
    } SYSTEMTIME, *LPSYSTEMTIME;
    void GetSystemTime(LPSYSTEMTIME lpSystemTime);
    void GetLocalTime(LPSYSTEMTIME lpSystemTime);

    typedef struct {
        float x;
        float y;
        float z;
    } vec3_struct;

    typedef void*(__thiscall* c_entity_list_get_client_entity_t)(void*, int);
    typedef void*(__thiscall* c_entity_list_get_client_entity_from_handle_t)(void*, uintptr_t);

    typedef int(__thiscall* c_weapon_get_muzzle_attachment_index_first_person_t)(void*, void*);
    typedef int(__thiscall* c_weapon_get_muzzle_attachment_index_third_person_t)(void*);
    typedef bool(__thiscall* c_entity_get_attachment_t)(void*, int, vec3_struct*);
  
    bool CreateDirectoryA(const char* lpPathName, void* lpSecurityAttributes);
    void* __stdcall URLDownloadToFileA(void* LPUNKNOWN, const char* LPCSTR, const char* LPCSTR2, int a, int LPBINDSTATUSCALLBACK);
    void* __stdcall ShellExecuteA(void* hwnd, const char* op, const char* file, const char* params, const char* dir, int show_cmd);

    bool DeleteUrlCacheEntryA(const char* lpszUrlName);
]]

local urlmon = ffi.load 'UrlMon'
local wininet = ffi.load 'WinInet'
local gdi = ffi.load 'Gdi32'

Download = function(from, to)
    wininet.DeleteUrlCacheEntryA(from)
    urlmon.URLDownloadToFileA(nil, from, to, 0,0)
    print('Successfully!')
end

CreateDir = function(path)
    ffi.C.CreateDirectoryA(path, NULL)
end

local engineClient = Utils.CreateInterface("engine.dll", "VEngineClient014")
local engineClientClass = ffi.cast(ffi.typeof("void***"), engineClient)
local isConsoleVisible = ffi.cast("bool(__thiscall*)(void*)", engineClientClass[0][11])

local consoleMaterials = {"vgui_white", "vgui/hud/800corner1", "vgui/hud/800corner2", "vgui/hud/800corner3", "vgui/hud/800corner4"}
local materialList = {}

local oldColor = Color.new(1.0, 1.0, 1.0, 1.0)
local oldConsoleIsVisible = false

local materials = {
    "particle/fire_burning_character/fire_env_fire_depthblend_oriented",
    "particle/fire_burning_character/fire_burning_character",
    "particle/fire_explosion_1/fire_explosion_1_oriented",
    "particle/fire_explosion_1/fire_explosion_1_bright",
    "particle/fire_burning_character/fire_burning_character_depthblend",
    "particle/fire_burning_character/fire_env_fire_depthblend",
}

local ffi_handler = {}
local muzzle = {}

ffi_handler.bind_argument = function(fn, arg)
    return function(...)
        return fn(arg, ...)
    end
end

ffi_handler.interface_type = ffi.typeof("uintptr_t**")

ffi_handler.i_client_entity_list = ffi.cast(ffi_handler.interface_type, Utils.CreateInterface("client.dll", "VClientEntityList003"))
ffi_handler.get_client_entity = ffi_handler.bind_argument(ffi.cast("c_entity_list_get_client_entity_t", ffi_handler.i_client_entity_list[0][3]), ffi_handler.i_client_entity_list)

muzzle.attachment_index = 84
muzzle.muzzle_attachment_index_1st = 468
muzzle.muzzle_attachment_index_3rd = 469

muzzle.pos = Vector.new(0, 0, 0)

muzzle.get = function()

    if not EngineClient.IsInGame() then return end

    local me = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
    if not me or EntityList.GetLocalPlayer():GetProp("DT_BasePlayer", "m_iHealth") < 1 then return end

    local my_weapon = EntityList.GetClientEntityFromHandle(me:GetProp("DT_BaseCombatCharacter", "m_hActiveWeapon"))
    if not my_weapon then return end

    local my_address = ffi_handler.get_client_entity(me:EntIndex())
    if not my_address then return end

    local my_weapon_address = ffi_handler.get_client_entity(my_weapon:EntIndex())
    if not my_weapon_address then return end

    local viewmodel = EntityList.GetClientEntityFromHandle(me:GetProp("DT_BasePlayer", "m_hViewModel[0]"))
    if not viewmodel then return end

    local viewmodel_ent = ffi_handler.get_client_entity(viewmodel:EntIndex())
    if not viewmodel_ent then return end

    local weaponworldmodel = EntityList.GetClientEntityFromHandle(my_weapon:GetProp("DT_BaseCombatWeapon", "m_hWeaponWorldModel"))
    if not weaponworldmodel then return end

    local weaponworldmodel_ent = ffi_handler.get_client_entity(weaponworldmodel:EntIndex())
    if not weaponworldmodel_ent then return end

    local viewmodel_vtbl = ffi.cast(ffi_handler.interface_type, viewmodel_ent)[0]
    local weaponworldmodel_vtbl = ffi.cast(ffi_handler.interface_type, weaponworldmodel_ent)[0]
    local weapon_vtbl = ffi.cast(ffi_handler.interface_type, my_weapon_address)[0]

    local get_viewmodel_attachment_fn = ffi.cast("c_entity_get_attachment_t", viewmodel_vtbl[muzzle.attachment_index])
    local get_weaponworldmodel_attachment_fn = ffi.cast("c_entity_get_attachment_t", weaponworldmodel_vtbl[muzzle.attachment_index])
    local get_muzzle_attachment_index_1st_fn = ffi.cast("c_weapon_get_muzzle_attachment_index_first_person_t", weapon_vtbl[muzzle.muzzle_attachment_index_1st])
    local get_muzzle_attachment_index_3rd_fn = ffi.cast("c_weapon_get_muzzle_attachment_index_third_person_t", weapon_vtbl[muzzle.muzzle_attachment_index_3rd])

    local muzzle_attachment_index_1st = get_muzzle_attachment_index_1st_fn(my_weapon_address, viewmodel_ent)
    local muzzle_attachment_index_3rd = get_muzzle_attachment_index_3rd_fn(my_weapon_address)

    local ret = ffi.new("vec3_struct[1]")
    local is_thirdperson = Menu.FindVar("Visuals", "View", "Thirdperson", "Enable Thirdperson")

    if is_thirdperson:Get() then
        state = get_weaponworldmodel_attachment_fn(weaponworldmodel_ent, muzzle_attachment_index_3rd, ret)
    else
        state = get_viewmodel_attachment_fn(viewmodel_ent, muzzle_attachment_index_1st, ret)
    end

    return {state = state, pos = Vector.new(ret[0].x, ret[0].y, ret[0].z)}
end

local x = EngineClient.GetScreenSize().x
local y = EngineClient.GetScreenSize().y
local sc = EngineClient.GetScreenSize()
local aa = {}
local state = {"Global", "Stand", "Move", "Air", "Duck", "Slow walk"}
local hitboxes = {"generic","head","chest","stomach","left arm","right arm","left leg","right leg","neck"};
local logs = {}
logs[#logs+1] = {("[nova.tech] Welcome back, "..Cheat.GetCheatUserName().."!"), GlobalVars.tickcount + 300, 0}
logs[#logs+1] = {("[nova.tech] Download font in Global Tab!"), GlobalVars.tickcount + 300, 0}
local ui =
{
    --rage
    antidefensive = Menu.Switch("Global","Rage", "Anti-Defensive", false),
    autopeek = Menu.Switch("Global","Rage", "Quick Peek", false),
    disable_os = Menu.Switch("Global","Rage", "Disable FL on Hide Shots", false),
    idealtick = Menu.Switch("Global","Rage", "Idealtick", false, "Works when autopeek"),
    add_idealtick = Menu.MultiCombo("Global","Rage", "Idealtick Options", {"Freestand", "Override Damage", "Safe Head"}, 0),
    idealtick_damage = Menu.SliderInt("Global","Rage","Idealtick Damage", 10, 0, 130),
    air_hitchance = Menu.Switch("Global","Rage", "In-Air Hitchance", false),
    air_hitchance_value = Menu.SliderInt("Global","Rage","Air Hitchance Value", 50, 1, 100),
    ns_hitchance = Menu.Switch("Global","Rage", "Noscope Hitchance", false),
    ns_hitchance_value = Menu.SliderInt("Global","Rage","NS Hitchance Value", 50, 1, 100),

    --visuals
    state_panel = Menu.Switch("Visuals","Main","State Panel", false),
    circle = Menu.SwitchColor("Visuals","Main", "Anti-Aim Crosshair Indicator", false, Color.new(0.57, 0.57, 1, 1)),
    circle_style = Menu.Combo("Visuals","Main", "Style", {"Circle", "Arrows"}, 0),
    glowpeek = Menu.SwitchColor("Visuals","Main", "Glow Autopeek", false, Color.new(0.47, 0.47, 1, 0.5)),
    viewmodel = Menu.Switch("Visuals","Main", "Viewmodel in Scope", false),
    scope = Menu.SwitchColor("Visuals","Main", "Custom Scope", false, Color.new(1, 1, 1, 1)),
    offset = Menu.SliderInt("Visuals","Main", "Offset", 5, -500, 500),
    length = Menu.SliderInt("Visuals","Main", "Length", 25, 0, 1000),
    color = Menu.ColorEdit("Visuals","Main", "Accent Color", Color.new(0.57, 0.57, 1, 1)),

    --indicators
    indicators = Menu.MultiCombo("Visuals","Indicators","Indicators", {"Nova.tech #1", "Nova.tech #2", "Nova.tech #3", "Ideal Yaw", "Skeet"}, 0),
    add_indicators = Menu.MultiCombo("Visuals","Indicators","Additional Indicators", {"Freestand", "Exploit", "Damage", "Freestand"}, 0),
    damage_indicator = Menu.Switch("Visuals","Indicators", "Damage Indicator", false),
    manual_arrows = Menu.Switch("Visuals","Indicators","Manual Arrows", false),
    arrows_style = Menu.Combo("Visuals","Indicators","Arrows Style", {"Default", "TeamSkeet"}, 0),
    color1 = Menu.ColorEdit("Visuals","Indicators", "First Color", Color.RGBA(175, 255, 0, 255)),
    color2 = Menu.ColorEdit("Visuals","Indicators", "Second Color", Color.RGBA(0, 200, 255, 255)),

    --solus ui
    windows = Menu.MultiCombo("Visuals","UI","Windows", {"Watermark", "Spectators", "Keybinds", "FAKE & DT", "Holo Panel"}, 0),
    alpha = Menu.SliderInt("Visuals","UI", "Box Alpha", 75, 0, 255),
    holo_on_tp = Menu.Switch("Visuals","UI","Disable in Thirdperson", false),
    binds_x = Menu.SliderInt("Visuals","UI", "X", 300, 0, x),
    binds_y = Menu.SliderInt("Visuals","UI", "Y", 300, 0, y),
    specs_x = Menu.SliderInt("Visuals","UI", "X ", 300, 0, x),
    specs_y = Menu.SliderInt("Visuals","UI", "Y ", 500, 0, y),

    --misc
    hitlogs = Menu.Switch("Misc","Misc","Hitlogs", false),
    hitlogs_type = Menu.MultiCombo("Misc","Misc", "Hitlogs Type", {"Custom", "Console", "Event"}, 0),
    console = Menu.SwitchColor("Misc", "Misc", "Console Color Changer", false, Color.new(1.0, 1.0, 1.0)),
    hitsound = Menu.Combo("Misc","Misc","Hitsound", {"Disable","Skeet", "Alternative", "Custom"}, 0),
    custom_hitsound = Menu.TextBox("Misc","Misc","Filepath", 64, "nova.tech/hitsound/hitsound.wav"),
    wireframe = Menu.Switch("Misc","Misc","Molotov Wireframe", false),
    ignorez = Menu.Switch("Misc","Misc","Ignore-Z", false),
    blur = Menu.Switch("Misc","Misc","Menu Blur", false),
    trashtalk = Menu.Switch("Misc","Misc","Trashtalk", false),
    tpanim = Menu.Switch("Misc","Misc","Disable Thirdperson Animation", false),
}

--anti-aims
aa[0] =
{
    antiaims = Menu.Switch("Anti-Aim","Main","Enable Anti Aim's", false),
    tp_in_air = Menu.Switch("Anti-Aim","Main","Teleport In Air", false),
    fake_flick = Menu.Switch("Anti-Aim","Main","Fake Flick", false),
    on_key = Menu.Switch("Anti-Aim","Main","Legit AA", false),
    antibackstab = Menu.Switch("Anti-Aim","Main","Anti Backstab", false),
    manual = Menu.Combo("Anti-Aim","Main", "Override Yaw Base", {"Disable", "Forward", "Backward", "Right", "Left", "At Target", "Freestanding"}, 0, "Bind it"),
    antiaim = Menu.Combo("Anti-Aim","Main", "Conditions", state, 0),
}
for i = 1, 6 do
    aa[i] = {
        custom_enable = Menu.Switch("Anti-Aim",state[i], string.format("Enable %s Anti Aim", state[i]), false,string.format("Override %s settings", state[i])),
        custom_yaw_base = Menu.Combo("Anti-Aim",state[i], "Yaw Base", {"Forward", "Backward", "Right", "Left", "At Target", "Freestanding"}, 1),
        custom_yaw_add_left = Menu.SliderInt("Anti-Aim",state[i], "Yaw Add Left", 0, -180, 180),
        custom_yaw_add_right = Menu.SliderInt("Anti-Aim",state[i], "Yaw Add Right", 0, -180, 180),
        custom_yaw_modifier = Menu.Combo("Anti-Aim",state[i], "Yaw Modifier", {"Disabled", "Center", "Offset", "Random", "Spin"}, 0),
        custom_modifier_degree = Menu.SliderInt("Anti-Aim",state[i], "Modifier Degree", 0, -180, 180),
        custom_fake_type = Menu.Combo("Anti-Aim",state[i],"Fake Type", {"Static","Jitter","Random"}, 0),
        custom_left_limit = Menu.SliderInt("Anti-Aim",state[i], "Left Limit", 60, 0, 60),
        custom_right_limit = Menu.SliderInt("Anti-Aim",state[i], "Right Limit", 60, 0, 60),
        custom_left_limit2 = Menu.SliderInt("Anti-Aim",state[i], "Left Limit [2]", 60, 0, 60),
        custom_right_limit2 = Menu.SliderInt("Anti-Aim",state[i], "Right Limit [2]", 60, 0, 60),
        custom_options = Menu.MultiCombo("Anti-Aim",state[i],"Fake Options", {"Avoid Overlap","Jitter","Randomize Jitter", "Anti Bruteforce"}, 0),
        custom_lby = Menu.Combo("Anti-Aim",state[i],"LBY Mode", {"Disabled","Opposite","Sway"}, 1),
        custom_fs = Menu.Combo("Anti-Aim",state[i],"Freestanding Desync", {"Off","Peek Fake","Peek Real"}, 0),
        custom_onshot = Menu.Combo("Anti-Aim",state[i],"Desync On Shot", {"Disabled","Opposite","Freestanding","Switch"}, 0),
    }
end
local preset = Menu.Button("Anti-Aim","Main", "Load Default Preset", "Load Default Preset", function()
    aa[1].custom_yaw_base:SetInt(4)
    aa[1].custom_yaw_add_left:SetInt(0)
    aa[1].custom_yaw_add_right:SetInt(0)
    aa[1].custom_yaw_modifier:SetInt(2)
    aa[1].custom_modifier_degree:SetInt(20)
    aa[1].custom_fake_type:SetInt(0)
    aa[1].custom_left_limit:SetInt(42)
    aa[1].custom_right_limit:SetInt(42)
    aa[1].custom_lby:SetInt(0)
    aa[1].custom_fs:SetInt(0)
    aa[1].custom_onshot:SetInt(1)
end)

CreateDir("nl\\nova.tech\\")
--info
Menu.Text("Global","Info","Welcome to Nova.tech, "..Cheat.GetCheatUserName().."!")

local get_discord = Menu.Button("Global","Info","Discord", "Discord", function()
    Panorama.Open().SteamOverlayAPI.OpenExternalBrowserURL("https://discord.gg/X85QFvdSgT")
end)

local get_font = Menu.Button("Global","Info","Download Font", "Download Font", function()
    CreateDir("nl\\nova.tech\\fonts\\")
    Download('https://fontsforyou.com/downloads/99851-smallestpixel7', 'nl\\nova.tech\\fonts\\pixel.ttf')
    logs[#logs+1] = {("[nova.tech] Font installed, restart script!"), GlobalVars.tickcount + 300, 0}
end)

CreateDir("csgo\\sound\\nova.tech\\")
CreateDir("csgo\\sound\\nova.tech\\hitsound\\")
Download('https://cdn.discordapp.com/attachments/856592298132242432/931265632861818930/skeet.wav', 'csgo\\sound\\nova.tech\\hitsound\\hitsound.wav')

Menu.Text("Global","Info","Hitsound Filepath: csgo/sounds | File type .wav")
Menu.Text("Global","Info","  ")
Menu.Text("Global","Info","V1.2.1")
Menu.Text("Global","Info","Nova.tech")

--fonts
local font =
{
    pixel = Render.InitFont("nl\\nova.tech\\fonts\\pixel.ttf", 10),
    verdana = Render.InitFont("Verdana", 11, {'r'}),
    verdanabd = Render.InitFont("Verdana Bold", 11, {'r'}),
    verdanabd12 = Render.InitFont("Verdana Bold", 12),
    calibrib = Render.InitFont("Calibri Bold", 30),
    tahoma = Render.InitFont("Tahoma", 12),
}

--menu reference
local MD = Menu.FindVar("Aimbot","Ragebot","Accuracy","Minimum Damage")
local BA = Menu.FindVar("Aimbot","Ragebot","Misc","Body Aim")
local SP = Menu.FindVar("Aimbot","Ragebot","Misc","Safe Points")
local DT = Menu.FindVar("Aimbot","Ragebot","Exploits","Double Tap")
local AP = Menu.FindVar("Miscellaneous","Main","Movement","Auto Peek")
local SW = Menu.FindVar("Aimbot","Anti Aim","Misc","Slow Walk")
local HS = Menu.FindVar("Aimbot","Ragebot","Exploits","Hide Shots")
local PING = Menu.FindVar("Miscellaneous", "Main", "Other", "Fake Ping")
local FL = Menu.FindVar("Aimbot","Anti Aim","Fake Lag","Limit")
local FLR = Menu.FindVar("Aimbot","Anti Aim","Fake Lag","Randomization")
local FD = Menu.FindVar("Aimbot","Anti Aim","Misc","Fake Duck")
local TP = Menu.FindVar("Visuals", "View", "Thirdperson", "Enable Thirdperson")
local removals = Menu.FindVar("Visuals", "World", "Main", "Removals")

--menu reference for aa
local left_limit = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","Left Limit")
local right_limit = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","Right Limit")
local options = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","Fake Options")
local lby_mode = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","LBY Mode")
local freestand = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","Freestanding Desync")
local onshot = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","Desync On Shot")
local yaw_base = Menu.FindVar("Aimbot","Anti Aim","Main","Yaw Base")
local pitch = Menu.FindVar("Aimbot","Anti Aim","Main","Pitch")
local yaw_add = Menu.FindVar("Aimbot","Anti Aim","Main","Yaw Add")
local yaw_modifier = Menu.FindVar("Aimbot","Anti Aim","Main","Yaw Modifier")
local modifier_degree = Menu.FindVar("Aimbot","Anti Aim","Main","Modifier Degree")
local legmovement = Menu.FindVar("Aimbot", "Anti Aim", "Misc", "Leg Movement")

local normalize_yaw = function(yaw)
    while yaw > 180 do yaw = yaw - 360 end
    while yaw < -180 do yaw = yaw + 360 end
    return yaw
end

function C_BasePlayer:IsLocalPlayer()
    return self == EntityList.GetLocalPlayer()
end

function C_BasePlayer:IsEnemy()
    return EntityList.GetLocalPlayer() and self:IsTeamMate() == false
end

function GetEnemiesWithKnife()
    local ret = {}

    local players = EntityList.GetPlayers()
    if #players < 0 then return {} end

    for i, player in pairs(players) do
        local player_active_weapon = player:GetActiveWeapon()

        if not player_active_weapon then return end

        if player:IsEnemy() and player:IsAlive() and player_active_weapon:IsKnife() then
            table.insert(ret, player)
        end
    end

    return ret
end

--jitter
local jitter = function(c, q)
    local f = math.random(0, 1)
    local b = 0
    if f == 0 then
        b = c
    elseif f == 1 then
        b = q
    end
    return b
end

--set movement
function setmovement(xz,yz,cmd)
    local local_player = EntityList.GetLocalPlayer()
    local_player = local_player:GetPlayer()
    local current_pos = local_player:GetProp("m_vecOrigin")
    local yaw = EngineClient:GetViewAngles().yaw
    local vector_forward = {
        x = current_pos.x - xz,
        y = current_pos.y - yz,
    } 
    local velocity = {
        x = -(vector_forward.x * math.cos(yaw / 180 * math.pi) + vector_forward.y * math.sin(yaw / 180 * math.pi)),
        y = vector_forward.y * math.cos(yaw / 180 * math.pi) - vector_forward.x * math.sin(yaw / 180 * math.pi),
    }
    cmd.forwardmove = velocity.x * 15
    cmd.sidemove = velocity.y * 15
end

--yaw
local yaw = function(h, l, y)
    local invert = AntiAim.GetInverterState()
    if invert == true then
        h:SetInt(l)
    elseif invert == false then
        h:SetInt(y)
    end
end

--lerp
local lerp = function (a, b, percentage) return math.floor(a + (b - a) * percentage) end

local function isColorEquals(clr1, clr2)
    return (clr1.r == clr2.r and clr1.g == clr2.g and clr1.b == clr2.b and clr1.a == clr2.a)
end

local function copyColor(src, dest)
    dest.r, dest.g, dest.b, dest.a = src.r, src.g, src.b, src.a
end

local function findConsoleMaterials()
    if materialList[1] then return end

    local material = MatSystem.FirstMaterial()
    local foundCount = 0

    while(foundCount < 5)
    do
        local mat = MatSystem.GetMaterial(material)
        local name = mat:GetName()

        for i = 1, #consoleMaterials do
            if name == consoleMaterials[i] then
                materialList[i] = mat
                foundCount = foundCount + 1
                break
            end
        end

        material = MatSystem.NextMaterial(material)
    end
end

local function updateConsoleColor(r, g, b, a)
    for i = 1, #materialList do
        local mat = materialList[i]
        mat:ColorModulate(r, g, b)
        mat:AlphaModulate(a)
    end
end

local function cfgConsoleCallback()
    local color = ui.console:Get()

    if not ui.console:Get() then
        updateConsoleColor(1, 1, 1, 1)
    elseif isConsoleVisible(engineClientClass) then
        updateConsoleColor(color.r, color.g, color.b, color.a)
        copyColor(color, oldColor)
    end
end

--angle
local adjust_angle = function(angle)
    if(angle < 0) then
        angle = (90 + angle * (-1))
    elseif(angle > 0) then
        angle = (90 - angle)
    end
    return angle
end

local OldChoke, toDraw0, toDraw1, toDraw2, toDraw3, toDraw4, on_plant_time, fill, text, planting_site, planting, autopeek_origin = 0, 0, 0, 0, 0, 0, 0, 0, "", "", false, nil

--hitgroups
Cheat.RegisterCallback("registered_shot", function(shot)
    local reason_list = {
        "resolver",
        "spread",
        "occlusion",
        "prediction error"
    }
    local reason = shot.reason
    local entity = EntityList.GetClientEntity(shot.target_index)
    local Name = entity:GetPlayer():GetName()
    if ui.hitlogs:Get() then
        if reason == 0 then
            if ui.hitlogs_type:Get(1) then
                logs[#logs+1] = {("[nova.tech] Hit "..Name.."'s in "..hitboxes[shot.hitgroup+1].." for ".. shot.damage .." dmg (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)"), GlobalVars.tickcount + 300, 0}
            end
            if ui.hitlogs_type:Get(2) then
                print("[nova.tech] Hit "..Name.."'s in "..hitboxes[shot.hitgroup+1].." for ".. shot.damage .." dmg (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)")
            end
            if ui.hitlogs_type:Get(3) then
                Cheat.AddEvent("[nova.tech] Hit "..Name.."'s in "..hitboxes[shot.hitgroup+1].." for ".. shot.damage .." dmg (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)")
            end
        else
            if ui.hitlogs_type:Get(1) then
                logs[#logs+1] = {("[nova.tech] Missed ".. Name .. "'s in " .. hitboxes[shot.wanted_hitgroup+1] .. " due to "..reason_list[reason].." (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)"), GlobalVars.tickcount + 300, 0}
            end
            if ui.hitlogs_type:Get(2) then
                print("[nova.tech] Missed ".. Name .. "'s in " .. hitboxes[shot.wanted_hitgroup+1] .. " due to "..reason_list[reason].." (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)")
            end
            if ui.hitlogs_type:Get(3) then
                Cheat.AddEvent("[nova.tech] Missed ".. Name .. "'s in " .. hitboxes[shot.wanted_hitgroup+1] .. " due to "..reason_list[reason].." (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)")
            end
        end
    end
end)

--velocity
local velocity = function(ent)
    local speed = Vector.new(ent:GetProp("DT_BasePlayer", "m_vecVelocity[0]"), ent:GetProp("DT_BasePlayer", "m_vecVelocity[1]"), ent:GetProp("DT_BasePlayer", "m_vecVelocity[2]")):Length2D()
    return speed
end

local drag = {false, false}
local toDraw = {0, 0, 0, 0, 0, 0,}
local keysAnim = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}

local Visuals_HoloX, Visuals_HoloY, fake, curtime, ts, ts2, aastate, legit_aa, in_use, call_once = 0, 0, GlobalVars.curtime, 0, 0, 0, "DEFAULT", false, false, true


local anim = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}

local legitaa = function(cmd)
    local lp = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
    if lp == nil then return end
    in_use = false
    if aa[0].on_key:Get() == false then legit_aa = false return else legit_aa = true end
    if(bit.band(cmd.buttons, 32) == 32 and call_once == true) then
        call_once = false
    end

    if(bit.band(cmd.buttons, 32) == 0 and call_once == false) then
        call_once = true
    end

    if bit.band(cmd.buttons, 32) == 32 then
        in_use = true
        cmd.buttons = bit.band(cmd.buttons, bit.bnot(32))
    end
end

local use = function(cmd)
    if in_use == true then
        cmd.buttons = bit.bor(cmd.buttons, 32)
        in_use = false
    end
end

local Render_Indicator = function(text, ay2, color, size, font, outline)
    ts = Render.CalcTextSize(text, size, font)
    Render.Text(text, Vector2.new(x/2-ts.x/2, y/2+ay2), color, size, font, outline)
end

local Render_Indicator2 = function(text, ay2, color, size, font, outline, ts2)
    ts = Render.CalcTextSize(text, size, font)
    Render.Text(text, Vector2.new(x/2-ts.x/2-ts2, y/2+ay2), color, size, font, outline)
end
    
local Render_Indicator3 = function(text, ay3, color, size, font)
    ts = Render.CalcTextSize(text, size, font)
    Render.Text(text, Vector2.new(x/2+1, y/2+1+ay3), Color.RGBA(0,0,0,255), size, font)
    Render.Text(text, Vector2.new(x/2, y/2+ay3), color, size, font)
end

local Render_Skeet = function(text, ay, color, size, fonts)
    ts = Render.CalcTextSize(text, size, fonts)
    Render.GradientBoxFilled(Vector2.new(13, sc.y/1.48 - 5 + ay), Vector2.new(13 + (ts.x) / 2, sc.y/1.48 - 5 + ay + 28), Color.RGBA(0, 0, 0, 0), Color.RGBA(0, 0, 0, 65), Color.RGBA(0, 0, 0, 0), Color.RGBA(0, 0, 0, 65))
    Render.GradientBoxFilled(Vector2.new(13 + (ts.x) / 2, sc.y/1.48 - 5 + ay), Vector2.new(13 + (ts.x), sc.y/1.48 - 5 + ay + 28), Color.RGBA(0, 0, 0, 65), Color.RGBA(0, 0, 0, 0), Color.RGBA(0, 0, 0, 65), Color.RGBA(0, 0, 0, 0))
    Render.Text(text, Vector2.new(sc.x/100 + 2, sc.y/1.48 - 5 + 5 + ay), Color.new(0, 0, 0, 1), size, fonts)
    Render.Text(text, Vector2.new(sc.x/100 + 2, sc.y/1.48 - 5 + 4 + ay), color, size, fonts)
end

Cheat.RegisterCallback("prediction", function(cmd)
    local lp = EntityList.GetLocalPlayer()
    local forw = bit.band(cmd.buttons, 8) == 8
    local back = bit.band(cmd.buttons, 16) == 16
    local righ = bit.band(cmd.buttons, 512) == 512
    local left = bit.band(cmd.buttons, 1024) == 1024

    local originalpos = lp:GetProp("m_vecOrigin")
    local OnGround = bit.band(lp:GetProp("m_hGroundEntity"), 1);

    if OnGround == 1 then
        air = true
    else
        air = false
    end
    if AP:Get() == false then
        curpos = lp:GetProp("m_vecOrigin");
    end
    if ui.autopeek:Get() then
        if AP:Get() then
            if forw == false and back == false and left == false and righ == false and curpos.x ~= originalpos.x and curpos.y ~= originalpos.y and air == false then
                setmovement(curpos.x,curpos.y, cmd);
            end
        end
    end

    if GlobalVars.tickcount%64<2 and aa[0].fake_flick:Get() and aa[0].antiaims:Get() then
        AntiAim.OverrideYawOffset(90*(AntiAim.GetInverterState()and-1 or 1))
    end
end)

local zxc = 0
local draw = function()
    add_y = 0

    --colors
    local r = math.floor(ui.color:Get().r*255)
    local g = math.floor(ui.color:Get().g*255)
    local b = math.floor(ui.color:Get().b*255)
    local a = ui.alpha:Get()
  
    local dmg = false
    local binds = Cheat.GetBinds()
    for i = 1, #binds do
        if binds[i]:GetName() == "Minimum Damage" and binds[i]:IsActive() then
            dmg = true
        end
    end

    local manuals = yaw_base:Get() == 2 or yaw_base:Get() == 3

    --menu blur
    if ui.blur:Get() then
        if Cheat.IsMenuVisible() then
            if anim[1] < 255 then anim[1] = anim[1] + 10 end
        else
            if anim[1] > 0 then anim[1] = anim[1] - 10 end
        end
        Render.Blur(Vector2.new(0, 0), Vector2.new(x, y), Color.RGBA(255,255,255, anim[1]))
    end

    if ui.disable_os:GetBool() then
        if HS:GetBool() then
            FL:SetInt(1)
        else
            FL:SetInt(14)
        end
    end

    --molotov wireframe
    for _, v in pairs(materials) do
        local material = MatSystem.FindMaterial(v, "")

        if material ~= nil then
            material:SetMaterialVarFlag(bit.lshift(1, 28), ui.wireframe:Get())
            material:SetMaterialVarFlag(bit.lshift(1, 15), ui.ignorez:Get())
        end
    end

    --console color changer
    if ui.console:Get() then
        findConsoleMaterials()

        local color = ui.console:GetColor()
        local consoleVisible = isConsoleVisible(engineClientClass)

        if consoleVisible and not isColorEquals(oldColor, color) then
            updateConsoleColor(color.r, color.g, color.b, color.a)
            copyColor(color, oldColor)
        end

        if consoleVisible ~= oldConsoleIsVisible then
            if not consoleVisible then
                updateConsoleColor(1, 1, 1, 1)
            else
                updateConsoleColor(color.r, color.g, color.b, color.a)
            end

            oldConsoleIsVisible = consoleVisible
        end
    end

    --anti defensive
    local lc = CVar.FindVar("cl_lagcompensation")
    if ui.antidefensive:Get() then
        if lc:GetInt() == 1 then
            EngineClient.ExecuteClientCmd("jointeam 1")
            lc:SetInt(0)
        end
    else
        if lc:GetInt() == 0 then
            EngineClient.ExecuteClientCmd("jointeam 1")
            lc:SetInt(1)
        end
    end

    local lp = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
    if lp == nil then
        logs = {}
        return
    end
  
    if AP:Get() and ui.glowpeek:Get() then
        if autopeek_origin == nil then
            autopeek_origin = lp:GetProp('m_vecOrigin')
        end
        for i = 1, 60 do
            local autopeek_value = 1/i
            if i <= 60 then
                autopeek_value = autopeek_value + 1.5
            end
            local autopeek_color = ui.glowpeek:GetColor()
            if AP:Get() then
                Render.Circle3DFilled(autopeek_origin, 28, i / -2.5, Color.new(autopeek_color.r, autopeek_color.g, autopeek_color.b, autopeek_value / 50 * autopeek_color.a))
                Render.Circle3DFilled(autopeek_origin, 18, i / -2.6, Color.new(autopeek_color.r, autopeek_color.g, autopeek_color.b, autopeek_value / 50 * autopeek_color.a))
            end
        end
    else
        autopeek_origin = nil
    end

    --hitlogs
    if #logs > 0 then
        if GlobalVars.tickcount >= logs[1][2] then
            if logs[1][3] > 0 then
                logs[1][3] = logs[1][3] - 2
            elseif logs[1][3] <= 0 then
                table.remove(logs, 1)
            end
        end
        if #logs > 5 then
            table.remove(logs, 1)
        end
        for i = 1, #logs do
            ts = Render.CalcTextSize(logs[i][1], 11, font.verdana)
            if logs[i][3] < 255 then logs[i][3] = logs[i][3] + 1 end
            Render.Blur(Vector2.new(math.min(50, logs[i][3]*2)-60 + x/2-ts.x/2, y-256+34*i), Vector2.new(math.min(50, logs[i][3]*2)-40 + x/2+ts.x/2, y-242+34*i+ts.y), Color.RGBA(0,0,0, math.min(255, logs[i][3]*5)), 100)
            Render.BoxFilled(Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2-ts.x/2, y-256+34*i), Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2-ts.x/2+math.min(ts.x, logs[i][3]*7), y-254+34*i), Color.RGBA(r,g,b,math.min(255, logs[i][3]*5)))
            Render.BoxFilled(Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2+ts.x/2-math.min(ts.x, logs[i][3]*7), y-241+ts.y+34*i), Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2+ts.x/2, y-243+ts.y+34*i), Color.RGBA(r,g,b,math.min(255, logs[i][3]*5)))
            Render.Circle(Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2-ts.x/2, y-243+34*i), 12, 32, Color.RGBA(r,g,b,math.min(255, logs[i][3]*5)), 2, 270-math.min(180, logs[i][3]*3), 270)
            Render.Circle(Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2+ts.x/2, y-243+34*i), 12, 32, Color.RGBA(r,g,b,math.min(255, logs[i][3]*5)), 2.5, 90, 90-math.min(180, logs[i][3]*3))
            Render.Text(logs[i][1], Vector2.new(math.min(50, logs[i][3]*2)-49 + x/2-ts.x/2, y-249+34*i), Color.RGBA(0,0,0, math.min(255, logs[i][3]*5)), 11, font.verdana)
            Render.Text(logs[i][1], Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2-ts.x/2, y-250+34*i), Color.RGBA(255,255,255, math.min(255, logs[i][3]*5)), 11, font.verdana)
            Render.Text("[nova.tech] ", Vector2.new(math.min(50, logs[i][3]*2)-49 + x/2-ts.x/2, y-249+34*i), Color.RGBA(0,0,0, math.min(255, logs[i][3]*5)), 11, font.verdana)
            Render.Text("[nova.tech] ", Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2-ts.x/2, y-250+34*i), Color.RGBA(r,g,b, math.min(255, logs[i][3]*5)), 11, font.verdana)
        end
    end
    local delta_to_draw = math.abs(normalize_yaw(AntiAim.GetCurrentRealRotation()%360 - AntiAim.GetFakeRotation()%360))/2
  
    local chocking = ClientState.m_choked_commands
    if chocking < OldChoke then
        toDraw0 = toDraw1
        toDraw1 = toDraw2
        toDraw2 = toDraw3
        toDraw3 = toDraw4
        toDraw4 = OldChoke
    end
    OldChoke = chocking

    --skeet indicators
    if ui.indicators:Get(5) then
        add_y = 0

        if ui.add_indicators:Get(1) then
            Render_Skeet(string.format('%i-%i-%i-%i-%i',toDraw4,toDraw3,toDraw2,toDraw1,toDraw0), add_y, Color.RGBA(235 ,235, 235, 255), 22, font.calibrib)
            add_y = add_y - 35
        end

        if ui.add_indicators:Get(2) and lp:GetPlayer():IsAlive() then
            Render_Skeet("EX", add_y, DT:Get() and bit.band(lp:GetPlayer():GetProp("m_fFlags"), bit.lshift(1,0)) == 0 and Color.RGBA(132, 195, 16, 255) or Color.RGBA(208, 208, 20, 255), 22, font.calibrib)
            add_y = add_y - 35
        end

        if ui.add_indicators:Get(3) and dmg == true then
            Render_Skeet("DMG:"..MD:Get(), add_y, Color.RGBA(255, 255, 255, 150), 22, font.calibrib)
            add_y = add_y - 35
        end

        if ui.add_indicators:Get(4) and yaw_base:Get() == 5 then
            Render_Skeet("FS", add_y, Color.RGBA(235 ,235, 235, 255), 22, font.calibrib)
            add_y = add_y - 35
        end

        if PING:Get() > 0 then
            Render_Skeet("PING", add_y, Color.RGBA(math.floor(255 - ((PING:Get() / 189 * 60) * 2.29824561404)), math.floor((PING:Get() / 189 * 60) * 3.42105263158), math.floor((PING:Get() / 189 * 60) * 0.22807017543), 255), 22, font.calibrib)
            add_y = add_y - 35
           end
      
        if FD:Get() then
            Render_Skeet("DUCK", add_y, Color.RGBA(235 ,235, 235, 255), 22, font.calibrib)
            add_y = add_y - 35
        end

        local c4 = EntityList.GetEntitiesByClassID(129)[1];
        if c4 ~= nil then
            local time = ((c4:GetProp("m_flC4Blow") - GlobalVars.curtime)*10) / 10
            local timer = string.format("%.1f", time)
            local defused = c4:GetProp("m_bBombDefused")
            if math.floor(timer) > 0 and not defused then
                local defusestart = c4:GetProp("m_hBombDefuser") ~= 4294967295
                local defuselength = c4:GetProp("m_flDefuseLength")
                local defusetimer = defusestart and math.floor((c4:GetProp("m_flDefuseCountDown") - GlobalVars.curtime)*10) / 10 or -1
                if defusetimer > 0 then
                    local color = math.floor(timer) > defusetimer and Color.RGBA(58, 191, 54, 160) or Color.RGBA(252, 18, 19, 125)
                  
                    local barlength = (((sc.y - 50) / defuselength) * (defusetimer))
                    Render.BoxFilled(Vector2.new(0.0, 0.0), Vector2.new(16, sc.y), Color.RGBA(25, 25, 25, 160))
                    Render.Box(Vector2.new(0.0, 0.0), Vector2.new(16, sc.y), Color.RGBA(25, 25, 25, 160))
                  
                    Render.BoxFilled(Vector2.new(0, sc.y - barlength), Vector2.new(16, sc.y), color)
                end
              
                local bombsite = c4:GetProp("m_nBombSite") == 0 and "A" or "B"
                local health = lp:GetProp("m_iHealth")
                local armor = lp:GetProp("m_ArmorValue")
                local willKill = false
                local eLoc = c4:GetRenderOrigin()
                local lLoc = lp:GetRenderOrigin()
                local distance = eLoc:DistTo(lLoc)
                local a = 450.7
                local b = 75.68
                local c = 789.2
                local d = (distance - b) / c;

                local damage = a * math.exp(-d * d)
                if armor > 0 then
                    local newDmg = damage * 0.5;
  
                    local armorDmg = (damage - newDmg) * 0.5
                    if armorDmg > armor then
                        armor = armor * (1 / .5)
                        newDmg = damage - armorDmg
                    end
                    damage = newDmg;
                end
                local dmg = math.ceil(damage)
                    if dmg >= health then
                    willKill = true
                else
                    willKill = false
                end
                Render_Skeet(bombsite.." - "..string.format("%.1f", timer).."s", add_y, Color.RGBA(235 ,235, 235, 255), 22, font.calibrib)
                add_y = add_y - 35
                if lp then
                    if willKill == true then
                        Render_Skeet("FATAL", add_y, Color.RGBA(255, 0, 0, 255), 22, font.calibrib)
                        add_y = add_y - 35
                    elseif damage > 0.5 then
                        Render_Skeet("-"..dmg.." HP", add_y, Color.RGBA(210, 216, 112, 255), 22, font.calibrib)
                        add_y = add_y - 35
                    end
                end
            end
        end
        if planting then
            Render_Skeet(planting_site, add_y, Color.RGBA(210, 216, 112, 255), 22, font.calibrib)
            fill = 3.125 - (3.125 + on_plant_time - GlobalVars.curtime)
            if(fill > 3.125) then
                fill = 3.125
            end
            ts = Render.CalcTextSize(planting_site, 22, font.calibrib)
            Render.Circle(Vector2.new(sc.x/100 + 2 + ts.x+18, sc.y/1.48 - 5+add_y+ts.y/2+3), 8, 32, Color.RGBA(0, 0, 0, 255), 4, 0, 360)
            Render.Circle(Vector2.new(sc.x/100 + 2 + ts.x+18, sc.y/1.48 - 5+add_y+ts.y/2+3), 8, 32, Color.RGBA(235 ,235, 235, 255), 3, 0, (fill/3.3)*360)
            add_y = add_y - 35
        end     
      
        if DT:Get() then
            Render_Skeet("DT", add_y, Exploits.GetCharge() == 1 and Color.RGBA(235 ,235, 235, 255) or Color.RGBA(255, 0, 0, 255), 22, font.calibrib)
            add_y = add_y - 35
        end
    end
  
    if ui.windows:Get(1) then
        local ping = math.floor(EngineClient.GetNetChannelInfo():GetLatency(0)*1000)
        local local_time = ffi.new("SYSTEMTIME")
        ffi.C.GetLocalTime(local_time)

        text_wm = "nova.tech | "..Cheat.GetCheatUserName().." | delay: "..ping.." | "..string.format("%02d:%02d:%02d", local_time.wHour, local_time.wMinute, local_time.wSecond)
        ts_wm = Render.CalcTextSize(text_wm, 11, font.verdana) + 16

        Render.Blur(Vector2.new(x-ts_wm.x-6, 10), Vector2.new(x-10, 28), Color.RGBA(100, 100, 100, a))
        Render.BoxFilled(Vector2.new(x-ts_wm.x-6, 8), Vector2.new(x-10, 10), Color.RGBA(r, g, b, 255))

        Render.Text(text_wm, Vector2.new(x-ts_wm.x+1, 13), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
        Render.Text(text_wm, Vector2.new(x-ts_wm.x, 12), Color.RGBA(255, 255, 255, 255), 11, font.verdana)
    end

    if ui.windows:Get(2) then
        local players = EntityList.GetPlayers()
        local specs = {}
        local local_player = EntityList.GetLocalPlayer()
        for table_index, player_pointer in pairs(players) do
            if player_pointer and player_pointer:GetProp("m_iHealth") <= 0 then
                local local_player = EntityList.GetLocalPlayer()
                if local_player:IsAlive() then
                    local player = player_pointer
                    local spec_handle = player:GetProp("m_hObserverTarget")
                    local spec_player = EntityList.GetClientEntityFromHandle(spec_handle)
                    if spec_player ~= nil then
                        if spec_player:GetPlayer() == local_player:GetPlayer() then
                            specs[#specs+1] = player_pointer:GetName()
                        end
                    end
                else
                    local observer = player_pointer:GetProp('m_hObserverTarget')
                    local player = EntityList.GetLocalPlayer()
                    local localtarget = player:GetProp('m_hObserverTarget')
                    if observer == localtarget then
                        specs[#specs+1] = player_pointer:GetName()
                    end
                end
            end
        end
        xxx = ui.specs_x:Get()
        yyy = ui.specs_y:Get()
        if #specs > 0 or Cheat.IsMenuVisible() then
            Render.Blur(Vector2.new(xxx - 80, yyy - 4), Vector2.new(xxx + 80, yyy + 14), Color.RGBA(100, 100, 100, a))
            Render.BoxFilled(Vector2.new(xxx - 80, yyy - 6), Vector2.new(xxx + 80, yyy - 4), Color.RGBA(r, g, b, 255))
            ts = Render.CalcTextSize("spectators", 11, font.verdana)
            Render.Text("spectators", Vector2.new(xxx - ts.x/2+1, yyy - 1), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
            Render.Text("spectators", Vector2.new(xxx - ts.x/2, yyy - 2), Color.RGBA(255, 255, 255, 255), 11, font.verdana)
            for i = 1, #specs do
                Render.Text(specs[i], Vector2.new(xxx - 76, yyy + 1 + i * 17), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
                Render.Text(specs[i], Vector2.new(xxx - 77, yyy + i * 17), Color.RGBA(255, 255, 255, 255), 11, font.verdana)
            end
        end
        if Cheat.IsKeyDown(0x1) then
            local mouse = Cheat.GetMousePos()
            local ts = Render.CalcTextSize("spectators", 12)
            if drag[2] == true then
                ui.specs_x:SetInt(mouse.x)
                ui.specs_y:SetInt(mouse.y)
            end
            if mouse.x >= xxx - 70 and mouse.y >= yyy and mouse.x <= xxx + 70 and mouse.y <= yyy + ts.y then
                if drag[1] == false then drag[2] = true end
            end
        else
            drag[2] = false
        end
    end

    if ui.windows:Get(3) then
        local binds = Cheat.GetBinds()
        xx = ui.binds_x:Get()
        yy = ui.binds_y:Get()
        if #binds > 0 or Cheat.IsMenuVisible() then
            for i = 1, #binds do
                if binds[i]:IsActive() then
                    if keysAnim[i] < 255 then keysAnim[i] = keysAnim[i] + 30 else keysAnim[i] = 255 end
                else
                    if keysAnim[i] > 0 then keysAnim[i] = keysAnim[i] - 30 else keysAnim[i] = 0 end
                end
                mode = binds[i]:GetMode() == 0 and "[toggled]" or binds[i]:GetMode() == 1 and "[holding]"
                ts = Render.CalcTextSize(mode, 11, font.verdana)
                Render.Text(binds[i]:GetName(), Vector2.new(xx - 76, yy + 1 + i * 17), Color.RGBA(0, 0, 0, keysAnim[i]), 11, font.verdana)
                Render.Text(binds[i]:GetName(), Vector2.new(xx - 77, yy + i * 17), Color.RGBA(255, 255, 255, keysAnim[i]), 11, font.verdana)

                Render.Text(mode, Vector2.new(xx + 78-ts.x, yy + 1 + i * 17), Color.RGBA(0, 0, 0, keysAnim[i]), 11, font.verdana)
                Render.Text(mode, Vector2.new(xx + 77-ts.x, yy + i * 17), Color.RGBA(255, 255, 255, keysAnim[i]), 11, font.verdana)
            end
            Render.Blur(Vector2.new(xx - 80, yy - 4), Vector2.new(xx + 80, yy + 14), Color.RGBA(100, 100, 100, a))
            Render.BoxFilled(Vector2.new(xx - 80, yy - 6), Vector2.new(xx + 80, yy - 4), Color.RGBA(r, g, b, 255))
            ts = Render.CalcTextSize("keybinds", 11, font.verdana)
            Render.Text("keybinds", Vector2.new(xx - ts.x/2+1, yy - 1), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
            Render.Text("keybinds", Vector2.new(xx - ts.x/2, yy - 2), Color.RGBA(255, 255, 255, 255), 11, font.verdana)
        end
        if Cheat.IsKeyDown(0x1) then
            local mouse = Cheat.GetMousePos()
            local ts = Render.CalcTextSize("keybinds", 12)
            if drag[1] == true then
                ui.binds_x:SetInt(mouse.x)
                ui.binds_y:SetInt(mouse.y)
            end
            if mouse.x >= xx - 70 and mouse.y >= yy and mouse.x <= xx + 70 and mouse.y <= yy + ts.y then
                if drag[2] == false then drag[1] = true end
            end
        else
            drag[1] = false
        end
    end

    if ui.windows:Get(4) then
        --fl
        text_fl = DT:Get() and "FL: "..chocking.." | SHIFTING" or "FL: "..chocking
        ts_fl = Render.CalcTextSize(text_fl, 11, font.verdana) + 16
        fl_clr = Color.RGBA(math.floor(255 - (chocking * 8.57142857142)), math.floor(chocking * 14.28105263158), math.floor(chocking * 0.84807017543), 255)
        fl_clr1 = Color.RGBA(math.floor(255 - (chocking * 8.57142857142)), math.floor(chocking * 14.28105263158), math.floor(chocking * 0.84807017543), 0)
        Render.Blur(Vector2.new(x-ts_fl.x-6, 35), Vector2.new(x-10, 53), Color.RGBA(100, 100, 100, a))
        Render.GradientBoxFilled(Vector2.new(x-ts_fl.x/2-6, 53), Vector2.new(x-10, 54), fl_clr, fl_clr1, fl_clr, fl_clr1)
        Render.GradientBoxFilled(Vector2.new(x-ts_fl.x-6, 53), Vector2.new(x-ts_fl.x/2-6, 54), fl_clr1, fl_clr, fl_clr1, fl_clr)
        Render.Text(text_fl, Vector2.new(x-ts_fl.x+1, 38), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
        Render.Text(text_fl, Vector2.new(x-ts_fl.x, 37), Color.RGBA(255, 255, 255, 255), 11, font.verdana)

        --fake
        text_fake = string.format("FAKE (%.1f°)",delta_to_draw)
        ts_fake = Render.CalcTextSize(text_fake, 11, font.verdana) + 16
        local fake_clr = Color.RGBA(math.floor(255 - (delta_to_draw * 2.29824561404)), math.floor(delta_to_draw * 3.42105263158), math.floor(delta_to_draw * 0.22807017543), 255)
        local fake_clr1 = Color.RGBA(math.floor(255 - (delta_to_draw * 2.29824561404)), math.floor(delta_to_draw * 3.42105263158), math.floor(delta_to_draw * 0.22807017543), 0)
        Render.GradientBoxFilled(Vector2.new(x-(ts_fl.x+ts_fake.x/2)-6, 35), Vector2.new(x-ts_fl.x-10, 53), Color.RGBA(0, 0, 0, a), Color.new(0, 0, 0, 0), Color.RGBA(0, 0, 0, a), Color.new(0, 0, 0, 0))
        Render.GradientBoxFilled(Vector2.new(x-(ts_fl.x+ts_fake.x)-6, 35), Vector2.new(x-(ts_fl.x+ts_fake.x/2)-6, 53), Color.new(0, 0, 0, 0), Color.RGBA(0, 0, 0, a), Color.new(0, 0, 0, 0), Color.RGBA(0, 0, 0, a))

        Render.GradientBoxFilled(Vector2.new(x-(ts_fl.x+ts_fake.x)-4, 34), Vector2.new(x-(ts_fl.x+ts_fake.x)-6, 44), fake_clr1, fake_clr1, fake_clr, fake_clr)
        Render.GradientBoxFilled(Vector2.new(x-(ts_fl.x+ts_fake.x)-4, 44), Vector2.new(x-(ts_fl.x+ts_fake.x)-6, 54), fake_clr, fake_clr, fake_clr1, fake_clr1)
        Render.Text(text_fake, Vector2.new(x-(ts_fl.x+ts_fake.x)+1, 38), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
        Render.Text(text_fake, Vector2.new(x-(ts_fl.x+ts_fake.x), 37), Color.RGBA(255, 255, 255, 255), 11, font.verdana)
    end

    local calcs = {
        deg2rad = function(self, x)
            return x * (math.pi / 180.0)
        end,
  
        rotated_position = function(self, start, rotation, distance)
            local rad = self:deg2rad(rotation)
            local new_start = Vector.new(start.x, start.y, start.z)
            new_start.x = new_start.x + math.cos(rad) * distance
            new_start.y = new_start.y + math.sin(rad) * distance
  
            return new_start
        end
    }

    if lp:GetPlayer():IsAlive() then
        local view_angles = EngineClient.GetViewAngles()
        local real_yaw = AntiAim.GetCurrentRealRotation()
        local view_yaw = view_angles.yaw - 180;
        local fake = adjust_angle(real_yaw - view_yaw);
        local fake_clr = Color.RGBA(math.floor(255 - (delta_to_draw * 2.29824561404)), math.floor(delta_to_draw * 3.42105263158), math.floor(delta_to_draw * 0.22807017543), 255)
        local clr = Color.new(ui.circle:GetColor().r, ui.circle:GetColor().g, ui.circle:GetColor().b, 1)
        if ui.circle:GetBool() then
            if ui.circle_style:GetInt() == 0 then
                Render.Circle(Vector2.new(x/2, y/2), 7, 32, Color.new(0, 0, 0, 1), 4, 0, 360)
                Render.Circle(Vector2.new(x/2, y/2), 7, 32, fake_clr, 4, 90, AntiAim.GetInverterState() == false and -90 or 270)
                Render.Circle(Vector2.new(x/2, y/2), 15, 32, fake_clr, 4, fake+30, fake-30)
            else
                local real_rotation = calcs:deg2rad(view_angles.yaw - AntiAim.GetCurrentRealRotation() - 90);
                Render.PolyFilled(AntiAim.GetInverterState() and Color.new(1, 1, 1, 1) or clr,
                    Vector2.new(x/2 + math.cos(real_rotation) * 45,
                                y/2 + math.sin(real_rotation) * 45),
                    Vector2.new(x/2 + math.cos(real_rotation - calcs:deg2rad(20)) * (45 - 15),
                                y/2 + math.sin(real_rotation - calcs:deg2rad(20)) * (45 - 15)),
                    Vector2.new(x/2 + math.cos(real_rotation) * (45 - 13),
                                y/2 + math.sin(real_rotation) * (45 - 13))
                )
                Render.PolyFilled(AntiAim.GetInverterState() and clr or Color.new(1, 1, 1, 1),
                Vector2.new(x/2 + math.cos(real_rotation) * 45,
                            y/2 + math.sin(real_rotation) * 45),
                Vector2.new(x/2 + math.cos(real_rotation + calcs:deg2rad(20)) * (45 - 15),
                            y/2 + math.sin(real_rotation + calcs:deg2rad(20)) * (45 - 15)),
                Vector2.new(x/2 + math.cos(real_rotation) * (45 - 13),
                            y/2 + math.sin(real_rotation) * (45 - 13))
            )
            end
        end

        if ui.idealtick:Get() and AP:Get() then
            if ui.add_idealtick:Get(1) then
                aa[0].manual:SetInt(6)
            end
            zxc = 1
        elseif zxc == 1 then
            aa[0].manual:SetInt(0)
            zxc = 0
        end

        --hitchance and dmg
        local active_weapon = lp:GetPlayer():GetActiveWeapon()
        if active_weapon == nil then return end
        local weapon_id = active_weapon:GetWeaponID()
        local players = EntityList.GetPlayers()
        for _, player in ipairs(players) do
            if not player:IsTeamMate() then
                local user_index = player:EntIndex()
                if ui.air_hitchance:Get() and weapon_id == 40 and bit.band(lp:GetProp("m_fFlags"), bit.lshift(1,0)) == 0 then
                    RageBot.OverrideHitchance(user_index, ui.air_hitchance_value:Get())
                end
                if ui.ns_hitchance:Get() and weapon_id == 11 or weapon_id == 38 and not lp:GetPlayer():GetProp("m_bIsScoped") then
                    RageBot.OverrideHitchance(user_index, ui.ns_hitchance_value:Get())
                end
                if ui.idealtick:Get() and AP:Get() then
                    if ui.add_idealtick:Get(2) then
                        RageBot.OverrideMinDamage(user_index, ui.idealtick_damage:Get())
                    end
                    if ui.add_idealtick:Get(3) then
                        RageBot.ForceHitboxSafety(user_index, 0)
                    end
                end
            end
        end
      
        --state
        local ax = 0
        if ui.state_panel:Get() then
            arrows = AntiAim.GetInverterState() and "<" or ">"
            Render.Text("NOVA.TECH - V1.2.1 | "..Cheat.GetCheatUserName(), Vector2.new(x/20, y/2.4+30), Color.RGBA(255,255,255,255), 10, font.pixel, true)
            Render.Text("+ INVERTER: "..arrows.." | STATE: "..aastate, Vector2.new(x/20, y/2.4+42), Color.RGBA(125, 125, 125, 255), 10, font.pixel, true)
            Render.Text("+ FAKELAG COUNTER: "..string.format("%i-%i-%i-%i-%i",toDraw4,toDraw3,toDraw2,toDraw1,toDraw0), Vector2.new(x/20, y/2.4+54), Color.RGBA(125, 125, 125, 255), 10, font.pixel, true)
            Render.Text("+ DOUBLE-TAP: ", Vector2.new(x/20, y/2.4+66), Color.RGBA(125, 125, 125, 255), 10, font.pixel, true)
            ax = ax + Render.CalcTextSize("+ DOUBLE-TAP: ", 10, font.pixel).x
            Render.Text(DT:Get() and "ON" or "OFF", Vector2.new(x/20+ax, y/2.4+66), DT:Get() and Color.RGBA(80, 255, 80, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)
            ax = ax + Render.CalcTextSize(DT:Get() and "ON " or "OFF ", 10, font.pixel).x
            Render.Text("| OS-AA: ", Vector2.new(x/20+ax, y/2.4+66), Color.RGBA(125, 125, 125, 255),10, font.pixel, true)
            ax = ax + Render.CalcTextSize("| OS-AA: ", 10, font.pixel).x
            Render.Text(HS:Get() and "ON" or "OFF", Vector2.new(x/20+ax, y/2.4+66), HS:Get() and Color.RGBA(80, 255, 80, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)
        end

        --holo panel
        ay = 0
        if ui.windows:Get(5) and ui.viewmodel:Get() or ui.windows:Get(5) and not lp:GetPlayer():GetProp("m_bIsScoped") then
            if ui.holo_on_tp:Get() and not TP:Get() or ui.holo_on_tp:Get() == false and TP:Get() or TP:Get() == false then
                local muzzle_temp = muzzle.get()

                if muzzle_temp then
                    muzzle.pos = muzzle_temp.pos
                end
              
                local hitbox = lp:GetPlayer():GetHitboxCenter(3)
                local world_stand =  Render.WorldToScreen(hitbox)
                local pos2d = Render.WorldToScreen(muzzle.pos)
                if DT:Get() then
                    ay = 13
                else
                    ay = 0
                end
                if TP:Get() then
                    if world_stand.x ~= nil and world_stand.y ~= nil then
                        Render.Line(Vector2.new(Visuals_HoloX, Visuals_HoloY+ay+65), Vector2.new(x/2, world_stand.y), Color.RGBA(100,100,100,220))
                        local lerpx = lerp(Visuals_HoloX, world_stand.x + 10, GlobalVars.frametime * 8)
                        local lerpy = lerp(Visuals_HoloY, world_stand.y - 90, GlobalVars.frametime * 8)
                        if lerpx >= 0 and lerpx <= 2000 and lerpy >= 0 and lerpy <= 1500 then
                            Visuals_HoloX = lerp(Visuals_HoloX, world_stand.x + 10, GlobalVars.frametime * 8)
                            Visuals_HoloY = lerp(Visuals_HoloY, world_stand.y - 90, GlobalVars.frametime * 8)
                        else
                            Visuals_HoloX = world_stand.x + 10
                            Visuals_HoloY = world_stand.y - 90
                        end
                    end
                else
                    if pos2d.x ~= nil and pos2d.y ~= nil then
                        local lerpx = lerp(Visuals_HoloX, pos2d.x - 20, GlobalVars.frametime * 8)
                        local lerpy = lerp(Visuals_HoloY, pos2d.y - 125, GlobalVars.frametime * 8)
                        Render.Line(Vector2.new(Visuals_HoloX, Visuals_HoloY+ay+65), Vector2.new(pos2d.x, pos2d.y), Color.RGBA(100,100,100,220))
                        if lerpx >= 0 and lerpx <= 3000 and lerpy >= 0 and lerpy <= 2000 then
                            Visuals_HoloX = lerp(Visuals_HoloX, pos2d.x - 20, GlobalVars.frametime * 8)
                            Visuals_HoloY = lerp(Visuals_HoloY, pos2d.y - 125, GlobalVars.frametime * 8)
                        else
                            Visuals_HoloX = pos2d.x - 20
                            Visuals_HoloY = pos2d.y - 125
                        end
                    end
                end 

                Render.Blur(Vector2.new(Visuals_HoloX, Visuals_HoloY), Vector2.new(170 + Visuals_HoloX, (65 + ay) + Visuals_HoloY))
              
                Render.BoxFilled(Vector2.new(Visuals_HoloX, Visuals_HoloY), Vector2.new(170 + Visuals_HoloX, 2 + Visuals_HoloY), Color.RGBA(r, g, b, 255))
              

                Render.Text("ANTI-AIMBOT DEBUG", Vector2.new(Visuals_HoloX + 7, Visuals_HoloY + 5 ), Color.new(1.0, 1.0, 1.0, 1.0), 10, font.pixel, true)

                local fake_clr = Color.RGBA(math.floor(255 - (delta_to_draw * 2.29824561404)), math.floor(delta_to_draw * 3.42105263158), math.floor(delta_to_draw * 0.22807017543), 255)
                local fake_clr1 = Color.RGBA(math.floor(255 - (delta_to_draw * 2.29824561404)), math.floor(delta_to_draw * 3.42105263158), math.floor(delta_to_draw * 0.22807017543), 0)

                Render.GradientBoxFilled(Vector2.new(Visuals_HoloX + 8, Visuals_HoloY+36), Vector2.new(Visuals_HoloX + 10, Visuals_HoloY+46), fake_clr, fake_clr, fake_clr1, fake_clr1)
                Render.GradientBoxFilled(Vector2.new(Visuals_HoloX + 8, Visuals_HoloY+26), Vector2.new(Visuals_HoloX + 10, Visuals_HoloY+36), fake_clr1, fake_clr1, fake_clr, fake_clr)

                local view_angles = EngineClient.GetViewAngles()
                local fake_yaw = AntiAim.GetFakeRotation()
                local real_yaw = AntiAim.GetCurrentRealRotation()
                local view_yaw = view_angles.yaw - 180;
                local fake = adjust_angle(fake_yaw - view_yaw);
                local real = adjust_angle(real_yaw - view_yaw);

                Render.Circle(Vector2.new(Visuals_HoloX + 150, Visuals_HoloY+22), 9, 32, Color.RGBA(25,25,25,200), 2, 0, 360)
                Render.Circle(Vector2.new(Visuals_HoloX + 150, Visuals_HoloY+22), 9, 32, Color.RGBA(r, g, b, 255), 2, fake+20, fake-20)
                Render.Circle(Vector2.new(Visuals_HoloX + 150, Visuals_HoloY+22), 9, 32, Color.RGBA(200, 200, 200, 255), 2, real+10, real-10)

                Render.Text(string.format("FAKE (%.1f°)", delta_to_draw), Vector2.new(Visuals_HoloX + 14, Visuals_HoloY + 30), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
                Render.Text(string.format("FAKE (%.1f°)", delta_to_draw), Vector2.new(Visuals_HoloX + 13, Visuals_HoloY + 30), Color.RGBA(255, 255, 255, 255), 11, font.verdana)

                Render.Text("SP:", Vector2.new(Visuals_HoloX + 13, Visuals_HoloY + 48), Color.new(1.0, 1.0, 1.0, 1.0), 10, font.pixel, true)

                Render.BoxFilled(Vector2.new(Visuals_HoloX + 27, Visuals_HoloY + 59), Vector2.new(53 + Visuals_HoloX, 51 + Visuals_HoloY), Color.new(0, 0, 0, 1))
                Render.BoxFilled(Vector2.new(Visuals_HoloX+ 61, Visuals_HoloY + 59), Vector2.new(87 + Visuals_HoloX, 51 + Visuals_HoloY), Color.new(0, 0, 0, 1))
              
                if ((AntiAim.GetCurrentRealRotation() - AntiAim.GetFakeRotation()) ~= nil) then
                    Render.BoxFilled(Vector2.new(Visuals_HoloX + 28, Visuals_HoloY + 58), Vector2.new(30 + Visuals_HoloX + (delta_to_draw / 2.7), 52 + Visuals_HoloY), Color.RGBA(r, g, b, 255))
                else if ((AntiAim.GetCurrentRealRotation() - AntiAim.GetFakeRotation()) < 0 and (AntiAim.GetCurrentRealRotation() - AntiAim.GetFakeRotation()) ~= nil) then
                    Render.BoxFilled(Vector2.new(Visuals_HoloX + 61, Visuals_HoloY + 59), Vector2.new(87 + Visuals_HoloX, 51 + Visuals_HoloY), Color.RGBA(r, g, b, 255))
                end
                end

                local alpha = math.min(math.floor(math.sin((GlobalVars.realtime%3) * 4) * 175 + 50), 255)
                if DT:Get() then
                    Render.Text("SHIFTING TICKBASE", Vector2.new(Visuals_HoloX + 12, Visuals_HoloY + 62), Color.RGBA(255, 255, 255, alpha), 10, font.pixel, true)
                end
                Render.Text("OSAA:", Vector2.new(Visuals_HoloX + 110, Visuals_HoloY + 49 + ay), Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                Render.Text(HS:Get() and "ON" or "OFF", Vector2.new(Visuals_HoloX + 140, Visuals_HoloY + 49 + ay), HS:Get() and Color.RGBA(80, 255, 80, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)     
            end
        end
        --indicators
        ay = 0
        if ui.indicators:Get(1) then
            add_y = 0
            add_y = add_y + 40
            ts = Render.CalcTextSize("NOVA", 10, font.pixel)
            Render.Text("NOVA", Vector2.new(x/2 - ts.x, y/2 + add_y + 2), AntiAim.GetInverterState() and Color.RGBA(r, g, b, 255) or Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
            Render.Text("TECH", Vector2.new(x/2, y/2 + add_y + 2), AntiAim.GetInverterState() and Color.RGBA(255, 255, 255, 255) or Color.RGBA(r, g, b, 255), 10, font.pixel, true)
            add_y = add_y + 14
            Render.GradientBoxFilled(Vector2.new(x/2-math.floor(delta_to_draw)-7, y/2+add_y), Vector2.new(x/2, y/2+add_y+2), Color.RGBA(r, g, b, 0), Color.RGBA(r, g, b, 255), Color.RGBA(r, g, b, 0), Color.RGBA(r, g, b, 255))
            Render.GradientBoxFilled(Vector2.new(x/2+math.floor(delta_to_draw)+7, y/2+add_y), Vector2.new(x/2, y/2+add_y+2), Color.RGBA(r, g, b, 0), Color.RGBA(r, g, b, 255), Color.RGBA(r, g, b, 0), Color.RGBA(r, g, b, 255))
            add_y = add_y + 3
            if DT:Get() then
                Render_Indicator(Exploits.GetCharge() == 1 and "DOUBLETAP" or "CHARGING", add_y, Exploits.GetCharge() == 1 and Color.RGBA(255, 255, 255, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if HS:Get() then
                Render_Indicator("ON-SHOT", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if dmg == true then
                Render_Indicator("DAMAGE", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if FD:Get() then
                Render_Indicator("DUCK", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if BA:Get() == 2 then
                Render_Indicator("BAIM", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if SP:Get() == 2 then
                Render_Indicator("SP", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
        end
        if ui.indicators:Get(2) then
            add_y = 0
            add_y = add_y + 40
            Render_Indicator("NOVATECH", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
            add_y = add_y + 9
            Render_Indicator(aastate, add_y, Color.RGBA(125, 125, 125, 255), 10, font.pixel, true)
            add_y = add_y + 9
            Render_Indicator(string.format("%i-%i-%i-%i-%i",toDraw4,toDraw3,toDraw2,toDraw1,toDraw0), add_y, Color.RGBA(125, 125, 125, 255), 10, font.pixel, true)
            add_y = add_y + 9
            if DT:Get() then
                Render_Indicator("DOUBLETAP", add_y, Exploits.GetCharge() == 1 and Color.RGBA(255, 255, 255, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if HS:Get() then
                Render_Indicator("OSAA", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if SP:Get() == 2 then
                Render_Indicator("SAFE", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if BA:Get() == 2 then
                Render_Indicator("BODY", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
        end
        if ui.indicators:Get(3) then
            add_y = 0
            add_y = add_y + 40
            ts = Render.CalcTextSize("*nova", 11, font.verdanabd)
            Render.Text("*nova", Vector2.new(x/2 - ts.x, y/2 + add_y + 2), AntiAim.GetInverterState() and Color.RGBA(r, g, b, 255) or Color.RGBA(255, 255, 255, 255), 11, font.verdanabd, true)
            Render.Text("tech*", Vector2.new(x/2, y/2 + add_y + 2), AntiAim.GetInverterState() and Color.RGBA(255, 255, 255, 255) or Color.RGBA(r, g, b, 255), 11, font.verdanabd, true)
            add_y = add_y + 13
            if HS:Get() then
                Render_Indicator("ON-SHOT", add_y, Color.RGBA(r, g, b, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if dmg == true then
                Render_Indicator("DMG", add_y, Color.RGBA(r, g, b, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if DT:Get() then
                Render_Indicator("DT", add_y, Exploits.GetCharge() == 1 and Color.RGBA(r, g, b, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if SP:Get() == 2 then
                Render_Indicator("SP", add_y, Color.RGBA(r, g, b, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if BA:Get() == 2 then
                Render_Indicator("BA", add_y, Color.RGBA(r, g, b, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
        end
        if ui.indicators:Get(4) then
            add_y = 0
            add_y = add_y + 40
            Render_Indicator3(manuals and "FAKE YAW" or "IDEAL YAW", add_y, manuals and Color.RGBA(159, 159, 230, 255) or Color.RGBA(220, 135, 49, 255), 12, font.tahoma)
            add_y = add_y + 10
            Render_Indicator3(yaw_base:Get() == 5 and "FREESTAND" or "DYNAMIC", add_y, Color.RGBA(209, 159, 230, 255), 12, font.tahoma)
            add_y = add_y + 10
            if DT:Get() then
                Render_Indicator3(FD:Get() and "DT (fakeduck)" or "DT", add_y, Exploits.GetCharge() == 1 and Color.RGBA(0, 255, 0, 255) or Color.RGBA(255, 0, 0, 255), 12, font.tahoma)
                add_y = add_y + 10
            end
            if HS:Get() then
                Render_Indicator3("AA", add_y, Color.RGBA(120, 128, 200, 255), 12, font.tahoma)
                add_y = add_y + 10
            end
            if dmg == true then
                Render_Indicator3("DMG", add_y, Color.RGBA(200, 185, 255, 255), 12, font.tahoma)
                add_y = add_y + 10
            end
        end

        --viewmodel in scope
        local cheats = CVar.FindVar("sv_cheats")
        local scope = CVar.FindVar("fov_cs_debug")
        if ui.viewmodel:Get() then
            cheats:SetInt(1)
            scope:SetInt(90)
        else
            scope:SetInt(0)
        end

        --custom scope
        if ui.scope:GetColor() and lp:GetPlayer():GetProp("m_bIsScoped") then
            local offset = ui.offset:Get()
            local length = ui.length:Get()
            local col = Color.new(ui.scope:GetColor().r, ui.scope:GetColor().g, ui.scope:GetColor().b, 1)
            local col1 = Color.new(ui.scope:GetColor().r, ui.scope:GetColor().g, ui.scope:GetColor().b, 0)
            Render.GradientBoxFilled(Vector2.new(x/2 - offset, y/2), Vector2.new(x/2 - offset - length, y/2 + 1), col, col1, col, col1)
            Render.GradientBoxFilled(Vector2.new(x/2 + offset, y/2), Vector2.new(x/2 + offset + length, y/2 + 1), col, col1, col, col1)
            Render.GradientBoxFilled(Vector2.new(x/2, y/2 + offset), Vector2.new(x/2 + 1, y/2 + offset + length), col, col, col1, col1)
            Render.GradientBoxFilled(Vector2.new(x/2, y/2 - offset), Vector2.new(x/2 + 1, y/2 - offset - length), col, col, col1, col1)
        end

        --manual arrows
        if ui.manual_arrows:Get() then
            local r1 = math.floor(ui.color1:Get().r*255)
            local g1 = math.floor(ui.color1:Get().g*255)
            local b1 = math.floor(ui.color1:Get().b*255)

            local r2 = math.floor(ui.color2:Get().r*255)
            local g2 = math.floor(ui.color2:Get().g*255)
            local b2 = math.floor(ui.color2:Get().b*255)

            if ui.arrows_style:Get() == 0 then
                if velocity(lp) > 44 then
                    if anim[3] < 150 then anim[3] = anim[4] + 10 end
                else
                    if anim[3] > 0 then anim[3] = anim[4] - 10 end
                end
                Render.Text(">", Vector2.new(x/2 + 45, y/2 - Render.CalcTextSize(">", 22).y/2), yaw_base:Get() == 2 and Color.RGBA(r1, g1, b1, 255) or Color.RGBA(255, 255, 255, 255 - anim[3]), 22, true)
                Render.Text("<", Vector2.new(x/2 - 45 - Render.CalcTextSize("<", 22).x, y/2 - Render.CalcTextSize("<", 22).y/2), yaw_base:Get() == 3 and Color.RGBA(r1, g1, b1, 255) or Color.RGBA(255, 255, 255, 255 - anim[3]), 22, true)
                Render.Text("v", Vector2.new(x/2 - Render.CalcTextSize("v", 19).x/2+1, y/2 + 25), yaw_base:Get() == 1 and Color.RGBA(r1, g1, b1, 255) or Color.RGBA(255, 255, 255, 255 - anim[3]), 19, true)
            elseif ui.arrows_style:Get() == 1 then
                Render.PolyFilled(yaw_base:Get() == 2 and Color.RGBA(r1, g1, b1, 255) or Color.RGBA(25, 25, 25, 150), Vector2.new(x/2 + 43, y/2 + 9), Vector2.new(x/2 + 56, y/2), Vector2.new(x/2 + 43, y/2 - 9))
                Render.PolyFilled(yaw_base:Get() == 3 and Color.RGBA(r1, g1, b1, 255) or Color.RGBA(25, 25, 25, 150), Vector2.new(x/2 - 43, y/2 + 9), Vector2.new(x/2 - 56, y/2), Vector2.new(x/2 - 43, y/2 - 9))
                Render.BoxFilled(Vector2.new(x/2 - 40, y/2 - 9),  Vector2.new(x/2 - 42, y/2 + 10), AntiAim.GetInverterState() == false and Color.RGBA(25, 25, 25, 150) or Color.RGBA(r2, g2, b2, 255))
                Render.BoxFilled(Vector2.new(x/2 + 40, y/2 - 9),  Vector2.new(x/2 + 42, y/2 + 10), AntiAim.GetInverterState() == false and Color.RGBA(r2, g2, b2, 255) or Color.RGBA(25, 25, 25, 150))
            end
        end

        --render
        if ui.damage_indicator:Get() then
            local ts = Render.CalcTextSize(tostring(MD:Get()), 10, font.pixel)
            Render.Text(dmg and "1" or "0", Vector2.new(x/2-35, y/2-50), Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
            Render.Text(tostring(MD:Get()), Vector2.new(x/2-ts.x/2+0.5, y/2-50), Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
        end

        --disable thirdperson anim
        if ui.tpanim:Get() then s = false else s = true end
        Cheat.SetThirdPersonAnim(s)
    end
end

local anti_aim = function()
        local lp = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
        if lp == nil then return end

        local active_weapon = lp:GetPlayer():GetActiveWeapon()
        if active_weapon == nil then return end
        local weapon_id = active_weapon:GetWeaponID()

        --anti aims
        if aa[0].antiaims:Get() then
          
            --tp in air
            local players = EntityList.GetPlayers()
          
            if aa[0].tp_in_air:Get() and bit.band(lp:GetPlayer():GetProp("m_fFlags"), bit.lshift(1,0)) == 0 then
                for i = 1, #players do
                    local origin = lp:GetPlayer():GetRenderOrigin()
                    local origin_players = players[i]:GetRenderOrigin()
                    local is_visible = players[i]:IsVisible(origin_players)
                    if players[i]:IsAlive() and not players[i]:IsTeamMate() and players[i]:IsAlive() and not players[i]:IsDormant() and is_visible and not active_weapon:IsKnife() then
                        Exploits.ForceTeleport()
                    end
                end
            end

            if SW:Get() and aa[6].custom_enable:Get() then
                --slow walk
                stateid = 6
                aastate = "SLOWWALKING"
            elseif bit.band(lp:GetPlayer():GetProp("m_fFlags"), bit.lshift(1,0)) == 0 and aa[4].custom_enable:Get() then
                --air
                stateid = 4
                aastate = "IN AIR"
            elseif lp:GetProp("m_flDuckAmount") > 0.8 and aa[5].custom_enable:Get() or FD:Get() and aa[5].custom_enable:Get() then
                --duck
                stateid = 5
                aastate = "CROUCHING"
            elseif velocity(lp) > 2 and aa[3].custom_enable:Get() then
                --move
                stateid = 3
                aastate = "MOVING"
            elseif velocity(lp) < 2 and aa[2].custom_enable:Get() then
                --stand
                stateid = 2
                aastate = "STANDING"
            else
                --global
                stateid = 1
                aastate = "DYNAMIC"
            end

            if legit_aa == false then
                pitch:SetInt(1)
                if aa[0].manual:Get() == 0 then
                    yaw_base:SetInt(aa[stateid].custom_yaw_base:Get())
                else
                    yaw_base:SetInt(aa[0].manual:Get()-1)
                end
                yaw(yaw_add, aa[stateid].custom_yaw_add_right:Get(), aa[stateid].custom_yaw_add_left:Get())
                yaw_modifier:SetInt(aa[stateid].custom_yaw_modifier:Get())
                modifier_degree:SetInt(aa[stateid].custom_modifier_degree:Get())
                if aa[stateid].custom_fake_type:Get() == 0 then
                    left_limit:SetInt(aa[stateid].custom_left_limit:Get())
                    right_limit:SetInt(aa[stateid].custom_right_limit:Get())
                elseif aa[stateid].custom_fake_type:Get() == 1 then
                    left_limit:SetInt(jitter(aa[stateid].custom_left_limit:Get(), aa[stateid].custom_left_limit2:Get()))
                    right_limit:SetInt(jitter(aa[stateid].custom_right_limit:Get(), aa[stateid].custom_right_limit2:Get()))
                elseif aa[stateid].custom_fake_type:Get() == 2 then
                    left_limit:SetInt(math.random(aa[stateid].custom_left_limit:Get(), aa[stateid].custom_left_limit2:Get()))
                    right_limit:SetInt(math.random(aa[stateid].custom_right_limit:Get(), aa[stateid].custom_right_limit2:Get()))
                end
                options:SetInt(aa[stateid].custom_options:Get())
                lby_mode:SetInt(aa[stateid].custom_lby:Get())
                freestand:SetInt(aa[stateid].custom_fs:Get())
                onshot:SetInt(aa[stateid].custom_onshot:Get())

                --anti backstab
                if aa[0].antibackstab:Get() then
                    local enemies = GetEnemiesWithKnife()
                    if enemies ~= nil then
                        if #enemies > 0 then
                            for i, enemy in pairs(enemies) do
                                local enemy_origin = enemy:GetRenderOrigin()
                                local local_player_origin = lp:GetRenderOrigin()
                                local distance_from_local_to_enemy = enemy_origin:DistTo(local_player_origin)             
                                if 200 >= distance_from_local_to_enemy and not players[i]:IsDormant() then
                                    AntiAim.OverrideYawOffset(180)
                                    AntiAim.OverridePitch(0)
                                end
                            end
                        end
                    end
                end
            else
                pitch:SetInt(0)
                yaw_base:SetInt(0)
                yaw(yaw_add, 0, 0)
                yaw_modifier:SetInt(1)
                modifier_degree:SetInt(0)
                left_limit:SetInt(60)
                right_limit:SetInt(60)
                options:SetInt(0)
                lby_mode:SetInt(1)
                freestand:SetInt(1)
                onshot:SetInt(1)
            end
        end
end

local phrases = {
    "Блин, друг, прости пожалуйста, не увидел",
    "Опять ты, прости, я без ников убил",
    "У тебя Ник тема бебриков? Я тебя вчера на Дме видел",
    "Ты с чем ?",
    "Зато ты очень красивый",
    "А фип бы забанил за такое, прости пж",
    "Мне друг (витма) (бигнейм) сказал, что в таких случаях 1 писать, но я добрый так что не буду",
    "Посаны, а как вам микрофон яспер мо о глод, у фипа такой вроде",
    "Возьми печеньки, завари чайочек. И расслабся",
    "Какой у тебя мейн Ник ? Мне сказали, что это важна чтоб медия сделать, ты витма ?",
    "Ну ничего, с кем не бывает",
    "Нифига я чо Лоу дельта убил",
    "Главное, что хоть у тебя голова на месте)",
    "Сколько в человеке доброты, столько в нем и жизни.",
    "Истинная храбрость и доброта идут рука об руку.",
    "ой прости я просто в Five nights at fnay играл и испугался немного",
    "Дай кфг, а то мой сильно жёсткий",
    "Прости, в следующий раз повезет.",
    "ты не знал, а nova.tech то тапает",
}
local get_phrase = function()
    return phrases[Utils.RandomInt(1, #phrases)]:gsub('"', '')
end
          
Cheat.RegisterCallback("events", function(e)
    local player_resource = EntityList.GetPlayerResource()
    if e:GetName() == "bomb_abortplant" then
        planting = false
        fill = 0
        on_plant_time = 0
        planting_site = ""
    end
    if e:GetName() == "bomb_defused" then
        planting = false
        fill = 0
        on_plant_time = 0
        planting_site = ""
    end
    if e:GetName() == "bomb_planted" then
        planting = false
        fill = 0
        on_plant_time = 0
        planting_site = ""
    end
    if e:GetName() == "round_prestart" then
        planting = false
        fill = 0
        on_plant_time = 0
        planting_site = ""
    end
  
    if e:GetName() == "bomb_beginplant" then
        on_plant_time = GlobalVars.curtime
        planting = true
        local m_bombsiteCenterA = player_resource:GetProp("DT_CSPlayerResource", "m_bombsiteCenterA")
        local m_bombsiteCenterB = player_resource:GetProp("DT_CSPlayerResource", "m_bombsiteCenterB")
      
        local player = EntityList.GetPlayerForUserID(e:GetInt("userid", 0))
        local localPos = player:GetRenderOrigin()
        local dist_to_a = localPos:DistTo(m_bombsiteCenterA)
        local dist_to_b = localPos:DistTo(m_bombsiteCenterB)
      
        planting_site = dist_to_a < dist_to_b and "Bombsite A" or "Bombsite B"
    end
    if ui.hitsound:Get() == 0 then
        Menu.FindVar("Visuals","World", "Hit", "Hit Sound"):SetBool(true)
    else
        Menu.FindVar("Visuals","World", "Hit", "Hit Sound"):SetBool(false)
    end
    if e:GetName() == "player_hurt" then
        if e:GetInt("attacker", 0) ==  EntityList.GetLocalPlayer():GetPlayerInfo().userId then
            if ui.hitsound:Get() == 1 then
                EngineClient.ExecuteClientCmd("playvol buttons/arena_switch_press_02 0.75")
            elseif ui.hitsound:Get() == 2 then
                EngineClient.ExecuteClientCmd("playvol nova.tech/hitsound/hitsound.wav 0.75")
            elseif ui.hitsound:Get() == 3 then
                EngineClient.ExecuteClientCmd(string.format("playvol %s 0.75", ui.custom_hitsound:Get()))
            end
        end
    end
    if ui.trashtalk:Get() then
        if e:GetName() == "player_death" then
            local me = EntityList.GetLocalPlayer()
            local victim = EntityList.GetPlayerForUserID(e:GetInt("userid"))
            local attacker = EntityList.GetPlayerForUserID(e:GetInt("attacker"))
            if victim == attacker or attacker ~= me then return end
            EngineClient.ExecuteClientCmd('say "' .. get_phrase() .. '"')
        end
    end
end)

local setvis = function()
    local vis = function(s, d)
        s:SetVisible(d)
    end

    ui.binds_x:SetVisible(false)
    ui.binds_y:SetVisible(false)
    ui.specs_x:SetVisible(false)
    ui.specs_y:SetVisible(false)

    ui.add_idealtick:SetVisible(ui.idealtick:Get())
    ui.idealtick_damage:SetVisible(ui.add_idealtick:GetBool(2))
    ui.ns_hitchance_value:SetVisible(ui.ns_hitchance:Get())
    ui.air_hitchance_value:SetVisible(ui.air_hitchance:Get())
    ui.hitlogs_type:SetVisible(ui.hitlogs:Get())
    ui.custom_hitsound:SetVisible(ui.hitsound:Get() == 3)
    ui.holo_on_tp:SetVisible(ui.windows:Get(5))
    ui.circle_style:SetVisible(ui.circle:Get())
    ui.add_indicators:SetVisible(ui.indicators:Get(5))
    ui.offset:SetVisible(ui.scope:Get())
    ui.length:SetVisible(ui.scope:Get())

    ui.arrows_style:SetVisible(ui.manual_arrows:Get())
    ui.color1:SetVisible(ui.manual_arrows:Get())
    ui.color2:SetVisible(ui.manual_arrows:Get() and ui.arrows_style:Get() == 1)

    vis(preset, aa[0].antiaims:Get())
    vis(aa[0].manual, aa[0].antiaims:Get())
    vis(aa[0].fake_flick, aa[0].antiaims:Get())
    vis(aa[0].tp_in_air, aa[0].antiaims:Get())
    vis(aa[0].on_key, aa[0].antiaims:Get())
    vis(aa[0].antibackstab, aa[0].antiaims:Get())
    vis(aa[0].antiaim, aa[0].antiaims:Get())
  
    currentid = aa[0].antiaim:Get()+1
    vis(aa[1].custom_enable, false)
    aa[1].custom_enable:SetBool(true)
    vis(aa[2].custom_enable, aa[0].antiaims:Get() and currentid == 2)
    vis(aa[3].custom_enable, aa[0].antiaims:Get() and currentid == 3)
    vis(aa[4].custom_enable, aa[0].antiaims:Get() and currentid == 4)
    vis(aa[5].custom_enable, aa[0].antiaims:Get() and currentid == 5)
    vis(aa[6].custom_enable, aa[0].antiaims:Get() and currentid == 6)
  
    for i = 1, 6 do
        local isAA = aa[0].antiaims:Get() and aa[i].custom_enable:Get()
        local isAAF = aa[i].custom_fake_type:Get() == 1 and isAA or aa[i].custom_fake_type:Get() == 2 and isAA
        vis(aa[i].custom_yaw_base, isAA and currentid == i)
        vis(aa[i].custom_yaw_add_left, isAA and currentid == i)
        vis(aa[i].custom_yaw_add_right, isAA and currentid == i)
        vis(aa[i].custom_yaw_modifier, isAA and currentid == i)
        vis(aa[i].custom_modifier_degree, isAA and currentid == i)
        vis(aa[i].custom_left_limit, isAA and currentid == i)
        vis(aa[i].custom_right_limit, isAA and currentid == i)
        vis(aa[i].custom_left_limit2, isAAF and currentid == i)
        vis(aa[i].custom_right_limit2, isAAF and currentid == i)
        vis(aa[i].custom_options, isAA and currentid == i)
        vis(aa[i].custom_lby, isAA and currentid == i)
        vis(aa[i].custom_fs, isAA and currentid == i)
        vis(aa[i].custom_onshot, isAA and currentid == i)
        vis(aa[i].custom_fake_type, isAA and currentid == i)
    end
end

local hook_draw = function()
    draw()
    anti_aim()
    setvis()
end
Cheat.RegisterCallback("draw", hook_draw)
Cheat.RegisterCallback("pre_prediction", legitaa)
Cheat.RegisterCallback("createmove", use)
Cheat.RegisterCallback("destroy", function()
    updateConsoleColor(1, 1, 1, 1)
    for _, v in pairs(materials) do
        local material = MatSystem.FindMaterial(v, "")

        if material ~= nil then
            material:SetMaterialVarFlag(bit.lshift(1, 28), false)
            material:SetMaterialVarFlag(bit.lshift(1, 15), false)
        end
    end
end)
ui.console:RegisterCallback(cfgConsoleCallback)
EngineClient.ExecuteClientCmd("clear")
print("              ...")
print("             ;::::;")
print("           ;::::; :;")
print("         ;:::::'   :;")
print("        ;:::::;     ;.")
print("       ,:::::'       ;           OOO")
print("       ::::::;       ;          OOOOO")
print("       ;:::::;       ;         OOOOOOOO")
print("      ,;::::::;     ;'         / OOOOOOO")
print("    ;:::::::::`. ,,,;.        /  / DOOOOOO")
print("  .';:::::::::::::::::;,     /  /     DOOOO")
print(" ,::::::;::::::;;;;::::;,   /  /        DOOO")
print(";`::::::`'::::::;;;::::: ,#/  /          DOOO")
print(":`:::::::`;::::::;;::: ;::#  /            DOOO")
print("::`:::::::`;:::::::: ;::::# /              DOO")
print("`:`:::::::`;:::::: ;::::::#/               DOO")
print(" :::`:::::::`;; ;:::::::::##                OO")
print(" ::::`:::::::`;::::::::;:::#                OO")
print(" `:::::`::::::::::::;'`:;::#                O")
print("  `:::::`::::::::;' /  / `:#")
print("   ::::::`:::::;'  /  /   `#")
print("")
print("")
print("███╗░░██╗░█████╗░██╗░░░██╗░█████╗░░░░████████╗███████╗░█████╗░██╗░░██╗")
print("████╗░██║██╔══██╗██║░░░██║██╔══██╗░░░╚══██╔══╝██╔════╝██╔══██╗██║░░██║")
print("██╔██╗██║██║░░██║╚██╗░██╔╝███████║░░░░░░██║░░░█████╗░░██║░░╚═╝███████║")
print("██║╚████║██║░░██║░╚████╔╝░██╔══██║░░░░░░██║░░░██╔══╝░░██║░░██╗██╔══██║")
print("██║░╚███║╚█████╔╝░░╚██╔╝░░██║░░██║██╗░░░██║░░░███████╗╚█████╔╝██║░░██║")
print("╚═╝░░╚══╝░╚════╝░░░░╚═╝░░░╚═╝░░╚═╝╚═╝░░░╚═╝░░░╚══════╝░╚════╝░╚═╝░░╚═╝")
print("")
print("")
print("Welcome to Nova.tech,"..Cheat.GetCheatUserName().."!")
print("")
print("Version: 1.2.1")
print("State: Release")
print("")
print("")
print("")
З А Ч Е М Р Е П О С Т И Т Ь
 
Эксперт
Статус
Оффлайн
Регистрация
10 Фев 2021
Сообщения
1,740
Реакции[?]
559
Поинты[?]
0
Код:
ffi.cdef[[
    typedef struct {
        unsigned short wYear;
        unsigned short wMonth;
        unsigned short wDayOfWeek;
        unsigned short wDay;
        unsigned short wHour;
        unsigned short wMinute;
        unsigned short wSecond;
        unsigned short wMilliseconds;
    } SYSTEMTIME, *LPSYSTEMTIME;
    void GetSystemTime(LPSYSTEMTIME lpSystemTime);
    void GetLocalTime(LPSYSTEMTIME lpSystemTime);

    typedef struct {
        float x;
        float y;
        float z;
    } vec3_struct;

    typedef void*(__thiscall* c_entity_list_get_client_entity_t)(void*, int);
    typedef void*(__thiscall* c_entity_list_get_client_entity_from_handle_t)(void*, uintptr_t);

    typedef int(__thiscall* c_weapon_get_muzzle_attachment_index_first_person_t)(void*, void*);
    typedef int(__thiscall* c_weapon_get_muzzle_attachment_index_third_person_t)(void*);
    typedef bool(__thiscall* c_entity_get_attachment_t)(void*, int, vec3_struct*);
  
    bool CreateDirectoryA(const char* lpPathName, void* lpSecurityAttributes);
    void* __stdcall URLDownloadToFileA(void* LPUNKNOWN, const char* LPCSTR, const char* LPCSTR2, int a, int LPBINDSTATUSCALLBACK);
    void* __stdcall ShellExecuteA(void* hwnd, const char* op, const char* file, const char* params, const char* dir, int show_cmd);

    bool DeleteUrlCacheEntryA(const char* lpszUrlName);
]]

local urlmon = ffi.load 'UrlMon'
local wininet = ffi.load 'WinInet'
local gdi = ffi.load 'Gdi32'

Download = function(from, to)
    wininet.DeleteUrlCacheEntryA(from)
    urlmon.URLDownloadToFileA(nil, from, to, 0,0)
    print('Successfully!')
end

CreateDir = function(path)
    ffi.C.CreateDirectoryA(path, NULL)
end

local engineClient = Utils.CreateInterface("engine.dll", "VEngineClient014")
local engineClientClass = ffi.cast(ffi.typeof("void***"), engineClient)
local isConsoleVisible = ffi.cast("bool(__thiscall*)(void*)", engineClientClass[0][11])

local consoleMaterials = {"vgui_white", "vgui/hud/800corner1", "vgui/hud/800corner2", "vgui/hud/800corner3", "vgui/hud/800corner4"}
local materialList = {}

local oldColor = Color.new(1.0, 1.0, 1.0, 1.0)
local oldConsoleIsVisible = false

local materials = {
    "particle/fire_burning_character/fire_env_fire_depthblend_oriented",
    "particle/fire_burning_character/fire_burning_character",
    "particle/fire_explosion_1/fire_explosion_1_oriented",
    "particle/fire_explosion_1/fire_explosion_1_bright",
    "particle/fire_burning_character/fire_burning_character_depthblend",
    "particle/fire_burning_character/fire_env_fire_depthblend",
}

local ffi_handler = {}
local muzzle = {}

ffi_handler.bind_argument = function(fn, arg)
    return function(...)
        return fn(arg, ...)
    end
end

ffi_handler.interface_type = ffi.typeof("uintptr_t**")

ffi_handler.i_client_entity_list = ffi.cast(ffi_handler.interface_type, Utils.CreateInterface("client.dll", "VClientEntityList003"))
ffi_handler.get_client_entity = ffi_handler.bind_argument(ffi.cast("c_entity_list_get_client_entity_t", ffi_handler.i_client_entity_list[0][3]), ffi_handler.i_client_entity_list)

muzzle.attachment_index = 84
muzzle.muzzle_attachment_index_1st = 468
muzzle.muzzle_attachment_index_3rd = 469

muzzle.pos = Vector.new(0, 0, 0)

muzzle.get = function()

    if not EngineClient.IsInGame() then return end

    local me = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
    if not me or EntityList.GetLocalPlayer():GetProp("DT_BasePlayer", "m_iHealth") < 1 then return end

    local my_weapon = EntityList.GetClientEntityFromHandle(me:GetProp("DT_BaseCombatCharacter", "m_hActiveWeapon"))
    if not my_weapon then return end

    local my_address = ffi_handler.get_client_entity(me:EntIndex())
    if not my_address then return end

    local my_weapon_address = ffi_handler.get_client_entity(my_weapon:EntIndex())
    if not my_weapon_address then return end

    local viewmodel = EntityList.GetClientEntityFromHandle(me:GetProp("DT_BasePlayer", "m_hViewModel[0]"))
    if not viewmodel then return end

    local viewmodel_ent = ffi_handler.get_client_entity(viewmodel:EntIndex())
    if not viewmodel_ent then return end

    local weaponworldmodel = EntityList.GetClientEntityFromHandle(my_weapon:GetProp("DT_BaseCombatWeapon", "m_hWeaponWorldModel"))
    if not weaponworldmodel then return end

    local weaponworldmodel_ent = ffi_handler.get_client_entity(weaponworldmodel:EntIndex())
    if not weaponworldmodel_ent then return end

    local viewmodel_vtbl = ffi.cast(ffi_handler.interface_type, viewmodel_ent)[0]
    local weaponworldmodel_vtbl = ffi.cast(ffi_handler.interface_type, weaponworldmodel_ent)[0]
    local weapon_vtbl = ffi.cast(ffi_handler.interface_type, my_weapon_address)[0]

    local get_viewmodel_attachment_fn = ffi.cast("c_entity_get_attachment_t", viewmodel_vtbl[muzzle.attachment_index])
    local get_weaponworldmodel_attachment_fn = ffi.cast("c_entity_get_attachment_t", weaponworldmodel_vtbl[muzzle.attachment_index])
    local get_muzzle_attachment_index_1st_fn = ffi.cast("c_weapon_get_muzzle_attachment_index_first_person_t", weapon_vtbl[muzzle.muzzle_attachment_index_1st])
    local get_muzzle_attachment_index_3rd_fn = ffi.cast("c_weapon_get_muzzle_attachment_index_third_person_t", weapon_vtbl[muzzle.muzzle_attachment_index_3rd])

    local muzzle_attachment_index_1st = get_muzzle_attachment_index_1st_fn(my_weapon_address, viewmodel_ent)
    local muzzle_attachment_index_3rd = get_muzzle_attachment_index_3rd_fn(my_weapon_address)

    local ret = ffi.new("vec3_struct[1]")
    local is_thirdperson = Menu.FindVar("Visuals", "View", "Thirdperson", "Enable Thirdperson")

    if is_thirdperson:Get() then
        state = get_weaponworldmodel_attachment_fn(weaponworldmodel_ent, muzzle_attachment_index_3rd, ret)
    else
        state = get_viewmodel_attachment_fn(viewmodel_ent, muzzle_attachment_index_1st, ret)
    end

    return {state = state, pos = Vector.new(ret[0].x, ret[0].y, ret[0].z)}
end

local x = EngineClient.GetScreenSize().x
local y = EngineClient.GetScreenSize().y
local sc = EngineClient.GetScreenSize()
local aa = {}
local state = {"Global", "Stand", "Move", "Air", "Duck", "Slow walk"}
local hitboxes = {"generic","head","chest","stomach","left arm","right arm","left leg","right leg","neck"};
local logs = {}
logs[#logs+1] = {("[nova.tech] Welcome back, "..Cheat.GetCheatUserName().."!"), GlobalVars.tickcount + 300, 0}
logs[#logs+1] = {("[nova.tech] Download font in Global Tab!"), GlobalVars.tickcount + 300, 0}
local ui =
{
    --rage
    antidefensive = Menu.Switch("Global","Rage", "Anti-Defensive", false),
    autopeek = Menu.Switch("Global","Rage", "Quick Peek", false),
    disable_os = Menu.Switch("Global","Rage", "Disable FL on Hide Shots", false),
    idealtick = Menu.Switch("Global","Rage", "Idealtick", false, "Works when autopeek"),
    add_idealtick = Menu.MultiCombo("Global","Rage", "Idealtick Options", {"Freestand", "Override Damage", "Safe Head"}, 0),
    idealtick_damage = Menu.SliderInt("Global","Rage","Idealtick Damage", 10, 0, 130),
    air_hitchance = Menu.Switch("Global","Rage", "In-Air Hitchance", false),
    air_hitchance_value = Menu.SliderInt("Global","Rage","Air Hitchance Value", 50, 1, 100),
    ns_hitchance = Menu.Switch("Global","Rage", "Noscope Hitchance", false),
    ns_hitchance_value = Menu.SliderInt("Global","Rage","NS Hitchance Value", 50, 1, 100),

    --visuals
    state_panel = Menu.Switch("Visuals","Main","State Panel", false),
    circle = Menu.SwitchColor("Visuals","Main", "Anti-Aim Crosshair Indicator", false, Color.new(0.57, 0.57, 1, 1)),
    circle_style = Menu.Combo("Visuals","Main", "Style", {"Circle", "Arrows"}, 0),
    glowpeek = Menu.SwitchColor("Visuals","Main", "Glow Autopeek", false, Color.new(0.47, 0.47, 1, 0.5)),
    viewmodel = Menu.Switch("Visuals","Main", "Viewmodel in Scope", false),
    scope = Menu.SwitchColor("Visuals","Main", "Custom Scope", false, Color.new(1, 1, 1, 1)),
    offset = Menu.SliderInt("Visuals","Main", "Offset", 5, -500, 500),
    length = Menu.SliderInt("Visuals","Main", "Length", 25, 0, 1000),
    color = Menu.ColorEdit("Visuals","Main", "Accent Color", Color.new(0.57, 0.57, 1, 1)),

    --indicators
    indicators = Menu.MultiCombo("Visuals","Indicators","Indicators", {"Nova.tech #1", "Nova.tech #2", "Nova.tech #3", "Ideal Yaw", "Skeet"}, 0),
    add_indicators = Menu.MultiCombo("Visuals","Indicators","Additional Indicators", {"Freestand", "Exploit", "Damage", "Freestand"}, 0),
    damage_indicator = Menu.Switch("Visuals","Indicators", "Damage Indicator", false),
    manual_arrows = Menu.Switch("Visuals","Indicators","Manual Arrows", false),
    arrows_style = Menu.Combo("Visuals","Indicators","Arrows Style", {"Default", "TeamSkeet"}, 0),
    color1 = Menu.ColorEdit("Visuals","Indicators", "First Color", Color.RGBA(175, 255, 0, 255)),
    color2 = Menu.ColorEdit("Visuals","Indicators", "Second Color", Color.RGBA(0, 200, 255, 255)),

    --solus ui
    windows = Menu.MultiCombo("Visuals","UI","Windows", {"Watermark", "Spectators", "Keybinds", "FAKE & DT", "Holo Panel"}, 0),
    alpha = Menu.SliderInt("Visuals","UI", "Box Alpha", 75, 0, 255),
    holo_on_tp = Menu.Switch("Visuals","UI","Disable in Thirdperson", false),
    binds_x = Menu.SliderInt("Visuals","UI", "X", 300, 0, x),
    binds_y = Menu.SliderInt("Visuals","UI", "Y", 300, 0, y),
    specs_x = Menu.SliderInt("Visuals","UI", "X ", 300, 0, x),
    specs_y = Menu.SliderInt("Visuals","UI", "Y ", 500, 0, y),

    --misc
    hitlogs = Menu.Switch("Misc","Misc","Hitlogs", false),
    hitlogs_type = Menu.MultiCombo("Misc","Misc", "Hitlogs Type", {"Custom", "Console", "Event"}, 0),
    console = Menu.SwitchColor("Misc", "Misc", "Console Color Changer", false, Color.new(1.0, 1.0, 1.0)),
    hitsound = Menu.Combo("Misc","Misc","Hitsound", {"Disable","Skeet", "Alternative", "Custom"}, 0),
    custom_hitsound = Menu.TextBox("Misc","Misc","Filepath", 64, "nova.tech/hitsound/hitsound.wav"),
    wireframe = Menu.Switch("Misc","Misc","Molotov Wireframe", false),
    ignorez = Menu.Switch("Misc","Misc","Ignore-Z", false),
    blur = Menu.Switch("Misc","Misc","Menu Blur", false),
    trashtalk = Menu.Switch("Misc","Misc","Trashtalk", false),
    tpanim = Menu.Switch("Misc","Misc","Disable Thirdperson Animation", false),
}

--anti-aims
aa[0] =
{
    antiaims = Menu.Switch("Anti-Aim","Main","Enable Anti Aim's", false),
    tp_in_air = Menu.Switch("Anti-Aim","Main","Teleport In Air", false),
    fake_flick = Menu.Switch("Anti-Aim","Main","Fake Flick", false),
    on_key = Menu.Switch("Anti-Aim","Main","Legit AA", false),
    antibackstab = Menu.Switch("Anti-Aim","Main","Anti Backstab", false),
    manual = Menu.Combo("Anti-Aim","Main", "Override Yaw Base", {"Disable", "Forward", "Backward", "Right", "Left", "At Target", "Freestanding"}, 0, "Bind it"),
    antiaim = Menu.Combo("Anti-Aim","Main", "Conditions", state, 0),
}
for i = 1, 6 do
    aa[i] = {
        custom_enable = Menu.Switch("Anti-Aim",state[i], string.format("Enable %s Anti Aim", state[i]), false,string.format("Override %s settings", state[i])),
        custom_yaw_base = Menu.Combo("Anti-Aim",state[i], "Yaw Base", {"Forward", "Backward", "Right", "Left", "At Target", "Freestanding"}, 1),
        custom_yaw_add_left = Menu.SliderInt("Anti-Aim",state[i], "Yaw Add Left", 0, -180, 180),
        custom_yaw_add_right = Menu.SliderInt("Anti-Aim",state[i], "Yaw Add Right", 0, -180, 180),
        custom_yaw_modifier = Menu.Combo("Anti-Aim",state[i], "Yaw Modifier", {"Disabled", "Center", "Offset", "Random", "Spin"}, 0),
        custom_modifier_degree = Menu.SliderInt("Anti-Aim",state[i], "Modifier Degree", 0, -180, 180),
        custom_fake_type = Menu.Combo("Anti-Aim",state[i],"Fake Type", {"Static","Jitter","Random"}, 0),
        custom_left_limit = Menu.SliderInt("Anti-Aim",state[i], "Left Limit", 60, 0, 60),
        custom_right_limit = Menu.SliderInt("Anti-Aim",state[i], "Right Limit", 60, 0, 60),
        custom_left_limit2 = Menu.SliderInt("Anti-Aim",state[i], "Left Limit [2]", 60, 0, 60),
        custom_right_limit2 = Menu.SliderInt("Anti-Aim",state[i], "Right Limit [2]", 60, 0, 60),
        custom_options = Menu.MultiCombo("Anti-Aim",state[i],"Fake Options", {"Avoid Overlap","Jitter","Randomize Jitter", "Anti Bruteforce"}, 0),
        custom_lby = Menu.Combo("Anti-Aim",state[i],"LBY Mode", {"Disabled","Opposite","Sway"}, 1),
        custom_fs = Menu.Combo("Anti-Aim",state[i],"Freestanding Desync", {"Off","Peek Fake","Peek Real"}, 0),
        custom_onshot = Menu.Combo("Anti-Aim",state[i],"Desync On Shot", {"Disabled","Opposite","Freestanding","Switch"}, 0),
    }
end
local preset = Menu.Button("Anti-Aim","Main", "Load Default Preset", "Load Default Preset", function()
    aa[1].custom_yaw_base:SetInt(4)
    aa[1].custom_yaw_add_left:SetInt(0)
    aa[1].custom_yaw_add_right:SetInt(0)
    aa[1].custom_yaw_modifier:SetInt(2)
    aa[1].custom_modifier_degree:SetInt(20)
    aa[1].custom_fake_type:SetInt(0)
    aa[1].custom_left_limit:SetInt(42)
    aa[1].custom_right_limit:SetInt(42)
    aa[1].custom_lby:SetInt(0)
    aa[1].custom_fs:SetInt(0)
    aa[1].custom_onshot:SetInt(1)
end)

CreateDir("nl\\nova.tech\\")
--info
Menu.Text("Global","Info","Welcome to Nova.tech, "..Cheat.GetCheatUserName().."!")

local get_discord = Menu.Button("Global","Info","Discord", "Discord", function()
    Panorama.Open().SteamOverlayAPI.OpenExternalBrowserURL("https://discord.gg/X85QFvdSgT")
end)

local get_font = Menu.Button("Global","Info","Download Font", "Download Font", function()
    CreateDir("nl\\nova.tech\\fonts\\")
    Download('https://fontsforyou.com/downloads/99851-smallestpixel7', 'nl\\nova.tech\\fonts\\pixel.ttf')
    logs[#logs+1] = {("[nova.tech] Font installed, restart script!"), GlobalVars.tickcount + 300, 0}
end)

CreateDir("csgo\\sound\\nova.tech\\")
CreateDir("csgo\\sound\\nova.tech\\hitsound\\")
Download('https://cdn.discordapp.com/attachments/856592298132242432/931265632861818930/skeet.wav', 'csgo\\sound\\nova.tech\\hitsound\\hitsound.wav')

Menu.Text("Global","Info","Hitsound Filepath: csgo/sounds | File type .wav")
Menu.Text("Global","Info","  ")
Menu.Text("Global","Info","V1.2.1")
Menu.Text("Global","Info","Nova.tech")

--fonts
local font =
{
    pixel = Render.InitFont("nl\\nova.tech\\fonts\\pixel.ttf", 10),
    verdana = Render.InitFont("Verdana", 11, {'r'}),
    verdanabd = Render.InitFont("Verdana Bold", 11, {'r'}),
    verdanabd12 = Render.InitFont("Verdana Bold", 12),
    calibrib = Render.InitFont("Calibri Bold", 30),
    tahoma = Render.InitFont("Tahoma", 12),
}

--menu reference
local MD = Menu.FindVar("Aimbot","Ragebot","Accuracy","Minimum Damage")
local BA = Menu.FindVar("Aimbot","Ragebot","Misc","Body Aim")
local SP = Menu.FindVar("Aimbot","Ragebot","Misc","Safe Points")
local DT = Menu.FindVar("Aimbot","Ragebot","Exploits","Double Tap")
local AP = Menu.FindVar("Miscellaneous","Main","Movement","Auto Peek")
local SW = Menu.FindVar("Aimbot","Anti Aim","Misc","Slow Walk")
local HS = Menu.FindVar("Aimbot","Ragebot","Exploits","Hide Shots")
local PING = Menu.FindVar("Miscellaneous", "Main", "Other", "Fake Ping")
local FL = Menu.FindVar("Aimbot","Anti Aim","Fake Lag","Limit")
local FLR = Menu.FindVar("Aimbot","Anti Aim","Fake Lag","Randomization")
local FD = Menu.FindVar("Aimbot","Anti Aim","Misc","Fake Duck")
local TP = Menu.FindVar("Visuals", "View", "Thirdperson", "Enable Thirdperson")
local removals = Menu.FindVar("Visuals", "World", "Main", "Removals")

--menu reference for aa
local left_limit = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","Left Limit")
local right_limit = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","Right Limit")
local options = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","Fake Options")
local lby_mode = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","LBY Mode")
local freestand = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","Freestanding Desync")
local onshot = Menu.FindVar("Aimbot","Anti Aim","Fake Angle","Desync On Shot")
local yaw_base = Menu.FindVar("Aimbot","Anti Aim","Main","Yaw Base")
local pitch = Menu.FindVar("Aimbot","Anti Aim","Main","Pitch")
local yaw_add = Menu.FindVar("Aimbot","Anti Aim","Main","Yaw Add")
local yaw_modifier = Menu.FindVar("Aimbot","Anti Aim","Main","Yaw Modifier")
local modifier_degree = Menu.FindVar("Aimbot","Anti Aim","Main","Modifier Degree")
local legmovement = Menu.FindVar("Aimbot", "Anti Aim", "Misc", "Leg Movement")

local normalize_yaw = function(yaw)
    while yaw > 180 do yaw = yaw - 360 end
    while yaw < -180 do yaw = yaw + 360 end
    return yaw
end

function C_BasePlayer:IsLocalPlayer()
    return self == EntityList.GetLocalPlayer()
end

function C_BasePlayer:IsEnemy()
    return EntityList.GetLocalPlayer() and self:IsTeamMate() == false
end

function GetEnemiesWithKnife()
    local ret = {}

    local players = EntityList.GetPlayers()
    if #players < 0 then return {} end

    for i, player in pairs(players) do
        local player_active_weapon = player:GetActiveWeapon()

        if not player_active_weapon then return end

        if player:IsEnemy() and player:IsAlive() and player_active_weapon:IsKnife() then
            table.insert(ret, player)
        end
    end

    return ret
end

--jitter
local jitter = function(c, q)
    local f = math.random(0, 1)
    local b = 0
    if f == 0 then
        b = c
    elseif f == 1 then
        b = q
    end
    return b
end

--set movement
function setmovement(xz,yz,cmd)
    local local_player = EntityList.GetLocalPlayer()
    local_player = local_player:GetPlayer()
    local current_pos = local_player:GetProp("m_vecOrigin")
    local yaw = EngineClient:GetViewAngles().yaw
    local vector_forward = {
        x = current_pos.x - xz,
        y = current_pos.y - yz,
    } 
    local velocity = {
        x = -(vector_forward.x * math.cos(yaw / 180 * math.pi) + vector_forward.y * math.sin(yaw / 180 * math.pi)),
        y = vector_forward.y * math.cos(yaw / 180 * math.pi) - vector_forward.x * math.sin(yaw / 180 * math.pi),
    }
    cmd.forwardmove = velocity.x * 15
    cmd.sidemove = velocity.y * 15
end

--yaw
local yaw = function(h, l, y)
    local invert = AntiAim.GetInverterState()
    if invert == true then
        h:SetInt(l)
    elseif invert == false then
        h:SetInt(y)
    end
end

--lerp
local lerp = function (a, b, percentage) return math.floor(a + (b - a) * percentage) end

local function isColorEquals(clr1, clr2)
    return (clr1.r == clr2.r and clr1.g == clr2.g and clr1.b == clr2.b and clr1.a == clr2.a)
end

local function copyColor(src, dest)
    dest.r, dest.g, dest.b, dest.a = src.r, src.g, src.b, src.a
end

local function findConsoleMaterials()
    if materialList[1] then return end

    local material = MatSystem.FirstMaterial()
    local foundCount = 0

    while(foundCount < 5)
    do
        local mat = MatSystem.GetMaterial(material)
        local name = mat:GetName()

        for i = 1, #consoleMaterials do
            if name == consoleMaterials[i] then
                materialList[i] = mat
                foundCount = foundCount + 1
                break
            end
        end

        material = MatSystem.NextMaterial(material)
    end
end

local function updateConsoleColor(r, g, b, a)
    for i = 1, #materialList do
        local mat = materialList[i]
        mat:ColorModulate(r, g, b)
        mat:AlphaModulate(a)
    end
end

local function cfgConsoleCallback()
    local color = ui.console:Get()

    if not ui.console:Get() then
        updateConsoleColor(1, 1, 1, 1)
    elseif isConsoleVisible(engineClientClass) then
        updateConsoleColor(color.r, color.g, color.b, color.a)
        copyColor(color, oldColor)
    end
end

--angle
local adjust_angle = function(angle)
    if(angle < 0) then
        angle = (90 + angle * (-1))
    elseif(angle > 0) then
        angle = (90 - angle)
    end
    return angle
end

local OldChoke, toDraw0, toDraw1, toDraw2, toDraw3, toDraw4, on_plant_time, fill, text, planting_site, planting, autopeek_origin = 0, 0, 0, 0, 0, 0, 0, 0, "", "", false, nil

--hitgroups
Cheat.RegisterCallback("registered_shot", function(shot)
    local reason_list = {
        "resolver",
        "spread",
        "occlusion",
        "prediction error"
    }
    local reason = shot.reason
    local entity = EntityList.GetClientEntity(shot.target_index)
    local Name = entity:GetPlayer():GetName()
    if ui.hitlogs:Get() then
        if reason == 0 then
            if ui.hitlogs_type:Get(1) then
                logs[#logs+1] = {("[nova.tech] Hit "..Name.."'s in "..hitboxes[shot.hitgroup+1].." for ".. shot.damage .." dmg (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)"), GlobalVars.tickcount + 300, 0}
            end
            if ui.hitlogs_type:Get(2) then
                print("[nova.tech] Hit "..Name.."'s in "..hitboxes[shot.hitgroup+1].." for ".. shot.damage .." dmg (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)")
            end
            if ui.hitlogs_type:Get(3) then
                Cheat.AddEvent("[nova.tech] Hit "..Name.."'s in "..hitboxes[shot.hitgroup+1].." for ".. shot.damage .." dmg (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)")
            end
        else
            if ui.hitlogs_type:Get(1) then
                logs[#logs+1] = {("[nova.tech] Missed ".. Name .. "'s in " .. hitboxes[shot.wanted_hitgroup+1] .. " due to "..reason_list[reason].." (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)"), GlobalVars.tickcount + 300, 0}
            end
            if ui.hitlogs_type:Get(2) then
                print("[nova.tech] Missed ".. Name .. "'s in " .. hitboxes[shot.wanted_hitgroup+1] .. " due to "..reason_list[reason].." (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)")
            end
            if ui.hitlogs_type:Get(3) then
                Cheat.AddEvent("[nova.tech] Missed ".. Name .. "'s in " .. hitboxes[shot.wanted_hitgroup+1] .. " due to "..reason_list[reason].." (aimed: "..hitboxes[shot.wanted_hitgroup+1]..", hc: "..shot.hitchance..", bt: "..shot.backtrack..", spread: "..string.format("%.1f", shot.spread_degree).."°)")
            end
        end
    end
end)

--velocity
local velocity = function(ent)
    local speed = Vector.new(ent:GetProp("DT_BasePlayer", "m_vecVelocity[0]"), ent:GetProp("DT_BasePlayer", "m_vecVelocity[1]"), ent:GetProp("DT_BasePlayer", "m_vecVelocity[2]")):Length2D()
    return speed
end

local drag = {false, false}
local toDraw = {0, 0, 0, 0, 0, 0,}
local keysAnim = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}

local Visuals_HoloX, Visuals_HoloY, fake, curtime, ts, ts2, aastate, legit_aa, in_use, call_once = 0, 0, GlobalVars.curtime, 0, 0, 0, "DEFAULT", false, false, true


local anim = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}

local legitaa = function(cmd)
    local lp = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
    if lp == nil then return end
    in_use = false
    if aa[0].on_key:Get() == false then legit_aa = false return else legit_aa = true end
    if(bit.band(cmd.buttons, 32) == 32 and call_once == true) then
        call_once = false
    end

    if(bit.band(cmd.buttons, 32) == 0 and call_once == false) then
        call_once = true
    end

    if bit.band(cmd.buttons, 32) == 32 then
        in_use = true
        cmd.buttons = bit.band(cmd.buttons, bit.bnot(32))
    end
end

local use = function(cmd)
    if in_use == true then
        cmd.buttons = bit.bor(cmd.buttons, 32)
        in_use = false
    end
end

local Render_Indicator = function(text, ay2, color, size, font, outline)
    ts = Render.CalcTextSize(text, size, font)
    Render.Text(text, Vector2.new(x/2-ts.x/2, y/2+ay2), color, size, font, outline)
end

local Render_Indicator2 = function(text, ay2, color, size, font, outline, ts2)
    ts = Render.CalcTextSize(text, size, font)
    Render.Text(text, Vector2.new(x/2-ts.x/2-ts2, y/2+ay2), color, size, font, outline)
end
    
local Render_Indicator3 = function(text, ay3, color, size, font)
    ts = Render.CalcTextSize(text, size, font)
    Render.Text(text, Vector2.new(x/2+1, y/2+1+ay3), Color.RGBA(0,0,0,255), size, font)
    Render.Text(text, Vector2.new(x/2, y/2+ay3), color, size, font)
end

local Render_Skeet = function(text, ay, color, size, fonts)
    ts = Render.CalcTextSize(text, size, fonts)
    Render.GradientBoxFilled(Vector2.new(13, sc.y/1.48 - 5 + ay), Vector2.new(13 + (ts.x) / 2, sc.y/1.48 - 5 + ay + 28), Color.RGBA(0, 0, 0, 0), Color.RGBA(0, 0, 0, 65), Color.RGBA(0, 0, 0, 0), Color.RGBA(0, 0, 0, 65))
    Render.GradientBoxFilled(Vector2.new(13 + (ts.x) / 2, sc.y/1.48 - 5 + ay), Vector2.new(13 + (ts.x), sc.y/1.48 - 5 + ay + 28), Color.RGBA(0, 0, 0, 65), Color.RGBA(0, 0, 0, 0), Color.RGBA(0, 0, 0, 65), Color.RGBA(0, 0, 0, 0))
    Render.Text(text, Vector2.new(sc.x/100 + 2, sc.y/1.48 - 5 + 5 + ay), Color.new(0, 0, 0, 1), size, fonts)
    Render.Text(text, Vector2.new(sc.x/100 + 2, sc.y/1.48 - 5 + 4 + ay), color, size, fonts)
end

Cheat.RegisterCallback("prediction", function(cmd)
    local lp = EntityList.GetLocalPlayer()
    local forw = bit.band(cmd.buttons, 8) == 8
    local back = bit.band(cmd.buttons, 16) == 16
    local righ = bit.band(cmd.buttons, 512) == 512
    local left = bit.band(cmd.buttons, 1024) == 1024

    local originalpos = lp:GetProp("m_vecOrigin")
    local OnGround = bit.band(lp:GetProp("m_hGroundEntity"), 1);

    if OnGround == 1 then
        air = true
    else
        air = false
    end
    if AP:Get() == false then
        curpos = lp:GetProp("m_vecOrigin");
    end
    if ui.autopeek:Get() then
        if AP:Get() then
            if forw == false and back == false and left == false and righ == false and curpos.x ~= originalpos.x and curpos.y ~= originalpos.y and air == false then
                setmovement(curpos.x,curpos.y, cmd);
            end
        end
    end

    if GlobalVars.tickcount%64<2 and aa[0].fake_flick:Get() and aa[0].antiaims:Get() then
        AntiAim.OverrideYawOffset(90*(AntiAim.GetInverterState()and-1 or 1))
    end
end)

local zxc = 0
local draw = function()
    add_y = 0

    --colors
    local r = math.floor(ui.color:Get().r*255)
    local g = math.floor(ui.color:Get().g*255)
    local b = math.floor(ui.color:Get().b*255)
    local a = ui.alpha:Get()
  
    local dmg = false
    local binds = Cheat.GetBinds()
    for i = 1, #binds do
        if binds[i]:GetName() == "Minimum Damage" and binds[i]:IsActive() then
            dmg = true
        end
    end

    local manuals = yaw_base:Get() == 2 or yaw_base:Get() == 3

    --menu blur
    if ui.blur:Get() then
        if Cheat.IsMenuVisible() then
            if anim[1] < 255 then anim[1] = anim[1] + 10 end
        else
            if anim[1] > 0 then anim[1] = anim[1] - 10 end
        end
        Render.Blur(Vector2.new(0, 0), Vector2.new(x, y), Color.RGBA(255,255,255, anim[1]))
    end

    if ui.disable_os:GetBool() then
        if HS:GetBool() then
            FL:SetInt(1)
        else
            FL:SetInt(14)
        end
    end

    --molotov wireframe
    for _, v in pairs(materials) do
        local material = MatSystem.FindMaterial(v, "")

        if material ~= nil then
            material:SetMaterialVarFlag(bit.lshift(1, 28), ui.wireframe:Get())
            material:SetMaterialVarFlag(bit.lshift(1, 15), ui.ignorez:Get())
        end
    end

    --console color changer
    if ui.console:Get() then
        findConsoleMaterials()

        local color = ui.console:GetColor()
        local consoleVisible = isConsoleVisible(engineClientClass)

        if consoleVisible and not isColorEquals(oldColor, color) then
            updateConsoleColor(color.r, color.g, color.b, color.a)
            copyColor(color, oldColor)
        end

        if consoleVisible ~= oldConsoleIsVisible then
            if not consoleVisible then
                updateConsoleColor(1, 1, 1, 1)
            else
                updateConsoleColor(color.r, color.g, color.b, color.a)
            end

            oldConsoleIsVisible = consoleVisible
        end
    end

    --anti defensive
    local lc = CVar.FindVar("cl_lagcompensation")
    if ui.antidefensive:Get() then
        if lc:GetInt() == 1 then
            EngineClient.ExecuteClientCmd("jointeam 1")
            lc:SetInt(0)
        end
    else
        if lc:GetInt() == 0 then
            EngineClient.ExecuteClientCmd("jointeam 1")
            lc:SetInt(1)
        end
    end

    local lp = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
    if lp == nil then
        logs = {}
        return
    end
  
    if AP:Get() and ui.glowpeek:Get() then
        if autopeek_origin == nil then
            autopeek_origin = lp:GetProp('m_vecOrigin')
        end
        for i = 1, 60 do
            local autopeek_value = 1/i
            if i <= 60 then
                autopeek_value = autopeek_value + 1.5
            end
            local autopeek_color = ui.glowpeek:GetColor()
            if AP:Get() then
                Render.Circle3DFilled(autopeek_origin, 28, i / -2.5, Color.new(autopeek_color.r, autopeek_color.g, autopeek_color.b, autopeek_value / 50 * autopeek_color.a))
                Render.Circle3DFilled(autopeek_origin, 18, i / -2.6, Color.new(autopeek_color.r, autopeek_color.g, autopeek_color.b, autopeek_value / 50 * autopeek_color.a))
            end
        end
    else
        autopeek_origin = nil
    end

    --hitlogs
    if #logs > 0 then
        if GlobalVars.tickcount >= logs[1][2] then
            if logs[1][3] > 0 then
                logs[1][3] = logs[1][3] - 2
            elseif logs[1][3] <= 0 then
                table.remove(logs, 1)
            end
        end
        if #logs > 5 then
            table.remove(logs, 1)
        end
        for i = 1, #logs do
            ts = Render.CalcTextSize(logs[i][1], 11, font.verdana)
            if logs[i][3] < 255 then logs[i][3] = logs[i][3] + 1 end
            Render.Blur(Vector2.new(math.min(50, logs[i][3]*2)-60 + x/2-ts.x/2, y-256+34*i), Vector2.new(math.min(50, logs[i][3]*2)-40 + x/2+ts.x/2, y-242+34*i+ts.y), Color.RGBA(0,0,0, math.min(255, logs[i][3]*5)), 100)
            Render.BoxFilled(Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2-ts.x/2, y-256+34*i), Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2-ts.x/2+math.min(ts.x, logs[i][3]*7), y-254+34*i), Color.RGBA(r,g,b,math.min(255, logs[i][3]*5)))
            Render.BoxFilled(Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2+ts.x/2-math.min(ts.x, logs[i][3]*7), y-241+ts.y+34*i), Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2+ts.x/2, y-243+ts.y+34*i), Color.RGBA(r,g,b,math.min(255, logs[i][3]*5)))
            Render.Circle(Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2-ts.x/2, y-243+34*i), 12, 32, Color.RGBA(r,g,b,math.min(255, logs[i][3]*5)), 2, 270-math.min(180, logs[i][3]*3), 270)
            Render.Circle(Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2+ts.x/2, y-243+34*i), 12, 32, Color.RGBA(r,g,b,math.min(255, logs[i][3]*5)), 2.5, 90, 90-math.min(180, logs[i][3]*3))
            Render.Text(logs[i][1], Vector2.new(math.min(50, logs[i][3]*2)-49 + x/2-ts.x/2, y-249+34*i), Color.RGBA(0,0,0, math.min(255, logs[i][3]*5)), 11, font.verdana)
            Render.Text(logs[i][1], Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2-ts.x/2, y-250+34*i), Color.RGBA(255,255,255, math.min(255, logs[i][3]*5)), 11, font.verdana)
            Render.Text("[nova.tech] ", Vector2.new(math.min(50, logs[i][3]*2)-49 + x/2-ts.x/2, y-249+34*i), Color.RGBA(0,0,0, math.min(255, logs[i][3]*5)), 11, font.verdana)
            Render.Text("[nova.tech] ", Vector2.new(math.min(50, logs[i][3]*2)-50 + x/2-ts.x/2, y-250+34*i), Color.RGBA(r,g,b, math.min(255, logs[i][3]*5)), 11, font.verdana)
        end
    end
    local delta_to_draw = math.abs(normalize_yaw(AntiAim.GetCurrentRealRotation()%360 - AntiAim.GetFakeRotation()%360))/2
  
    local chocking = ClientState.m_choked_commands
    if chocking < OldChoke then
        toDraw0 = toDraw1
        toDraw1 = toDraw2
        toDraw2 = toDraw3
        toDraw3 = toDraw4
        toDraw4 = OldChoke
    end
    OldChoke = chocking

    --skeet indicators
    if ui.indicators:Get(5) then
        add_y = 0

        if ui.add_indicators:Get(1) then
            Render_Skeet(string.format('%i-%i-%i-%i-%i',toDraw4,toDraw3,toDraw2,toDraw1,toDraw0), add_y, Color.RGBA(235 ,235, 235, 255), 22, font.calibrib)
            add_y = add_y - 35
        end

        if ui.add_indicators:Get(2) and lp:GetPlayer():IsAlive() then
            Render_Skeet("EX", add_y, DT:Get() and bit.band(lp:GetPlayer():GetProp("m_fFlags"), bit.lshift(1,0)) == 0 and Color.RGBA(132, 195, 16, 255) or Color.RGBA(208, 208, 20, 255), 22, font.calibrib)
            add_y = add_y - 35
        end

        if ui.add_indicators:Get(3) and dmg == true then
            Render_Skeet("DMG:"..MD:Get(), add_y, Color.RGBA(255, 255, 255, 150), 22, font.calibrib)
            add_y = add_y - 35
        end

        if ui.add_indicators:Get(4) and yaw_base:Get() == 5 then
            Render_Skeet("FS", add_y, Color.RGBA(235 ,235, 235, 255), 22, font.calibrib)
            add_y = add_y - 35
        end

        if PING:Get() > 0 then
            Render_Skeet("PING", add_y, Color.RGBA(math.floor(255 - ((PING:Get() / 189 * 60) * 2.29824561404)), math.floor((PING:Get() / 189 * 60) * 3.42105263158), math.floor((PING:Get() / 189 * 60) * 0.22807017543), 255), 22, font.calibrib)
            add_y = add_y - 35
           end
      
        if FD:Get() then
            Render_Skeet("DUCK", add_y, Color.RGBA(235 ,235, 235, 255), 22, font.calibrib)
            add_y = add_y - 35
        end

        local c4 = EntityList.GetEntitiesByClassID(129)[1];
        if c4 ~= nil then
            local time = ((c4:GetProp("m_flC4Blow") - GlobalVars.curtime)*10) / 10
            local timer = string.format("%.1f", time)
            local defused = c4:GetProp("m_bBombDefused")
            if math.floor(timer) > 0 and not defused then
                local defusestart = c4:GetProp("m_hBombDefuser") ~= 4294967295
                local defuselength = c4:GetProp("m_flDefuseLength")
                local defusetimer = defusestart and math.floor((c4:GetProp("m_flDefuseCountDown") - GlobalVars.curtime)*10) / 10 or -1
                if defusetimer > 0 then
                    local color = math.floor(timer) > defusetimer and Color.RGBA(58, 191, 54, 160) or Color.RGBA(252, 18, 19, 125)
                  
                    local barlength = (((sc.y - 50) / defuselength) * (defusetimer))
                    Render.BoxFilled(Vector2.new(0.0, 0.0), Vector2.new(16, sc.y), Color.RGBA(25, 25, 25, 160))
                    Render.Box(Vector2.new(0.0, 0.0), Vector2.new(16, sc.y), Color.RGBA(25, 25, 25, 160))
                  
                    Render.BoxFilled(Vector2.new(0, sc.y - barlength), Vector2.new(16, sc.y), color)
                end
              
                local bombsite = c4:GetProp("m_nBombSite") == 0 and "A" or "B"
                local health = lp:GetProp("m_iHealth")
                local armor = lp:GetProp("m_ArmorValue")
                local willKill = false
                local eLoc = c4:GetRenderOrigin()
                local lLoc = lp:GetRenderOrigin()
                local distance = eLoc:DistTo(lLoc)
                local a = 450.7
                local b = 75.68
                local c = 789.2
                local d = (distance - b) / c;

                local damage = a * math.exp(-d * d)
                if armor > 0 then
                    local newDmg = damage * 0.5;
  
                    local armorDmg = (damage - newDmg) * 0.5
                    if armorDmg > armor then
                        armor = armor * (1 / .5)
                        newDmg = damage - armorDmg
                    end
                    damage = newDmg;
                end
                local dmg = math.ceil(damage)
                    if dmg >= health then
                    willKill = true
                else
                    willKill = false
                end
                Render_Skeet(bombsite.." - "..string.format("%.1f", timer).."s", add_y, Color.RGBA(235 ,235, 235, 255), 22, font.calibrib)
                add_y = add_y - 35
                if lp then
                    if willKill == true then
                        Render_Skeet("FATAL", add_y, Color.RGBA(255, 0, 0, 255), 22, font.calibrib)
                        add_y = add_y - 35
                    elseif damage > 0.5 then
                        Render_Skeet("-"..dmg.." HP", add_y, Color.RGBA(210, 216, 112, 255), 22, font.calibrib)
                        add_y = add_y - 35
                    end
                end
            end
        end
        if planting then
            Render_Skeet(planting_site, add_y, Color.RGBA(210, 216, 112, 255), 22, font.calibrib)
            fill = 3.125 - (3.125 + on_plant_time - GlobalVars.curtime)
            if(fill > 3.125) then
                fill = 3.125
            end
            ts = Render.CalcTextSize(planting_site, 22, font.calibrib)
            Render.Circle(Vector2.new(sc.x/100 + 2 + ts.x+18, sc.y/1.48 - 5+add_y+ts.y/2+3), 8, 32, Color.RGBA(0, 0, 0, 255), 4, 0, 360)
            Render.Circle(Vector2.new(sc.x/100 + 2 + ts.x+18, sc.y/1.48 - 5+add_y+ts.y/2+3), 8, 32, Color.RGBA(235 ,235, 235, 255), 3, 0, (fill/3.3)*360)
            add_y = add_y - 35
        end     
      
        if DT:Get() then
            Render_Skeet("DT", add_y, Exploits.GetCharge() == 1 and Color.RGBA(235 ,235, 235, 255) or Color.RGBA(255, 0, 0, 255), 22, font.calibrib)
            add_y = add_y - 35
        end
    end
  
    if ui.windows:Get(1) then
        local ping = math.floor(EngineClient.GetNetChannelInfo():GetLatency(0)*1000)
        local local_time = ffi.new("SYSTEMTIME")
        ffi.C.GetLocalTime(local_time)

        text_wm = "nova.tech | "..Cheat.GetCheatUserName().." | delay: "..ping.." | "..string.format("%02d:%02d:%02d", local_time.wHour, local_time.wMinute, local_time.wSecond)
        ts_wm = Render.CalcTextSize(text_wm, 11, font.verdana) + 16

        Render.Blur(Vector2.new(x-ts_wm.x-6, 10), Vector2.new(x-10, 28), Color.RGBA(100, 100, 100, a))
        Render.BoxFilled(Vector2.new(x-ts_wm.x-6, 8), Vector2.new(x-10, 10), Color.RGBA(r, g, b, 255))

        Render.Text(text_wm, Vector2.new(x-ts_wm.x+1, 13), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
        Render.Text(text_wm, Vector2.new(x-ts_wm.x, 12), Color.RGBA(255, 255, 255, 255), 11, font.verdana)
    end

    if ui.windows:Get(2) then
        local players = EntityList.GetPlayers()
        local specs = {}
        local local_player = EntityList.GetLocalPlayer()
        for table_index, player_pointer in pairs(players) do
            if player_pointer and player_pointer:GetProp("m_iHealth") <= 0 then
                local local_player = EntityList.GetLocalPlayer()
                if local_player:IsAlive() then
                    local player = player_pointer
                    local spec_handle = player:GetProp("m_hObserverTarget")
                    local spec_player = EntityList.GetClientEntityFromHandle(spec_handle)
                    if spec_player ~= nil then
                        if spec_player:GetPlayer() == local_player:GetPlayer() then
                            specs[#specs+1] = player_pointer:GetName()
                        end
                    end
                else
                    local observer = player_pointer:GetProp('m_hObserverTarget')
                    local player = EntityList.GetLocalPlayer()
                    local localtarget = player:GetProp('m_hObserverTarget')
                    if observer == localtarget then
                        specs[#specs+1] = player_pointer:GetName()
                    end
                end
            end
        end
        xxx = ui.specs_x:Get()
        yyy = ui.specs_y:Get()
        if #specs > 0 or Cheat.IsMenuVisible() then
            Render.Blur(Vector2.new(xxx - 80, yyy - 4), Vector2.new(xxx + 80, yyy + 14), Color.RGBA(100, 100, 100, a))
            Render.BoxFilled(Vector2.new(xxx - 80, yyy - 6), Vector2.new(xxx + 80, yyy - 4), Color.RGBA(r, g, b, 255))
            ts = Render.CalcTextSize("spectators", 11, font.verdana)
            Render.Text("spectators", Vector2.new(xxx - ts.x/2+1, yyy - 1), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
            Render.Text("spectators", Vector2.new(xxx - ts.x/2, yyy - 2), Color.RGBA(255, 255, 255, 255), 11, font.verdana)
            for i = 1, #specs do
                Render.Text(specs[i], Vector2.new(xxx - 76, yyy + 1 + i * 17), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
                Render.Text(specs[i], Vector2.new(xxx - 77, yyy + i * 17), Color.RGBA(255, 255, 255, 255), 11, font.verdana)
            end
        end
        if Cheat.IsKeyDown(0x1) then
            local mouse = Cheat.GetMousePos()
            local ts = Render.CalcTextSize("spectators", 12)
            if drag[2] == true then
                ui.specs_x:SetInt(mouse.x)
                ui.specs_y:SetInt(mouse.y)
            end
            if mouse.x >= xxx - 70 and mouse.y >= yyy and mouse.x <= xxx + 70 and mouse.y <= yyy + ts.y then
                if drag[1] == false then drag[2] = true end
            end
        else
            drag[2] = false
        end
    end

    if ui.windows:Get(3) then
        local binds = Cheat.GetBinds()
        xx = ui.binds_x:Get()
        yy = ui.binds_y:Get()
        if #binds > 0 or Cheat.IsMenuVisible() then
            for i = 1, #binds do
                if binds[i]:IsActive() then
                    if keysAnim[i] < 255 then keysAnim[i] = keysAnim[i] + 30 else keysAnim[i] = 255 end
                else
                    if keysAnim[i] > 0 then keysAnim[i] = keysAnim[i] - 30 else keysAnim[i] = 0 end
                end
                mode = binds[i]:GetMode() == 0 and "[toggled]" or binds[i]:GetMode() == 1 and "[holding]"
                ts = Render.CalcTextSize(mode, 11, font.verdana)
                Render.Text(binds[i]:GetName(), Vector2.new(xx - 76, yy + 1 + i * 17), Color.RGBA(0, 0, 0, keysAnim[i]), 11, font.verdana)
                Render.Text(binds[i]:GetName(), Vector2.new(xx - 77, yy + i * 17), Color.RGBA(255, 255, 255, keysAnim[i]), 11, font.verdana)

                Render.Text(mode, Vector2.new(xx + 78-ts.x, yy + 1 + i * 17), Color.RGBA(0, 0, 0, keysAnim[i]), 11, font.verdana)
                Render.Text(mode, Vector2.new(xx + 77-ts.x, yy + i * 17), Color.RGBA(255, 255, 255, keysAnim[i]), 11, font.verdana)
            end
            Render.Blur(Vector2.new(xx - 80, yy - 4), Vector2.new(xx + 80, yy + 14), Color.RGBA(100, 100, 100, a))
            Render.BoxFilled(Vector2.new(xx - 80, yy - 6), Vector2.new(xx + 80, yy - 4), Color.RGBA(r, g, b, 255))
            ts = Render.CalcTextSize("keybinds", 11, font.verdana)
            Render.Text("keybinds", Vector2.new(xx - ts.x/2+1, yy - 1), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
            Render.Text("keybinds", Vector2.new(xx - ts.x/2, yy - 2), Color.RGBA(255, 255, 255, 255), 11, font.verdana)
        end
        if Cheat.IsKeyDown(0x1) then
            local mouse = Cheat.GetMousePos()
            local ts = Render.CalcTextSize("keybinds", 12)
            if drag[1] == true then
                ui.binds_x:SetInt(mouse.x)
                ui.binds_y:SetInt(mouse.y)
            end
            if mouse.x >= xx - 70 and mouse.y >= yy and mouse.x <= xx + 70 and mouse.y <= yy + ts.y then
                if drag[2] == false then drag[1] = true end
            end
        else
            drag[1] = false
        end
    end

    if ui.windows:Get(4) then
        --fl
        text_fl = DT:Get() and "FL: "..chocking.." | SHIFTING" or "FL: "..chocking
        ts_fl = Render.CalcTextSize(text_fl, 11, font.verdana) + 16
        fl_clr = Color.RGBA(math.floor(255 - (chocking * 8.57142857142)), math.floor(chocking * 14.28105263158), math.floor(chocking * 0.84807017543), 255)
        fl_clr1 = Color.RGBA(math.floor(255 - (chocking * 8.57142857142)), math.floor(chocking * 14.28105263158), math.floor(chocking * 0.84807017543), 0)
        Render.Blur(Vector2.new(x-ts_fl.x-6, 35), Vector2.new(x-10, 53), Color.RGBA(100, 100, 100, a))
        Render.GradientBoxFilled(Vector2.new(x-ts_fl.x/2-6, 53), Vector2.new(x-10, 54), fl_clr, fl_clr1, fl_clr, fl_clr1)
        Render.GradientBoxFilled(Vector2.new(x-ts_fl.x-6, 53), Vector2.new(x-ts_fl.x/2-6, 54), fl_clr1, fl_clr, fl_clr1, fl_clr)
        Render.Text(text_fl, Vector2.new(x-ts_fl.x+1, 38), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
        Render.Text(text_fl, Vector2.new(x-ts_fl.x, 37), Color.RGBA(255, 255, 255, 255), 11, font.verdana)

        --fake
        text_fake = string.format("FAKE (%.1f°)",delta_to_draw)
        ts_fake = Render.CalcTextSize(text_fake, 11, font.verdana) + 16
        local fake_clr = Color.RGBA(math.floor(255 - (delta_to_draw * 2.29824561404)), math.floor(delta_to_draw * 3.42105263158), math.floor(delta_to_draw * 0.22807017543), 255)
        local fake_clr1 = Color.RGBA(math.floor(255 - (delta_to_draw * 2.29824561404)), math.floor(delta_to_draw * 3.42105263158), math.floor(delta_to_draw * 0.22807017543), 0)
        Render.GradientBoxFilled(Vector2.new(x-(ts_fl.x+ts_fake.x/2)-6, 35), Vector2.new(x-ts_fl.x-10, 53), Color.RGBA(0, 0, 0, a), Color.new(0, 0, 0, 0), Color.RGBA(0, 0, 0, a), Color.new(0, 0, 0, 0))
        Render.GradientBoxFilled(Vector2.new(x-(ts_fl.x+ts_fake.x)-6, 35), Vector2.new(x-(ts_fl.x+ts_fake.x/2)-6, 53), Color.new(0, 0, 0, 0), Color.RGBA(0, 0, 0, a), Color.new(0, 0, 0, 0), Color.RGBA(0, 0, 0, a))

        Render.GradientBoxFilled(Vector2.new(x-(ts_fl.x+ts_fake.x)-4, 34), Vector2.new(x-(ts_fl.x+ts_fake.x)-6, 44), fake_clr1, fake_clr1, fake_clr, fake_clr)
        Render.GradientBoxFilled(Vector2.new(x-(ts_fl.x+ts_fake.x)-4, 44), Vector2.new(x-(ts_fl.x+ts_fake.x)-6, 54), fake_clr, fake_clr, fake_clr1, fake_clr1)
        Render.Text(text_fake, Vector2.new(x-(ts_fl.x+ts_fake.x)+1, 38), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
        Render.Text(text_fake, Vector2.new(x-(ts_fl.x+ts_fake.x), 37), Color.RGBA(255, 255, 255, 255), 11, font.verdana)
    end

    local calcs = {
        deg2rad = function(self, x)
            return x * (math.pi / 180.0)
        end,
  
        rotated_position = function(self, start, rotation, distance)
            local rad = self:deg2rad(rotation)
            local new_start = Vector.new(start.x, start.y, start.z)
            new_start.x = new_start.x + math.cos(rad) * distance
            new_start.y = new_start.y + math.sin(rad) * distance
  
            return new_start
        end
    }

    if lp:GetPlayer():IsAlive() then
        local view_angles = EngineClient.GetViewAngles()
        local real_yaw = AntiAim.GetCurrentRealRotation()
        local view_yaw = view_angles.yaw - 180;
        local fake = adjust_angle(real_yaw - view_yaw);
        local fake_clr = Color.RGBA(math.floor(255 - (delta_to_draw * 2.29824561404)), math.floor(delta_to_draw * 3.42105263158), math.floor(delta_to_draw * 0.22807017543), 255)
        local clr = Color.new(ui.circle:GetColor().r, ui.circle:GetColor().g, ui.circle:GetColor().b, 1)
        if ui.circle:GetBool() then
            if ui.circle_style:GetInt() == 0 then
                Render.Circle(Vector2.new(x/2, y/2), 7, 32, Color.new(0, 0, 0, 1), 4, 0, 360)
                Render.Circle(Vector2.new(x/2, y/2), 7, 32, fake_clr, 4, 90, AntiAim.GetInverterState() == false and -90 or 270)
                Render.Circle(Vector2.new(x/2, y/2), 15, 32, fake_clr, 4, fake+30, fake-30)
            else
                local real_rotation = calcs:deg2rad(view_angles.yaw - AntiAim.GetCurrentRealRotation() - 90);
                Render.PolyFilled(AntiAim.GetInverterState() and Color.new(1, 1, 1, 1) or clr,
                    Vector2.new(x/2 + math.cos(real_rotation) * 45,
                                y/2 + math.sin(real_rotation) * 45),
                    Vector2.new(x/2 + math.cos(real_rotation - calcs:deg2rad(20)) * (45 - 15),
                                y/2 + math.sin(real_rotation - calcs:deg2rad(20)) * (45 - 15)),
                    Vector2.new(x/2 + math.cos(real_rotation) * (45 - 13),
                                y/2 + math.sin(real_rotation) * (45 - 13))
                )
                Render.PolyFilled(AntiAim.GetInverterState() and clr or Color.new(1, 1, 1, 1),
                Vector2.new(x/2 + math.cos(real_rotation) * 45,
                            y/2 + math.sin(real_rotation) * 45),
                Vector2.new(x/2 + math.cos(real_rotation + calcs:deg2rad(20)) * (45 - 15),
                            y/2 + math.sin(real_rotation + calcs:deg2rad(20)) * (45 - 15)),
                Vector2.new(x/2 + math.cos(real_rotation) * (45 - 13),
                            y/2 + math.sin(real_rotation) * (45 - 13))
            )
            end
        end

        if ui.idealtick:Get() and AP:Get() then
            if ui.add_idealtick:Get(1) then
                aa[0].manual:SetInt(6)
            end
            zxc = 1
        elseif zxc == 1 then
            aa[0].manual:SetInt(0)
            zxc = 0
        end

        --hitchance and dmg
        local active_weapon = lp:GetPlayer():GetActiveWeapon()
        if active_weapon == nil then return end
        local weapon_id = active_weapon:GetWeaponID()
        local players = EntityList.GetPlayers()
        for _, player in ipairs(players) do
            if not player:IsTeamMate() then
                local user_index = player:EntIndex()
                if ui.air_hitchance:Get() and weapon_id == 40 and bit.band(lp:GetProp("m_fFlags"), bit.lshift(1,0)) == 0 then
                    RageBot.OverrideHitchance(user_index, ui.air_hitchance_value:Get())
                end
                if ui.ns_hitchance:Get() and weapon_id == 11 or weapon_id == 38 and not lp:GetPlayer():GetProp("m_bIsScoped") then
                    RageBot.OverrideHitchance(user_index, ui.ns_hitchance_value:Get())
                end
                if ui.idealtick:Get() and AP:Get() then
                    if ui.add_idealtick:Get(2) then
                        RageBot.OverrideMinDamage(user_index, ui.idealtick_damage:Get())
                    end
                    if ui.add_idealtick:Get(3) then
                        RageBot.ForceHitboxSafety(user_index, 0)
                    end
                end
            end
        end
      
        --state
        local ax = 0
        if ui.state_panel:Get() then
            arrows = AntiAim.GetInverterState() and "<" or ">"
            Render.Text("NOVA.TECH - V1.2.1 | "..Cheat.GetCheatUserName(), Vector2.new(x/20, y/2.4+30), Color.RGBA(255,255,255,255), 10, font.pixel, true)
            Render.Text("+ INVERTER: "..arrows.." | STATE: "..aastate, Vector2.new(x/20, y/2.4+42), Color.RGBA(125, 125, 125, 255), 10, font.pixel, true)
            Render.Text("+ FAKELAG COUNTER: "..string.format("%i-%i-%i-%i-%i",toDraw4,toDraw3,toDraw2,toDraw1,toDraw0), Vector2.new(x/20, y/2.4+54), Color.RGBA(125, 125, 125, 255), 10, font.pixel, true)
            Render.Text("+ DOUBLE-TAP: ", Vector2.new(x/20, y/2.4+66), Color.RGBA(125, 125, 125, 255), 10, font.pixel, true)
            ax = ax + Render.CalcTextSize("+ DOUBLE-TAP: ", 10, font.pixel).x
            Render.Text(DT:Get() and "ON" or "OFF", Vector2.new(x/20+ax, y/2.4+66), DT:Get() and Color.RGBA(80, 255, 80, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)
            ax = ax + Render.CalcTextSize(DT:Get() and "ON " or "OFF ", 10, font.pixel).x
            Render.Text("| OS-AA: ", Vector2.new(x/20+ax, y/2.4+66), Color.RGBA(125, 125, 125, 255),10, font.pixel, true)
            ax = ax + Render.CalcTextSize("| OS-AA: ", 10, font.pixel).x
            Render.Text(HS:Get() and "ON" or "OFF", Vector2.new(x/20+ax, y/2.4+66), HS:Get() and Color.RGBA(80, 255, 80, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)
        end

        --holo panel
        ay = 0
        if ui.windows:Get(5) and ui.viewmodel:Get() or ui.windows:Get(5) and not lp:GetPlayer():GetProp("m_bIsScoped") then
            if ui.holo_on_tp:Get() and not TP:Get() or ui.holo_on_tp:Get() == false and TP:Get() or TP:Get() == false then
                local muzzle_temp = muzzle.get()

                if muzzle_temp then
                    muzzle.pos = muzzle_temp.pos
                end
              
                local hitbox = lp:GetPlayer():GetHitboxCenter(3)
                local world_stand =  Render.WorldToScreen(hitbox)
                local pos2d = Render.WorldToScreen(muzzle.pos)
                if DT:Get() then
                    ay = 13
                else
                    ay = 0
                end
                if TP:Get() then
                    if world_stand.x ~= nil and world_stand.y ~= nil then
                        Render.Line(Vector2.new(Visuals_HoloX, Visuals_HoloY+ay+65), Vector2.new(x/2, world_stand.y), Color.RGBA(100,100,100,220))
                        local lerpx = lerp(Visuals_HoloX, world_stand.x + 10, GlobalVars.frametime * 8)
                        local lerpy = lerp(Visuals_HoloY, world_stand.y - 90, GlobalVars.frametime * 8)
                        if lerpx >= 0 and lerpx <= 2000 and lerpy >= 0 and lerpy <= 1500 then
                            Visuals_HoloX = lerp(Visuals_HoloX, world_stand.x + 10, GlobalVars.frametime * 8)
                            Visuals_HoloY = lerp(Visuals_HoloY, world_stand.y - 90, GlobalVars.frametime * 8)
                        else
                            Visuals_HoloX = world_stand.x + 10
                            Visuals_HoloY = world_stand.y - 90
                        end
                    end
                else
                    if pos2d.x ~= nil and pos2d.y ~= nil then
                        local lerpx = lerp(Visuals_HoloX, pos2d.x - 20, GlobalVars.frametime * 8)
                        local lerpy = lerp(Visuals_HoloY, pos2d.y - 125, GlobalVars.frametime * 8)
                        Render.Line(Vector2.new(Visuals_HoloX, Visuals_HoloY+ay+65), Vector2.new(pos2d.x, pos2d.y), Color.RGBA(100,100,100,220))
                        if lerpx >= 0 and lerpx <= 3000 and lerpy >= 0 and lerpy <= 2000 then
                            Visuals_HoloX = lerp(Visuals_HoloX, pos2d.x - 20, GlobalVars.frametime * 8)
                            Visuals_HoloY = lerp(Visuals_HoloY, pos2d.y - 125, GlobalVars.frametime * 8)
                        else
                            Visuals_HoloX = pos2d.x - 20
                            Visuals_HoloY = pos2d.y - 125
                        end
                    end
                end 

                Render.Blur(Vector2.new(Visuals_HoloX, Visuals_HoloY), Vector2.new(170 + Visuals_HoloX, (65 + ay) + Visuals_HoloY))
              
                Render.BoxFilled(Vector2.new(Visuals_HoloX, Visuals_HoloY), Vector2.new(170 + Visuals_HoloX, 2 + Visuals_HoloY), Color.RGBA(r, g, b, 255))
              

                Render.Text("ANTI-AIMBOT DEBUG", Vector2.new(Visuals_HoloX + 7, Visuals_HoloY + 5 ), Color.new(1.0, 1.0, 1.0, 1.0), 10, font.pixel, true)

                local fake_clr = Color.RGBA(math.floor(255 - (delta_to_draw * 2.29824561404)), math.floor(delta_to_draw * 3.42105263158), math.floor(delta_to_draw * 0.22807017543), 255)
                local fake_clr1 = Color.RGBA(math.floor(255 - (delta_to_draw * 2.29824561404)), math.floor(delta_to_draw * 3.42105263158), math.floor(delta_to_draw * 0.22807017543), 0)

                Render.GradientBoxFilled(Vector2.new(Visuals_HoloX + 8, Visuals_HoloY+36), Vector2.new(Visuals_HoloX + 10, Visuals_HoloY+46), fake_clr, fake_clr, fake_clr1, fake_clr1)
                Render.GradientBoxFilled(Vector2.new(Visuals_HoloX + 8, Visuals_HoloY+26), Vector2.new(Visuals_HoloX + 10, Visuals_HoloY+36), fake_clr1, fake_clr1, fake_clr, fake_clr)

                local view_angles = EngineClient.GetViewAngles()
                local fake_yaw = AntiAim.GetFakeRotation()
                local real_yaw = AntiAim.GetCurrentRealRotation()
                local view_yaw = view_angles.yaw - 180;
                local fake = adjust_angle(fake_yaw - view_yaw);
                local real = adjust_angle(real_yaw - view_yaw);

                Render.Circle(Vector2.new(Visuals_HoloX + 150, Visuals_HoloY+22), 9, 32, Color.RGBA(25,25,25,200), 2, 0, 360)
                Render.Circle(Vector2.new(Visuals_HoloX + 150, Visuals_HoloY+22), 9, 32, Color.RGBA(r, g, b, 255), 2, fake+20, fake-20)
                Render.Circle(Vector2.new(Visuals_HoloX + 150, Visuals_HoloY+22), 9, 32, Color.RGBA(200, 200, 200, 255), 2, real+10, real-10)

                Render.Text(string.format("FAKE (%.1f°)", delta_to_draw), Vector2.new(Visuals_HoloX + 14, Visuals_HoloY + 30), Color.RGBA(0, 0, 0, 255), 11, font.verdana)
                Render.Text(string.format("FAKE (%.1f°)", delta_to_draw), Vector2.new(Visuals_HoloX + 13, Visuals_HoloY + 30), Color.RGBA(255, 255, 255, 255), 11, font.verdana)

                Render.Text("SP:", Vector2.new(Visuals_HoloX + 13, Visuals_HoloY + 48), Color.new(1.0, 1.0, 1.0, 1.0), 10, font.pixel, true)

                Render.BoxFilled(Vector2.new(Visuals_HoloX + 27, Visuals_HoloY + 59), Vector2.new(53 + Visuals_HoloX, 51 + Visuals_HoloY), Color.new(0, 0, 0, 1))
                Render.BoxFilled(Vector2.new(Visuals_HoloX+ 61, Visuals_HoloY + 59), Vector2.new(87 + Visuals_HoloX, 51 + Visuals_HoloY), Color.new(0, 0, 0, 1))
              
                if ((AntiAim.GetCurrentRealRotation() - AntiAim.GetFakeRotation()) ~= nil) then
                    Render.BoxFilled(Vector2.new(Visuals_HoloX + 28, Visuals_HoloY + 58), Vector2.new(30 + Visuals_HoloX + (delta_to_draw / 2.7), 52 + Visuals_HoloY), Color.RGBA(r, g, b, 255))
                else if ((AntiAim.GetCurrentRealRotation() - AntiAim.GetFakeRotation()) < 0 and (AntiAim.GetCurrentRealRotation() - AntiAim.GetFakeRotation()) ~= nil) then
                    Render.BoxFilled(Vector2.new(Visuals_HoloX + 61, Visuals_HoloY + 59), Vector2.new(87 + Visuals_HoloX, 51 + Visuals_HoloY), Color.RGBA(r, g, b, 255))
                end
                end

                local alpha = math.min(math.floor(math.sin((GlobalVars.realtime%3) * 4) * 175 + 50), 255)
                if DT:Get() then
                    Render.Text("SHIFTING TICKBASE", Vector2.new(Visuals_HoloX + 12, Visuals_HoloY + 62), Color.RGBA(255, 255, 255, alpha), 10, font.pixel, true)
                end
                Render.Text("OSAA:", Vector2.new(Visuals_HoloX + 110, Visuals_HoloY + 49 + ay), Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                Render.Text(HS:Get() and "ON" or "OFF", Vector2.new(Visuals_HoloX + 140, Visuals_HoloY + 49 + ay), HS:Get() and Color.RGBA(80, 255, 80, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)     
            end
        end
        --indicators
        ay = 0
        if ui.indicators:Get(1) then
            add_y = 0
            add_y = add_y + 40
            ts = Render.CalcTextSize("NOVA", 10, font.pixel)
            Render.Text("NOVA", Vector2.new(x/2 - ts.x, y/2 + add_y + 2), AntiAim.GetInverterState() and Color.RGBA(r, g, b, 255) or Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
            Render.Text("TECH", Vector2.new(x/2, y/2 + add_y + 2), AntiAim.GetInverterState() and Color.RGBA(255, 255, 255, 255) or Color.RGBA(r, g, b, 255), 10, font.pixel, true)
            add_y = add_y + 14
            Render.GradientBoxFilled(Vector2.new(x/2-math.floor(delta_to_draw)-7, y/2+add_y), Vector2.new(x/2, y/2+add_y+2), Color.RGBA(r, g, b, 0), Color.RGBA(r, g, b, 255), Color.RGBA(r, g, b, 0), Color.RGBA(r, g, b, 255))
            Render.GradientBoxFilled(Vector2.new(x/2+math.floor(delta_to_draw)+7, y/2+add_y), Vector2.new(x/2, y/2+add_y+2), Color.RGBA(r, g, b, 0), Color.RGBA(r, g, b, 255), Color.RGBA(r, g, b, 0), Color.RGBA(r, g, b, 255))
            add_y = add_y + 3
            if DT:Get() then
                Render_Indicator(Exploits.GetCharge() == 1 and "DOUBLETAP" or "CHARGING", add_y, Exploits.GetCharge() == 1 and Color.RGBA(255, 255, 255, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if HS:Get() then
                Render_Indicator("ON-SHOT", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if dmg == true then
                Render_Indicator("DAMAGE", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if FD:Get() then
                Render_Indicator("DUCK", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if BA:Get() == 2 then
                Render_Indicator("BAIM", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if SP:Get() == 2 then
                Render_Indicator("SP", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
        end
        if ui.indicators:Get(2) then
            add_y = 0
            add_y = add_y + 40
            Render_Indicator("NOVATECH", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
            add_y = add_y + 9
            Render_Indicator(aastate, add_y, Color.RGBA(125, 125, 125, 255), 10, font.pixel, true)
            add_y = add_y + 9
            Render_Indicator(string.format("%i-%i-%i-%i-%i",toDraw4,toDraw3,toDraw2,toDraw1,toDraw0), add_y, Color.RGBA(125, 125, 125, 255), 10, font.pixel, true)
            add_y = add_y + 9
            if DT:Get() then
                Render_Indicator("DOUBLETAP", add_y, Exploits.GetCharge() == 1 and Color.RGBA(255, 255, 255, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if HS:Get() then
                Render_Indicator("OSAA", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if SP:Get() == 2 then
                Render_Indicator("SAFE", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if BA:Get() == 2 then
                Render_Indicator("BODY", add_y, Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
        end
        if ui.indicators:Get(3) then
            add_y = 0
            add_y = add_y + 40
            ts = Render.CalcTextSize("*nova", 11, font.verdanabd)
            Render.Text("*nova", Vector2.new(x/2 - ts.x, y/2 + add_y + 2), AntiAim.GetInverterState() and Color.RGBA(r, g, b, 255) or Color.RGBA(255, 255, 255, 255), 11, font.verdanabd, true)
            Render.Text("tech*", Vector2.new(x/2, y/2 + add_y + 2), AntiAim.GetInverterState() and Color.RGBA(255, 255, 255, 255) or Color.RGBA(r, g, b, 255), 11, font.verdanabd, true)
            add_y = add_y + 13
            if HS:Get() then
                Render_Indicator("ON-SHOT", add_y, Color.RGBA(r, g, b, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if dmg == true then
                Render_Indicator("DMG", add_y, Color.RGBA(r, g, b, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if DT:Get() then
                Render_Indicator("DT", add_y, Exploits.GetCharge() == 1 and Color.RGBA(r, g, b, 255) or Color.RGBA(255, 80, 80, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if SP:Get() == 2 then
                Render_Indicator("SP", add_y, Color.RGBA(r, g, b, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
            if BA:Get() == 2 then
                Render_Indicator("BA", add_y, Color.RGBA(r, g, b, 255), 10, font.pixel, true)
                add_y = add_y + 9
            end
        end
        if ui.indicators:Get(4) then
            add_y = 0
            add_y = add_y + 40
            Render_Indicator3(manuals and "FAKE YAW" or "IDEAL YAW", add_y, manuals and Color.RGBA(159, 159, 230, 255) or Color.RGBA(220, 135, 49, 255), 12, font.tahoma)
            add_y = add_y + 10
            Render_Indicator3(yaw_base:Get() == 5 and "FREESTAND" or "DYNAMIC", add_y, Color.RGBA(209, 159, 230, 255), 12, font.tahoma)
            add_y = add_y + 10
            if DT:Get() then
                Render_Indicator3(FD:Get() and "DT (fakeduck)" or "DT", add_y, Exploits.GetCharge() == 1 and Color.RGBA(0, 255, 0, 255) or Color.RGBA(255, 0, 0, 255), 12, font.tahoma)
                add_y = add_y + 10
            end
            if HS:Get() then
                Render_Indicator3("AA", add_y, Color.RGBA(120, 128, 200, 255), 12, font.tahoma)
                add_y = add_y + 10
            end
            if dmg == true then
                Render_Indicator3("DMG", add_y, Color.RGBA(200, 185, 255, 255), 12, font.tahoma)
                add_y = add_y + 10
            end
        end

        --viewmodel in scope
        local cheats = CVar.FindVar("sv_cheats")
        local scope = CVar.FindVar("fov_cs_debug")
        if ui.viewmodel:Get() then
            cheats:SetInt(1)
            scope:SetInt(90)
        else
            scope:SetInt(0)
        end

        --custom scope
        if ui.scope:GetColor() and lp:GetPlayer():GetProp("m_bIsScoped") then
            local offset = ui.offset:Get()
            local length = ui.length:Get()
            local col = Color.new(ui.scope:GetColor().r, ui.scope:GetColor().g, ui.scope:GetColor().b, 1)
            local col1 = Color.new(ui.scope:GetColor().r, ui.scope:GetColor().g, ui.scope:GetColor().b, 0)
            Render.GradientBoxFilled(Vector2.new(x/2 - offset, y/2), Vector2.new(x/2 - offset - length, y/2 + 1), col, col1, col, col1)
            Render.GradientBoxFilled(Vector2.new(x/2 + offset, y/2), Vector2.new(x/2 + offset + length, y/2 + 1), col, col1, col, col1)
            Render.GradientBoxFilled(Vector2.new(x/2, y/2 + offset), Vector2.new(x/2 + 1, y/2 + offset + length), col, col, col1, col1)
            Render.GradientBoxFilled(Vector2.new(x/2, y/2 - offset), Vector2.new(x/2 + 1, y/2 - offset - length), col, col, col1, col1)
        end

        --manual arrows
        if ui.manual_arrows:Get() then
            local r1 = math.floor(ui.color1:Get().r*255)
            local g1 = math.floor(ui.color1:Get().g*255)
            local b1 = math.floor(ui.color1:Get().b*255)

            local r2 = math.floor(ui.color2:Get().r*255)
            local g2 = math.floor(ui.color2:Get().g*255)
            local b2 = math.floor(ui.color2:Get().b*255)

            if ui.arrows_style:Get() == 0 then
                if velocity(lp) > 44 then
                    if anim[3] < 150 then anim[3] = anim[4] + 10 end
                else
                    if anim[3] > 0 then anim[3] = anim[4] - 10 end
                end
                Render.Text(">", Vector2.new(x/2 + 45, y/2 - Render.CalcTextSize(">", 22).y/2), yaw_base:Get() == 2 and Color.RGBA(r1, g1, b1, 255) or Color.RGBA(255, 255, 255, 255 - anim[3]), 22, true)
                Render.Text("<", Vector2.new(x/2 - 45 - Render.CalcTextSize("<", 22).x, y/2 - Render.CalcTextSize("<", 22).y/2), yaw_base:Get() == 3 and Color.RGBA(r1, g1, b1, 255) or Color.RGBA(255, 255, 255, 255 - anim[3]), 22, true)
                Render.Text("v", Vector2.new(x/2 - Render.CalcTextSize("v", 19).x/2+1, y/2 + 25), yaw_base:Get() == 1 and Color.RGBA(r1, g1, b1, 255) or Color.RGBA(255, 255, 255, 255 - anim[3]), 19, true)
            elseif ui.arrows_style:Get() == 1 then
                Render.PolyFilled(yaw_base:Get() == 2 and Color.RGBA(r1, g1, b1, 255) or Color.RGBA(25, 25, 25, 150), Vector2.new(x/2 + 43, y/2 + 9), Vector2.new(x/2 + 56, y/2), Vector2.new(x/2 + 43, y/2 - 9))
                Render.PolyFilled(yaw_base:Get() == 3 and Color.RGBA(r1, g1, b1, 255) or Color.RGBA(25, 25, 25, 150), Vector2.new(x/2 - 43, y/2 + 9), Vector2.new(x/2 - 56, y/2), Vector2.new(x/2 - 43, y/2 - 9))
                Render.BoxFilled(Vector2.new(x/2 - 40, y/2 - 9),  Vector2.new(x/2 - 42, y/2 + 10), AntiAim.GetInverterState() == false and Color.RGBA(25, 25, 25, 150) or Color.RGBA(r2, g2, b2, 255))
                Render.BoxFilled(Vector2.new(x/2 + 40, y/2 - 9),  Vector2.new(x/2 + 42, y/2 + 10), AntiAim.GetInverterState() == false and Color.RGBA(r2, g2, b2, 255) or Color.RGBA(25, 25, 25, 150))
            end
        end

        --render
        if ui.damage_indicator:Get() then
            local ts = Render.CalcTextSize(tostring(MD:Get()), 10, font.pixel)
            Render.Text(dmg and "1" or "0", Vector2.new(x/2-35, y/2-50), Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
            Render.Text(tostring(MD:Get()), Vector2.new(x/2-ts.x/2+0.5, y/2-50), Color.RGBA(255, 255, 255, 255), 10, font.pixel, true)
        end

        --disable thirdperson anim
        if ui.tpanim:Get() then s = false else s = true end
        Cheat.SetThirdPersonAnim(s)
    end
end

local anti_aim = function()
        local lp = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
        if lp == nil then return end

        local active_weapon = lp:GetPlayer():GetActiveWeapon()
        if active_weapon == nil then return end
        local weapon_id = active_weapon:GetWeaponID()

        --anti aims
        if aa[0].antiaims:Get() then
          
            --tp in air
            local players = EntityList.GetPlayers()
          
            if aa[0].tp_in_air:Get() and bit.band(lp:GetPlayer():GetProp("m_fFlags"), bit.lshift(1,0)) == 0 then
                for i = 1, #players do
                    local origin = lp:GetPlayer():GetRenderOrigin()
                    local origin_players = players[i]:GetRenderOrigin()
                    local is_visible = players[i]:IsVisible(origin_players)
                    if players[i]:IsAlive() and not players[i]:IsTeamMate() and players[i]:IsAlive() and not players[i]:IsDormant() and is_visible and not active_weapon:IsKnife() then
                        Exploits.ForceTeleport()
                    end
                end
            end

            if SW:Get() and aa[6].custom_enable:Get() then
                --slow walk
                stateid = 6
                aastate = "SLOWWALKING"
            elseif bit.band(lp:GetPlayer():GetProp("m_fFlags"), bit.lshift(1,0)) == 0 and aa[4].custom_enable:Get() then
                --air
                stateid = 4
                aastate = "IN AIR"
            elseif lp:GetProp("m_flDuckAmount") > 0.8 and aa[5].custom_enable:Get() or FD:Get() and aa[5].custom_enable:Get() then
                --duck
                stateid = 5
                aastate = "CROUCHING"
            elseif velocity(lp) > 2 and aa[3].custom_enable:Get() then
                --move
                stateid = 3
                aastate = "MOVING"
            elseif velocity(lp) < 2 and aa[2].custom_enable:Get() then
                --stand
                stateid = 2
                aastate = "STANDING"
            else
                --global
                stateid = 1
                aastate = "DYNAMIC"
            end

            if legit_aa == false then
                pitch:SetInt(1)
                if aa[0].manual:Get() == 0 then
                    yaw_base:SetInt(aa[stateid].custom_yaw_base:Get())
                else
                    yaw_base:SetInt(aa[0].manual:Get()-1)
                end
                yaw(yaw_add, aa[stateid].custom_yaw_add_right:Get(), aa[stateid].custom_yaw_add_left:Get())
                yaw_modifier:SetInt(aa[stateid].custom_yaw_modifier:Get())
                modifier_degree:SetInt(aa[stateid].custom_modifier_degree:Get())
                if aa[stateid].custom_fake_type:Get() == 0 then
                    left_limit:SetInt(aa[stateid].custom_left_limit:Get())
                    right_limit:SetInt(aa[stateid].custom_right_limit:Get())
                elseif aa[stateid].custom_fake_type:Get() == 1 then
                    left_limit:SetInt(jitter(aa[stateid].custom_left_limit:Get(), aa[stateid].custom_left_limit2:Get()))
                    right_limit:SetInt(jitter(aa[stateid].custom_right_limit:Get(), aa[stateid].custom_right_limit2:Get()))
                elseif aa[stateid].custom_fake_type:Get() == 2 then
                    left_limit:SetInt(math.random(aa[stateid].custom_left_limit:Get(), aa[stateid].custom_left_limit2:Get()))
                    right_limit:SetInt(math.random(aa[stateid].custom_right_limit:Get(), aa[stateid].custom_right_limit2:Get()))
                end
                options:SetInt(aa[stateid].custom_options:Get())
                lby_mode:SetInt(aa[stateid].custom_lby:Get())
                freestand:SetInt(aa[stateid].custom_fs:Get())
                onshot:SetInt(aa[stateid].custom_onshot:Get())

                --anti backstab
                if aa[0].antibackstab:Get() then
                    local enemies = GetEnemiesWithKnife()
                    if enemies ~= nil then
                        if #enemies > 0 then
                            for i, enemy in pairs(enemies) do
                                local enemy_origin = enemy:GetRenderOrigin()
                                local local_player_origin = lp:GetRenderOrigin()
                                local distance_from_local_to_enemy = enemy_origin:DistTo(local_player_origin)             
                                if 200 >= distance_from_local_to_enemy and not players[i]:IsDormant() then
                                    AntiAim.OverrideYawOffset(180)
                                    AntiAim.OverridePitch(0)
                                end
                            end
                        end
                    end
                end
            else
                pitch:SetInt(0)
                yaw_base:SetInt(0)
                yaw(yaw_add, 0, 0)
                yaw_modifier:SetInt(1)
                modifier_degree:SetInt(0)
                left_limit:SetInt(60)
                right_limit:SetInt(60)
                options:SetInt(0)
                lby_mode:SetInt(1)
                freestand:SetInt(1)
                onshot:SetInt(1)
            end
        end
end

local phrases = {
    "Блин, друг, прости пожалуйста, не увидел",
    "Опять ты, прости, я без ников убил",
    "У тебя Ник тема бебриков? Я тебя вчера на Дме видел",
    "Ты с чем ?",
    "Зато ты очень красивый",
    "А фип бы забанил за такое, прости пж",
    "Мне друг (витма) (бигнейм) сказал, что в таких случаях 1 писать, но я добрый так что не буду",
    "Посаны, а как вам микрофон яспер мо о глод, у фипа такой вроде",
    "Возьми печеньки, завари чайочек. И расслабся",
    "Какой у тебя мейн Ник ? Мне сказали, что это важна чтоб медия сделать, ты витма ?",
    "Ну ничего, с кем не бывает",
    "Нифига я чо Лоу дельта убил",
    "Главное, что хоть у тебя голова на месте)",
    "Сколько в человеке доброты, столько в нем и жизни.",
    "Истинная храбрость и доброта идут рука об руку.",
    "ой прости я просто в Five nights at fnay играл и испугался немного",
    "Дай кфг, а то мой сильно жёсткий",
    "Прости, в следующий раз повезет.",
    "ты не знал, а nova.tech то тапает",
}
local get_phrase = function()
    return phrases[Utils.RandomInt(1, #phrases)]:gsub('"', '')
end
          
Cheat.RegisterCallback("events", function(e)
    local player_resource = EntityList.GetPlayerResource()
    if e:GetName() == "bomb_abortplant" then
        planting = false
        fill = 0
        on_plant_time = 0
        planting_site = ""
    end
    if e:GetName() == "bomb_defused" then
        planting = false
        fill = 0
        on_plant_time = 0
        planting_site = ""
    end
    if e:GetName() == "bomb_planted" then
        planting = false
        fill = 0
        on_plant_time = 0
        planting_site = ""
    end
    if e:GetName() == "round_prestart" then
        planting = false
        fill = 0
        on_plant_time = 0
        planting_site = ""
    end
  
    if e:GetName() == "bomb_beginplant" then
        on_plant_time = GlobalVars.curtime
        planting = true
        local m_bombsiteCenterA = player_resource:GetProp("DT_CSPlayerResource", "m_bombsiteCenterA")
        local m_bombsiteCenterB = player_resource:GetProp("DT_CSPlayerResource", "m_bombsiteCenterB")
      
        local player = EntityList.GetPlayerForUserID(e:GetInt("userid", 0))
        local localPos = player:GetRenderOrigin()
        local dist_to_a = localPos:DistTo(m_bombsiteCenterA)
        local dist_to_b = localPos:DistTo(m_bombsiteCenterB)
      
        planting_site = dist_to_a < dist_to_b and "Bombsite A" or "Bombsite B"
    end
    if ui.hitsound:Get() == 0 then
        Menu.FindVar("Visuals","World", "Hit", "Hit Sound"):SetBool(true)
    else
        Menu.FindVar("Visuals","World", "Hit", "Hit Sound"):SetBool(false)
    end
    if e:GetName() == "player_hurt" then
        if e:GetInt("attacker", 0) ==  EntityList.GetLocalPlayer():GetPlayerInfo().userId then
            if ui.hitsound:Get() == 1 then
                EngineClient.ExecuteClientCmd("playvol buttons/arena_switch_press_02 0.75")
            elseif ui.hitsound:Get() == 2 then
                EngineClient.ExecuteClientCmd("playvol nova.tech/hitsound/hitsound.wav 0.75")
            elseif ui.hitsound:Get() == 3 then
                EngineClient.ExecuteClientCmd(string.format("playvol %s 0.75", ui.custom_hitsound:Get()))
            end
        end
    end
    if ui.trashtalk:Get() then
        if e:GetName() == "player_death" then
            local me = EntityList.GetLocalPlayer()
            local victim = EntityList.GetPlayerForUserID(e:GetInt("userid"))
            local attacker = EntityList.GetPlayerForUserID(e:GetInt("attacker"))
            if victim == attacker or attacker ~= me then return end
            EngineClient.ExecuteClientCmd('say "' .. get_phrase() .. '"')
        end
    end
end)

local setvis = function()
    local vis = function(s, d)
        s:SetVisible(d)
    end

    ui.binds_x:SetVisible(false)
    ui.binds_y:SetVisible(false)
    ui.specs_x:SetVisible(false)
    ui.specs_y:SetVisible(false)

    ui.add_idealtick:SetVisible(ui.idealtick:Get())
    ui.idealtick_damage:SetVisible(ui.add_idealtick:GetBool(2))
    ui.ns_hitchance_value:SetVisible(ui.ns_hitchance:Get())
    ui.air_hitchance_value:SetVisible(ui.air_hitchance:Get())
    ui.hitlogs_type:SetVisible(ui.hitlogs:Get())
    ui.custom_hitsound:SetVisible(ui.hitsound:Get() == 3)
    ui.holo_on_tp:SetVisible(ui.windows:Get(5))
    ui.circle_style:SetVisible(ui.circle:Get())
    ui.add_indicators:SetVisible(ui.indicators:Get(5))
    ui.offset:SetVisible(ui.scope:Get())
    ui.length:SetVisible(ui.scope:Get())

    ui.arrows_style:SetVisible(ui.manual_arrows:Get())
    ui.color1:SetVisible(ui.manual_arrows:Get())
    ui.color2:SetVisible(ui.manual_arrows:Get() and ui.arrows_style:Get() == 1)

    vis(preset, aa[0].antiaims:Get())
    vis(aa[0].manual, aa[0].antiaims:Get())
    vis(aa[0].fake_flick, aa[0].antiaims:Get())
    vis(aa[0].tp_in_air, aa[0].antiaims:Get())
    vis(aa[0].on_key, aa[0].antiaims:Get())
    vis(aa[0].antibackstab, aa[0].antiaims:Get())
    vis(aa[0].antiaim, aa[0].antiaims:Get())
  
    currentid = aa[0].antiaim:Get()+1
    vis(aa[1].custom_enable, false)
    aa[1].custom_enable:SetBool(true)
    vis(aa[2].custom_enable, aa[0].antiaims:Get() and currentid == 2)
    vis(aa[3].custom_enable, aa[0].antiaims:Get() and currentid == 3)
    vis(aa[4].custom_enable, aa[0].antiaims:Get() and currentid == 4)
    vis(aa[5].custom_enable, aa[0].antiaims:Get() and currentid == 5)
    vis(aa[6].custom_enable, aa[0].antiaims:Get() and currentid == 6)
  
    for i = 1, 6 do
        local isAA = aa[0].antiaims:Get() and aa[i].custom_enable:Get()
        local isAAF = aa[i].custom_fake_type:Get() == 1 and isAA or aa[i].custom_fake_type:Get() == 2 and isAA
        vis(aa[i].custom_yaw_base, isAA and currentid == i)
        vis(aa[i].custom_yaw_add_left, isAA and currentid == i)
        vis(aa[i].custom_yaw_add_right, isAA and currentid == i)
        vis(aa[i].custom_yaw_modifier, isAA and currentid == i)
        vis(aa[i].custom_modifier_degree, isAA and currentid == i)
        vis(aa[i].custom_left_limit, isAA and currentid == i)
        vis(aa[i].custom_right_limit, isAA and currentid == i)
        vis(aa[i].custom_left_limit2, isAAF and currentid == i)
        vis(aa[i].custom_right_limit2, isAAF and currentid == i)
        vis(aa[i].custom_options, isAA and currentid == i)
        vis(aa[i].custom_lby, isAA and currentid == i)
        vis(aa[i].custom_fs, isAA and currentid == i)
        vis(aa[i].custom_onshot, isAA and currentid == i)
        vis(aa[i].custom_fake_type, isAA and currentid == i)
    end
end

local hook_draw = function()
    draw()
    anti_aim()
    setvis()
end
Cheat.RegisterCallback("draw", hook_draw)
Cheat.RegisterCallback("pre_prediction", legitaa)
Cheat.RegisterCallback("createmove", use)
Cheat.RegisterCallback("destroy", function()
    updateConsoleColor(1, 1, 1, 1)
    for _, v in pairs(materials) do
        local material = MatSystem.FindMaterial(v, "")

        if material ~= nil then
            material:SetMaterialVarFlag(bit.lshift(1, 28), false)
            material:SetMaterialVarFlag(bit.lshift(1, 15), false)
        end
    end
end)
ui.console:RegisterCallback(cfgConsoleCallback)
EngineClient.ExecuteClientCmd("clear")
print("              ...")
print("             ;::::;")
print("           ;::::; :;")
print("         ;:::::'   :;")
print("        ;:::::;     ;.")
print("       ,:::::'       ;           OOO")
print("       ::::::;       ;          OOOOO")
print("       ;:::::;       ;         OOOOOOOO")
print("      ,;::::::;     ;'         / OOOOOOO")
print("    ;:::::::::`. ,,,;.        /  / DOOOOOO")
print("  .';:::::::::::::::::;,     /  /     DOOOO")
print(" ,::::::;::::::;;;;::::;,   /  /        DOOO")
print(";`::::::`'::::::;;;::::: ,#/  /          DOOO")
print(":`:::::::`;::::::;;::: ;::#  /            DOOO")
print("::`:::::::`;:::::::: ;::::# /              DOO")
print("`:`:::::::`;:::::: ;::::::#/               DOO")
print(" :::`:::::::`;; ;:::::::::##                OO")
print(" ::::`:::::::`;::::::::;:::#                OO")
print(" `:::::`::::::::::::;'`:;::#                O")
print("  `:::::`::::::::;' /  / `:#")
print("   ::::::`:::::;'  /  /   `#")
print("")
print("")
print("███╗░░██╗░█████╗░██╗░░░██╗░█████╗░░░░████████╗███████╗░█████╗░██╗░░██╗")
print("████╗░██║██╔══██╗██║░░░██║██╔══██╗░░░╚══██╔══╝██╔════╝██╔══██╗██║░░██║")
print("██╔██╗██║██║░░██║╚██╗░██╔╝███████║░░░░░░██║░░░█████╗░░██║░░╚═╝███████║")
print("██║╚████║██║░░██║░╚████╔╝░██╔══██║░░░░░░██║░░░██╔══╝░░██║░░██╗██╔══██║")
print("██║░╚███║╚█████╔╝░░╚██╔╝░░██║░░██║██╗░░░██║░░░███████╗╚█████╔╝██║░░██║")
print("╚═╝░░╚══╝░╚════╝░░░░╚═╝░░░╚═╝░░╚═╝╚═╝░░░╚═╝░░░╚══════╝░╚════╝░╚═╝░░╚═╝")
print("")
print("")
print("Welcome to Nova.tech,"..Cheat.GetCheatUserName().."!")
print("")
print("Version: 1.2.1")
print("State: Release")
print("")
print("")
print("")
сколько разеых стилей кода я ебал
 
Забаненный
Статус
Оффлайн
Регистрация
4 Май 2021
Сообщения
228
Реакции[?]
39
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
1647262891184.png
легендарный, поменял стиль кодинга 3 раза))
 
Похожие темы
Сверху Снизу