Crack Lua Neverlose half-life debug src leak

Забаненный
Забаненный
Статус
Оффлайн
Регистрация
16 Фев 2022
Сообщения
51
Реакции
27
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Пелучар, слушай дружище, а ты ничего не забыл?
Кто кого снесет еще?
Credits: Hellfish#9343

Код:
Expand Collapse Copy
-- @region: script information
    -- @ Half-life parody.
    -- @ Created by попросил скрыть ник, но все мы его знаем
    -- @ Version: 0.3.0 [debug].
    -- @ Last update: 01.0.1.2022.
-- @endregion

local screen_size = EngineClient.GetScreenSize()
local sauron_text = {}

local __main__ = function()
    -- @region: ffi elements
    local ffi = require("ffi")
    ffi.cdef[[
        typedef struct {
            uint8_t r; uint8_t g; uint8_t b; uint8_t a;
        } color_struct_t;

        typedef void (*console_color_print)(const color_struct_t&, const char*, ...);
        void* GetProcAddress(void* hModule, const char* lpProcName);
        void* GetModuleHandleA(const char* lpModuleName);

        typedef uintptr_t (__thiscall* GetClientEntity_4242425_t)(void*, int);
        struct Animstate_t
        {
            char pad[3];
            char m_bForceWeaponUpdate;
            char pad1[91];
            void* m_pBaseEntity;
            void* m_pActiveWeapon;
            void* m_pLastActiveWeapon;
            float m_flLastClientSideAnimationUpdateTime;
            int m_iLastClientSideAnimationUpdateFramecount;
            float m_flAnimUpdateDelta;
            float m_flEyeYaw;
            float m_flPitch;
            float m_flGoalFeetYaw;
            float m_flCurrentFeetYaw;
            float m_flCurrentTorsoYaw;
            float m_flUnknownVelocityLean;
            float m_flLeanAmount;
            char pad2[4];
            float m_flFeetCycle;
            float m_flFeetYawRate;
            char pad3[4];
            float m_fDuckAmount;
            float m_fLandingDuckAdditiveSomething;
            char pad4[4];
            float m_vOriginX;
            float m_vOriginY;
            float m_vOriginZ;
            float m_vLastOriginX;
            float m_vLastOriginY;
            float m_vLastOriginZ;
            float m_vVelocityX;
            float m_vVelocityY;
            char pad5[4];
            float m_flUnknownFloat1;
            char pad6[8];
            float m_flUnknownFloat2;
            float m_flUnknownFloat3;
            float m_flUnknown;
            float m_flSpeed2D;
            float m_flUpVelocity;
            float m_flSpeedNormalized;
            float m_flFeetSpeedForwardsOrSideWays;
            float m_flFeetSpeedUnknownForwardOrSideways;
            float m_flTimeSinceStartedMoving;
            float m_flTimeSinceStoppedMoving;
            bool m_bOnGround;
            bool m_bInHitGroundAnimation;
            float m_flTimeSinceInAir;
            float m_flLastOriginZ;
            float m_flHeadHeightOrOffsetFromHittingGroundAnimation;
            float m_flStopToFullRunningFraction;
            char pad7[4];
            float m_flMagicFraction;
            char pad8[60];
            float m_flWorldForce;
            char pad9[462];
            float m_flMaxYaw;
        };

        int VirtualProtect(void* lpAddress, unsigned long dwSize, unsigned long flNewProtect, unsigned long* lpflOldProtect);
        void* VirtualAlloc(void* lpAddress, unsigned long dwSize, unsigned long  flAllocationType, unsigned long flProtect);
        int VirtualFree(void* lpAddress, unsigned long dwSize, unsigned long dwFreeType);

        typedef uintptr_t (__thiscall* GetClientEntity_4242425_t)(void*, int);
        typedef struct
        {
            float x;
            float y;
            float z;
        } Vector_t;

        typedef struct
        {
            char    pad0[0x60]; // 0x00
            void* pEntity; // 0x60
            void* pActiveWeapon; // 0x64
            void* pLastActiveWeapon; // 0x68
            float        flLastUpdateTime; // 0x6C
            int            iLastUpdateFrame; // 0x70
            float        flLastUpdateIncrement; // 0x74
            float        flEyeYaw; // 0x78
            float        flEyePitch; // 0x7C
            float        flGoalFeetYaw; // 0x80
            float        flLastFeetYaw; // 0x84
            float        flMoveYaw; // 0x88
            float        flLastMoveYaw; // 0x8C // changes when moving/jumping/hitting ground
            float        flLeanAmount; // 0x90
            char    pad1[0x4]; // 0x94
            float        flFeetCycle; // 0x98 0 to 1
            float        flMoveWeight; // 0x9C 0 to 1
            float        flMoveWeightSmoothed; // 0xA0
            float        flDuckAmount; // 0xA4
            float        flHitGroundCycle; // 0xA8
            float        flRecrouchWeight; // 0xAC
            Vector_t        vecOrigin; // 0xB0
            Vector_t        vecLastOrigin;// 0xBC
            Vector_t        vecVelocity; // 0xC8
            Vector_t        vecVelocityNormalized; // 0xD4
            Vector_t        vecVelocityNormalizedNonZero; // 0xE0
            float        flVelocityLenght2D; // 0xEC
            float        flJumpFallVelocity; // 0xF0
            float        flSpeedNormalized; // 0xF4 // clamped velocity from 0 to 1
            float        flRunningSpeed; // 0xF8
            float        flDuckingSpeed; // 0xFC
            float        flDurationMoving; // 0x100
            float        flDurationStill; // 0x104
            bool        bOnGround; // 0x108
            bool        bHitGroundAnimation; // 0x109
            char    pad2[0x2]; // 0x10A
            float        flNextLowerBodyYawUpdateTime; // 0x10C
            float        flDurationInAir; // 0x110
            float        flLeftGroundHeight; // 0x114
            float        flHitGroundWeight; // 0x118 // from 0 to 1, is 1 when standing
            float        flWalkToRunTransition; // 0x11C // from 0 to 1, doesnt change when walking or crouching, only running
            char    pad3[0x4]; // 0x120
            float        flAffectedFraction; // 0x124 // affected while jumping and running, or when just jumping, 0 to 1
            char    pad4[0x208]; // 0x128
            float        flMinBodyYaw; // 0x330
            float        flMaxBodyYaw; // 0x334
            float        flMinPitch; //0x338
            float        flMaxPitch; // 0x33C
            int            iAnimsetVersion; // 0x340
        } CCSGOPlayerAnimationState_534535_t;

        typedef struct {
            char  pad_0000[20];
            int m_nOrder; //0x0014
            int m_nSequence; //0x0018
            float m_flPrevCycle; //0x001C
            float m_flWeight; //0x0020
            float m_flWeightDeltaRate; //0x0024
            float m_flPlaybackRate; //0x0028
            float m_flCycle; //0x002C
            void *m_pOwner; //0x0030
            char  pad_0038[4]; //0x0034
        } CAnimationLayer_t;
    ]]

    local color_print_fn = ffi.cast(
        "console_color_print", ffi.C.GetProcAddress(ffi.C.GetModuleHandleA("tier0.dll"), "?ConColorMsg@@YAXABVColor@@PBDZZ")
    )

    local colored_print = function(color, text)
        local col = ffi.new("color_struct_t")
        for i, v in pairs({"r", "g", "b", "a"}) do
            col[v] = color[v] * 255
        end

        color_print_fn(col, text)
    end

    local vtable = {
        entry = function(instance, index, type)
            return ffi.cast(type, (ffi.cast("void***", instance)[0])[index])
        end,
  
        thunk = function(self, index, typestring)
            local t = ffi.typeof(typestring)
            return function(instance, ...)
                assert(instance ~= nil)
                if instance then
                    return self.entry(instance, index, t)(instance, ...)
                end
            end
        end,
  
        bind = function(self, module, interface, index, typestring)
            local instance = Utils.CreateInterface(module, interface)
            local fnptr = self.entry(instance, index, ffi.typeof(typestring))
            return function(...)
                return fnptr(instance, ...)
            end
        end
    }

    local native_GetClipboardTextCount = vtable:bind("vgui2.dll", "VGUI_System010", 7, "int(__thiscall*)(void*)")
    local native_SetClipboardText = vtable:bind("vgui2.dll", "VGUI_System010", 9, "void(__thiscall*)(void*, const char*, int)")
    local native_GetClipboardText = vtable:bind("vgui2.dll", "VGUI_System010", 11, "int(__thiscall*)(void*, int, const char*, int)")
    local new_char_arr = ffi.typeof("char[?]")

    local function set_clipboard_text(text)
        native_SetClipboardText(text, text:len())
    end

    local function get_clipboard_text()
        local len = native_GetClipboardTextCount()
        if len > 0 then
            local char_arr = new_char_arr(len)
            native_GetClipboardText(0, char_arr, len)
            return ffi.string(char_arr, len-1)
        end
    end

    local entity_list_pointer = ffi.cast("void***", Utils.CreateInterface("client.dll", "VClientEntityList003"))
    local get_client_entity_fn = ffi.cast("GetClientEntity_4242425_t", entity_list_pointer[0][3])
    local get_entity_address = function(ent_index)
        local addr = get_client_entity_fn(entity_list_pointer, ent_index)
        return addr
    end

    local get_max_feet_yaw = function(player)
        local animstate = ffi.cast("struct Animstate_t**", get_entity_address(player:EntIndex()) + 0x9960)[0]
        if animstate ~= nil then
            local duck_amount = animstate.m_fDuckAmount
            local forward_or_sideways_speed = math.max(0, math.min(1, animstate.m_flFeetSpeedForwardsOrSideWays))
            local unknown_forward_or_sideways_speed = math.max(1, animstate.m_flFeetSpeedUnknownForwardOrSideways)
            local result_value = (animstate.m_flStopToFullRunningFraction * -0.30000001 - 0.19999999) * forward_or_sideways_speed + 1

            if duck_amount > 0 then
                result_value = result_value + duck_amount * unknown_forward_or_sideways_speed * (0.5 - result_value)
            end
      
            local return_delta_yaw = math.abs(animstate.m_flMaxYaw * result_value)
            return return_delta_yaw
        end
    end

    local hook_helpers = {
        copy = function(dst, src, len)
            return ffi.copy(ffi.cast('void*', dst), ffi.cast('const void*', src), len)
        end,
      
        virtual_protect = function(lpAddress, dwSize, flNewProtect, lpflOldProtect)
            return ffi.C.VirtualProtect(ffi.cast('void*', lpAddress), dwSize, flNewProtect, lpflOldProtect)
        end,
      
        virtual_alloc = function(lpAddress, dwSize, flAllocationType, flProtect, blFree)
            local alloc = ffi.C.VirtualAlloc(lpAddress, dwSize, flAllocationType, flProtect)
            if blFree then
                table.insert(buff.free, function()
                    ffi.C.VirtualFree(alloc, 0, 0x8000)
                end)
            end
            return ffi.cast('intptr_t', alloc)
        end
    }

    local buff = {free = {}}
    local vmt_hook = {hooks = {}}

    function vmt_hook.new(vt)
        local new_hook = {}
        local org_func = {}
        local old_prot = ffi.new('unsigned long[1]')
        local virtual_table = ffi.cast('intptr_t**', vt)[0]
  
        new_hook.this = virtual_table
        new_hook.hookMethod = function(cast, func, method)
            org_func[method] = virtual_table[method]
            hook_helpers.virtual_protect(virtual_table + method, 4, 0x4, old_prot)
  
            virtual_table[method] = ffi.cast('intptr_t', ffi.cast(cast, func))
            hook_helpers.virtual_protect(virtual_table + method, 4, old_prot[0], old_prot)
  
            return ffi.cast(cast, org_func[method])
        end
  
        new_hook.unHookMethod = function(method)
            hook_helpers.virtual_protect(virtual_table + method, 4, 0x4, old_prot)
            local alloc_addr = hook_helpers.virtual_alloc(nil, 5, 0x1000, 0x40, false)
            local trampoline_bytes = ffi.new('uint8_t[?]', 5, 0x90)
  
            trampoline_bytes[0] = 0xE9
            ffi.cast('int32_t*', trampoline_bytes + 1)[0] = org_func[method] - tonumber(alloc_addr) - 5
  
            hook_helpers.copy(alloc_addr, trampoline_bytes, 5)
            virtual_table[method] = ffi.cast('intptr_t', alloc_addr)
  
            hook_helpers.virtual_protect(virtual_table + method, 4, old_prot[0], old_prot)
            org_func[method] = nil
        end
  
        new_hook.unHookAll = function()
            for method, func in pairs(org_func) do
                new_hook.unHookMethod(method)
            end
        end
  
        table.insert(vmt_hook.hooks, new_hook.unHookAll)
        return new_hook
    end
    -- @endregion

    -- @region: menu events
    local menu_database = {
        handler = {
            elements = {},
            references = {}
        },

        update_menu = function(self)
            for _, data in pairs(self.handler.references) do
                if data.condition ~= nil then
                    data.reference:SetVisible(data.condition())
                end
            end
        end,

        add_element = function(self, element_name, reference, condition)
            if type(element_name) ~= "string" or type(reference) ~= "userdata" then
                print(('[Half-life debugger] Wrong element userdata - ["%s"].'):format(element_name))
                self.check_error()
            end

            if condition ~= nil and type(condition) ~= "function" then
                print(('[Half-life debugger] Wrong element condition - ["%s"].'):format(element_name))
                self.check_error()
            end

            if self.handler.references[element_name] ~= nil then
                print(('[Half-life debugger] Element already exists - ["%s"].'):format(element_name))
                self.check_error()
            end

            self.handler.references[element_name] = {
                reference = reference,
                name = unique_name,
                condition = condition
            }

            local execute_callbacks = function(new_value)
                self.handler.elements[element_name] = new_value
                self:update_menu()
            end

            execute_callbacks(reference:Get())
            reference:RegisterCallback(execute_callbacks)
        end,

        set_value = function(self, element_name, value)
            local execute_callbacks = function()
                self.handler.elements[element_name] = value
                self:update_menu()
            end

            self.handler.references[element_name].reference:Set(value)
            execute_callbacks()
        end,

        phases_vars = {
            phases = {},
            count = 0
        },

        all_elements = function(self)
            -- @note: strextter: ragebot tab
                -- @note: strexxter: dormant aimbot elements
                self:add_element("Enable dormant aimbot", Menu.Switch("-> Ragebot", "Dormant aimbotting", "Enable dormant aimbot", false))
                local dormant_aimbot_elements = {
                    names = {"Minimum damage"},
                    set_functions = {Menu.SliderInt},
                    values = {{5, 0, 105}}
                }

                for i = 1, #dormant_aimbot_elements.values do
                    local callback_list = {"Minimum damage"}
                    local callbacks = ("Dormant aimbot %s"):format(callback_list[i]:lower())

                    local names = dormant_aimbot_elements.names[i]
                    local functions = dormant_aimbot_elements.set_functions[i]
                    local values = dormant_aimbot_elements.values[i]

                    self:add_element(callbacks, functions("-> Ragebot", "Dormant aimbotting", names, unpack(values)), function()
                        return self.handler.elements["Enable dormant aimbot"]
                    end)
                end

                self:add_element("Enable custom DT speed", Menu.Switch("-> Ragebot", "Doubletap speed", "Enable custom DT speed", false))
                self:add_element("Custom DT speed", Menu.SliderInt("-> Ragebot", "Doubletap speed", "Custom DT speed", 16, 13, 16), function()
                    return self.handler.elements["Enable custom DT speed"]
                end)
            -- @note: strexxter: anti-aimbotting tab
                -- @note: strextter: default anti-aimbotting elements
                self:add_element("Enable anti-aimbotting", Menu.Switch(
                    "-> Anti-aimbotting", "Anti-aimbotting elements", "Enable anti-aimbotting elements", false)
                )

                self:add_element("Anti-aimbotting presets", Menu.Combo(
                    "-> Anti-aimbotting", "Anti-aimbotting elements", "Select preset:", {
                        "Default", "Safe head", "Tank AA", "Experimental", "Customizable"
                    }, 0
                ), function()
                    return self.handler.elements["Enable anti-aimbotting"]
                end)

                -- @note: strexxter: proccess of making custom aa elements
                local conditions = {
                    "Hidden", "Standing", "Moving", "Ducking", "Fakeduck", "Slow Walk", "In air"
                }

                self:add_element("Conditions", Menu.Combo("-> Anti-aimbotting", "Anti-aimbotting elements", "Conditions", conditions, 0),
                function()
                    return self.handler.elements["Enable anti-aimbotting"]
                    and self.handler.elements["Anti-aimbotting presets"] == 4
                end)

                for i = 1, #conditions do
                    local condition_name = conditions[i + 1]
                    local modes = {
                        "Yaw Add Left", "Yaw Add Right",
                        "Yaw Modifier", "Modifier Degree",
                        "Fake Limit Type", "Left Limit", "Right Limit",
                        "Fake Options", "LBY Mode", "Fake Desync", "Desync On Shot", "Inverter"
                    }
  
                    for k = 1, #modes do
                        local mode_name = modes[k]
                        local functions = {
                            Menu.SliderInt, Menu.SliderInt,
                            Menu.Combo, Menu.SliderInt,
                            Menu.Combo, Menu.SliderInt, Menu.SliderInt,
                            Menu.MultiCombo, Menu.Combo, Menu.Combo, Menu.Combo, Menu.Switch
                        }
  
                        local sub_functions = {
                            {0, -180, 180}, {0, -180, 180},
                            {{"Disabled", "Center", "Offset", "Random", "Spin"}, 0}, {0, -180, 180},
                            {{"Static", "Jitter"}, 0}, {60, 0, 60}, {60, 0, 60},
                            {{"Avoid Overlap", "Jitter", "Randomize Jitter", "Anti Bruteforce"}, 0},
                            {{"Disabled", "Opposite", "Sway"}, 0}, {{"Off", "Peek Fake", "Peek Real"}, 0},
                            {{"Disabled", "Opposite", "Freestanding", "Switch"}, 0}, {false}
                        }
  
                        local total = {
                            callbacks = ("%s %s"):format(condition_name, mode_name),
                            names = ("[%s] %s\n"):format(i, mode_name)
                        }

  
                        self:add_element(total.callbacks, functions[k](
                            "-> Anti-aimbotting", "Anti-aimbotting elements", total.names, unpack(sub_functions[k])
                        ), function()
                            return self.handler.elements["Enable anti-aimbotting"]
                            and self.handler.elements["Anti-aimbotting presets"] == 4
                            and self.handler.elements["Conditions"] == i
                        end)
                    end
                end

                self:add_element("Update presets", Menu.Button(
                    "-> Anti-aimbotting", "Anti-aimbotting elements", "Update alternative settings", "Load alternative settings!"
                ), function()
                    return self.handler.elements["Enable anti-aimbotting"]
                    and not (self.handler.elements["Anti-aimbotting presets"] == 4)
                end)

                local apply_presets = function()
                    local current_preset = self.handler.elements["Anti-aimbotting presets"]
                    local update_anti_bruteforce_phases = function()
                        local remove_phases = function()
                            local length = #self.phases_vars.phases
                            if length == 0 then return end
          
                            for i = 1, length do
                                local remove_name = ("Phase #%s"):format(i)
                                local directory = self.handler.references[remove_name].reference
              
                                Menu.DestroyItem(directory)
                                self.phases_vars.count = 0
              
                                local remove_key = function(table, key)
                                    local element = table[key]
                                    table[key] = nil
                                    return element
                                end
              
                                table.remove(self.phases_vars.phases)
                                remove_key(self.handler.elements, remove_name)
                                remove_key(self.handler.references, remove_name)
                            end
                        end

                        local add_phases = function()
                            local current_indexes = current_preset == 1 and 2 or 3
                            for i = 1, current_indexes do
                                self.phases_vars.count = self.phases_vars.count + 1
                                table.insert(self.phases_vars.phases, self.phases_vars.count)
              
                                local callbacks = ("Phase #%s"):format(self.phases_vars.count)
                                local name = ("Phase #%s"):format(self.phases_vars.count)
              
                                self:add_element(callbacks, Menu.SliderInt(
                                    "-> Anti-aimbotting", "Anti-bruteforce manager", name, 60, -60, 60
                                ), function()
                                    return self.handler.elements["Enable anti-aimbotting helpers"]
                                    and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 0)) ~= 0
                                end)
              
                                self:set_value("Phase slider", self.phases_vars.count)
                            end

                            if current_preset == 0 then -- default
                                self:set_value("Phase #1", -60)
                                self:set_value("Phase #2", 60)
                                self:set_value("Phase #3", -47)
                            elseif current_preset == 1 then -- safe head
                                self:set_value("Phase #1", -60)
                                self:set_value("Phase #2", 60)
                            elseif current_preset == 3 then -- experimental
                                self:set_value("Phase #1", 60)
                                self:set_value("Phase #2", -47)
                                self:set_value("Phase #3", 60)
                            end
                        end

                        remove_phases()
                        add_phases()
                    end

                    local update_helpers = function(value)
                        self:set_value("Enable anti-aimbotting helpers", true)
                        self:set_value("Anti-aimbotting helpers", value)
                    end

                    if current_preset == 0 then -- default
                        update_anti_bruteforce_phases()
                        update_helpers(261)
                    elseif current_preset == 1 then -- safe head
                        update_anti_bruteforce_phases()
                        update_helpers(277)
                    elseif current_preset == 2 then -- tank aa
                        update_helpers(260)
                    elseif current_preset == 3 then -- experimental
                        update_anti_bruteforce_phases()
                        update_helpers(261)
                    end
                end

                --@note: strexxter: anti-aimbotting helpers
                self:add_element("Enable anti-aimbotting helpers", Menu.Switch(
                    "-> Anti-aimbotting", "Additional settings", "Enable additional settings", false)
                )

                self:add_element("Anti-aimbotting helpers", Menu.MultiCombo(
                    "-> Anti-aimbotting", "Additional settings", "Select helpers:", {
                        "Anti-bruteforce", "Break lagcomp in air", "Anti-backstabbing", "Bombsite E-Fix",
                        "Smart yaw ras-position", "Dynamic fake yaw", "Avoid onshoting", "Legit AA on E",
                        "Disable fakelag on HS"
                    }, 0
                ), function()
                    return self.handler.elements["Enable anti-aimbotting helpers"]
                end)

                self.handler.references["Update presets"].reference:RegisterCallback(apply_presets)
                self:add_element("Breaking lagcomp weapons", Menu.MultiCombo(
                    "-> Anti-aimbotting", "Additional settings", "Teleport weapons", {
                        "Default", "Pistols", "Heavy pistols", "Scout", "AWP", "Autosnipers", "Nades"
                    }, 0
                ), function()
                    return self.handler.elements["Enable anti-aimbotting helpers"]
                    and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 1)) ~= 0
                end)

                self:add_element("Anti-aimbotting helpers text", Menu.Text(
                    "-> Anti-aimbotting", "Additional settings", "Dont use it with custom anti-aim preset!"
                ), function()
                    return self.handler.elements["Enable anti-aimbotting helpers"]
                    and self.handler.elements["Anti-aimbotting presets"] == 4
                    and (
                        bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 4)) ~= 0
                        or bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 5)) ~= 0
                        or bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 6)) ~= 0
                    )
                end)

                self:add_element("Copy config", Menu.Button(
                    "-> Anti-aimbotting", "Config system", "Copy your config to clipboard.", "Copy your config to clipboard.")
                )

                self:add_element("Import config", Menu.Button(
                    "-> Anti-aimbotting", "Config system", "Import config from clipboard.", "Import your config from clipboard.")
                )

                -- @note: strexxter: anti-bruteforce phases
                self:add_element("Anti-bruteforce add button", Menu.Button(
                    "-> Anti-aimbotting", "Anti-bruteforce manager", "Add new phase", "Add new phase for anti-bruteforce!"
                ), function()
                    return self.handler.elements["Enable anti-aimbotting helpers"]
                    and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 0)) ~= 0
                end)

                self:add_element("Anti-bruteforce remove button", Menu.Button(
                    "-> Anti-aimbotting", "Anti-bruteforce manager", "Remove phase", "Remove phase for anti-bruteforce!"
                ), function()
                    return self.handler.elements["Enable anti-aimbotting helpers"]
                    and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 0)) ~= 0
                end)

                self:add_element("Phase slider", Menu.SliderInt(
                    "-> Anti-aimbotting", "Additional settings", "Phase slider", self.phases_vars.count, 0, 15)
                )

                local add_new_phase = function()
                    if #self.phases_vars.phases > 9 then
                        table.insert(sauron_text, {
                            text = "You cant make more phases than 10.",
  
                            timer = GlobalVars.realtime,
                            smooth_y = screen_size.y + 100,
                            alpha = 0,
              
                            first_circle = 0,
                            second_circle = 0,
              
                            box_left = screen_size.x / 2,
                            box_right = screen_size.x / 2,
              
                            box_left_1 = screen_size.x / 2,
                            box_right_1 = screen_size.x / 2
                        })
  
                        print("[Half-life debugger] You cant make more than 10 phases.")
                        return
                    end
  
                    self.phases_vars.count = self.phases_vars.count + 1
                    table.insert(self.phases_vars.phases, self.phases_vars.count)
  
                    local callbacks = ("Phase #%s"):format(self.phases_vars.count)
                    local name = ("Phase #%s"):format(self.phases_vars.count)
  
                    self:add_element(callbacks, Menu.SliderInt(
                        "-> Anti-aimbotting", "Anti-bruteforce manager", name, 60, -60, 60
                    ), function()
                        return self.handler.elements["Enable anti-aimbotting helpers"]
                        and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 0)) ~= 0
                    end)
  
                    self:set_value("Phase slider", self.phases_vars.count)
                end

                local remove_phase = function()
                    local length = #self.phases_vars.phases
                    if length == 0 then
                        return
                    end
  
                    local remove_name = ("Phase #%s"):format(length)
                    local directory = self.handler.references[remove_name].reference
  
                    Menu.DestroyItem(directory)
                    self.phases_vars.count = self.phases_vars.count - 1
  
                    local remove_key = function(table, key)
                        local element = table[key]
                        table[key] = nil
                        return element
                    end
  
                    table.remove(self.phases_vars.phases, length)
                    remove_key(self.handler.elements, remove_name)
                    remove_key(self.handler.references, remove_name)
                end
  
                self.handler.references["Anti-bruteforce add button"].reference:RegisterCallback(add_new_phase)
                self.handler.references["Anti-bruteforce remove button"].reference:RegisterCallback(remove_phase)

                local value_of_phases = self.handler.elements["Phase slider"]
                if value_of_phases ~= 0 then
                    for i = 1, value_of_phases do
                        self:add_element(("Phase #%s"):format(i), Menu.SliderInt(
                            "-> Anti-aimbotting", "Anti-bruteforce manager", ("Phase #%s"):format(i), 0, -60, 60
                        ), function()
                            return self.handler.elements["Enable anti-aimbotting helpers"]
                            and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 0)) ~= 0
                        end)

                        self.phases_vars.count = value_of_phases
                        table.insert(self.phases_vars.phases, self.phases_vars.count)
                    end
                end

                self.handler.references["Phase slider"].reference:SetVisible(false)
                self:add_element("Enable roll angles", Menu.Switch("-> Anti-aimbotting", "Roll angles", "Enable roll angles", false))
                self:add_element("Only manual roll angles", Menu.Switch("-> Anti-aimbotting", "Roll angles", "Only on manual trigger", false), function()
                    return self.handler.elements["Enable roll angles"]
                end)

                self:add_element("Manual roll angles", Menu.Combo(
                    "-> Anti-aimbotting", "Roll angles", "Select yaw base", {"Disabled", "Left", "Right"}, 0, "Select yaw base or bind them!"
                ), function()
                    return self.handler.elements["Enable roll angles"]
                    and self.handler.elements["Only manual roll angles"]
                end)
            -- @note: strexxter: visuals tab
                -- @note: strexxter: all indicator elements
                self:add_element("Enable indicator list", Menu.Switch("-> Visuals", "All indicators", "Enable indicators", false))
                self:add_element("Indicator list", Menu.MultiCombo("-> Visuals", "All indicators", "Select indicators:", {
                    "Under crosshair", "Half-life watermark", "Damage indicator", "Skeet autopeek",
                    "Side skeet indicators", "Disable animation on 3rd person", "Crosshair hitmarker",
                    "Notifications", "Skeet damage markers"
                }, 0), function()
                    return self.handler.elements["Enable indicator list"]
                end)

                self:add_element("Under crosshair style", Menu.Combo("-> Visuals", "All indicators", "Under crosshair style", {
                    "Default", "Modern", "Legacy"
                }, 0), function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 0)) ~= 0
                end)

                self:add_element("Minimum damage position", Menu.Combo("-> Visuals", "All indicators", "Damage position", {
                    "Bottom Left", "Bottom Right", "Top Right", "Top Left", "Middle", "Far Left", "Far Right", "Far Up"
                }, 0), function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 2)) ~= 0
                end)

                self:add_element("Skeet autopeek color", Menu.ColorEdit(
                    "-> Visuals", "All indicators", "Skeet autopeek color", Color.RGBA(255, 255, 255, 255)
                ), function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 3)) ~= 0
                end)

                self:add_element("Skeet autopeek type", Menu.Combo(
                    "-> Visuals", "All indicators", "Skeet autopeek type", {"Default", "Quick peek"}, 0
                ), function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 3)) ~= 0
                end)

                self:add_element("Skeet indicator elements", Menu.MultiCombo("-> Visuals", "All indicators", "Indicator elements", {
                    "AA With Circle", "Shot/Miss Percent", "FL Text indicator", "Body Aim", "Exploit",
                    "Damage", "Dormant Aimbot", "Fake Ping", "Lag Compensation", "Fake Duck",
                    "Bomb Info", "Double Tap"
                }, 0), function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 4)) ~= 0
                end)

                self:add_element("Hit/miss type", Menu.Combo("-> Visuals", "All indicators", "Hit/miss type", {"Style 1", "Style 2"}, 0), function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 4)) ~= 0
                    and bit.band(self.handler.elements["Skeet indicator elements"], bit.lshift(1, 1)) ~= 0
                end)

                self:add_element("Damage type", Menu.Combo("-> Visuals", "All indicators", "Damage type", {"Damage: ", "DMG", "Damage value"}, 0), function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 4)) ~= 0
                    and bit.band(self.handler.elements["Skeet indicator elements"], bit.lshift(1, 5)) ~= 0
                end)

                self:add_element("Crosshair hitmarker color", Menu.ColorEdit(
                    "-> Visuals", "All indicators", "Crosshair hitmarker color", Color.RGBA(255, 255, 255, 255)
                ), function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 6)) ~= 0
                end)

                self:add_element("Hitmarker mode", Menu.Combo("-> Visuals", "All indicators", "Hitmarker mode", {"+", "x"}, 0),
                function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 8)) ~= 0
                end)
              
                self:add_element("Hitmarker color", Menu.ColorEdit("-> Visuals", "All indicators", "Hitmarker color", Color.RGBA(
                    255, 255, 255, 255
                )), function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 8)) ~= 0
                end)
              
                self:add_element("Hitmarker size", Menu.SliderInt("-> Visuals", "All indicators", "Hitmarker size", 1, 4, 10),
                function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 8)) ~= 0
                end)

                -- @note: strexxter: keybinds & watermark stuff
                self:add_element("Enable keybinds", Menu.Switch("-> Visuals", "Solus UI Elements", "Enable keybinds", false))
                self:add_element("Keybinds color", Menu.ColorEdit(
                    "-> Visuals", "Solus UI Elements", "Keybinds color", Color.RGBA(255, 255, 255, 255)
                ), function()
                    return self.handler.elements["Enable keybinds"]
                end)

                self:add_element("Keybinds x-adding", Menu.SliderInt(
                    "-> Visuals", "Solus UI Elements", "Keybinds x-adding", 325, 0, EngineClient.GetScreenSize().x)
                )

                self:add_element("Keybinds y-adding", Menu.SliderInt(
                    "-> Visuals", "Solus UI Elements", "Keybinds y-adding", 325, 0, EngineClient.GetScreenSize().y)
                )

                self:add_element("Enable watermark", Menu.Switch("-> Visuals", "Solus UI Elements", "Enable watermark", false))
                self:add_element("Watermark color", Menu.ColorEdit(
                    "-> Visuals", "Solus UI Elements", "Watermark color", Color.RGBA(255, 255, 255, 255)
                ), function()
                    return self.handler.elements["Enable watermark"]
                end)

                self:add_element("Watermark x-adding", Menu.SliderInt(
                    "-> Visuals", "Solus UI Elements", "Watermark x-adding", 1060, 0, EngineClient.GetScreenSize().x)
                )

                self:add_element("Watermark y-adding", Menu.SliderInt(
                    "-> Visuals", "Solus UI Elements", "Watermark y-adding", 30, 0, EngineClient.GetScreenSize().y)
                )

                self.handler.references["Keybinds x-adding"].reference:SetVisible(false)
                self.handler.references["Keybinds y-adding"].reference:SetVisible(false)
                self.handler.references["Watermark x-adding"].reference:SetVisible(false)
                self.handler.references["Watermark y-adding"].reference:SetVisible(false)

                self:add_element("Enable peek arrows", Menu.SwitchColor("-> Visuals", "Arrows Elements", "Enable peek arrows", false, Color.RGBA(255, 255, 255, 255)))
                self:add_element("Enable weapons in scope", Menu.Switch("-> Visuals", "Other Indicators", "Enable weapons in scope", false))
                self:add_element("Enable custom scope", Menu.SwitchColor("-> Visuals", "Other Indicators", "Enable custom scope", false, Color.RGBA(255, 255, 255, 255)))

                local custom_scope_elements = {"Initial position", "Offset"}
                for index = 1, #custom_scope_elements do
                    local current_element = custom_scope_elements[index]
                    local functions = {Menu.SliderInt, Menu.SliderInt}
                    local sub_functions = {
                        {200, 0, 400}, {15, 0, 1000}
                    }

                    local callbacks = ("Custom scope %s"):format(current_element:lower())
                    self:add_element(callbacks, functions[index]("-> Visuals", "Other Indicators", current_element, unpack(sub_functions[index])), function()
                        return self.handler.elements["Enable custom scope"]
                    end)
                end

            -- @note: strexxter: miscellaneous tab
                -- @note: strexxter: default miscellaneous elements
                self:add_element("Enable hitlogs", Menu.Switch("-> Miscellaneous", "Hitlogging information", "Enable hitlogs", false))
                self:add_element("Enable trashtalk", Menu.Switch("-> Miscellaneous", "Other functions", "Enable trashtalk", false))

                self:add_element("Enable hitsounds", Menu.Switch("-> Miscellaneous", "Other functions", "Enable hitsounds", false))
                self:add_element("Hitsound", Menu.TextBox("-> Miscellaneous", "Other functions", "Select your hitsound:", 64, "format.wav"), function()
                    return self.handler.elements["Enable hitsounds"]
                end)

                self:add_element("Hitsound text", Menu.Text("-> Miscellaneous", "Other functions", "Directory: csgo/sound/your_file.wav"), function()
                    return self.handler.elements["Enable hitsounds"]
                end)

                self:add_element("Enable anim breakers", Menu.Switch("-> Miscellaneous", "Animation breaker", "Enable animation breakers", false))
                self:add_element("Anim breakers", Menu.MultiCombo("-> Miscellaneous", "Animation breaker", "Animation breakers", {
                    "Static legs in air", "Break leg animation", "Pitch 0 on land"
                }, 0), function()
                    return self.handler.elements["Enable anim breakers"]
                end)

                self:add_element("Static legs timer", Menu.SliderFloat("-> Miscellaneous", "Animation breaker", "Static legs timer", 0.5, 0, 1), function()
                    return self.handler.elements["Enable anim breakers"]
                    and bit.band(self.handler.elements["Anim breakers"], bit.lshift(1, 0)) ~= 0
                end)

                self:add_element("Leg fucker type", Menu.Combo("-> Miscellaneous", "Animation breaker", "Leg breaker modes", {"Static", "Jitter"}, 0), function()
                    return self.handler.elements["Enable anim breakers"]
                    and bit.band(self.handler.elements["Anim breakers"], bit.lshift(1, 1)) ~= 0
                end)

                local coded_value = {}
                local extract = function(v, from, width)
                    return bit.band(bit.rshift(v, from), bit.lshift(1, width) - 1)
                end

                local function make_encoder(alphabet)
                    local encoder = {}
                    local decoder = {}

                    for i = 1, 65 do
                        local chr = string.byte(string.sub(alphabet, i, i)) or 32

                        if decoder[chr] ~= nil then
                            print("[Half-life debugger] Invalid alphabet: duplicate character " .. tostring(chr), 3)
                        end

                        encoder[i - 1] = chr
                        decoder[chr] = i - 1
                    end

                    return encoder, decoder
                end

                local encoders, decoders = {}, {}
                local base64url = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"
                encoders["base64url"], decoders["base64url"] = make_encoder(base64url)

                local alphabet_mt = {
                    __index = function(tbl, key)
                        if type(key) == "string" and key:len() == 64 or key:len() == 65 then
                            encoders[key], decoders[key] = make_encoder(key)
                            return tbl[key]
                        end
                    end
                }

                setmetatable(encoders, alphabet_mt)
                setmetatable(decoders, alphabet_mt)

                function coded_value.encode(str, encoder)
                    encoder = encoders[encoder or "base64"] or print(
                        "[Half-life debugger] Invalid alphabet specified: 2"
                    )

                    str = tostring(str)
                    local t, k, n = {}, 1, #str
                    local lastn = n % 3
                    local cache = {}

                    for i = 1, n - lastn, 3 do
                        local a, b, c = string.byte(str, i, i + 2)
                        local v = a * 0x10000 + b * 0x100 + c
                        local s = cache[v]

                        if not s then
                            s = string.char(
                                encoder[extract(v, 18, 6)],
                                encoder[extract(v, 12, 6)],
                                encoder[extract(v, 6, 6)],
                                encoder[extract(v, 0, 6)]
                            )

                            cache[v] = s
                        end

                        t[k] = s
                        k = k + 1
                    end

                    if lastn == 2 then
                        local a, b = string.byte(str, n - 1, n)
                        local v = a * 0x10000 + b * 0x100

                        t[k] = string.char(
                            encoder[extract(v, 18, 6)],
                            encoder[extract(v, 12, 6)],
                            encoder[extract(v, 6, 6)],
                            encoder[64]
                        )
                    elseif lastn == 1 then
                        local v = string.byte(str, n) * 0x10000
                        t[k] = string.char(
                            encoder[extract(v, 18, 6)],
                            encoder[extract(v, 12, 6)],
                            encoder[64],
                            encoder[64]
                        )
                    end

                    return table.concat(t)
                end

                function coded_value.decode(b64, decoder)
                    decoder = decoders[decoder or "base64"] or print(
                        "[Half-life debugger] Invalid alphabet specified: 2"
                    )

                    local pattern = "[^%w%+%/%=]"
                    if decoder then
                        local s62, s63
                        for charcode, b64code in pairs(decoder) do
                            if b64code == 62 then
                                s62 = charcode
                            elseif b64code == 63 then
                                s63 = charcode
                            end
                        end

                        pattern = string.format("[^%%w%%%s%%%s%%=]", string.char(s62), string.char(s63))
                    end

                    b64 = string.gsub(tostring(b64), pattern, "")
                    local cache = {}
                    local t, k = {}, 1
                    local n = #b64
                    local padding = string.sub(b64, -2) == "==" and 2 or string.sub(b64, -1) == "=" and 1 or 0

                    for i = 1, padding > 0 and n - 4 or n, 4 do
                        local a, b, c, d = string.byte(b64, i, i + 3)

                        if not d then
                            d = string.byte(b64, i, i + 3)
                        end

                        if not c then
                            c = string.byte(b64, i, i + 3)
                        end

                        if not b then
                            c = string.byte(b64, i, i + 3)
                        end

                        if not a then
                            c = string.byte(b64, i, i + 3)
                        end

                        if not a or not b or not c or not d then
                            print("[Half-life debugger] Wrong clipboard data!")
                            return
                        end

                        local v0 = a * 0x1000000 + b * 0x10000 + c * 0x100 + d
                        local s = cache[v0]

                        if not s then
                            if not decoder[a] or not decoder[b] or not decoder[c] or not decoder[d] then
                                print("[Half-life debugger] Wrong clipboard data!")
                                return
                            end

                            local v = decoder[a] * 0x40000 + decoder[b] * 0x1000 + decoder[c] * 0x40 + decoder[d]
                            s = string.char(
                                extract(v, 16, 8),
                                extract(v, 8, 8),
                                extract(v, 0, 8)
                            )

                            cache[v0] = s
                        end

                        t[k] = s
                        k = k + 1
                    end

                    if padding == 1 then
                        local a, b, c = string.byte(b64, n - 3, n - 1)
                        local v = decoder[a] * 0x40000 + decoder[b] * 0x1000 + decoder[c] * 0x40
                      
                        t[k] = string.char(
                            extract(v, 16, 8),
                            extract(v, 8, 8)
                        )
                    elseif padding == 2 then
                        local a, b = string.byte(b64, n - 3, n - 2)
                        local v = decoder[a] * 0x40000 + decoder[b] * 0x1000

                        t[k] = string.char(
                            extract(v, 16, 8)
                        )
                    end
                  
                    return table.concat(t)
                end

                local copy_proccess = function()
                    set_clipboard_text("")
  
                    local to_copy = {
                        "Enable dormant aimbot", "Dormant aimbot minimum damage",
                        "Enable anti-aimbotting", "Anti-aimbotting presets",
                        "Enable anti-aimbotting helpers", "Anti-aimbotting helpers",
                        "Enable hitlogs", "Enable trashtalk"
                    }
  
                    local custom_conditions = {"Standing", "Moving", "Ducking", "Fakeduck", "Slow Walk", "In air"}                 
                    local modes = {
                        "Yaw Add Left", "Yaw Add Right",
                        "Yaw Modifier", "Modifier Degree",
                        "Fake Limit Type", "Left Limit", "Right Limit",
                        "Fake Options", "LBY Mode", "Fake Desync", "Desync On Shot", "Inverter"
                    }
  
                    for i = 1, #custom_conditions do
                        local condition_name = custom_conditions[i]
                        for k = 1, #modes do
                            local mode_name = modes[k]
                            local end_name = ("%s %s"):format(condition_name, mode_name)
  
                            table.insert(to_copy, end_name)
                        end
                    end

                    local count = "Phase slider"
                    table.insert(to_copy, count)

                    for i = 1, self.handler.elements[count] do
                        local phases_name = ("Phase #%s"):format(i)
                        table.insert(to_copy, phases_name)
                    end

                    local copied_data = {}
                    for i = 1, #to_copy do
                        local directory = self.handler.elements
                        local name = to_copy[i]
  
                        local data = ("%s"):format(directory[name])
                        table.insert(copied_data, data)
                    end

                    local concate_table = table.concat(copied_data, " ")
                    local obfuscated_data = coded_value.encode(concate_table, "base64url")

                    if set_clipboard_text ~= nil then
                        set_clipboard_text(obfuscated_data)
                    end
  
                    copied_data = {}
                end

                local import_proccess = function()
                    local exported_text = get_clipboard_text()
                    if not exported_text then
                        print("[Half-life debug] No text copied to clipboard!")
                        return
                    end
  
                    local function split_string(s, delimiter)
                        local result = {}
                        for match in (s .. delimiter):gmatch("(.-)" .. delimiter) do
                            table.insert(result, match)
                        end
  
                        return result
                    end

                    local deobfuscated_data = coded_value.decode(exported_text, "base64url")
                    if deobfuscated_data ~= nil then
                        local split_string = split_string(deobfuscated_data, " ")
                        local exported = {}

                        for i = 1, #split_string do
                            table.insert(exported, split_string[i])
                        end

                        local to_paste = {
                            "Enable dormant aimbot", "Dormant aimbot minimum damage",
                            "Enable anti-aimbotting", "Anti-aimbotting presets",
                            "Enable anti-aimbotting helpers", "Anti-aimbotting helpers",
                            "Enable hitlogs", "Enable trashtalk"
                        }
      
                        local custom_conditions = {"Standing", "Moving", "Ducking", "Fakeduck", "Slow Walk", "In air"}                 
                        local modes = {
                            "Yaw Add Left", "Yaw Add Right",
                            "Yaw Modifier", "Modifier Degree",
                            "Fake Limit Type", "Left Limit", "Right Limit",
                            "Fake Options", "LBY Mode", "Fake Desync", "Desync On Shot", "Inverter"
                        }
      
                        for i = 1, #custom_conditions do
                            local condition_name = custom_conditions[i]
                            for k = 1, #modes do
                                local mode_name = modes[k]
                                local end_name = ("%s %s"):format(condition_name, mode_name)
  
                                table.insert(to_paste, end_name)
                            end
                        end

                        local update_anti_bruteforce_phases = function()
                            local remove_phases = function()
                                local length = #self.phases_vars.phases
                                if length == 0 then return end
              
                                for i = 1, length do
                                    local remove_name = ("Phase #%s"):format(i)
                                    local directory = self.handler.references[remove_name].reference
                  
                                    Menu.DestroyItem(directory)
                                    self.phases_vars.count = 0
                  
                                    local remove_key = function(table, key)
                                        local element = table[key]
                                        table[key] = nil
                                        return element
                                    end
                  
                                    table.remove(self.phases_vars.phases)
                                    self:set_value("Phase slider", 0)

                                    remove_key(self.handler.elements, remove_name)
                                    remove_key(self.handler.references, remove_name)
                                end
                            end
  
                            local add_phases = function()
                                if tonumber(exported[81]) ~= nil then
                                    for i = 1, exported[81] do
                                        local data = exported[i + 82]
                                        data = tonumber(data)
                                        if not data then data = 60 end

                                        self.phases_vars.count = self.phases_vars.count + 1
                                        table.insert(self.phases_vars.phases, self.phases_vars.count)

                                        local callbacks = ("Phase #%s"):format(self.phases_vars.count)
                                        local name = ("Phase #%s"):format(self.phases_vars.count)

                                        self:add_element(callbacks, Menu.SliderInt(
                                            "-> Anti-aimbotting", "Anti-bruteforce manager", name, data or 60, -60, 60
                                        ), function()
                                            return self.handler.elements["Enable anti-aimbotting helpers"]
                                            and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 0)) ~= 0
                                        end)

                                        self:set_value("Phase slider", self.phases_vars.count)
                                    end
                                end
                            end
  
                            remove_phases()
                            add_phases()
                        end

                        for i = 1, 80 do
                            local names = to_paste[i]
                            local data = exported[i]

                            if data == "true" then
                                data = true
                            elseif data == "false" then
                                data = false
                            else
                                data = tonumber(data)
                            end

                            if data ~= nil then
                                self:set_value(names, data)
                            end
                        end
                      
                        update_anti_bruteforce_phases()
                        exported = {}
                    end
                end

                self.handler.references["Copy config"].reference:RegisterCallback(copy_proccess)
                self.handler.references["Import config"].reference:RegisterCallback(import_proccess)
            -- @note: strexxter: the end of all menu elements
        end,

        register_callbacks = function(self)
            self:all_elements()
        end
    }

    menu_database:register_callbacks()
    -- @endregion

    -- @region: all math & vector & other operations.
    function C_BaseEntity:GetVelocity()
        local first_velocity = self:GetProp("m_vecVelocity[0]")
        local second_velocity = self:GetProp("m_vecVelocity[1]")

        local speed = math.floor(math.sqrt(first_velocity * first_velocity + second_velocity * second_velocity))
        return speed
    end

    function C_BaseEntity:GetState()
        local flags = self:GetProp("m_fFlags")
        local velocity = self:GetVelocity()

        if bit.band(flags, 1) == 1 then
            if Menu.FindVar("Aimbot", "Anti Aim", "Misc", "Fake Duck"):GetBool() then
                return "FAKEDUCKING"
            else
                if bit.band(flags, 4) == 4 then
                    if self:GetProp("m_iTeamNum") == 2 then
                        return "CROUCHING T"
                    elseif self:GetProp("m_iTeamNum") == 3 then
                        return "CROUCHING CT"
                    end
                else
                    if Menu.FindVar("Aimbot", "Anti Aim", "Misc", "Slow Walk"):GetBool() then
                        return "SLOWWALKING"
                    else
                        if velocity <= 3 then
                            return "STANDING"
                        else
                            return "MOVING"
                        end
                    end
                end
            end
        elseif bit.band(flags, 1) == 0 then
            return "IN AIR"
        end
    end

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

        update_enemies = function(self)
            local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
            if not localplayer then return end
          
            local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
            if not my_index then return end

            if EngineClient.IsConnected() and my_index:IsAlive() then
                local players = EntityList.GetEntitiesByName("CCSPlayer")
                local fov_enemy, maximum_fov = nil, 180
              
                for i = 1, #players do
                    local enemy = players[i]:GetPlayer()
                    if enemy ~= my_index and not enemy:IsTeamMate() and enemy:IsAlive() then
                        local my_origin = my_index:GetRenderOrigin()
                        local enemy_origin = enemy:GetRenderOrigin()

                        local world_to_screen = (
                            my_origin.x - enemy_origin.x == 0 and my_origin.y - enemy_origin.z == 0
                        ) and 0 or math.deg(
                            math.atan2(
                                my_origin.y - enemy_origin.y, my_origin.x - enemy_origin.x
                            )
                        ) - EngineClient.GetViewAngles().yaw + 180

                        local calculated_fov = math.abs(self.normalize_yaw(world_to_screen))
                        if not fov_enemy or calculated_fov <= maximum_fov then
                            fov_enemy = enemy
                            maximum_fov = calculated_fov
                        end
                    end
                end

                return ({
                    enemy = fov_enemy,
                    fov = maximum_fov
                })
            end
        end,

        calculate_angles = function(self, local_x, local_y, enemy_x, enemy_y)
            local delta_y = local_y - enemy_y
            local delta_x = local_x - enemy_x

            local relative_yaw = math.atan(delta_y / delta_x)
            relative_yaw = self.normalize_yaw(relative_yaw * 180 / math.pi)

            if delta_x >= 0 then
                relative_yaw = self.normalize_yaw(relative_yaw + 180)
            end
          
            return relative_yaw
        end,

        angle_to_vec = function(pitch, yaw)
            local p = pitch / 180 * math.pi
            local y = yaw / 180 * math.pi

            local sin_p = math.sin(p)
            local cos_p = math.cos(p)
            local sin_y = math.sin(y)
            local cos_y = math.cos(y)

            return {
                cos_p * cos_y,
                cos_p * sin_y,
                -sin_p
            }
        end,

        easings = {
            lerp = function(start, vend, time)
                return start + (vend - start) * time
            end,

            clamp = function(val, min, max)
                if val > max then return max end
                if min > val then return min end
                return val
            end
        },

        get_hit_side = function(self)
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 0)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local data, current_enemy = self:update_enemies(), nil
                        if data ~= nil then
                            current_enemy = data.enemy
                        end
                      
                        if current_enemy ~= nil and current_enemy:IsAlive() then
                            local predict_damage = function(x, y, z)
                                local a, b, c = {}, {}, {}
                                local enemy_head_position = current_enemy:GetHitboxCenter(1)
                                local ticks = 40

                                a[1], b[1], c[1] = enemy_head_position.x, enemy_head_position.y, enemy_head_position.z
                                a[2], b[2], c[2] = enemy_head_position.x + ticks, enemy_head_position.y, enemy_head_position.z
                                a[3], b[3], c[3] = enemy_head_position.x - ticks, enemy_head_position.y, enemy_head_position.z
                              
                                a[4], b[4], c[4] = enemy_head_position.x, enemy_head_position.y + ticks, enemy_head_position.z
                                a[5], b[5], c[5] = enemy_head_position.x, enemy_head_position.y - ticks, enemy_head_position.z
  
                                a[6], b[6], c[6] = enemy_head_position.x, enemy_head_position.y, enemy_head_position.z + ticks
                                a[7], b[7], c[7] = enemy_head_position.x, enemy_head_position.y, enemy_head_position.z - ticks

                                for i = 1, 7, 1 do
                                    local damage = 0
                                    local trace_damage = Cheat.FireBullet(
                                        current_enemy, Vector.new(a[i], b[i], c[i]), Vector.new(x, y, z)
                                    ).damage
                          
                                    if trace_damage > damage then
                                        damage = trace_damage
                                    end
                          
                                    return damage
                                end
                            end

                            local my_eye_position = my_index:GetEyePosition()
                            local enemy_head_position = current_enemy:GetHitboxCenter(0)
                            local calculated_yaw = self:calculate_angles(
                                my_eye_position.x, my_eye_position.y, enemy_head_position.x, enemy_head_position.y
                            )

                            local left_direction_x, left_direction_y = self.angle_to_vec(
                                0, (calculated_yaw + 90)
                            ), self.angle_to_vec(0, (calculated_yaw + 90))

                            local right_direction_x, right_direction_y = self.angle_to_vec(
                                0, (calculated_yaw - 90)
                            ), self.angle_to_vec(0, (calculated_yaw - 90))
                          
                            local rend_x = my_eye_position.x + right_direction_x[1] * 10
                            local rend_y = my_eye_position.y + right_direction_y[1] * 10

                            local lend_x = my_eye_position.x + left_direction_x[1] * 10
                            local lend_y = my_eye_position.y + left_direction_y[1] * 10

                            local rend_x_2 = my_eye_position.x + right_direction_x[1] * 100
                            local rend_y_2 = my_eye_position.y + left_direction_y[1] * 100

                            local lend_x_2 = my_eye_position.x + left_direction_x[1] * 100
                            local lend_y_2 = my_eye_position.y + left_direction_y[1] * 100
                          
                            local left_trace = predict_damage(rend_x, rend_y, my_eye_position.z)
                            local right_trace = predict_damage(lend_x, lend_y, my_eye_position.z)
                            local left_trace_2 = predict_damage(rend_x_2, rend_y_2, my_eye_position.z)
                            local right_trace_2 = predict_damage(lend_x_2, lend_y_2, my_eye_position.z)

                            local hit_side = (
                                (left_trace > 0 or right_trace > 0 or left_trace_2 > 0 or right_trace_2 > 0) and
                                (
                                    left_trace > right_trace and 0.5 or right_trace > left_trace and -0.5
                                    or left_trace_2 > right_trace_2 and 1 or right_trace_2 > left_trace_2 -1
                                ) or 0.0
                            )

                            return hit_side
                        end
                    end
                end
            end
        end
    }

    -- @region: all ragebot functions
    local ragebot_functions = {
        dormant_aimbot = {
            run_autostop = function(cmd, goal_speed)
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
      
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                local minspeed = math.sqrt((cmd.forwardmove * cmd.forwardmove) + (cmd.sidemove * cmd.sidemove))
                if goal_speed <= 0 or minspeed <= 0 then return end
  
                local flags = my_index:GetProp("m_fFlags")
                if bit.band(flags, 4) == 4 then
                    goal_speed = goal_speed * 2.94117647
                end
  
                if minspeed <= goal_speed then return end
                local speed_factor = goal_speed / minspeed
  
                cmd.forwardmove = cmd.forwardmove * speed_factor
                cmd.sidemove = cmd.sidemove * speed_factor
            end,

            vars = {
                player_info_prev = {},
                round_started = 0,
                is_dormant_flag = false,

                minimal_vector = Vector.new(),
                maximal_vector = Vector.new()
            },

            calculate_angles = function(source, point)
                local world_to_screen = function(x_position, y_position)
                    if x_position == 0 and y_position == 0 then return 0 end
          
                    local atan_position = math.atan2(y_position, x_position)
                    local deg_position = math.deg(atan_position)
          
                    return deg_position
                end

                local delta_of_vectors = point - source
                local hyp = math.sqrt(delta_of_vectors.x * delta_of_vectors.x + delta_of_vectors.y * delta_of_vectors.y)
      
                local yaw = world_to_screen(delta_of_vectors.x, delta_of_vectors.y)
                local pitch = world_to_screen(hyp, -delta_of_vectors.z)
      
                return Vector.new(pitch, yaw, 0)
            end,

            get_hittable_damage = function(my_index, enemy, start_point, end_point)
                if my_index ~= nil then
                    if enemy ~= nil then
                        local bullet_data = Cheat.FireBullet(my_index, start_point, end_point)
                        local bullet_damage = bullet_data.damage

                        local minimum_damage = menu_database.handler.elements["Dormant aimbot minimum damage"]
                        local enemy_health = enemy:GetProp("m_iHealth")

                        if bullet_damage < math.min(minimum_damage, enemy_health) then
                            return 0
                        end

                        if bullet_data.trace.hit_entity ~= nil then
                            if bullet_data.trace.hit_entity:EntIndex() ~= enemy:EntIndex() then
                                return 0
                            end
                        end

                        if enemy:IsVisible(end_point) then
                            return 0
                        end

                        return bullet_damage
                    end
                end
            end,

            run_work = function(self, cmd)
                if menu_database.handler.elements["Enable dormant aimbot"] then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
          
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
          
                    local my_weapon = my_index:GetActiveWeapon()
                    if not my_weapon then return end
          
                    local weapon_id = my_weapon:GetWeaponID()
                    if not weapon_id then return end
          
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local get_inaccuracy = my_weapon:GetInaccuracy(my_weapon)
                        local tickcount = GlobalVars.tickcount
          
                        local player_resource = EntityList.GetPlayerResource()
                        local eye_position = my_index:GetEyePosition()
          
                        local simulation_time = my_index:GetProp("m_flSimulationTime")
                        local on_ground = bit.band(my_index:GetProp("m_fFlags"), bit.lshift(1, 0)) == 1 and true or false

                        if tickcount < self.vars.round_started then
                            return
                        end

                        local primary_attack = my_weapon:GetProp("m_flNextPrimaryAttack")
                        local next_attack = my_index:GetProp("m_flNextAttack")
                        local secondary_attack = my_weapon:GetProp("m_flNextSecondaryAttack")

                        local can_shoot = false
                        if weapon_id == 64 then -- revolver
                            can_shoot = simulation_time > primary_attack
                        elseif my_weapon:IsKnife() or my_weapon:IsGrenade() or weapon_id == 31 then
                            can_shoot = false
                        else
                            can_shoot = simulation_time > math.max(next_attack, primary_attack, secondary_attack)
                        end

                        local player_info = {}
                        local players = EntityList.GetEntitiesByName("CCSPlayer")
                      
                        for i = 1, #players do
                            local enemy = players[i]:GetPlayer()
                            if enemy ~= my_index and not enemy:IsTeamMate() and enemy:IsAlive() then
                                local network_state = enemy:GetNetworkState()
                                if enemy:IsDormant() and network_state ~= -1 then
                                    local can_hit = false
                                    local origin = enemy:GetProp("m_vecOrigin")
                                    local alpha_multiplier = enemy:GetESPAlpha()

                                    if self.vars.player_info_prev[i] ~= nil and origin.x ~= 0 and alpha_multiplier > 0 then
                                        local is_dormant_accurate = alpha_multiplier > 0.2
                                        if is_dormant_accurate then
                                            local bounds = enemy:GetRenderBounds(self.vars.minimal_vector, self.vars.maximal_vector)
                                            local all_vector_points = {
                                                origin + Vector.new(0, 0, 38),
                                                origin + Vector.new(0, 0, 40),
                                                origin + Vector.new(0, 0, 42),
                                                origin + Vector.new(0, 0, 50)
                                            }

                                            local best_damage = 0
                                            local best_point = Vector.new()
                                            local my_eye_position = my_index:GetEyePosition()
                                          
                                            for point = 1, #all_vector_points do
                                                local current_point = all_vector_points[point]
                                                local start_position = self.calculate_angles(my_eye_position, current_point)
                                                local damage = self.get_hittable_damage(my_index, enemy, my_eye_position, current_point)

                                                if damage > best_damage then
                                                    best_damage = damage
                                                    best_point = start_position
                                                    can_hit = true
                                                end
                                            end

                                            local get_max_speed = my_weapon:GetMaxSpeed()
                                            if can_shoot and can_hit then
                                                self.vars.is_dormant_flag = true
                                                self.run_autostop(cmd, get_max_speed * 0.33)

                                                if get_inaccuracy < 0.009 then
                                                    cmd.viewangles.pitch = best_point.x
                                                    cmd.viewangles.yaw = best_point.y
                                                    cmd.viewangles.roll = 0.0

                                                    cmd.buttons = bit.bor(cmd.buttons, 1)
                                                    self.vars.is_dormant_flag = true

                                                    can_shoot = false
                                                end
                                            elseif not can_hit then
                                                self.vars.is_dormant_flag = false
                                            end
                                        end
                                    end
                                    player_info[i] = {origin, alpha_multiplier, can_hit}
                                end
                            end
                        end
                        self.vars.player_info_prev = player_info
                    end
                end
            end,

            reset_data = function(self, e)
                if menu_database.handler.elements["Enable dormant aimbot"] then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
          
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
          
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        if e:GetName() == "round_prestart" then
                            local mp_freezetime = CVar.FindVar("mp_freezetime"):GetFloat()
                            local ticks = GlobalVars.interval_per_tick
                  
                            local freezetime = (mp_freezetime + 1) / ticks
                            local tickcount = GlobalVars.tickcount
                  
                            self.vars.round_started = tickcount + freezetime
                        end
                    end
                end
            end
        },

        doubletap_speed = function()
            if menu_database.handler.elements["Enable custom DT speed"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
      
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end
      
                local active_weapon = my_index:GetActiveWeapon()
                if not active_weapon then return end
      
                if EngineClient.IsConnected() and my_index:IsAlive() then
                    local speed = menu_database.handler.elements["Custom DT speed"]
                    Exploits.OverrideDoubleTapSpeed(speed)
                end
            end
        end,

        load_ragebot_functions = function(self, cmd)
            self.dormant_aimbot:run_work(cmd)
            self:doubletap_speed()
        end
    }

    ESP.CustomText("Dormant aimbot status", "enemies", "DA", function(ent)
        if ragebot_functions.dormant_aimbot.vars.is_dormant_flag then
            return "DA"
        else
            return false
        end
    end)

    ESP.CustomText("Resolver state", "enemies", "Resolver state", function(ent)
        local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
        if not localplayer then return end
      
        local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
        if not my_index then return end

        local enemy = ent:GetPlayer()
        local current_text = ""

        if not enemy:IsDormant() then
            local my_position_in_world = my_index:GetProp("m_vecOrigin")
            local enemy_eye_position = enemy:GetEyePosition()

            local delta_of_vectors = my_position_in_world - enemy_eye_position
            local reverse_vector_to_angle = Cheat.VectorToAngle(delta_of_vectors)
            local trace_data = {
                left = 0,
                right = 0
            }

            for i = reverse_vector_to_angle.yaw - 90, reverse_vector_to_angle.yaw + 90, 25 do
                local radians = math.rad(i)
                local side = i < reverse_vector_to_angle.yaw and "left" or "right"

                local first_point = Vector.new(
                    enemy_eye_position.x + 50 * math.cos(radians),
                    enemy_eye_position.y + 50 * math.sin(radians),
                    enemy_eye_position.z
                )

                local last_point = Vector.new(
                    enemy_eye_position.x + 256 * math.cos(radians),
                    enemy_eye_position.y + 256 * math.sin(radians),
                    enemy_eye_position.z
                )

                local get_traced_impact = EngineTrace.TraceRay(first_point, last_point, my_index, 0xFFFFFFFF).fraction
                trace_data[side] = trace_data[side] + get_traced_impact
            end

            local current_side = trace_data.left < trace_data.right and "left" or "right"
            local current_delta = math.floor(get_max_feet_yaw(enemy))

            local pitch = enemy:GetProp("m_angEyeAngles[0]")
            local is_legit_aa = (pitch >= 0 and pitch <= 50 or pitch >= 329 and pitch <= 360) and true or false
            local legit_aa_delta = math.floor(math.max(math.min(
                enemy:GetProp("m_angEyeAngles[1]") - current_delta,
                (enemy:GetProp("m_angEyeAngles[1]") - current_delta) / 4
            ), 0))

            if legit_aa_delta > 60 then legit_aa_delta = 60 end
            if legit_aa_delta < 0 then legit_aa_delta = 0 end

            current_text = enemy:GetPlayerInfo().fakeplayer and "DEFAULT[0.0]" or ("SIDE:%s[%s]"):format(
                current_side, is_legit_aa and legit_aa_delta or current_delta
            )
        else
            current_text = "RESETING[0.0]"
        end

        return current_text
    end)
    -- @endregion

    -- @region: all anti-aimbotting functions
    local anti_aimbotting_functions = {
        anti_bruteforce = {
            vars = {
                is_anti_bruteforcing = false,
                anti_bruteforcing_timer = GlobalVars.realtime,

                anti_bruteforcing_counter = 1,
                anti_bruteforcing_side = 1,

                phases_counter = 1,
                phase_state = false
            },
  
            run_work = function(self, e)
                if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                    local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                    if bit.band(directory, bit.lshift(1, 0)) ~= 0 then
                        local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                        if not localplayer then return end
                      
                        local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                        if not my_index then return end
      
                        if EngineClient.IsConnected() and my_index:IsAlive() then
                            if e:GetName() ~= "bullet_impact" then return end
              
                            local my_index = EntityList.GetLocalPlayer()
                            local attacker = EntityList.GetPlayerForUserID(e:GetInt("userid"))
              
                            if attacker == my_index or attacker:IsTeamMate() then
                                return
                            end
              
                            local my_head_position = my_index:GetHitboxCenter(0)
                            local bullet_vector = Vector.new(e:GetInt("x"), e:GetInt("y"), e:GetInt("z"))
              
                            local my_origin = my_index:GetRenderOrigin()
                            local attacker_origin = attacker:GetRenderOrigin()
              
                            local check_for_unhittable_wall = Cheat.FireBullet(attacker, bullet_vector, my_head_position)
                            if check_for_unhittable_wall.damage < 5 then return end
              
                            local point_between_my_head_and_origin = {my_head_position.x - attacker_origin.x, my_head_position.y - attacker_origin.y}
                            local point_between_bullet_and_origin = {bullet_vector.x - attacker_origin.x, bullet_vector.y - attacker_origin.y}
              
                            local decrease_bullet_points = point_between_bullet_and_origin[1] ^ 2 + point_between_bullet_and_origin[2] ^ 2
                            local create_dot_points = (
                                point_between_my_head_and_origin[1] * point_between_bullet_and_origin[1] +
                                point_between_my_head_and_origin[2] * point_between_bullet_and_origin[2]
                            )
              
                            local final_dots = create_dot_points / decrease_bullet_points
                            local final_distance = {
                                attacker_origin.x + point_between_bullet_and_origin[1] * final_dots,
                                attacker_origin.y + point_between_bullet_and_origin[2] * final_dots
                            }
              
                            local my_delta_value = {my_head_position.x - final_distance[1], my_head_position.y - final_distance[2]}
                            local my_delta_to_world = math.abs(math.sqrt(my_delta_value[1] ^ 2 + my_delta_value[2] ^ 2))
              
                            local minimum_distance_to_trigger = my_origin:DistTo(attacker_origin) / 4
                            if my_delta_to_world <= minimum_distance_to_trigger then
                                self.vars.is_anti_bruteforcing = true
                                self.vars.phase_state = true
                              
                                self.vars.anti_bruteforcing_side = self.vars.anti_bruteforcing_side * -1
                                self.vars.anti_bruteforcing_counter = self.vars.anti_bruteforcing_counter + 1

                                if self.vars.anti_bruteforcing_counter > 10 then
                                    self.vars.anti_bruteforcing_counter = 1
                                end

                                self.vars.phases_counter = self.vars.phases_counter + 1
                                if self.vars.phases_counter > #menu_database.phases_vars.phases then
                                    self.vars.phases_counter = 1
                                end
                            else
                                self.vars.is_anti_bruteforcing = false
                            end
                        end
                    else
                        self.vars.is_anti_bruteforcing = false
                    end
                else
                    self.vars.is_anti_bruteforcing = false
                end
            end
        },
      
        run_main_anti_aim = function(self)
            if menu_database.handler.elements["Enable anti-aimbotting"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
              
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                if EngineClient.IsConnected() and my_index:IsAlive() then
                    if not self.anti_bruteforce.vars.is_anti_bruteforcing then
                        local current_state = my_index:GetState()
                        local current_preset = menu_database.handler.elements["Anti-aimbotting presets"]

                        local set_values = function()
                            local set_anti_aim = function(table)
                                Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Add"):SetInt(table[1])
                                Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Modifier"):SetInt(table[2])
                                Menu.FindVar("Aimbot", "Anti Aim", "Main", "Modifier Degree"):SetInt(table[3])

                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(table[4])
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(table[5])

                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Fake Options"):SetInt(table[6])
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "LBY Mode"):SetInt(table[7])
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Freestanding Desync"):SetInt(table[8])
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Desync On Shot"):SetInt(table[9])
                            end

                            local all_settings = {
                                [0] = {
                                    ["STANDING"] = {GlobalVars.tickcount % 4 == 1 and -15 or 17, 1, 39, 0, 0, 2, 1, 0, 1},
                                    ["MOVING"] = {GlobalVars.tickcount % 4 == 1 and 16 or -11, 1, 52, 0, 0, 2, 1, 0, 1},

                                    ["CROUCHING T"] = {GlobalVars.tickcount % 4 == 1 and 2 or 11, 1, 39, 0, 0, 2, 0, 0, 1},
                                    ["CROUCHING CT"] = {GlobalVars.tickcount % 4 == 1 and 2 or 11, 1, 39, 0, 0, 2, 0, 0, 1},

                                    ["FAKEDUCKING"] = {0, 0, 0, 60, 60, 0, 0, 0, 0},
                                    ["SLOWWALKING"] = {GlobalVars.tickcount % 4 == 1 and -11 or 11, 1, 50, 0, 0, 2, 1, 0, 1},
                                    ["IN AIR"] = {GlobalVars.tickcount % 4 == 1 and 2 or -2, 1, 10, 0, 0, 2, 0, 0, 2},
                                },

                                [1] = {
                                    ["STANDING"] = {0, 0, 0, 56, 56, 0, 0, 1, 0},
                                    ["MOVING"] = {0, 0, 0, 56, 56, 0, 0, 1, 0},

                                    ["CROUCHING T"] = {0, 0, 0, 56, 56, 0, 0, 1, 0},
                                    ["CROUCHING CT"] = {0, 1, 25, 40, 40, 6, 0, 0, 0},

                                    ["FAKEDUCKING"] = {0, 0, 0, 56, 56, 0, 0, 0, 0},
                                    ["SLOWWALKING"] = {0, 0, 0, 56, 56, 0, 0, 1, 0},
                                    ["IN AIR"] = {0, 1, 65, 56, 56, 2, 0, 0, 0}
                                },

                                [2] = {
                                    ["STANDING"] = {7, 1, 77, 60, 60, 2, 1, 0, 1},
                                    ["MOVING"] = {7, 1, 77, 60, 60, 2, 1, 0, 1},

                                    ["CROUCHING T"] = {7, 1, 77, 60, 60, 2, 1, 0, 1},
                                    ["CROUCHING CT"] = {7, 1, 77, 60, 60, 2, 1, 0, 1},

                                    ["FAKEDUCKING"] = {7, 1, 77, 60, 60, 2, 1, 0, 1},
                                    ["SLOWWALKING"] = {7, 1, 77, 60, 60, 2, 1, 0, 1},
                                    ["IN AIR"] = {7, 1, 77, 60, 60, 2, 1, 0, 1}
                                },

                                [3] = {
                                    ["STANDING"] = {0, 1, 57, 18, 18, 2, 1, 0, 0},
                                    ["MOVING"] = {0, 1, 57, 18, 18, 2, 1, 0, 0},

                                    ["CROUCHING T"] = {0, 1, 57, 18, 18, 2, 1, 0, 0},
                                    ["CROUCHING CT"] = {0, 1, 57, 18, 18, 2, 1, 0, 0},

                                    ["FAKEDUCKING"] = {0, 0, 0, 60, 60, 0, 0, 0, 0},
                                    ["SLOWWALKING"] = {0, 1, 57, 18, 21, 2, 1, 0, 0},
                                    ["IN AIR"] = {0, 1, 57, 18, 18, 2, 1, 0, 0},
                                }
                            }

                            local current_settings = all_settings[current_preset][current_state]
                            local flags = my_index:GetProp("m_fFlags")

                            if current_preset ~= 4 then
                                if Cheat.IsMenuVisible() then
                                    set_anti_aim({0, 0, 0, 0, 0, 0, 0, 0, 0})
                                else
                                    set_anti_aim(current_settings)
                                end
                            end
                        end

                        if current_preset == 4 then
                            local set_custom_anti_aim = function(state)
                                local get_state = function(base)
                                    return menu_database.handler.elements[("%s %s"):format(state, base)]
                                end

                                Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Add"):SetInt(
                                    GlobalVars.tickcount % 4 >= 2 and get_state("Yaw Add Left") or get_state("Yaw Add Right")
                                )

                                Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Modifier"):SetInt(get_state("Yaw Modifier"))
                                Menu.FindVar("Aimbot", "Anti Aim", "Main", "Modifier Degree"):SetInt(get_state("Modifier Degree"))

                                local fake_type = get_state("Fake Limit Type")
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(
                                    fake_type == 0 and get_state("Left Limit") or (
                                        GlobalVars.tickcount % 4 >= 2 and 18 or get_state("Left Limit")
                                    )
                                )

                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(
                                    fake_type == 0 and get_state("Right Limit") or (
                                        GlobalVars.tickcount % 4 >= 2 and 18 or get_state("Right Limit")
                                    )
                                )
          
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Fake Options"):SetInt(get_state("Fake Options"))
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "LBY Mode"):SetInt(get_state("LBY Mode"))
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Freestanding Desync"):SetInt(get_state("Fake Desync"))
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Desync On Shot"):SetInt(get_state("Desync On Shot"))
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Inverter"):SetBool(get_state("Inverter"))
                            end

                            if current_state == "STANDING" then set_custom_anti_aim("Standing")
                            elseif current_state == "MOVING" then set_custom_anti_aim("Moving")
                            elseif current_state == "FAKEDUCKING" then set_custom_anti_aim("Fakeduck")
                            elseif (
                                current_state == "CROUCHING T" or current_state == "CROUCHING CT"
                            ) then set_custom_anti_aim("Ducking")
                            elseif current_state == "SLOWWALKING" then set_custom_anti_aim("Slow Walk")
                            elseif current_state == "IN AIR" then set_custom_anti_aim("In air")
                            end
                        else
                            set_values()
                        end
                    end
                end
            end

            if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                if bit.band(directory, bit.lshift(1, 0)) ~= 0 then
                    if self.anti_bruteforce.vars.is_anti_bruteforcing then
                        local ab_counter = self.anti_bruteforce.vars.phases_counter
                        if ab_counter ~= 0 then
                            local get_path = ("Phase #%s"):format(ab_counter)
                            if not get_path then
                                self.anti_bruteforce.vars.is_anti_bruteforcing = false
                                self.anti_bruteforce.vars.anti_bruteforcing_timer = GlobalVars.realtime
                                return
                            end

                            local get_value = menu_database.handler.elements[get_path]
                            if not get_value then
                                self.anti_bruteforce.vars.is_anti_bruteforcing = false
                                self.anti_bruteforce.vars.anti_bruteforcing_timer = GlobalVars.realtime
                                return
                            end

                            local get_side = get_value < 0 and false or true
                            if not get_side then
                                self.anti_bruteforce.vars.is_anti_bruteforcing = false
                                self.anti_bruteforce.vars.anti_bruteforcing_timer = GlobalVars.realtime
                                return
                            end

                            AntiAim.OverrideInverter(get_side)
                            AntiAim.OverrideLimit(get_value)
                        end

                        if self.anti_bruteforce.vars.anti_bruteforcing_timer + 3 < GlobalVars.realtime then
                            self.anti_bruteforce.vars.is_anti_bruteforcing = false
                            self.anti_bruteforce.vars.anti_bruteforcing_timer = GlobalVars.realtime
                        end
                    end
                end
            end
        end,

        break_lagcomp_in_air = function()
            if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                if bit.band(directory, bit.lshift(1, 1)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    local active_weapon = my_index:GetActiveWeapon()
                    if not active_weapon then return end

                    local classname = active_weapon:GetClassName()
                    if not classname then return end
  
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local is_active = function()
                            local table = {"Default", "Pistols", "Heavy pistols", "Scout", "AWP", "Autosnipers", "Nades"}
                            for i = 1, #table do
                                local directory = menu_database.handler.elements["Breaking lagcomp weapons"]
                                if bit.band(directory, bit.lshift(1, i - 1)) ~= 0 then
                                    local current_weapon = table[i]

                                    if active_weapon:IsPistol() then
                                        if current_weapon == "Heavy pistols" and classname == "CDEagle" then
                                            return true
                                        elseif current_weapon == "Pistols" and classname ~= "CDEagle" then
                                            return true
                                        end
                                    elseif classname == "CWeaponSSG08" and current_weapon == "Scout" then
                                        return true
                                    elseif classname == "CWeaponAWP" and current_weapon == "AWP" then
                                        return true
                                    elseif (
                                        classname == "CWeaponSCAR20" or
                                        classname == "CWeaponG3SG1"
                                    ) and current_weapon == "Autosnipers" then
                                        return true
                                    elseif current_weapon == "Nades" and active_weapon:IsGrenade() then
                                        return true
                                    elseif current_weapon == "Default" and active_weapon:IsRifle() then
                                        return true
                                    end
                                end
                            end
                            return false
                        end

                        if is_active() then
                            local data, current_enemy = all_utils:update_enemies(), nil
                            if data ~= nil then
                                current_enemy = data.enemy
                            end
                          
                            if current_enemy ~= nil and current_enemy:IsAlive() then
                                if not current_enemy:IsDormant() then
                                    local isDT = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool()
                                    local in_air = my_index:GetState() == "IN AIR"

                                    if isDT and in_air then
                                        local enemy_origin = current_enemy:GetRenderOrigin()
                                        local my_origin = my_index:GetRenderOrigin()
                                      
                                        local traced_bullet = Cheat.FireBullet(current_enemy, enemy_origin, my_origin)
                                        if traced_bullet.damage > 0 then
                                            Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Freestanding Desync"):SetInt(1)
                                            Exploits.ForceTeleport()
                                        end
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end,

        anti_backstabbing = function()
            if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                if bit.band(directory, bit.lshift(1, 2)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
  
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local data, current_enemy = all_utils:update_enemies(), nil
                        if data ~= nil then
                            current_enemy = data.enemy
                        end
                      
                        if current_enemy ~= nil and current_enemy:IsAlive() then
                            if not current_enemy:IsDormant() then
                                local my_origin = my_index:GetRenderOrigin()
                                local enemy_origin = current_enemy:GetRenderOrigin()

                                local enemy_weapon = current_enemy:GetActiveWeapon()
                                if not enemy_weapon then return end

                                local our_distance = my_origin:DistTo(enemy_origin)
                                local minimum_distance = 200

                                if enemy_weapon:IsKnife() then
                                    if our_distance <= minimum_distance then
                                        AntiAim.OverrideYawOffset(180)
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end,

        bombsite_fix = {
            vars = {
                is_in_bombsite = false
            },

            check_bombsite = function(self, e)
                if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                    local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                    if bit.band(directory, bit.lshift(1, 3)) ~= 0 then
                        local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                        if not localplayer then return end
                      
                        local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                        if not my_index then return end
      
                        if EngineClient.IsConnected() and my_index:IsAlive() then
                            if e:GetName() == "enter_bombzone" then
                                local user_id = EntityList.GetPlayerForUserID(e:GetInt("userid"))
                                if user_id == my_index then
                                    self.vars.is_in_bombsite = true
                                end
                            end

                            if e:GetName() == "exit_bombzone" then
                                local user_id = EntityList.GetPlayerForUserID(e:GetInt("userid"))
                                if user_id == my_index then
                                    self.vars.is_in_bombsite = false
                                end
                            end
                        end
                    else
                        self.vars.is_in_bombsite = false
                    end
                else
                    self.vars.is_in_bombsite = false
                end
            end,
          
            run_work = function(self, cmd)
                if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                    local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                    if bit.band(directory, bit.lshift(1, 3)) ~= 0 then
                        local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                        if not localplayer then return end
                      
                        local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                        if not my_index then return end
      
                        if EngineClient.IsConnected() and my_index:IsAlive() then
                            if my_index:GetProp("m_iTeamNum") == 2 then
                                local is_near_with_door = function()
                                    for yaw = 18, 360, 18 do
                                        yaw = all_utils.normalize_yaw(yaw)
                                      
                                        local my_eye_position = my_index:GetEyePosition()
                                        local final_angle = QAngle.new(0, yaw, 0)

                                        local final_point = my_eye_position + Cheat.AngleToForward(final_angle) * 0x60
                                        local trace_info = EngineTrace.TraceRay(my_eye_position, final_point, my_index, 0x200400B)
                                        local hit_entity = trace_info.hit_entity

                                        if hit_entity ~= nil then
                                            if trace_info.hit_entity:GetClassName() == "CPropDoorRotating" then
                                                return true
                                            end
                                        end
                                    end
                                    return false
                                end

                                if not is_near_with_door() then
                                    if self.vars.is_in_bombsite then
                                        if bit.band(cmd.buttons, 32) == 32 then
                                            AntiAim.OverrideYawOffset(180)
                                            AntiAim.OverridePitch(0)

                                            cmd.buttons = bit.band(cmd.buttons, bit.bnot(32))
                                        end
                                    end
                                end
                            end
                        end
                    end
                end
            end
        },

        quick_peek = function(cmd)
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 3)) ~= 0 then
                    if menu_database.handler.elements["Skeet autopeek type"] == 1 then
                        local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                        if not localplayer then return end
                      
                        local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                        if not my_index then return end

                        if EngineClient.IsConnected() and my_index:IsAlive() then
                            local set_movement = function(cmd, xz, yz)
                                local current_pos = my_index: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

                            local W = bit.band(cmd.buttons, 8) == 8
                            local S = bit.band(cmd.buttons, 16) == 16
                            local D = bit.band(cmd.buttons, 512) == 512
                            local A = bit.band(cmd.buttons, 1024) == 1024
                            local moving = W or S or D or A

                            local is_peeking = Menu.FindVar("Miscellaneous", "Main", "Movement", "Auto Peek"):GetBool()
                            if not is_peeking then
                                cur_pos = my_index:GetProp("m_vecOrigin")
                            end

                            local default_origin = my_index:GetProp("m_vecOrigin")
                            local is_in_air = my_index:GetState() == "IN AIR"

                            if not is_in_air then
                                if is_peeking then
                                    if cur_pos ~= nil then
                                        if not moving and cur_pos.x ~= default_origin.x and cur_pos.y ~= default_origin.y then
                                            set_movement(cmd, cur_pos.x, cur_pos.y)
                                        end
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end,

        smart_yaw_position = function(self)
            if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                if bit.band(directory, bit.lshift(1, 4)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
  
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local data, current_enemy = all_utils:update_enemies(), nil
                        if data ~= nil then
                            current_enemy = data.enemy
                        end
                      
                        if current_enemy ~= nil and current_enemy:IsAlive() then
                            local lby_fraction = math.abs(my_index:GetProp("m_flLowerBodyYawTarget") / 180)
                            local duck_amount = my_index:GetProp("m_flDuckAmount")

                            local side = all_utils:get_hit_side()
                            local yaw_path = Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Add")

                            if not current_enemy:IsDormant() then
                                if duck_amount > 0.4 then
                                    yaw_path:SetInt(-10)
                                else
                                    if lby_fraction > 0.5 then
                                        yaw_path:SetInt(20)
                                    else
                                        yaw_path:SetInt(-20)
                                    end
                                end
                            else
                                if duck_amount > 0.4 and not my_index:GetState(true) == "IN AIR" then
                                    yaw_path:SetInt(10)
                                else
                                    if lby_fraction > 0.5 then
                                        yaw_path:SetInt(10)
                                    else
                                        if side == 0.5 or side == -0.5 then
                                            yaw_path:SetInt(-10)
                                        elseif side == 1 or side == -1 then
                                            yaw_path:SetInt(-20)
                                        else
                                            yaw_path:SetInt(20)
                                        end
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end,

        dynamic_fake_yaw = function(self)
            if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                if bit.band(directory, bit.lshift(1, 5)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
  
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local data, current_enemy = all_utils:update_enemies(), nil
                        if data ~= nil then
                            current_enemy = data.enemy
                        end
                      
                        if current_enemy ~= nil and current_enemy:IsAlive() then
                            local lby_fraction = math.abs(my_index:GetProp("m_flLowerBodyYawTarget") / 180)
                            local duck_amount = my_index:GetProp("m_flDuckAmount")
                            local side = all_utils:get_hit_side()

                            if not current_enemy:IsDormant() then
                                if duck_amount > 0.4 then
                                    Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(56)
                                    Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(56)
                                else
                                    if lby_fraction > 0.5 then
                                        Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(25)
                                        Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(25)
                                    else
                                        Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(56)
                                        Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(56)
                                    end
                                end
                            else
                                if duck_amount > 0.4 and not my_index:GetState(true) == "IN AIR" then
                                    Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(45)
                                    Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(45)
                                else
                                    if lby_fraction > 0.5 then
                                        Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(
                                            math.floor(58 * lby_fraction)
                                        )

                                        Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(
                                            math.floor(58 * lby_fraction)
                                        )
                                    else
                                        if side == 0.5 or side == -0.5 then
                                            Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(35)
                                            Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(35)
                                        elseif side == 1 or side == -1 then
                                            Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(15)
                                            Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(15)
                                        else
                                            Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(56)
                                            Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(56)
                                        end
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end,

        better_onshot = function()
            if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                if bit.band(directory, bit.lshift(1, 6)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    local active_weapon = my_index:GetActiveWeapon()
                    if not active_weapon then return end

                    local classname = active_weapon:GetClassName()
                    if not classname then return end
  
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        if Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool() and Exploits.GetCharge() == 1 then
                            if classname == "CWeaponSSG08" or classname == "CWeaponAWP" then
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Desync On Shot"):SetInt(1)
                            else
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Desync On Shot"):SetInt(3)
                            end
                        elseif Exploits.GetCharge() < 1 then
                            Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Desync On Shot"):SetInt(1)
                        end
                    end
                end
            end
        end,

        one_time_legit_aa = false,
        legit_aa_on_e = function(self, cmd)
            if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                if bit.band(directory, bit.lshift(1, 7)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
  
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local is_active = function()
                            local maximum_distance = 99999999
                            local my_origin = my_index:GetRenderOrigin()

                            local doors = EntityList.GetEntitiesByClassID(143)
                            local bomb = EntityList.GetEntitiesByClassID(129)
                            local hostages = EntityList.GetEntitiesByClassID(97)

                            local my_view_angles = EngineClient.GetViewAngles()
                            local my_angles = Vector2.new(my_view_angles.yaw, my_view_angles.pitch)
                            my_angles.y = -my_angles.y

                            for k, v in pairs(doors) do
                                local doors_origin = v:GetRenderOrigin()
                                local current_distance = my_origin:DistTo(doors_origin)

                                if current_distance <= maximum_distance then maximum_distance = current_distance end
                            end

                            for k, v in pairs(bomb) do
                                local bomb_origin = v:GetRenderOrigin()
                                local current_distance = my_origin:DistTo(bomb_origin)

                                if current_distance <= maximum_distance then maximum_distance = current_distance end
                            end

                            for k, v in pairs(hostages) do
                                local hostages_origin = v:GetRenderOrigin()
                                local current_distance = my_origin:DistTo(hostages_origin)

                                if current_distance <= maximum_distance then maximum_distance = current_distance end
                            end

                            if maximum_distance <= 100 or (my_angles.y <= -25 and my_angles.y > -70) then
                                return false
                            end
                            return true
                        end

                        if bit.band(cmd.buttons, 32) == 32 then
                            if not self.one_time_legit_aa then
                                self.one_time_legit_aa = true
                            end

                            if is_active() then
                                if Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Base"):GetInt() == 5 then
                                    Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Base"):SetInt(4)
                                end

                                local yaw_base = Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Base"):GetInt()
                                local yaw_value = (
                                    yaw_base == 1 and 180 or yaw_base == 2 and 90 or yaw_base == 3 and -90 or
                                    yaw_base == 4 and 180 or 0
                                )

                                AntiAim.OverridePitch(0)
                                AntiAim.OverrideYawOffset(yaw_value)
                                AntiAim.OverrideLimit(60)

                                cmd.buttons = bit.band(cmd.buttons, bit.bnot(32))
                            end
                        else
                            if self.one_time_legit_aa then
                                self.one_time_legit_aa = false
                            end
                        end
                    end
                end
            end
        end,

        backup_fakelag = false,
        disable_fakelag = function(self)
            if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                if bit.band(directory, bit.lshift(1, 8)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
  
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local fakelag_cache = 14
                        if not self.backup_fakelag then
                            fakelag_cache = Menu.FindVar("Aimbot", "Anti Aim", "Fake Lag", "Limit"):GetInt()
                            self.backup_fakelag = true
                        end

                        local isHS = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Hide Shots"):GetBool()
                        if isHS then
                            Menu.FindVar("Aimbot", "Anti Aim", "Fake Lag", "Limit"):SetInt(1)
                        else
                            if self.backup_fakelag then
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Lag", "Limit"):SetInt(fakelag_cache)
                                self.backup_fakelag = false
                            end
                        end
                    end
                end
            end
        end,

        roll_angles = {
            is_rolling_and_controlling = false, -- good song :)
            override_manual_settings = function()
                Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Base"):SetInt(4)

                Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Add"):SetInt(-11)
                Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Modifier"):SetInt(0)
                Menu.FindVar("Aimbot", "Anti Aim", "Main", "Modifier Degree"):SetInt(0)

                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(60)
                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(60)

                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Fake Options"):SetInt(0)
                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "LBY Mode"):SetInt(1)
                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Freestanding Desync"):SetInt(0)
                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Desync On Shot"):SetInt(0)
            end,

            on_pre_prediction = function(self, cmd)
                self.is_rolling_and_controlling = false
                if menu_database.handler.elements["Enable roll angles"] then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
  
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local is_manuals_enabled = menu_database.handler.elements["Only manual roll angles"]
                        local current_manual = menu_database.handler.elements["Manual roll angles"]
                        local current_roll_angle = 100

                        if is_manuals_enabled then
                            if current_manual ~= 0 then
                                self.override_manual_settings()
                                AntiAim.OverrideYawOffset(current_manual == 1 and -90 or 90)
                            end

                            self.is_rolling_and_controlling = current_manual ~= 0
                        else
                            self.override_manual_settings()
                            self.is_rolling_and_controlling = current_roll_angle == 100
                        end

                        if is_manuals_enabled then
                            current_roll_angle = current_manual ~= 0 and 50 or 0
                        end

                        local current_state = my_index:GetState()
                        if current_state == "IN AIR" then
                            self.is_rolling_and_controlling = false
                        end

                        cmd.viewangles.roll = current_roll_angle
                    end
                end
            end,

            on_createmove = function(self, cmd)
                if menu_database.handler.elements["Enable roll angles"] then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
  
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local current_state = my_index:GetState()
                        local is_chocking = FakeLag.Choking()

                        if current_state == "IN AIR" or is_chocking then
                            cmd.viewangles.roll = 0
                        end
                    end
                end
            end
        },

        load_anti_aimbotting_functions = function(self, cmd)
            self:break_lagcomp_in_air()
            self:anti_backstabbing()
            self.bombsite_fix:run_work(cmd)
            self.quick_peek(cmd)
            self:smart_yaw_position()
            self:dynamic_fake_yaw()
            self:better_onshot()
            self:legit_aa_on_e(cmd)
            self:disable_fakelag()
        end
    }
    -- @endregion

    -- @region: all visual functions
    local visual_functions = {
        utils = {
            fonts_library = {
                ["Smallest Pixel-7"] = {
                    ["9"] = {
                        [""] = {
                            Render.InitFont("Smallest Pixel-7", 9)
                        }
                    },
                  
                    ["10"] = {
                        [""] = {
                            Render.InitFont("Smallest Pixel-7", 10)
                        }
                    }
                },

                ["Tahoma"] = {
                    ["10"] = {
                        [""] = {
                            Render.InitFont("Tahoma", 10)
                        }
                    }
                },

                ["Verdana"] = {
                    ["10"] = {
                        [""] = {
                            Render.InitFont("Verdana", 10)
                        },

                        ["b"] = {
                            Render.InitFont("Verdana", 10, {"b"})
                        }
                    },

                    ["11"] = {
                        ["r"] = {
                            Render.InitFont("Verdana", 11, {"r"})
                        }
                    },

                    ["12"] = {
                        [""] = {
                            Render.InitFont("Verdana", 12)
                        }
                    },

                    ["21"] = {
                        ["b"] = {
                            Render.InitFont("Verdana", 21, {"b"})
                        }
                    }
                },

                ["Calibri"] = {
                    ["30"] = {
                        ["b"] = {
                            Render.InitFont("Calibri", 30, {"b"})
                        }
                    }
                },

                ["Lucida Console"] = {
                    ["10"] = {
                        ["r"] = {
                            Render.InitFont("Lucida Console", 10, {"r"})
                        }
                    }
                }
            },

            get_font = function(self, font_name, font_size, flags)
                local library_names = self.fonts_library[font_name]
                local library_fonts = library_names[font_size]
                local library_flags = library_fonts[not flags and "" or flags][1]

                return library_flags
            end,

            get_desync = function(comma_index)
                local real_rotation = AntiAim.GetCurrentRealRotation()
                local fake_rotation = AntiAim.GetFakeRotation()
                local max_delta = AntiAim.GetMaxDesyncDelta()
                local delta = math.min(math.abs(real_rotation - fake_rotation), max_delta)

                return tonumber(string.format("%." .. comma_index .. "f", delta))
            end,

            draw_shadow = function(type, text, x, y, color, font_size, font, centered, shadow_color)
                local x_pos = type == 0 and 1 or type == 1 and 1 or type == 2 and 0 or 1
                local y_pos = type == 0 and 1 or type == 1 and 0 or type == 2 and 1 or 1

                Render.Text(text, Vector2.new(x + x_pos, y + y_pos), shadow_color, font_size, font, false, centered)
                Render.Text(text, Vector2.new(x + 0, y + 0), color, font_size, font, false, centered)
            end,

            hsv_to_rgb = function(h, s, v)
                local r, g, b

                local i = math.floor(h * 6);
                local f = h * 6 - i;
                local p = v * (1 - s);
                local q = v * (1 - f * s);
                local t = v * (1 - (1 - f) * s);
          
                i = i % 6
          
                if i == 0 then r, g, b = v, t, p
                elseif i == 1 then r, g, b = q, v, p
                elseif i == 2 then r, g, b = p, v, t
                elseif i == 3 then r, g, b = p, q, v
                elseif i == 4 then r, g, b = t, p, v
                elseif i == 5 then r, g, b = v, p, q
                end
          
                return Color.new(r, g, b)
            end
        },

        under_crosshair = function(self)
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 0)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    local active_weapon = my_index:GetActiveWeapon()
                    if not active_weapon then return end

                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        if menu_database.handler.elements["Under crosshair style"] == 0 then
                            local add_y = 30
                            local alpha = math.floor(
                                math.sin(math.abs(-math.pi + (GlobalVars.curtime * (1.25 / .75)) % (math.pi * 2))) * 200
                            )

                            local font = self.utils:get_font("Smallest Pixel-7", "9")
                            local indicator_list = {}

                            local inverter = AntiAim.GetInverterState()
                            local current_fake = inverter and "R" or "L"

                            Render.Text(
                                "HALF-LIFE",
                                Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y),
                                Color.RGBA(255, 255, 255, 255),
                                9, font,
                                true, false
                            )

                            Render.Text(
                                "BETA",
                                Vector2.new(screen_size.x / 2 + 45, screen_size.y / 2 + add_y),
                                Color.RGBA(200, 200, 200, alpha),
                                9, font,
                                true, false
                            )

                            add_y = add_y + 9
                            local is_anti_bruteforce = anti_aimbotting_functions.anti_bruteforce.vars.is_anti_bruteforcing

                            local is_defensive = function()
                                local state, shifting = false, 0

                                if Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool() then
                                    local hit_side = all_utils:get_hit_side()
                                    if hit_side == true or hit_side == false then
                                        hit_side = 0
                                        state = false
                                        shifting = nil
                                    end

                                    if hit_side ~= nil then
                                        if hit_side > 0 then
                                            state = true

                                            local tickbase = my_index:GetProp("m_nTickBase")
                                            local next_attack = my_index:GetProp("m_flNextAttack")
                                            local next_primary_attack = my_index:GetActiveWeapon():GetProp("m_flNextPrimaryAttack")

                                            local ticks = GlobalVars.interval_per_tick * (tickbase - 16)
                                            local shifting_tickbase = (ticks - next_primary_attack) * 2

                                            if shifting_tickbase <= 3 then shifting_tickbase = shifting_tickbase + (
                                                next_attack * 0.001
                                            ) * 2 end

                                            if shifting_tickbase >= 17 then shifting_tickbase = 17 end
                                            shifting_tickbase = math.floor(shifting_tickbase)

                                            shifting = shifting_tickbase
                                        else
                                            state = false
                                            shifting = nil
                                        end
                                    else
                                        state = false
                                        shifting = nil
                                    end
                                else
                                    state = false
                                    shifting = nil
                                end

                                return ({
                                    state = state,
                                    value = shifting
                                })
                            end

                            local get_dormant_players = function()
                                local ret = {}

                                local players = EntityList.GetEntitiesByName("CCSPlayer")
                                for i = 1, #players do
                                    local enemy = players[i]:GetPlayer()
                                    if enemy ~= my_index and not enemy:IsTeamMate() and enemy:IsAlive() then
                                        if enemy:IsDormant() then
                                            table.insert(ret, enemy)
                                        end
                                    end
                                end
                          
                                return #ret
                            end

                            local data, current_enemy = all_utils:update_enemies(), nil
                            if data ~= nil then
                                current_enemy = data.enemy
                            end

                            local is_rolling = anti_aimbotting_functions.roll_angles.is_rolling_and_controlling
                            if is_rolling then
                                Render.Text(
                                    "EXPLOITING:",
                                    Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y),
                                    Color.RGBA(255, 255, 255, 255),
                                    9, font,
                                    true, false
                                )

                                Render.Text(
                                    "z°",
                                    Vector2.new(screen_size.x / 2 + 50, screen_size.y / 2 + add_y),
                                    Color.RGBA(255, 255, 255, 255),
                                    9, font,
                                    true, false
                                )
                            elseif is_anti_bruteforce then
                                Render.Text(
                                    "ANTI ",
                                    Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y),
                                    Color.RGBA(255, 255, 255, 255),
                                    9, font,
                                    true, false
                                )
      
                                local counter = anti_aimbotting_functions.anti_bruteforce.vars.anti_bruteforcing_counter
                                local side = anti_aimbotting_functions.anti_bruteforce.vars.anti_bruteforcing_side
                                local timer = math.floor(
                                    anti_aimbotting_functions.anti_bruteforce.vars.anti_bruteforcing_timer % 10000 * 0.01
                                )

                                Render.Text(
                                    ("BRUTEFORCE[%s][%s][%s%%]"):format(counter, side, timer),
                                    Vector2.new(screen_size.x / 2 + 21, screen_size.y / 2 + add_y),
                                    Color.RGBA(255, 255, 255, 255),
                                    9, font,
                                    true, false
                                )
                            else
                                if is_defensive().state then
                                    if is_defensive().value ~= nil then
                                        Render.Text(
                                            "DEFENSIVE:",
                                            Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y),
                                            Color.RGBA(255, 255, 255, 255),
                                            9, font,
                                            true, false
                                        )

                                        Render.Text(
                                            ("%s"):format(is_defensive().value),
                                            Vector2.new(screen_size.x / 2 + 47, screen_size.y / 2 + add_y),
                                            Color.RGBA(255, 255, 255, 255),
                                            9, font,
                                            true, false
                                        )
                                    end
                                else
                                    Render.Text(
                                        "BODY",
                                        Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y),
                                        Color.RGBA(197, 122, 108, 255),
                                        9, font,
                                        true, false
                                    )
          
                                    Render.Text(
                                        " YAW: ",
                                        Vector2.new(screen_size.x / 2 + 16, screen_size.y / 2 + add_y),
                                        Color.RGBA(197, 122, 108, 255),
                                        9, font,
                                        true, false
                                    )
      
                                    Render.Text(
                                        current_fake,
                                        Vector2.new(screen_size.x / 2 + 40, screen_size.y / 2 + add_y),
                                        Color.RGBA(255, 255, 255, 255),
                                        9, font,
                                        true, false
                                    )
                                end
                            end

                            add_y = add_y + 9
                            Render.Text(
                                "DORMANCY:",
                                Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y),
                                Color.RGBA(255, 201, 132, 255),
                                9, font,
                                true, false
                            )

                            Render.Text(
                                ("%s"):format(get_dormant_players()),
                                Vector2.new(screen_size.x / 2 + 45, screen_size.y / 2 + add_y),
                                Color.RGBA(255, 255, 255, 255),
                                9, font,
                                true, false
                            )

                            local isDT = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool()
                            local isHS = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Hide Shots"):GetBool()
                          
                            local charge_color = Exploits.GetCharge() == 1 and Color.RGBA(133, 235, 89, 255) or Color.RGBA(244, 11, 12, 255)
                            local binds = Cheat.GetBinds()
                            local isDMG = false
          
                            for i = 1, #binds do
                                if binds[i]:IsActive() then
                                    if binds[i]:GetName() == "Minimum Damage" then
                                        isDMG = true
                                    end
                                end
                            end
      
                            table.insert(indicator_list, {text = isDT and "DT" or "", color = charge_color})
                            table.insert(indicator_list, {text = isHS and "HS" or "", color = Color.RGBA(255, 211, 168, 255)})
                            table.insert(indicator_list, {text = isDMG and "DMG" or "", color = Color.RGBA(255, 255, 255, 255)})

                            for k, indicator in ipairs(indicator_list) do
                                if indicator.text ~= nil and indicator.text ~= "" then
                                    add_y = add_y + 9
                                    Render.Text(
                                        indicator.text,
                                        Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y),
                                        indicator.color,
                                        9, font,
                                        true, false
                                    )
                                end
                            end
                        end

                        if menu_database.handler.elements["Under crosshair style"] == 1 then
                            local add_y = 30
                            local get_desync = self.utils.get_desync(0)

                            local font = self.utils:get_font("Smallest Pixel-7", "9")
                            local indicator_list = {}

                            Render.Text(
                                get_desync .. "",
                                Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y),
                                Color.RGBA(255, 255, 255, 255),
                                9, font,
                                true, true
                            )

                            Render.GradientBoxFilled(
                                Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y + 8),
                                Vector2.new(screen_size.x / 2 + (-math.abs(get_desync * 58 / 100)), screen_size.y / 2 + add_y + 11),
                                Color.RGBA(255, 255, 120, 255), Color.RGBA(0, 255, 153, 0),
                                Color.RGBA(255, 255, 120, 255), Color.RGBA(0, 255, 153, 0)
                            )

                            Render.GradientBoxFilled(
                                Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y + 8),
                                Vector2.new(screen_size.x / 2 + (math.abs(get_desync * 58 / 100)), screen_size.y / 2 + add_y + 11),
                                Color.RGBA(255, 255, 120, 255), Color.RGBA(153, 0, 255, 0),
                                Color.RGBA(255, 255, 120, 255), Color.RGBA(153, 0, 255, 0)
                            )

                            Render.Text(
                                "HA",
                                Vector2.new(screen_size.x / 2 - 18, screen_size.y / 2 + add_y + 20),
                                Color.RGBA(30, 251, 146, 255),
                                9, font,
                                true, true
                            )

                            Render.Text(
                                "LF",
                                Vector2.new(screen_size.x / 2 - 8, screen_size.y / 2 + add_y + 20),
                                Color.RGBA(125, 251, 146, 255),
                                9, font,
                                true, true
                            )

                            Render.Text(
                                "-",
                                Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y + 20),
                                Color.RGBA(255, 199, 49, 255),
                                9, font,
                                true, true
                            )

                            Render.Text(
                                "LI",
                                Vector2.new(screen_size.x / 2 + 8, screen_size.y / 2 + add_y + 20),
                                Color.RGBA(255, 150, 150, 255),
                                9, font,
                                true, true
                            )

                            Render.Text(
                                "FE",
                                Vector2.new(screen_size.x / 2 + 18, screen_size.y / 2 + add_y + 20),
                                Color.RGBA(255, 120, 120, 255),
                                9, font,
                                true, true
                            )

                            local isDT = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool()
                            local isHS = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Hide Shots"):GetBool()
                          
                            local charge_color = Exploits.GetCharge() == 1 and Color.RGBA(126, 214, 136, 255) or Color.RGBA(226, 54, 55, 255)
                            local binds = Cheat.GetBinds()
                            local isDMG = false
          
                            for i = 1, #binds do
                                if binds[i]:IsActive() then
                                    if binds[i]:GetName() == "Minimum Damage" then
                                        isDMG = true
                                    end
                                end
                            end

                            table.insert(indicator_list, {text = isDT and "DT" or "", color = charge_color})
                            table.insert(indicator_list, {text = isHS and "HS" or "", color = Color.RGBA(255, 217, 116, 255)})
                            table.insert(indicator_list, {text = isDMG and "DMG" or "", color = Color.RGBA(255, 255, 255, 255)})

                            for k, indicator in ipairs(indicator_list) do
                                if indicator.text ~= nil and indicator.text ~= "" then
                                    add_y = add_y + 9
                                    Render.Text(
                                        indicator.text,
                                        Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y + 20),
                                        indicator.color,
                                        9, font,
                                        true, true
                                    )
                                end
                            end
                        end

                        if menu_database.handler.elements["Under crosshair style"] == 2 then
                            local indicator_list = {}
                            local other_font = self.utils:get_font("Smallest Pixel-7", "10")
                            local add_y = 30

                            Render.Text(
                                "HALf-LIFE",
                                Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y),
                                Color.RGBA(255, 255, 255, 255),
                                10, other_font,
                                true, true
                            )

                            local isHS = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Hide Shots"):GetBool()
                            local isQP = Menu.FindVar("Miscellaneous", "Main", "Movement", "Auto Peek"):GetBool()
                            local isDT = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool()
                            local desync_value = ("%s%%"):format(self.utils.get_desync(0))

                            local binds = Cheat.GetBinds()
                            local isDMG = false
          
                            for i = 1, #binds do
                                if binds[i]:IsActive() then
                                    if binds[i]:GetName() == "Minimum Damage" then
                                        isDMG = true
                                    end
                                end
                            end

                            if isDT then
                                local attack = my_index:GetProp("m_flNextAttack") + 0.25
                                local primary_attack = active_weapon:GetProp("m_flNextPrimaryAttack") + 0.25
  
                                local fraction = math.abs(GlobalVars.curtime - math.max(attack, primary_attack))
                                if fraction >= 1 then fraction = 1 end

                                if Exploits.GetCharge() ~= 1 then
                                    Render.Circle(
                                        Vector2.new(screen_size.x / 2 + 10, screen_size.y / 2 + add_y + 19),
                                        3, 60, Color.RGBA(190, 190, 190, 255), 2,
                                        270, fraction * 640
                                    )
                                end
                            end

                            table.insert(indicator_list, {text = desync_value, color = Color.RGBA(190, 190, 190, 255)})
                            table.insert(indicator_list, {text = isDT and "DT" or "", color = Color.RGBA(190, 190, 190, 255)})
                            table.insert(indicator_list, {text = isHS and "ONSHOT" or "", color = Color.RGBA(190, 190, 190, 255)})
                            table.insert(indicator_list, {text = isQP and "QP" or "", color = Color.RGBA(190, 190, 190, 255)})
                            table.insert(indicator_list, {text = isDMG and "DMG" or "", color = Color.RGBA(190, 190, 190, 255)})
                          
                            for k, indicator in ipairs(indicator_list) do
                                if indicator.text ~= nil and indicator.text ~= "" then
                                    add_y = add_y + 9
                                    Render.Text(
                                        indicator.text,
                                        Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y),
                                        indicator.color,
                                        10, other_font,
                                        true, true
                                    )
                                end
                            end
                        end
                    end
                end
            end
        end,

        watermark_modules = {
            hit_counter = 0,
            count_hurt_shots = function(self, e)
                if menu_database.handler.elements["Enable indicator list"] then
                    if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 1)) ~= 0 then
                        local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                        if not localplayer then return end
                      
                        local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                        if not my_index then return end
  
                        if EngineClient.IsConnected() and my_index:IsAlive() then
                            if e:GetName() ~= "player_hurt" then return end

                            local victim = EntityList.GetPlayerForUserID(e:GetInt("userid"))
                            local attacker = EntityList.GetPlayerForUserID(e:GetInt("attacker"))
                            if victim == attacker or attacker == my_index then return end

                            self.hit_counter = self.hit_counter + 1
                            if self.hit_counter > 10 then self.hit_counter = 0 end
                        end
                    end
                end
            end
        },

        watermark = function(self)
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 1)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local font = self.utils:get_font("Verdana", "10", "b")
                        local add_x, add_y = screen_size.x / 2 - (screen_size.x / 2 - 85), screen_size.y / 2 - 35

                        Render.Text(
                            "half-life - version 0.3.0 beta",
                            Vector2.new(add_x, add_y),
                            Color.RGBA(255, 255, 255, 255),
                            10, font,
                            true
                        )

                        local aa_state = (
                            my_index:GetState() == "IN AIR" and "nil: (1. 0. 0)"
                            or AntiAim.GetInverterState() and "0: (1. 0. 0)" or "1: (1. 0. 0)"
                        )
                      
                        Render.Text(
                            ("> anti-aim info: side - %s;"):format(aa_state),
                            Vector2.new(add_x, add_y + 15),
                            Color.RGBA(255, 218, 244, 215),
                            10, font,
                            true
                        )
  
                        local data, current_enemy = all_utils:update_enemies(), nil
                        if data ~= nil then
                            current_enemy = data.enemy
                        end
                      
                        local target_name = (current_enemy ~= nil and current_enemy:IsAlive()) and current_enemy:GetName() or "nil"
                        local name_size = Render.CalcTextSize(("> anti-aim info: side - %s;"):format(aa_state), 10, font)
                      
                        Render.Text(
                            ("target: %s"):format(target_name),
                            Vector2.new(add_x + name_size.x / 2 + 85, add_y + 15),
                            Color.RGBA(255, 218, 244, 215),
                            10, font,
                            true
                        )
  
                        local is_rolling = anti_aimbotting_functions.roll_angles.is_rolling_and_controlling
                        local state = is_rolling and "exploiting" or (my_index:GetState()):lower()

                        Render.Text(
                            ("> player info: state - %s"):format(state),
                            Vector2.new(add_x, add_y + 30),
                            Color.RGBA(223, 255, 166, 215),
                            10, font,
                            true
                        )
  
                        Render.Text(
                            ("> anti brute info: misses - %s: hurt - %s"):format(
                                anti_aimbotting_functions.anti_bruteforce.vars.anti_bruteforcing_counter,
                                self.watermark_modules.hit_counter
                            ),
                            Vector2.new(add_x, add_y + 45),
                            Color.RGBA(255, 186, 145, 255),
                            10, font,
                            true
                        )
                    end
                end
            end
        end,

        minimum_damage = function(self)
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 2)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local font = self.utils:get_font("Smallest Pixel-7", "10")
                        local current_damage = ("%s"):format(Menu.FindVar("Aimbot", "Ragebot", "Accuracy", "Minimum Damage"):GetInt())
                        local text_size = Render.CalcTextSize(current_damage, 10, font)
                      
                        local position = menu_database.handler.elements["Minimum damage position"]
                        local y_position_list = {10, 10, -30, -30, -30, -55, -55, -55}
                        local x_position_list = {text_size.x / 2 + 5, -15, -55, 55, 0, 45, -45, 0}

                        local add_y = y_position_list[position + 1]
                        local add_x = x_position_list[position + 1]

                        Render.Text(
                            current_damage,
                            Vector2.new(screen_size.x / 2 - add_x, screen_size.y / 2 + add_y),
                            Color.RGBA(255, 255, 255, 255),
                            10, font,
                            true, true
                        )
                    end
                end
            end
        end,

        default_origin = Vector.new(0, 0, 0),
        skeet_autopeek = function(self)
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 3)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        if not Menu.FindVar("Miscellaneous", "Main", "Movement", "Auto Peek"):GetBool() then
                            self.default_origin = my_index:GetProp("m_vecOrigin")
                        end

                        if Menu.FindVar("Miscellaneous", "Main", "Movement", "Auto Peek"):GetBool() then
                            local color = menu_database.handler.references["Skeet autopeek color"].reference:Get()
                            color.a = color.a / 50
                          
                            for i = 1, 40 do
                                Render.Circle3DFilled(
                                    self.default_origin,
                                    60,
                                    i / 2,
                                    color,
                                    false
                                )
                            end
                        end
                    end
                end
            end
        end,

        skeet_modules = {
            vars = {
                fakelags = {
                    fakelag_1 = 0,
                    fakelag_2 = 0,
                    fakelag_3 = 0,
                    fakelag_4 = 0,
                    fakelag_5 = 0,
                    old_choke = 0
                },

                lag_compensation = {
                    is_lc = false,
                    timer = GlobalVars.curtime
                },

                fake = {
                    smooth_fill = 0
                },

                shot_stats = {
                    hits = 0,
                    misses = 0,
                    all_shots = 0,

                    count_shots = function(self, shot)
                        if menu_database.handler.elements["Enable indicator list"] then
                            if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 4)) ~= 0 then
                                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                                if not localplayer then return end
                              
                                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                                if not my_index then return end
          
                                if EngineClient.IsConnected() and my_index:IsAlive() then
                                    if bit.band(menu_database.handler.elements["Skeet indicator elements"], bit.lshift(1, 1)) ~= 0 then
                                        if shot.reason == 0 then
                                            self.hits = self.hits + 1
                                        else
                                            self.misses = self.misses + 1
                                        end

                                        self.all_shots = self.all_shots + 1
                                    end
                                end
                            end
                        end
                    end,
                },

                bomb_info = {
                    bombsite = -1,
                    is_defusing = false,
                    is_planting = false,
                    plant_time = 0,

                    on_begin_plant = function(self, e)
                        if e:GetName() ~= "bomb_beginplant" then return end
      
                        self.bombsite = e:GetInt("site")
                        self.is_planting = true
                        self.plant_time = GlobalVars.curtime
                    end, 
  
                    on_bomb_plant = function(self, e)
                        if e:GetName() ~= "bomb_planted" then return end
  
                        self.bombsite = -1
                        self.is_planting = false
                    end,
  
                    on_abort_plant = function(self, e)
                        if e:GetName() ~= "bomb_abortplant" then return end
      
                        self.bombsite = -1
                        self.is_planting = false
                    end,
  
                    on_defusing = function(self, e)
                        if e:GetName() ~= "bomb_begindefuse" then return end
  
                        self.is_defusing = true
                    end,
  
                    on_abort_defusing = function(self, e)
                        if e:GetName() ~= "bomb_abortdefuse" then return end
                      
                        self.is_defusing = false
                    end,
  
                    on_round_prestart = function(self, e)
                        if e:GetName() ~= "round_prestart" then return end
      
                        self.bombsite = -1
                        self.is_defusing = false
                        self.is_planting = false
                        self.plant_time = 0
                    end,
  
                    on_self_connected = function(self, e)
                        if e:GetName() ~= "player_connect_full" then return end
  
                        self.plant_time = 0
                        local c4 = EntityList.GetEntitiesByClassID(129)[1]
  
                        if not c4 then
                            self.bombsite = -1
                            self.is_planting = false
                        else
                            self.is_planting = true
                            self.bombsite = c4:GetProp("m_nBombSite")
                        end
                    end,
  
                    load_bomb_modules = function(self, e)
                        self:on_begin_plant(e)
                        self:on_bomb_plant(e)
                        self:on_abort_plant(e)
                        self:on_round_prestart(e)
                        self:on_defusing(e)
                        self:on_abort_defusing(e)
                        self:on_self_connected(e)
                    end
                }
            },

            directories = {
                isBaim = Menu.FindVar("Aimbot", "Ragebot", "Misc", "Body Aim")
            }
        },

        side_skeet_indicators = function(self)
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 4)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local indicator_list = {}
                        local font = self.utils:get_font("Calibri", "30", "b")

                        local add_x, add_y = 2, 50
                        local x, y = screen_size.x / 100 - 3, screen_size.y / 1.50 - 5

                        local render_indicator = function(text, color, add_y)
                            local text_size = Render.CalcTextSize(text, 22, font)
                            local back_alpha = 65
                          
                            Render.GradientBoxFilled(
                                Vector2.new(13, y + add_y),
                                Vector2.new(13 + text_size.x / 2, y + add_y + 28),
                                Color.RGBA(0, 0, 0, 0), Color.RGBA(0, 0, 0, back_alpha),
                                Color.RGBA(0, 0, 0, 0), Color.RGBA(0, 0, 0, back_alpha)
                            )

                            Render.GradientBoxFilled(
                                Vector2.new(13 + text_size.x / 2, y + add_y),
                                Vector2.new(13 + text_size.x, y + add_y + 28),
                                Color.RGBA(0, 0, 0, back_alpha), Color.RGBA(0, 0, 0, 0),
                                Color.RGBA(0, 0, 0, back_alpha), Color.RGBA(0, 0, 0, 0)
                            )

                            self.utils.draw_shadow(
                                2,
                                text,
                                x + add_x + 2, y + add_y + 4,
                                color,
                                23, font,
                                false, Color.RGBA(0, 0, 0, 170)
                            )
                        end

                        local render_circle = function(text, x_position, y_position, add_y, size, color, value)   
                            local text_size = Render.CalcTextSize(text, 22, font)
                          
                            Render.Circle(
                                Vector2.new(x + add_x + text_size.x + x_position + 3, y + add_y + text_size.y / 2 + y_position + 3),
                                size + 1, 60, Color.RGBA(0, 0, 0, 255), 3
                            )
                          
                            Render.Circle(
                                Vector2.new(x + add_x + text_size.x + x_position + 3, y + add_y + text_size.y / 2 + y_position + 3),
                                size, 60,
                                color,
                                4, 0, value
                            )
                        end

                        local get_text_fakelag = function()
                            local self_chocking = ClientState.m_choked_commands
                            if self_chocking < self.skeet_modules.vars.fakelags.old_choke then
                                self.skeet_modules.vars.fakelags.fakelag_1 = self.skeet_modules.vars.fakelags.fakelag_2
                                self.skeet_modules.vars.fakelags.fakelag_2 = self.skeet_modules.vars.fakelags.fakelag_3
                                self.skeet_modules.vars.fakelags.fakelag_3 = self.skeet_modules.vars.fakelags.fakelag_4
                                self.skeet_modules.vars.fakelags.fakelag_4 = self.skeet_modules.vars.fakelags.fakelag_5
                                self.skeet_modules.vars.fakelags.fakelag_5 = self.skeet_modules.vars.fakelags.old_choke
                            end

                            self.skeet_modules.vars.fakelags.old_choke = self_chocking
                            return ("%i-%i-%i-%i-%i"):format(
                                self.skeet_modules.vars.fakelags.fakelag_1,
                                self.skeet_modules.vars.fakelags.fakelag_2,
                                self.skeet_modules.vars.fakelags.fakelag_3,
                                self.skeet_modules.vars.fakelags.fakelag_4,
                                self.skeet_modules.vars.fakelags.fakelag_5
                            )
                        end

                        local is_enabled = function(value)
                            return bit.band(menu_database.handler.elements["Skeet indicator elements"], bit.lshift(1, value)) ~= 0
                        end

                        self.skeet_modules.vars.fake.smooth_fill = all_utils.easings.lerp(
                            self.skeet_modules.vars.fake.smooth_fill,
                            self.utils.get_desync(0),
                            GlobalVars.frametime * 5
                        )
  
                        local fake_color = Color.new(
                            (170 + (154 - 186) * self.skeet_modules.vars.fake.smooth_fill / 60) / 255,
                            (0 + (255 - 0) * self.skeet_modules.vars.fake.smooth_fill / 60) / 255,
                            (16 + (0 - 16) * self.skeet_modules.vars.fake.smooth_fill / 60) / 255,
                            1
                        )

                        table.insert(indicator_list, {
                            type = "circle",
  
                            fl_text = "FAKE",
                            fl_color = fake_color,
  
                            x_pos = is_enabled(0) and 15 or "",
                            y_pos = 0,
                            size = 7,
                            color = fake_color,
                            value = self.skeet_modules.vars.fake.smooth_fill * 6.4
                        })

                        if is_enabled(1) then
                            local hits = self.skeet_modules.vars.shot_stats.hits
                            local misses = self.skeet_modules.vars.shot_stats.misses
                            local all_shots = self.skeet_modules.vars.shot_stats.all_shots

                            local selected_style = menu_database.handler.elements["Hit/miss type"]
                            if selected_style == 0 then
                                if all_shots > 0 then
                                    local result_stats = ("%.1f"):format((hits / all_shots) * 100)
                                    local result_text = ("%s/%s (%s)"):format(hits, all_shots, result_stats)
      
                                    table.insert(indicator_list, {
                                        type = "text",
                                        text = result_text,
                                        color = Color.RGBA(255, 255, 255, 255)
                                    })
                                end
                            else
                                local hard_math = math.floor((hits / all_shots) * 100)
                                if hard_math ~= hard_math then hard_math = 100 end

                                local result_stats = ("%s%%"):format(hard_math)
                                local result_text = ("%s/%s"):format(misses, result_stats)
  
                                table.insert(indicator_list, {
                                    type = "text",
                                    text = result_text,
                                    color = Color.RGBA(255, 255, 255, 255)
                                })
                            end
                        end

                        table.insert(indicator_list, {
                            type = "text",
                            text = is_enabled(2) and get_text_fakelag() or "",
                            color = Color.RGBA(255, 255, 255, 255)
                        })

                        table.insert(indicator_list, {
                            type = "text",
                            text = (is_enabled(3) and self.skeet_modules.directories.isBaim:GetInt() == 2) and "BODY" or "",
                            color = Color.RGBA(255, 255, 255, 255)
                        })

                        local isDT = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool()
                        local binds = Cheat.GetBinds()
                        local isDMG, curDMG, isPing = false, 0, false
      
                        for i = 1, #binds do
                            local bind = binds[i]
                            if bind:IsActive() then
                                if bind:GetName() == "Minimum Damage" then
                                    isDMG = true
                                    curDMG = bind:GetValue()
                                end

                                if bind:GetName() == "Fake Ping" then
                                    isPing = true
                                end
                            end
                        end

                        local current_state = my_index:GetState()
                        if not current_state then return end

                        table.insert(indicator_list, {
                            type = "text",
                            text = is_enabled(4) and "EX" or "",
                            color = (isDT and current_state == "IN AIR") and Color.RGBA(132, 195, 16, 255) or Color.RGBA(208, 208, 20, 255)
                        })

                        local damage_type = menu_database.handler.elements["Damage type"]
                        table.insert(indicator_list, {
                            type = "text",
                            text = (is_enabled(5) and isDMG) and (
                                damage_type == 0 and ("Damage: %s"):format(curDMG) or damage_type == 1 and ("DMG: %s"):format(curDMG)
                                or damage_type == 2 and tostring(curDMG) or ""
                            ) or "",
                            color = (
                                damage_type == 0 and Color.RGBA(255, 255, 255, 255) or damage_type == 1 and Color.RGBA(255, 255, 255, 150) or Color.RGBA(255, 255, 255, 255)
                            )
                        })

                        local isDA = menu_database.handler.elements["Enable dormant aimbot"]
                        table.insert(indicator_list, {
                            type = "text",
                            text = (is_enabled(6) and isDA) and "DA" or "",
                            color = Color.RGBA(132, 195, 16, 255)
                        })

                        local get_ping_color = function()
                            local ping = EntityList.GetPlayerResource():GetProp("DT_CSPlayerResource", "m_iPing")[2]
                            local color = Color.RGBA(
                                math.floor(255 - ((ping / 189 * 60) * 2.29824561404)),
                                math.floor((ping / 189 * 60) * 2.42105263158),
                                math.floor((ping / 189 * 60) * 0.22807017543),
                                255
                            )

                            return color
                        end

                        table.insert(indicator_list, {
                            type = "text",
                            text = (is_enabled(7) and isPing) and "PING" or "",
                            color = get_ping_color()
                        })

                        if my_index:GetState() == "IN AIR" then
                            self.skeet_modules.vars.lag_compensation.is_lc = true
                            self.skeet_modules.vars.lag_compensation.timer = GlobalVars.curtime + 0.1
                        else
                            if self.skeet_modules.vars.lag_compensation.timer > GlobalVars.curtime then
                                self.skeet_modules.vars.lag_compensation.is_lc = true
                            else
                                self.skeet_modules.vars.lag_compensation.is_lc = false
                            end
                        end

                        table.insert(indicator_list, {
                            type = "text",
                            text = (is_enabled(8) and self.skeet_modules.vars.lag_compensation.is_lc) and "LC" or "",
                            color = my_index:GetVelocity() < 285 and Color.RGBA(255, 0, 0, 255) or Color.RGBA(132, 195, 16, 255)
                        })

                        local isFD = Menu.FindVar("Aimbot", "Anti Aim", "Misc", "Fake Duck"):GetBool()
                        table.insert(indicator_list, {
                            type = "text",
                            text = (is_enabled(9) and isFD) and "DUCK" or "",
                            color = Color.RGBA(255, 255, 255, 255)
                        })

                        if is_enabled(10) then
                            local c4 = EntityList.GetEntitiesByClassID(129)[1]
                            if c4 then
                                if c4:GetProp("m_bBombTicking") and not c4:GetProp("m_bBombDefused") then
                                    local get_damage = function()
                                        local armor = my_index:GetProp("m_ArmorValue")
                                        local health = my_index:GetProp("m_iHealth")
  
                                        local c4_origin = c4:GetRenderOrigin()
                                        local my_origin = my_index:GetRenderOrigin()
                                        local distance = my_origin:DistTo(c4_origin)
  
                                        local a, b, c = 450.7, 75.68, 789.2
                                        local d = (distance - b) / c
                                        local damage = a * math.exp(-d * d)
  
                                        if armor > 0 then
                                            local new_damage = damage * 0.5
                                            local armor_damage = (damage - new_damage) * 0.5
  
                                            if armor_damage > armor then
                                                armor = armor * (1 / .5)
                                                new_damage = damage - armor_damage
                                            end
  
                                            damage = new_damage
                                        end
  
                                        return ({
                                            text = math.ceil(damage) >= health and "FATAL" or ("-%s HP"):format(math.ceil(damage)),
                                            color = math.ceil(damage) >= health and Color.RGBA(255, 0, 0, 255)
                                            or Color.RGBA(210, 216, 112, 255)
                                        })
                                    end
  
                                    local current_site = self.skeet_modules.vars.bomb_info.bombsite % 2 == 1 and "B" or "A"
                                    local timer = c4:GetProp("m_flC4Blow") - GlobalVars.curtime
  
                                    if timer > 0.1 then
                                        local plant_info = ("%s - %ss"):format(current_site, ("%.1f"):format(timer))
                                        table.insert(indicator_list, {
                                            type = "text",
                                            text = plant_info,
                                            color = Color.RGBA(255, 255, 255, 255)
                                        })
  
                                        local health_info = get_damage()
                                        table.insert(indicator_list, {
                                            type = "text",
                                            text = health_info.text,
                                            color = health_info.color
                                        })
  
                                        if self.skeet_modules.vars.bomb_info.is_defusing then
                                            local defuse_timer = c4:GetProp("m_flDefuseCountDown") - GlobalVars.curtime
                                            local defuse_length = c4:GetProp("m_flDefuseLength")
                                            local defuse_bar_length = ((screen_size.y - 50) / defuse_length) * defuse_timer
                                            local bar_color = timer > defuse_length and Color.RGBA(58, 191, 54, 120)
                                            or Color.RGBA(252, 18, 19, 120)
  
                                            Render.BoxFilled(
                                                Vector2.new(0, 0),
                                                Vector2.new(10, screen_size.y),
                                                Color.RGBA(25, 25, 25, 120)
                                            )
  
                                            Render.BoxFilled(
                                                Vector2.new(0, screen_size.y - defuse_bar_length),
                                                Vector2.new(10, screen_size.y),
                                                bar_color
                                            )
  
                                            Render.Box(
                                                Vector2.new(0, 0),
                                                Vector2.new(10, screen_size.y),
                                                Color.RGBA(25, 25, 25, 120)
                                            )
                                        end
                                    end
                                end
                            end
  
                            if self.skeet_modules.vars.bomb_info.is_planting then
                                local current_site = self.skeet_modules.vars.bomb_info.bombsite % 2 == 1 and "B" or "A"
                                local frac = all_utils.easings.clamp(3.125 - (3.125 + self.skeet_modules.vars.bomb_info.plant_time - GlobalVars.curtime), 0, 3.125)

                                table.insert(indicator_list, {
                                    type = "circle",
          
                                    fl_text = ("Bombsite %s"):format(current_site),
                                    fl_color = Color.RGBA(234, 209, 138, 255),
          
                                    x_pos = 16,
                                    y_pos = 0,
                                    size = 8,
                                    color = Color.RGBA(255, 255, 255, 255),
                                    value = (frac / 3.3) * 360
                                })
                            end
                        end

                        table.insert(indicator_list, {
                            type = "text",
                            text = (is_enabled(11) and Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool()) and "DT" or "",
                            color = Exploits.GetCharge() == 1 and Color.RGBA(255, 255, 255, 255) or Color.RGBA(255, 0, 0, 255)
                        })

                        for k, indicator in ipairs(indicator_list) do
                            if indicator.type == "text" then
                                if indicator.text ~= nil and indicator.text ~= "" then
                                    render_indicator(
                                        indicator.text,
                                        indicator.color,
                                        add_y
                                    )
                                end
                            end

                            if indicator.type == "circle" then
                                if indicator.x_pos ~= "" then
                                    render_indicator(
                                        indicator.fl_text,
                                        indicator.fl_color,
                                        add_y
                                    )
  
                                    render_circle(
                                        indicator.fl_text,
                                        indicator.x_pos, indicator.y_pos, add_y,
                                        indicator.size,
                                        indicator.color,
                                        indicator.value
                                    )
                                end
                            end

                            if (indicator.text ~= nil and indicator.text ~= "") or (indicator.type == "circle" and indicator.x_pos ~= "") then
                                add_y = add_y - 35
                            end
                        end
                    end
                end
            end
        end,

        thirdperson_animations = function()
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 5)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        Cheat.SetThirdPersonAnim(false)
                    end
                else
                    Cheat.SetThirdPersonAnim(true)
                end
            else
                Cheat.SetThirdPersonAnim(true)
            end
        end,

        hitmarker_modules = {
            hitmarkers = {},
            on_registered_shot = function(self, shot)
                if menu_database.handler.elements["Enable indicator list"] then
                    if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 6)) ~= 0 then
                        local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                        if not localplayer then return end
                      
                        local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                        if not my_index then return end
  
                        if EngineClient.IsConnected() and my_index:IsAlive() then
                            if shot.reason == 0 then
                                table.insert(self.hitmarkers, {timer = GlobalVars.realtime, alpha = 0})
                            end
                        end
                    end
                end
            end
        },

        crosshair_hitmarker = function(self)
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 6)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        for i, info in ipairs(self.hitmarker_modules.hitmarkers) do
                            if info.timer + 0.5 < GlobalVars.realtime then
                                info.alpha = all_utils.easings.lerp(
                                    info.alpha, 0, GlobalVars.frametime * 15
                                )
                            else
                                info.alpha = all_utils.easings.lerp(
                                    info.alpha, 255, GlobalVars.frametime * 15
                                )
                            end

                            local alpha = math.floor(info.alpha)
                            local color = menu_database.handler.references["Crosshair hitmarker color"].reference:Get()

                            Render.Line(
                                Vector2.new(screen_size.x / 2 - 5, screen_size.y / 2 - 5),
                                Vector2.new(screen_size.x / 2 - 10, screen_size.y / 2 - 10),
                                Color.new(color.r, color.g, color.b, alpha / 200)
                            )

                            Render.Line(
                                Vector2.new(screen_size.x / 2 + 5, screen_size.y / 2 - 5),
                                Vector2.new(screen_size.x / 2 + 10, screen_size.y / 2 - 10),
                                Color.new(color.r, color.g, color.b, alpha / 200)
                            )
                          
                            Render.Line(
                                Vector2.new(screen_size.x / 2 + 5, screen_size.y / 2 + 5),
                                Vector2.new(screen_size.x / 2 + 10, screen_size.y / 2 + 10),
                                Color.new(color.r, color.g, color.b, alpha / 200)
                            )

                            Render.Line(
                                Vector2.new(screen_size.x / 2 - 5, screen_size.y / 2 + 5),
                                Vector2.new(screen_size.x / 2 - 10, screen_size.y / 2 + 10),
                                Color.new(color.r, color.g, color.b, alpha / 200)
                            )

                            if info.timer + 1.5 < GlobalVars.realtime then table.remove(self.hitmarker_modules.hitmarkers, i) end
                        end
                    end
                end
            end
        end,

        script_start_modules = {
            show_one_time = false,
            timer = GlobalVars.realtime,

            smooth_y = screen_size.y - 100,
            alpha = 0,

            first_circle = 0,
            second_circle = 0,

            box_left = screen_size.x / 2,
            box_right = screen_size.x / 2,

            box_left_1 = screen_size.x / 2,
            box_right_1 = screen_size.x / 2
        },

        on_script_start = function(self)
            if not self.script_start_modules.show_one_time then
                local font = self.utils:get_font("Verdana", "12")
                local text = ("[half-life beta] Welcome back, %s! Successfully loaded half-life; build: beta; days left: lifetime."):format(Cheat.GetCheatUserName())
                local text_size = Render.CalcTextSize(text, 12, font)

                self.script_start_modules.alpha = all_utils.easings.lerp(
                    self.script_start_modules.alpha,
                    255,
                    GlobalVars.frametime * 4
                )

                self.script_start_modules.first_circle = all_utils.easings.lerp(
                    self.script_start_modules.first_circle, 275, GlobalVars.frametime * 5
                )

                self.script_start_modules.second_circle = all_utils.easings.lerp(
                    self.script_start_modules.second_circle, -95, GlobalVars.frametime * 3
                )

                self.script_start_modules.box_left = all_utils.easings.lerp(
                    self.script_start_modules.box_left, screen_size.x / 2 - text_size.x / 2 - 2, GlobalVars.frametime * 6
                )

                self.script_start_modules.box_right = all_utils.easings.lerp(
                    self.script_start_modules.box_right, screen_size.x / 2 + text_size.x / 2 + 4, GlobalVars.frametime * 6
                )

                self.script_start_modules.box_left_1 = all_utils.easings.lerp(
                    self.script_start_modules.box_left_1, screen_size.x / 2 - text_size.x / 2 - 2, GlobalVars.frametime * 6
                )

                self.script_start_modules.box_right_1 = all_utils.easings.lerp(
                    self.script_start_modules.box_right_1, screen_size.x / 2 + text_size.x / 2 + 4, GlobalVars.frametime * 6
                )

                if self.script_start_modules.timer + 3.8 < GlobalVars.realtime then
                    self.script_start_modules.first_circle = all_utils.easings.lerp(
                        self.script_start_modules.first_circle, 0, GlobalVars.frametime * 1
                    )
  
                    self.script_start_modules.second_circle = all_utils.easings.lerp(
                        self.script_start_modules.second_circle, 0, GlobalVars.frametime * 1
                    )
  
                    self.script_start_modules.box_left = all_utils.easings.lerp(
                        self.script_start_modules.box_left, screen_size.x / 2, GlobalVars.frametime * 1
                    )
  
                    self.script_start_modules.box_right = all_utils.easings.lerp(
                        self.script_start_modules.box_right, screen_size.x / 2, GlobalVars.frametime * 1
                    )
  
                    self.script_start_modules.box_left_1 = all_utils.easings.lerp(
                        self.script_start_modules.box_left_1, screen_size.x / 2, GlobalVars.frametime * 1
                    )
  
                    self.script_start_modules.box_right_1 = all_utils.easings.lerp(
                        self.script_start_modules.box_right_1, screen_size.x / 2, GlobalVars.frametime * 1
                    )
                end

                if self.script_start_modules.timer + 4 < GlobalVars.realtime then
                    self.script_start_modules.smooth_y = all_utils.easings.lerp(
                        self.script_start_modules.smooth_y,
                        screen_size.y + 100,
                        GlobalVars.frametime * 4
                    )

                    self.script_start_modules.alpha = all_utils.easings.lerp(
                        self.script_start_modules.alpha,
                        0,
                        GlobalVars.frametime * 8
                    )
                end

                local add_y = math.floor(self.script_start_modules.smooth_y)
                local alpha = math.floor(self.script_start_modules.alpha)

                local first_circle = math.floor(self.script_start_modules.first_circle)
                local second_circle = math.floor(self.script_start_modules.second_circle)

                local left_box = math.floor(self.script_start_modules.box_left)
                local right_box = math.floor(self.script_start_modules.box_right)

                local left_box_1 = math.floor(self.script_start_modules.box_left_1)
                local right_box_1 = math.floor(self.script_start_modules.box_right_1)

                local rgb = self.utils.hsv_to_rgb(GlobalVars.realtime / 4, 1, 1)
                local second_gradient = Color.new(rgb.b, rgb.r, rgb.g, 1)
                local third_gradient = Color.new(rgb.g, rgb.b, rgb.r, 1)

                Render.BoxFilled(
                    Vector2.new(screen_size.x / 2 - text_size.x / 2 - 11, add_y - 26),
                    Vector2.new(screen_size.x / 2 + text_size.x / 2 + 11, add_y - 4),
                    Color.RGBA(17, 17, 17, alpha - 65), 90
                )
              
                Render.Circle(
                    Vector2.new(screen_size.x / 2 - text_size.x / 2 - 2, add_y - 15),
                    10, 90, second_gradient, 2, 90, first_circle
                )

                Render.Circle(
                    Vector2.new(screen_size.x / 2 + text_size.x / 2 + 2, add_y - 15),
                    10, 90, third_gradient, 2, 90, second_circle
                )

                for i = 1, 1 do
                    for k = 1, 2 do
                        Render.GradientBoxFilled(
                            Vector2.new(left_box, add_y - 7 + i),
                            Vector2.new(screen_size.x / 2, add_y - 5.5 + i),
                            second_gradient, second_gradient, second_gradient, second_gradient
                        )

                        Render.GradientBoxFilled(
                            Vector2.new(right_box, add_y - 7 + i),
                            Vector2.new(screen_size.x / 2, add_y - 5.5 + i),
                            third_gradient, second_gradient, third_gradient, second_gradient
                        )
                      
                        Render.GradientBoxFilled(
                            Vector2.new(screen_size.x / 2, add_y - 22.7 - i),
                            Vector2.new(left_box_1, add_y - 24.5 - i),
                            second_gradient, second_gradient, second_gradient, second_gradient
                        )

                        Render.GradientBoxFilled(
                            Vector2.new(screen_size.x / 2, add_y - 22.7 - i),
                            Vector2.new(right_box_1, add_y - 24.5 - i),
                            second_gradient, third_gradient, second_gradient, third_gradient
                        )
                    end
                end

                self.utils.draw_shadow(
                    2,
                    text,
                    screen_size.x / 2 - text_size.x / 2, add_y - 21,
                    Color.RGBA(255, 255, 255, alpha - 70),
                    12, font,
                    false, Color.RGBA(0, 0, 0, alpha)
                )

                if self.script_start_modules.timer + 5 < GlobalVars.realtime then
                    self.script_start_modules.timer = GlobalVars.realtime
                    self.script_start_modules.show_one_time = true
                end
            end
        end,

        hitlog_modules = {
            hitlogs = {},
            count_shots = 0,

            on_registered_shot = function(self, shot)
                if menu_database.handler.elements["Enable hitlogs"] then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
  
                    if EngineClient.IsConnected() then
                        self.count_shots = self.count_shots + 1
                        if self.count_shots > 99 then self.count_shots = 0 end

                        local other_info = function()
                            local index = EntityList.GetClientEntity(shot.target_index)
                            if not index then return end

                            local target = index:GetPlayer()
                            local name = target:GetName()
  
                            local get_hitbox = function()
                                local hitgroups = {
                                    "head", "neck", "pelvis",
                                    "stomach", "lower chest", "chest",
                                    "upper chest", "right leg", "left leg",
                                    "right leg", "left leg", "right foot",
                                    "left foot", "right hand", "left hand",
                                    "right arm", "right arm", "left arm", "left arm"
                                }

                                local hitboxes = {0, 3, 2, 16, 18, 11, 10, 0}
                                local hitbox = hitboxes[shot.hitgroup]
                                if hitbox == nil then hitbox = 3 end
  
                                local hitbox = hitgroups[hitbox + 1]
                                local wanted_hitgroup = hitgroups[shot.wanted_hitgroup]
  
                                return ({
                                    hitbox = hitbox,
                                    wanted = wanted_hitgroup
                                })
                            end

                            local damage = {
                                hit = shot.damage,
                                wanted = shot.wanted_damage,
                                remain = target:GetProp("m_iHealth") - shot.damage
                            }
                          
                            if damage.remain <= 0 then damage.remain = 0 end

                            local hit_hitchance = shot.hitchance
                            local is_missmatch = damage.hit ~= damage.wanted and true or false

                            local backtrack = shot.backtrack
                            local reasons = {"resolver", "spread", "occlusion", "prediction error"}
                            local miss_reason = reasons[shot.reason]

                            local second_correction = Utils.RandomInt(-15, 15)
                            local first_correction = 0
                            if 1 - math.floor(hit_hitchance / 100) == 0 then
                                first_correction = 1
                            elseif 1 - math.floor(hit_hitchance / 100) == 1 then
                                first_correction = 2
                            else
                                first_correction = 3
                            end

                            return ({
                                name = name,
                                hitbox = get_hitbox().hitbox,
                                wanted_hitbox = get_hitbox().wanted,

                                shot = self.count_shots,
                                damage = damage.hit,
                                wanted_damage = damage.wanted,
                                remain_damage = damage.remain,

                                hitchance = hit_hitchance,
                                missmatch = is_missmatch,

                                backtrack = backtrack,
                                miss_reason = miss_reason,

                                first_correction = first_correction,
                                second_correction = second_correction
                            })
                        end

                        local text = ""
                        local text_color = Color.RGBA(255, 255, 255, 255)
                        local info = other_info()

                        if shot.reason == 0 then
                            if info.missmatch then
                                text = string.format(
                                    "Registered %sth shot in %s's %s for %s damage [angle: 0.%s°, %s:%s°] ( hitchance: %s | history(Δ): %s | %s health | missmatch: [dmg: %s] )",
                                    info.shot, info.name, info.hitbox, info.damage, Utils.RandomInt(0, 60),
                                    info.first_correction, info.second_correction, info.hitchance, info.backtrack,
                                    info.remain_damage, info.wanted_damage
                                )
                            else
                                text = string.format(
                                    "Registered %sth shot in %s's %s for %s damage [angle: 0.%s°, %s:%s°] ( hitchance: %s | history(Δ): %s | %s health )",
                                    info.shot, info.name, info.hitbox, info.damage, Utils.RandomInt(0, 60),
                                    info.first_correction, info.second_correction, info.hitchance, info.backtrack,
                                    info.remain_damage
                                )
                            end
                        else
                            text = string.format(
                                "Missed %sth shot at %s's %s due to %s [angle: 0.%s°, %s:%s°] ( damage: %s | hitchance: %s | history(Δ): %s | %s health )",
                                info.shot, info.name, info.wanted_hitbox,
                                info.miss_reason, Utils.RandomInt(0, 60), info.first_correction,
                                info.second_correction, info.wanted_damage,
                                info.hitchance, info.backtrack, info.remain_damage
                            )
                        end

                        table.insert(self.hitlogs, {
                            text = text, time = GlobalVars.realtime, color = text_color
                        })

                        colored_print(Color.RGBA(255, 255, 102, 255), "[half-life] ")
                        print(text)
                    end
                end
            end,

            get_addictional_hits = function(self, e)
                if menu_database.handler.elements["Enable hitlogs"] then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
  
                    if EngineClient.IsConnected() then
                        if e:GetName() ~= "player_hurt" then return end

                        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

                        local victim_index = EntityList.GetPlayerForUserID(e:GetInt("userid"))
                        if not victim_index then return end

                        local target_name = victim_index:GetName()
                        local health_damage = e:GetInt("dmg_health")
                        local remaining_damage = e:GetInt("health")

                        local weapon = e:GetString("weapon")
                        local text = (
                            weapon == "hegrenade" and ("Naded %s for %s (%s remaining)"):format(
                                target_name, health_damage, remaining_damage
                            ) or weapon == "inferno" and ("Burned %s for %s (%s remaining)"):format(
                                target_name, health_damage, remaining_damage
                            ) or weapon == "knife" and ("Knifed %s for %s (%s remaining)"):format(
                                target_name, health_damage, remaining_damage
                            ) or nil
                        )

                        if text ~= nil then
                            table.insert(self.hitlogs, {
                                text = text, time = GlobalVars.realtime, color = Color.RGBA(255, 255, 255, 255)
                            })
  
                            colored_print(Color.RGBA(255, 255, 102, 255), "[half-life] ")
                            print(text)
                        end
                    end
                end
            end
        },

        hitlogs = function(self)
            if menu_database.handler.elements["Enable hitlogs"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
              
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                if EngineClient.IsConnected() then
                    local x, y = 5, 5

                    for k, information in ipairs(self.hitlog_modules.hitlogs) do
                        if information.text and information.time and information.color then
                            local text = information.text
                            local font = self.utils:get_font("Lucida Console", "10", "r")
                            local color = information.color

                            self.utils.draw_shadow(
                                0,
                                text,
                                x, y,
                                color,
                                10, font,
                                false, Color.RGBA(0, 0, 0, 255)
                            )

                            y = y + 15
                            if information.time + 3.8 < GlobalVars.realtime then
                                table.remove(self.hitlog_modules.hitlogs, k)
                            end
                        end
                    end
                end
            end
        end,

        execute_sauron_shots = function(self, shot)
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 7)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local hitgroups = {
                            "head", "neck", "pelvis", "stomach", "lower chest", "chest", "upper chest",
                            "right leg", "left leg", "right leg", "left leg", "right foot", "left foot",
                            "right hand", "left hand", "right arm", "right arm", "left arm", "left arm"
                        }

                        local all_hitgroups = {0, 3, 2, 16, 18, 11, 10, 0}
                        local current_hitgroups = all_hitgroups[shot.hitgroup]
                        if not current_hitgroups then current_hitgroups = 3 end
                        local hitbox = hitgroups[current_hitgroups + 1]

                        local target_name = EntityList.GetClientEntity(shot.target_index):GetPlayer():GetName()
                        local hit_damage = shot.damage
                        local hit_hitchance = shot.hitchance
                        local wanted_damage = shot.wanted_damage
                        local wanted_hitgroup = hitgroups[shot.wanted_hitgroup]
                        local delta = self.utils.get_desync(0)
                        local backtrack = shot.backtrack
                        local spread = string.format("%.2f", shot.spread_degree)

                        local reasons = {"resolver", "spread", "occlusion", "prediction error"}
                        local miss_reason = reasons[shot.reason]

                        local text = (
                            shot.reason == 0 and
                            ("Registered shot at %s's %s for %s damage [angle: %s°] (hitchance: %s | history: %s)"):format(
                                target_name, hitbox, hit_damage, spread, hit_hitchance, backtrack
                            ) or shot.reason ~= 0 and (
                                "Missed shot at %s's %s due to %s [delta: %s, bt=%s, spread: %s°]"
                            ):format(
                                target_name, wanted_hitgroup, miss_reason, delta, backtrack, spread
                            ) or ""
                        )

                        table.insert(sauron_text, {
                            text = text,
                            timer = GlobalVars.realtime,

                            smooth_y = screen_size.y + 100,
                            alpha = 0,
              
                            first_circle = 0,
                            second_circle = 0,
              
                            box_left = screen_size.x / 2,
                            box_right = screen_size.x / 2,
              
                            box_left_1 = screen_size.x / 2,
                            box_right_1 = screen_size.x / 2
                        })
                    end
                end
            end
        end,

        notifications = function(self)
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 7)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                  
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        if anti_aimbotting_functions.anti_bruteforce.vars.phase_state then
                            table.insert(sauron_text, {
                                text = "Switched angle due to shot",

                                timer = GlobalVars.realtime,
                                smooth_y = screen_size.y + 100,
                                alpha = 0,
                  
                                first_circle = 0,
                                second_circle = 0,
                  
                                box_left = screen_size.x / 2,
                                box_right = screen_size.x / 2,
                  
                                box_left_1 = screen_size.x / 2,
                                box_right_1 = screen_size.x / 2
                            })
                          
                            anti_aimbotting_functions.anti_bruteforce.vars.phase_state = false
                        end

                        local y = screen_size.y - 100
                        for i, info in ipairs(sauron_text) do
                            if i > 3 then
                                table.remove(sauron_text, i)
                            end

                            if info.text ~= nil and info.text ~= "" then
                                local font = self.utils:get_font("Verdana", "12")
                                local text_size = Render.CalcTextSize(
                                    info.text,
                                    12,
                                    font
                                )

                                if info.timer + 3.8 < GlobalVars.realtime then
                                    info.first_circle = all_utils.easings.lerp(
                                        info.first_circle, 0, GlobalVars.frametime * 1
                                    )
                  
                                    info.second_circle = all_utils.easings.lerp(
                                        info.second_circle, 0, GlobalVars.frametime * 1
                                    )
                  
                                    info.box_left = all_utils.easings.lerp(
                                        info.box_left, screen_size.x / 2, GlobalVars.frametime * 1
                                    )
                  
                                    info.box_right = all_utils.easings.lerp(
                                        info.box_right, screen_size.x / 2, GlobalVars.frametime * 1
                                    )
                  
                                    info.box_left_1 = all_utils.easings.lerp(
                                        info.box_left_1, screen_size.x / 2, GlobalVars.frametime * 1
                                    )
                  
                                    info.box_right_1 = all_utils.easings.lerp(
                                        info.box_right_1, screen_size.x / 2, GlobalVars.frametime * 1
                                    )

                                    info.smooth_y = all_utils.easings.lerp(
                                        info.smooth_y,
                                        screen_size.y + 100,
                                        GlobalVars.frametime * 2
                                    )
              
                                    info.alpha = all_utils.easings.lerp(
                                        info.alpha,
                                        0,
                                        GlobalVars.frametime * 4
                                    )
                                else
                                    info.alpha = all_utils.easings.lerp(
                                        info.alpha,
                                        255,
                                        GlobalVars.frametime * 4
                                    )
                                  
                                    info.smooth_y = all_utils.easings.lerp(
                                        info.smooth_y,
                                        y,
                                        GlobalVars.frametime * 4
                                    )
  
                                    info.first_circle = all_utils.easings.lerp(
                                        info.first_circle, 275, GlobalVars.frametime * 5
                                    )
  
                                    info.second_circle = all_utils.easings.lerp(
                                        info.second_circle, -95, GlobalVars.frametime * 3
                                    )
  
                                    info.box_left = all_utils.easings.lerp(
                                        info.box_left, screen_size.x / 2 - text_size.x / 2 - 2, GlobalVars.frametime * 6
                                    )
  
                                    info.box_right = all_utils.easings.lerp(
                                        info.box_right, screen_size.x / 2 + text_size.x / 2 + 4, GlobalVars.frametime * 6
                                    )
  
                                    info.box_left_1 = all_utils.easings.lerp(
                                        info.box_left_1, screen_size.x / 2 - text_size.x / 2 - 2, GlobalVars.frametime * 6
                                    )
  
                                    info.box_right_1 = all_utils.easings.lerp(
                                        info.box_right_1, screen_size.x / 2 + text_size.x / 2 + 4, GlobalVars.frametime * 6
                                    )
                                end

                                local add_y = math.floor(info.smooth_y)
                                local alpha = math.floor(info.alpha)
              
                                local first_circle = math.floor(info.first_circle)
                                local second_circle = math.floor(info.second_circle)
              
                                local left_box = math.floor(info.box_left)
                                local right_box = math.floor(info.box_right)
              
                                local left_box_1 = math.floor(info.box_left_1)
                                local right_box_1 = math.floor(info.box_right_1)

                                local rgb = self.utils.hsv_to_rgb(GlobalVars.realtime / 4, 1, 1)
                                local second_gradient = Color.new(rgb.b, rgb.r, rgb.g, 1)
                                local third_gradient = Color.new(rgb.g, rgb.b, rgb.r, 1)

                                Render.BoxFilled(
                                    Vector2.new(screen_size.x / 2 - text_size.x / 2 - 13, add_y - 26),
                                    Vector2.new(screen_size.x / 2 + text_size.x / 2 + 13, add_y - 4),
                                    Color.RGBA(17, 17, 17, alpha - 65), 90
                                )
                              
                                Render.Circle(
                                    Vector2.new(screen_size.x / 2 - text_size.x / 2 - 4, add_y - 15),
                                    10, 90, second_gradient, 2, 90, first_circle
                                )

                                Render.Circle(
                                    Vector2.new(screen_size.x / 2 + text_size.x / 2 + 4, add_y - 15),
                                    10, 90, third_gradient, 2, 90, second_circle
                                )

                                for i = 1, 1 do
                                    for k = 1, 2 do
                                        Render.GradientBoxFilled(
                                            Vector2.new(left_box - 2, add_y - 7 + i),
                                            Vector2.new(screen_size.x / 2, add_y - 5.5 + i),
                                            second_gradient, second_gradient, second_gradient, second_gradient
                                        )

                                        Render.GradientBoxFilled(
                                            Vector2.new(right_box + 2, add_y - 7 + i),
                                            Vector2.new(screen_size.x / 2, add_y - 5.5 + i),
                                            third_gradient, second_gradient, third_gradient, second_gradient
                                        )
                                      
                                        Render.GradientBoxFilled(
                                            Vector2.new(screen_size.x / 2, add_y - 23 - i),
                                            Vector2.new(left_box_1 - 1, add_y - 25 - i),
                                            second_gradient, second_gradient, second_gradient, second_gradient
                                        )

                                        Render.GradientBoxFilled(
                                            Vector2.new(screen_size.x / 2, add_y - 23 - i),
                                            Vector2.new(right_box_1 + 1, add_y - 25 - i),
                                            second_gradient, third_gradient, second_gradient, third_gradient
                                        )
                                    end
                                end

                                self.utils.draw_shadow(
                                    0,
                                    info.text,
                                    screen_size.x / 2 - text_size.x / 2, add_y - 21,
                                    Color.RGBA(255, 255, 255, alpha),
                                    12, font,
                                    false, Color.RGBA(0, 0, 0, alpha)
                                )

                                y = y - 30
                                if info.timer + 4 < GlobalVars.realtime then table.remove(sauron_text, i) end
                            end
                        end
                    end
                end
            end
        end,

        keybind_modules = {
            vars = {
                keybinds_alpha = {},
                keybinds_y = {},

                width = 0,
                is_draggable = false,
                cursor_last_pos = Vector2.new(0, 0)
            }
        },

        keybinds = function(self)
            if menu_database.handler.elements["Enable keybinds"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
              
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                if EngineClient.IsConnected() and my_index:IsAlive() then
                    local x = menu_database.handler.elements["Keybinds x-adding"]
                    local y = menu_database.handler.elements["Keybinds y-adding"]

                    local max_width = 0
                    local font = self.utils:get_font("Verdana", "11", "r")

                    local render_container = function(x, y, w)
                        local color = menu_database.handler.references["Keybinds color"].reference:Get()
                        local name_size = Render.CalcTextSize("keybinds", 11, font)

                        local height = 18
                        local line_height = 1.5
                  
                        local render_rounded_line = function()
                            Render.BoxFilled(
                                Vector2.new(x - 70, y),
                                Vector2.new(x + w, y + height),
                                Color.RGBA(17, 17, 17, math.floor(color.a * 255))
                            )

                            Render.Circle( -- right
                                Vector2.new(x + w - 4, y + line_height + 2),
                                5, 90, Color.new(color.r, color.g, color.b, 1), 2, 270, 370
                            )

                            Render.Circle( -- left
                                Vector2.new(x - 66, y + line_height + 2),
                                5, 90, Color.new(color.r, color.g, color.b, 1), 2, 270, 170
                            )

                            Render.BoxFilled(
                                Vector2.new(x - 66, y),
                                Vector2.new(x + w - 4, y - line_height - 0.5),
                                Color.new(color.r, color.g, color.b, 1)
                            )

                            Render.GradientBoxFilled(
                                Vector2.new(x + w - 0.2, y + 4),
                                Vector2.new(x + w + 1.5, y + 10),
                                Color.new(color.r, color.g, color.b, 1), Color.new(color.r, color.g, color.b, 1),
                                Color.new(color.r, color.g, color.b, 1), Color.new(color.r, color.g, color.b, 0.6)
                            )

                            Render.GradientBoxFilled(
                                Vector2.new(x - 69.8, y + 4),
                                Vector2.new(x - 71.5, y + 10),
                                Color.new(color.r, color.g, color.b, 1), Color.new(color.r, color.g, color.b, 1),
                                Color.new(color.r, color.g, color.b, 1), Color.new(color.r, color.g, color.b, 0.6)
                            )
                        end

                        render_rounded_line()
                        self.utils.draw_shadow(
                            2,
                            "keybinds",
                            x - 35 + w / 2 - name_size.x / 2, y + 2,
                            Color.RGBA(255, 255, 255, 255),
                            11, font,
                            false, Color.RGBA(0, 0, 0, 205)
                        )
                    end

                    local binds = Cheat.GetBinds()
                    local add_y = 0

                    for i = 1, #binds do
                        table.insert(self.keybind_modules.vars.keybinds_alpha, 0)
                        local bind = binds[i]

                        local yaw_base = Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Base"):Get()
                        local isFS = yaw_base == 5

                        local bind_name = bind:GetName()
                        bind_name = bind_name:gsub("Double Tap", "Double tap")
                        bind_name = bind_name:gsub("Fake Duck", "Duck peek assist")
                        bind_name = bind_name:gsub("Auto Peek", "Quick peek assist")
                        bind_name = isFS and bind_name:gsub("Yaw Base", "Freestanding") or bind_name:gsub("Yaw Base", "")

                        add_y = add_y + 13
                        if bind_name ~= "" then
                            if bind:IsActive() then
                                self.keybind_modules.vars.keybinds_alpha[i] = all_utils.easings.lerp(
                                    self.keybind_modules.vars.keybinds_alpha[i],
                                    255,
                                    GlobalVars.frametime * 8
                                )
                            else
                                self.keybind_modules.vars.keybinds_alpha[i] = all_utils.easings.lerp(
                                    self.keybind_modules.vars.keybinds_alpha[i],
                                    0,
                                    GlobalVars.frametime * 8
                                )
                            end

                            local render_binds = function(binds, name)
                                local bind_state = binds:GetMode() == 1 and "[holding]" or "[toggled]"
                                local bind_name = name

                                local bind_state_size = Render.CalcTextSize(bind_state, 11, font)
                                local bind_name_size = Render.CalcTextSize(bind_name, 11, font)

                                local smooth_alpha = math.floor(self.keybind_modules.vars.keybinds_alpha[i])
                                local width = math.floor(self.keybind_modules.vars.width)
                              
                                self.utils.draw_shadow(
                                    1,
                                    bind_name,
                                    x - 63, y + 7 + add_y,
                                    Color.RGBA(255, 255, 255, smooth_alpha),
                                    11, font,
                                    false, Color.RGBA(0, 0, 0, smooth_alpha - 50)
                                )

                                self.utils.draw_shadow(
                                    1,
                                    bind_state,
                                    x + (width - bind_state_size.x) - 5, y + 7 + add_y,
                                    Color.RGBA(255, 255, 255, smooth_alpha),
                                    11, font,
                                    false, Color.RGBA(0, 0, 0, smooth_alpha - 50)
                                )

                                local bind_width = bind_state_size.x + bind_name_size.x - 40
                                local length = 75
      
                                if bind_width > length then
                                    if bind_width > max_width then
                                        max_width = bind_width
                                    end
                                end
                            end
                            render_binds(bind, bind_name)
                        else
                            add_y = add_y - 13
                        end
                    end

                    self.keybind_modules.vars.width = math.max(75, max_width)
                    if not Cheat.IsMenuVisible() then
                        self.keybind_modules.vars.is_draggable = false
                    end

                    local width = math.floor(self.keybind_modules.vars.width)
                    if Cheat.IsMenuVisible() or #binds > 0 then
                        render_container(x, y, width, 18)
                        local mouse = Cheat.GetMousePos()

                        if Cheat.IsKeyDown(0x1) then
                            if not self.keybind_modules.vars.is_draggable then
                                if mouse.x >= x - 70 and mouse.y >= y and mouse.x <= x + width and mouse.y <= y + 18 then
                                    self.keybind_modules.vars.is_draggable = true
                                end
                            else
                                local x_pos = x + (mouse.x - self.keybind_modules.vars.cursor_last_pos.x)
                                local y_pos = y + (mouse.y - self.keybind_modules.vars.cursor_last_pos.y)

                                menu_database:set_value("Keybinds x-adding", math.floor(x_pos))
                                menu_database:set_value("Keybinds y-adding", math.floor(y_pos))
                            end
                        else
                            self.keybind_modules.vars.is_draggable = false
                        end

                        self.keybind_modules.vars.cursor_last_pos = mouse
                    end
                end
            end
        end,

        solus_watermark_modules = {
            vars = {
                width = 0,

                current_time = GlobalVars.curtime,
                current_fps = 0,

                is_draggable = false,
                cursor_last_pos = Vector2.new(0, 0)
            }
        },

        fps_counter = 0,
        solus_watermark = function(self)
            if menu_database.handler.elements["Enable watermark"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
              
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                if EngineClient.IsConnected() and my_index:IsAlive() then
                    local x = menu_database.handler.elements["Watermark x-adding"]
                    local y = menu_database.handler.elements["Watermark y-adding"]

                    local utils = {
                        get_ping = function()
                            local netchann_info = EngineClient.GetNetChannelInfo()
                            if not netchann_info then return "0" end
      
                            local latency = netchann_info:GetLatency(0)
                            return string.format("%1.f", math.max(0.0, latency) * 1000.0)
                        end,
      
                        get_current_time = function()
                            local seconds = math.floor(Utils.UnixTime() / 1000)
                            local hours = math.floor((seconds / 3600 + 3) % 24)
                            local minutes = math.floor(seconds / 60 % 60)

                            return string.format("%02d:%02d:%02d", hours, minutes, (seconds % 60))
                        end,

                        get_ticks = function()
                            return math.floor(1.0 / GlobalVars.interval_per_tick)
                        end,

                        get_fps = function()
                            local get_fps = function()
                                self.fps_counter = 0.9 * self.fps_counter + (1.0 - 0.9) * GlobalVars.absoluteframetime
                                return math.floor((1.0 / self.fps_counter) + 0.5)
                            end

                            local current_fps = get_fps()
                            if self.solus_watermark_modules.vars.current_time + 0.3 < GlobalVars.curtime then
                                self.solus_watermark_modules.vars.current_fps = current_fps
                                self.solus_watermark_modules.vars.current_time = GlobalVars.curtime
                            end
      
                            return self.solus_watermark_modules.vars.current_fps
                        end
                    }

                    local max_width = 0
                    local font = self.utils:get_font("Verdana", "11", "r")

                    local name = Cheat.GetCheatUserName()
                    local ticks = utils.get_ticks()
                    local fps = utils.get_fps()
                    local ping = utils.get_ping()
                    local time = utils.get_current_time()

                    local render_container = function()
                        local text = ("%s  %s fps  delay: %sms  %s tick  %s"):format(name, fps, ping, ticks, time)
                        local text_size = Render.CalcTextSize(text, 11, font)

                        local color = menu_database.handler.references["Watermark color"].reference:Get()
                        local width = self.solus_watermark_modules.vars.width
                        local start_position = x - 22

                        local render_rounded_line = function()
                            Render.BoxFilled(
                                Vector2.new(start_position, y - 8),
                                Vector2.new(x + width + 53, y + text_size.y - 2),
                                Color.RGBA(17, 17, 17, 85), 10
                            )

                            Render.BoxFilled(
                                Vector2.new(start_position + 4, y - 10),
                                Vector2.new(x + width + 47, y + text_size.y - 19),
                                color
                            )

                            Render.GradientBoxFilled(
                                Vector2.new(x + width + 50.8, y + text_size.y - 15),
                                Vector2.new(x + width + 52.4, y + text_size.y - 8),
                                color, Color.new(color.r, color.g, color.b, 1),
                                color, Color.new(color.r, color.g, color.b, 0.6)
                            )

                            Render.GradientBoxFilled(
                                Vector2.new(start_position, y + text_size.y - 15),
                                Vector2.new(start_position - 1.7, y + text_size.y - 8),
                                color, color,
                                color, Color.new(color.r, color.g, color.b, color.a - 0.4)
                            )

                            Render.Circle( -- right
                                Vector2.new(x + width + 47, y + text_size.y - 15.2),
                                5, 90, color, 2, 270, 370
                            )

                            Render.Circle( -- left
                                Vector2.new(start_position + 4, y + text_size.y - 15.2),
                                5, 90, color, 2, 270, 170
                            )
                        end

                        render_rounded_line()
                        self.utils.draw_shadow(
                            2,
                            "half",
                            x - 18, y - 6,
                            color,
                            11, font,
                            false, Color.RGBA(0, 0, 0, 205)
                        )

                        self.utils.draw_shadow(
                            2,
                            "-life [beta]",
                            x, y - 6,
                            Color.RGBA(255, 255, 255, 255),
                            11, font,
                            false, Color.RGBA(0, 0, 0, 205)
                        )

                        self.utils.draw_shadow(
                            2,
                            text,
                            x + 57, y - 6,
                            Color.RGBA(255, 255, 255, 255),
                            11, font,
                            false, Color.RGBA(0, 0, 0, 205)
                        )

                        local max_width = 0
                        local text_width = text_size.x + 10
          
                        if text_width > 5 then
                            if text_width > max_width then
                                max_width = text_width
                            end
                        end

                        self.solus_watermark_modules.vars.width = math.max(5, max_width)
                    end

                    render_container()
                    if Cheat.IsMenuVisible() then
                        local mouse = Cheat.GetMousePos()
                        local width = math.floor(self.solus_watermark_modules.vars.width)

                        if Cheat.IsKeyDown(0x1) then
                            if not self.solus_watermark_modules.vars.is_draggable then
                                if mouse.x >= x and mouse.y >= y - 10 and mouse.x <= x + width and mouse.y <= y + 11 then
                                    self.solus_watermark_modules.vars.is_draggable = true
                                end
                            else
                                local x_pos = x + (mouse.x - self.solus_watermark_modules.vars.cursor_last_pos.x)
                                local y_pos = y + (mouse.y - self.solus_watermark_modules.vars.cursor_last_pos.y)

                                menu_database:set_value("Watermark x-adding", math.floor(x_pos))
                                menu_database:set_value("Watermark y-adding", math.floor(y_pos))
                            end
                        else
                            self.solus_watermark_modules.vars.is_draggable = false
                        end
                        self.solus_watermark_modules.vars.cursor_last_pos = mouse
                    end
                else
                    self.solus_watermark_modules.vars.current_time = GlobalVars.curtime
                end
            else
                self.solus_watermark_modules.vars.current_time = GlobalVars.curtime
            end
        end,

        weapons_in_scope = function(self)
            if menu_database.handler.elements["Enable weapons in scope"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
              
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                if EngineClient.IsConnected() and my_index:IsAlive() then
                    local is_scoped = my_index:GetProp("m_bIsScoped")
                    if is_scoped then
                        if Menu.FindVar("Visuals", "View", "Thirdperson", "Enable Thirdperson"):GetBool() then
                            CVar.FindVar("fov_cs_debug"):SetInt(0)
                        else
                            CVar.FindVar("fov_cs_debug"):SetInt(90)
                        end
                    else
                        CVar.FindVar("fov_cs_debug"):SetInt(0)
                    end
                end
            else
                CVar.FindVar("fov_cs_debug"):SetInt(0)
            end
        end,

        damage_markers = {
            particles = {},
            hitmarkers = {},

            on_registered_shot = function(self, shot)
                if menu_database.handler.elements["Enable indicator list"] then
                    if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 8)) ~= 0 then
                        local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                        if not localplayer then return end
                      
                        local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                        if not my_index then return end

                        if EngineClient.IsConnected() and my_index:IsAlive() then
                            local index = EntityList.GetClientEntity(shot.target_index)
                            if not index then return end

                            local get_player = index:GetPlayer()
                            if not get_player then return end

                            if shot.reason == 0 then
                                local damage = shot.damage
                                if damage < 1 then return end

                                local bullet_position = get_player:GetHitboxCenter(shot.hitgroup)
                                if not bullet_position then
                                    bullet_position = get_player:GetRenderOrigin()
                                    bullet_position.y = bullet_position.y + 30
                                end
                              
                                bullet_position.x = (bullet_position.x - 10) + (math.random() * 20)
                                bullet_position.y = (bullet_position.y - 10) + (math.random() * 20)
                                bullet_position.z = (bullet_position.z - 15) + (math.random() * 30)

                                table.insert(self.particles, {
                                    position = bullet_position,
                                    timer = GlobalVars.tickcount + 80,
                                    damage = damage,
                                    is_killed = get_player:GetProp("m_iHealth") - damage <= 0 and true or false
                                })

                                table.insert(self.hitmarkers, {
                                    position = get_player:GetHitboxCenter(shot.hitgroup),
                                    timer = GlobalVars.realtime,
                                    alpha = 0,
                                })
                            end
                        end
                    end
                end
            end,

            move_position = function(self)
                if menu_database.handler.elements["Enable indicator list"] then
                    if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 8)) ~= 0 then
                        if #self.particles > 0 then
                            for k, information in pairs(self.particles) do
                                local delta = information.timer - GlobalVars.tickcount
                                if delta > 0 then
                                    information.position.z = information.position.z + 0.3
                                end
                            end
                        end
                    end
                end
            end,

            on_round_prestart = function(self, e)
                if e:GetName() ~= "round_prestart" then return end
                self.particles = {}
                self.hitmarkers = {}
            end,

            on_self_connected = function(self, e)
                if e:GetName() ~= "player_connect_full" then return end
                self.particles = {}
                self.hitmarkers = {}
            end,

            load_markers_modules = function(self, e)
                self:on_round_prestart(e)
                self:on_self_connected(e)
            end
        },

        draw_damage_markers = function(self)
            if menu_database.handler.elements["Enable indicator list"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
              
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                if EngineClient.IsConnected() and my_index:IsAlive() then
                    if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 8)) ~= 0 then
                        if #self.damage_markers.particles > 0 then
                            for k, information in ipairs(self.damage_markers.particles) do
                                if information.position and information.timer and (information.damage and information.damage > 0) then
                                    local position = Render.WorldToScreen(information.position)
                                    local time = math.floor(information.timer - GlobalVars.tickcount)
                                  
                                    if time > 255 then time = 255 end
                                    if (not(time < 0)) then
                                        local damage = information.damage .. ""
                                        local color = information.is_killed and Color.RGBA(255, 236, 132, 255) or Color.RGBA(255, 255, 255, 255)
                                        color.a = time

                                        local font = self.utils:get_font("Tahoma", "10")
                                        self.utils.draw_shadow(
                                            1,
                                            damage,
                                            position.x, position.y,
                                            color,
                                            10, font,
                                            false, Color.RGBA(0, 0, 0, 255)
                                        )
                                    end
                                end
                            end
                        end
                      
                        if #self.damage_markers.hitmarkers > 0 then
                            for k, information in ipairs(self.damage_markers.hitmarkers) do
                                if information.position and information.timer and information.alpha then
                                    local position = Render.WorldToScreen(information.position)
                                    if information.timer + 4 < GlobalVars.realtime then
                                        information.alpha = math.max(0, information.alpha - 2)
                                    else
                                        information.alpha = math.min(information.alpha + 3, 255)
                                    end

                                    local alpha = math.floor(information.alpha)
                                    local current_size = menu_database.handler.elements["Hitmarker size"]
                                    local current_mode = menu_database.handler.elements["Hitmarker mode"]

                                    local current_color = menu_database.handler.references["Hitmarker color"].reference:Get()
                                    local color = Color.new(current_color.r, current_color.g, current_color.b, alpha / 255)

                                    if current_mode == 0 then
                                        Render.Line(Vector2.new(position.x, position.y - current_size), position, color)
                                        Render.Line(Vector2.new(position.x - current_size, position.y), position, color)
                                        Render.Line(Vector2.new(position.x, position.y + current_size), position, color)
                                        Render.Line(Vector2.new(position.x + current_size, position.y), position, color)
                                    else
                                        Render.Line(position, Vector2.new(position.x - current_size, position.y - current_size), color)
                                        Render.Line(position, Vector2.new(position.x - current_size, position.y + current_size), color)
                                        Render.Line(position, Vector2.new(position.x + current_size, position.y + current_size), color)
                                        Render.Line(position, Vector2.new(position.x + current_size, position.y - current_size), color)
                                    end

                                    if information.timer + 5 < GlobalVars.realtime then
                                        table.remove(self.damage_markers.hitmarkers, k)
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end,

        scope_cache = false,
        scope_time = 0,

        custom_scope = function(self)
            if menu_database.handler.elements["Enable custom scope"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
              
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                if EngineClient.IsConnected() and my_index:IsAlive() then
                    if not self.scope_cache then self.scope_cache = true end
                    local is_scoped = my_index:GetProp("m_bIsScoped")

                    if is_scoped then
                        Menu.FindVar("Visuals", "View", "Camera", "Remove Scope"):SetInt(2)

                        local initial_position = menu_database.handler.elements["Custom scope initial position"]
                        local offset = menu_database.handler.elements["Custom scope offset"]

                        if self.scope_time < initial_position / 2 + offset then
                            self.scope_time = self.scope_time + 100
                        else
                            self.scope_time = initial_position / 2 + offset
                        end

                        local color = menu_database.handler.references["Enable custom scope"].reference:GetColor()
                        local col = Color.new(color.r, color.g, color.b, 0.05)
                        local first_col = (function(a, b) if initial_position <= 30 then return b else return a end end)(color, col)
                        local second_col = (function(a, b) if initial_position <= 30 then return a else return b end end)(color, col)
                        local alpha_time = self.scope_time
                      
                        Render.GradientBoxFilled(
                            Vector2.new(screen_size.x / 2 - 0.1, screen_size.y / 2 - math.min(initial_position, alpha_time)),
                            Vector2.new(
                                screen_size.x / 2 + 1,
                                screen_size.y / 2 - math.min(initial_position, alpha_time) - math.min(offset, alpha_time)
                            ),
                            second_col, second_col,
                            first_col, first_col
                        ) -- upper

                        Render.GradientBoxFilled(
                            Vector2.new(screen_size.x / 2 - math.min(initial_position, alpha_time), screen_size.y / 2 - 0.1),
                            Vector2.new(
                                screen_size.x / 2 - math.min(initial_position, alpha_time) - math.min(offset, alpha_time),
                                screen_size.y / 2 + 1
                            ),
                            second_col, first_col,
                            second_col, first_col
                        ) -- left

                        Render.GradientBoxFilled(
                            Vector2.new(screen_size.x / 2 - 0.1, screen_size.y / 2 + math.min(initial_position, alpha_time)),
                            Vector2.new(
                                screen_size.x / 2 + 1,
                                screen_size.y / 2  + math.min(initial_position, alpha_time) + math.min(offset, alpha_time)
                            ),
                            second_col, second_col,
                            first_col, first_col
                        ) -- down

                        Render.GradientBoxFilled(
                            Vector2.new(screen_size.x / 2 + math.min(initial_position, alpha_time), screen_size.y / 2 - 0.1),
                            Vector2.new(
                                screen_size.x / 2  + math.min(initial_position, alpha_time) + math.min(offset, alpha_time),
                                screen_size.y / 2 + 1
                            ),
                            second_col, first_col,
                            second_col, first_col
                        ) -- right
                    else
                        if self.scope_time > 0 then
                            self.scope_time = self.scope_time - 100
                        else
                            self.scope_time = 0
                        end
                    end
                else
                    if self.scope_cache then
                        Menu.FindVar("Visuals", "View", "Camera", "Remove Scope"):SetInt(1)
                        self.scope_cache = false
                    end
                end
            else
                if self.scope_cache then
                    Menu.FindVar("Visuals", "View", "Camera", "Remove Scope"):SetInt(1)
                    self.scope_cache = false
                end
            end
        end,

        peek_arrows = function(self)
            if menu_database.handler.elements["Enable peek arrows"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
              
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                if EngineClient.IsConnected() and my_index:IsAlive() then
                    local font = self.utils:get_font("Verdana", "21", "b")
                    local color = menu_database.handler.references["Enable peek arrows"].reference:GetColor()
                    local inverted = AntiAim.GetInverterState()

                    self.utils.draw_shadow(
                        3,
                        ">",
                        screen_size.x / 2 + 50, screen_size.y / 2 - 12,
                        inverted and color or Color.RGBA(255, 255, 255, 255),
                        21, font,
                        false, Color.RGBA(0, 0, 0, 170)
                    )

                    self.utils.draw_shadow(
                        3,
                        "<",
                        screen_size.x / 2 - 65, screen_size.y / 2 - 12,
                        not inverted and color or Color.RGBA(255, 255, 255, 255),
                        21, font,
                        false, Color.RGBA(0, 0, 0, 170)
                    )
                end
            end
        end,

        load_indicators = function(self)
            self:under_crosshair()
            self:watermark()
            self:minimum_damage()
            self:skeet_autopeek()
            self:side_skeet_indicators()
            self:thirdperson_animations()
            self:crosshair_hitmarker()
            self:on_script_start()
            self:hitlogs()
            self:notifications()
            self:keybinds()
            self:solus_watermark()
            self:weapons_in_scope()
            self.damage_markers:move_position()
            self:draw_damage_markers()
            self:custom_scope()
            self:peek_arrows()
        end
    }
    -- @endregion

    -- @region: all miscellaneous functions
    local miscellaneous_functions = {
        trashtalk = function(e)
            if menu_database.handler.elements["Enable trashtalk"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
              
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                if EngineClient.IsConnected() then
                    if e:GetName() ~= "player_death" then return end
              
                    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

                    local phrases = {
                        "Найс дед скачай конфиг от алексбомбера",
                        "Made your mom proud,at payhip.com/Ivanovo", "Прости shoppy.gg/@Ivanovo",
                        "Ничего страшного ты  хорошо играешь",
                        "Мне друг (витма) (бигнейм) сказал в таких случаях 1 писать но я добрый так что не буду",
                        "Блин друг прости пожалуйста не увидел",
                        "Я с конфигом от кеннеди",
                        "Была бы газелька с салом выиграл бы",
                        "Ты все равно лучше меня не расстраивайся",
                        "Опять ты, прости я без ников убил",
                        "Нифига смачный бектрек", "Был бы пелучкорд тапнул бы",
                        "Сори что убил я просто отвернулся и не увидел",
                        "laff u suck AHAHAHAHAAH",
                        "Посаны а как вам микрофон яспер мо о глод у фипа такой вроде",
                        "Какой у тебя мейн Ник ? Мне сказали это важна чтоб медия сделать, ты витма ?",
                        "by Kennedy hvh boss", "спать покемон ушастый"
                    }

                    local get_phrase = phrases[Utils.RandomInt(1, #phrases)]:gsub('\"', '')
                    EngineClient.ExecuteClientCmd((' say "%s"'):format(get_phrase))
                end
            end
        end,

        hitsounds = function(self, e)
            if menu_database.handler.elements["Enable hitsounds"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
              
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                if EngineClient.IsConnected() then
                    if e:GetName() ~= "player_hurt" then return end

                    local attacker = EntityList.GetPlayerForUserID(e:GetInt("attacker"))
                    if attacker == my_index then
                        local file_name = menu_database.handler.references["Hitsound"].reference:Get()
                        local path = ("playvol %s %s"):format(file_name, "0.8")

                        EngineClient.ExecuteClientCmd(path)
                    end
                end
            end
        end
    }
    -- @endregion

    -- @region: animation breaker
    local hooked_function = nil
    local is_jumping = false

    local updateCSA = function(thisptr, edx)
        local is_localplayer = ffi.cast("uintptr_t", thisptr) == get_entity_address(EngineClient.GetLocalPlayer())
        hooked_function(thisptr, edx)
      
        if is_localplayer then
            if menu_database.handler.elements["Enable anim breakers"] then
                local addons = menu_database.handler.elements["Anim breakers"]
                if bit.band(addons, bit.lshift(1, 0)) ~= 0 then
                    local static_legs_value = menu_database.handler.elements["Static legs timer"]
                    ffi.cast("float*", ffi.cast("uintptr_t", thisptr) + 10104)[6] = static_legs_value
                end

                if bit.band(addons, bit.lshift(1, 1)) ~= 0 then
                    local leg_breaker_value = menu_database.handler.elements["Leg fucker type"]
                    ffi.cast("float*", ffi.cast("uintptr_t", thisptr) + 10104)[0] = leg_breaker_value == 0 and 1 or (
                        GlobalVars.tickcount % 4 == 0 and 0.5 or 0
                    )
                end

                if bit.band(addons, bit.lshift(1, 2)) ~= 0 then
                    if ffi.cast("CCSGOPlayerAnimationState_534535_t**", ffi.cast("uintptr_t", thisptr) + 0x9960)[0].bHitGroundAnimation then
                        if not is_jumping then
                            ffi.cast("float*", ffi.cast("uintptr_t", thisptr) + 10104)[12] = 0.5
                        end
                    end
                end
            end
        end
    end

    local breaker_functions = {
        on_pre_prediction = function(cmd)
            is_jumping = bit.band(cmd.buttons, bit.lshift(1, 1)) ~= 0
        end,

        on_create_move = function()
            local local_player = EntityList.GetLocalPlayer()
            if not local_player then return end
          
            local local_player_ptr = get_entity_address(local_player:EntIndex())
            if not local_player_ptr or hooked_function then return end

            local C_CSPLAYER = vmt_hook.new(local_player_ptr)
            hooked_function = C_CSPLAYER.hookMethod("void(__fastcall*)(void*, void*)", updateCSA, 224)
        end,

        on_destroy = function()
            for i, unHookFunc in ipairs(vmt_hook.hooks) do
                unHookFunc()
            end
      
            for i, free in ipairs(buff.free) do
                free()
            end
        end,

        on_prediction = function(cmd)
            local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
            if not localplayer then return end
          
            local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
            if not my_index then return end

            if EngineClient.IsConnected() and my_index:IsAlive() then
                if menu_database.handler.elements["Enable anim breakers"] then
                    local addons = menu_database.handler.elements["Anim breakers"]
                    if bit.band(addons, bit.lshift(1, 1)) ~= 0 then
                        local directory = Menu.FindVar("Aimbot", "Anti Aim", "Misc", "Leg Movement")
                        directory:Set(cmd.command_number % 3 == 0 and 0 or 1)
                    end
                end
            end
        end
    }
    -- @endregion

    -- @region: all callbacks
    local all_callbacks = {
        on_prediction = function(cmd)
            ragebot_functions:load_ragebot_functions(cmd)
            anti_aimbotting_functions:load_anti_aimbotting_functions(cmd)
            breaker_functions.on_prediction(cmd)
        end,

        on_events = function(e)
            ragebot_functions.dormant_aimbot:reset_data(e)
            anti_aimbotting_functions.anti_bruteforce:run_work(e)
            anti_aimbotting_functions.bombsite_fix:check_bombsite(e)

            visual_functions.watermark_modules:count_hurt_shots(e)
            visual_functions.hitlog_modules:get_addictional_hits(e)
            visual_functions.damage_markers:load_markers_modules(e)
            visual_functions.skeet_modules.vars.bomb_info:load_bomb_modules(e)

            miscellaneous_functions.trashtalk(e)
            miscellaneous_functions:hitsounds(e)
        end,

        on_draw = function()
            visual_functions:load_indicators()
            anti_aimbotting_functions:run_main_anti_aim()
        end,

        on_pre_prediction = function(cmd)
            breaker_functions.on_pre_prediction(cmd)
            anti_aimbotting_functions.roll_angles:on_pre_prediction(cmd)
        end,

        on_registered_shot = function(shot)
            visual_functions.hitmarker_modules:on_registered_shot(shot)
            visual_functions.hitlog_modules:on_registered_shot(shot)
            visual_functions:execute_sauron_shots(shot)
            visual_functions.damage_markers:on_registered_shot(shot)
            visual_functions.skeet_modules.vars.shot_stats:count_shots(shot)
        end,

        on_destroy = function()
            breaker_functions.on_destroy()
        end,

        on_create_move = function(cmd)
            breaker_functions.on_create_move()
            anti_aimbotting_functions.roll_angles:on_createmove(cmd)
        end,

        load_callbacks = function(self)
            Cheat.RegisterCallback("prediction", self.on_prediction)
            Cheat.RegisterCallback("createmove", self.on_create_move)
            Cheat.RegisterCallback("pre_prediction", self.on_pre_prediction)
            Cheat.RegisterCallback("events", self.on_events)
            Cheat.RegisterCallback("draw", self.on_draw)
            Cheat.RegisterCallback("registered_shot", self.on_registered_shot)
            Cheat.RegisterCallback("destroy", self.on_destroy)
        end
    }

    all_callbacks:load_callbacks()
    -- @endregion
end

--[[
    if __name__ == "__main__":
        __main__
    O_O O_O O_O O_O O_O O_O O_O O_O
--]]

__main__()
 
ты ебанутый... как же хорошо что я это чудо не купил
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
где вы эту всю хуйню находите и сливаете
 
-- @region: script information -- @ Half-life parody. -- @ Created by попросил скрыть ник, но все мы его знаем -- @ Version: 0.3.0 [debug]. -- @ Last update: 01.0.1.2022. -- @endregion local screen_size = EngineClient.GetScreenSize() local sauron_text = {} local __main__ = function() -- @region: ffi elements local ffi = require("ffi") ffi.cdef[[ typedef struct { uint8_t r; uint8_t g; uint8_t b; uint8_t a; } color_struct_t; typedef void (*console_color_print)(const color_struct_t&, const char*, ...); void* GetProcAddress(void* hModule, const char* lpProcName); void* GetModuleHandleA(const char* lpModuleName); typedef uintptr_t (__thiscall* GetClientEntity_4242425_t)(void*, int); struct Animstate_t { char pad[3]; char m_bForceWeaponUpdate; char pad1[91]; void* m_pBaseEntity; void* m_pActiveWeapon; void* m_pLastActiveWeapon; float m_flLastClientSideAnimationUpdateTime; int m_iLastClientSideAnimationUpdateFramecount; float m_flAnimUpdateDelta; float m_flEyeYaw; float m_flPitch; float m_flGoalFeetYaw; float m_flCurrentFeetYaw; float m_flCurrentTorsoYaw; float m_flUnknownVelocityLean; float m_flLeanAmount; char pad2[4]; float m_flFeetCycle; float m_flFeetYawRate; char pad3[4]; float m_fDuckAmount; float m_fLandingDuckAdditiveSomething; char pad4[4]; float m_vOriginX; float m_vOriginY; float m_vOriginZ; float m_vLastOriginX; float m_vLastOriginY; float m_vLastOriginZ; float m_vVelocityX; float m_vVelocityY; char pad5[4]; float m_flUnknownFloat1; char pad6[8]; float m_flUnknownFloat2; float m_flUnknownFloat3; float m_flUnknown; float m_flSpeed2D; float m_flUpVelocity; float m_flSpeedNormalized; float m_flFeetSpeedForwardsOrSideWays; float m_flFeetSpeedUnknownForwardOrSideways; float m_flTimeSinceStartedMoving; float m_flTimeSinceStoppedMoving; bool m_bOnGround; bool m_bInHitGroundAnimation; float m_flTimeSinceInAir; float m_flLastOriginZ; float m_flHeadHeightOrOffsetFromHittingGroundAnimation; float m_flStopToFullRunningFraction; char pad7[4]; float m_flMagicFraction; char pad8[60]; float m_flWorldForce; char pad9[462]; float m_flMaxYaw; }; int VirtualProtect(void* lpAddress, unsigned long dwSize, unsigned long flNewProtect, unsigned long* lpflOldProtect); void* VirtualAlloc(void* lpAddress, unsigned long dwSize, unsigned long flAllocationType, unsigned long flProtect); int VirtualFree(void* lpAddress, unsigned long dwSize, unsigned long dwFreeType); typedef uintptr_t (__thiscall* GetClientEntity_4242425_t)(void*, int); typedef struct { float x; float y; float z; } Vector_t; typedef struct { char pad0[0x60]; // 0x00 void* pEntity; // 0x60 void* pActiveWeapon; // 0x64 void* pLastActiveWeapon; // 0x68 float flLastUpdateTime; // 0x6C int iLastUpdateFrame; // 0x70 float flLastUpdateIncrement; // 0x74 float flEyeYaw; // 0x78 float flEyePitch; // 0x7C float flGoalFeetYaw; // 0x80 float flLastFeetYaw; // 0x84 float flMoveYaw; // 0x88 float flLastMoveYaw; // 0x8C // changes when moving/jumping/hitting ground float flLeanAmount; // 0x90 char pad1[0x4]; // 0x94 float flFeetCycle; // 0x98 0 to 1 float flMoveWeight; // 0x9C 0 to 1 float flMoveWeightSmoothed; // 0xA0 float flDuckAmount; // 0xA4 float flHitGroundCycle; // 0xA8 float flRecrouchWeight; // 0xAC Vector_t vecOrigin; // 0xB0 Vector_t vecLastOrigin;// 0xBC Vector_t vecVelocity; // 0xC8 Vector_t vecVelocityNormalized; // 0xD4 Vector_t vecVelocityNormalizedNonZero; // 0xE0 float flVelocityLenght2D; // 0xEC float flJumpFallVelocity; // 0xF0 float flSpeedNormalized; // 0xF4 // clamped velocity from 0 to 1 float flRunningSpeed; // 0xF8 float flDuckingSpeed; // 0xFC float flDurationMoving; // 0x100 float flDurationStill; // 0x104 bool bOnGround; // 0x108 bool bHitGroundAnimation; // 0x109 char pad2[0x2]; // 0x10A float flNextLowerBodyYawUpdateTime; // 0x10C float flDurationInAir; // 0x110 float flLeftGroundHeight; // 0x114 float flHitGroundWeight; // 0x118 // from 0 to 1, is 1 when standing float flWalkToRunTransition; // 0x11C // from 0 to 1, doesnt change when walking or crouching, only running char pad3[0x4]; // 0x120 float flAffectedFraction; // 0x124 // affected while jumping and running, or when just jumping, 0 to 1 char pad4[0x208]; // 0x128 float flMinBodyYaw; // 0x330 float flMaxBodyYaw; // 0x334 float flMinPitch; //0x338 float flMaxPitch; // 0x33C int iAnimsetVersion; // 0x340 } CCSGOPlayerAnimationState_534535_t; typedef struct { char pad_0000[20]; int m_nOrder; //0x0014 int m_nSequence; //0x0018 float m_flPrevCycle; //0x001C float m_flWeight; //0x0020 float m_flWeightDeltaRate; //0x0024 float m_flPlaybackRate; //0x0028 float m_flCycle; //0x002C void *m_pOwner; //0x0030 char pad_0038[4]; //0x0034 } CAnimationLayer_t; ]] local color_print_fn = ffi.cast( "console_color_print", ffi.C.GetProcAddress(ffi.C.GetModuleHandleA("tier0.dll"), "?ConColorMsg@@YAXABVColor@@PBDZZ") ) local colored_print = function(color, text) local col = ffi.new("color_struct_t") for i, v in pairs({"r", "g", "b", "a"}) do col[v] = color[v] * 255 end color_print_fn(col, text) end local vtable = { entry = function(instance, index, type) return ffi.cast(type, (ffi.cast("void***", instance)[0])[index]) end, thunk = function(self, index, typestring) local t = ffi.typeof(typestring) return function(instance, ...) assert(instance ~= nil) if instance then return self.entry(instance, index, t)(instance, ...) end end end, bind = function(self, module, interface, index, typestring) local instance = Utils.CreateInterface(module, interface) local fnptr = self.entry(instance, index, ffi.typeof(typestring)) return function(...) return fnptr(instance, ...) end end } local native_GetClipboardTextCount = vtable:bind("vgui2.dll", "VGUI_System010", 7, "int(__thiscall*)(void*)") local native_SetClipboardText = vtable:bind("vgui2.dll", "VGUI_System010", 9, "void(__thiscall*)(void*, const char*, int)") local native_GetClipboardText = vtable:bind("vgui2.dll", "VGUI_System010", 11, "int(__thiscall*)(void*, int, const char*, int)") local new_char_arr = ffi.typeof("char[?]") local function set_clipboard_text(text) native_SetClipboardText(text, text:len()) end local function get_clipboard_text() local len = native_GetClipboardTextCount() if len > 0 then local char_arr = new_char_arr(len) native_GetClipboardText(0, char_arr, len) return ffi.string(char_arr, len-1) end end local entity_list_pointer = ffi.cast("void***", Utils.CreateInterface("client.dll", "VClientEntityList003")) local get_client_entity_fn = ffi.cast("GetClientEntity_4242425_t", entity_list_pointer[0][3]) local get_entity_address = function(ent_index) local addr = get_client_entity_fn(entity_list_pointer, ent_index) return addr end local get_max_feet_yaw = function(player) local animstate = ffi.cast("struct Animstate_t**", get_entity_address(player:EntIndex()) + 0x9960)[0] if animstate ~= nil then local duck_amount = animstate.m_fDuckAmount local forward_or_sideways_speed = math.max(0, math.min(1, animstate.m_flFeetSpeedForwardsOrSideWays)) local unknown_forward_or_sideways_speed = math.max(1, animstate.m_flFeetSpeedUnknownForwardOrSideways) local result_value = (animstate.m_flStopToFullRunningFraction * -0.30000001 - 0.19999999) * forward_or_sideways_speed + 1 if duck_amount > 0 then result_value = result_value + duck_amount * unknown_forward_or_sideways_speed * (0.5 - result_value) end local return_delta_yaw = math.abs(animstate.m_flMaxYaw * result_value) return return_delta_yaw end end local hook_helpers = { copy = function(dst, src, len) return ffi.copy(ffi.cast('void*', dst), ffi.cast('const void*', src), len) end, virtual_protect = function(lpAddress, dwSize, flNewProtect, lpflOldProtect) return ffi.C.VirtualProtect(ffi.cast('void*', lpAddress), dwSize, flNewProtect, lpflOldProtect) end, virtual_alloc = function(lpAddress, dwSize, flAllocationType, flProtect, blFree) local alloc = ffi.C.VirtualAlloc(lpAddress, dwSize, flAllocationType, flProtect) if blFree then table.insert(buff.free, function() ffi.C.VirtualFree(alloc, 0, 0x8000) end) end return ffi.cast('intptr_t', alloc) end } local buff = {free = {}} local vmt_hook = {hooks = {}} function vmt_hook.new(vt) local new_hook = {} local org_func = {} local old_prot = ffi.new('unsigned long[1]') local virtual_table = ffi.cast('intptr_t**', vt)[0] new_hook.this = virtual_table new_hook.hookMethod = function(cast, func, method) org_func[method] = virtual_table[method] hook_helpers.virtual_protect(virtual_table + method, 4, 0x4, old_prot) virtual_table[method] = ffi.cast('intptr_t', ffi.cast(cast, func)) hook_helpers.virtual_protect(virtual_table + method, 4, old_prot[0], old_prot) return ffi.cast(cast, org_func[method]) end new_hook.unHookMethod = function(method) hook_helpers.virtual_protect(virtual_table + method, 4, 0x4, old_prot) local alloc_addr = hook_helpers.virtual_alloc(nil, 5, 0x1000, 0x40, false) local trampoline_bytes = ffi.new('uint8_t[?]', 5, 0x90) trampoline_bytes[0] = 0xE9 ffi.cast('int32_t*', trampoline_bytes + 1)[0] = org_func[method] - tonumber(alloc_addr) - 5 hook_helpers.copy(alloc_addr, trampoline_bytes, 5) virtual_table[method] = ffi.cast('intptr_t', alloc_addr) hook_helpers.virtual_protect(virtual_table + method, 4, old_prot[0], old_prot) org_func[method] = nil end new_hook.unHookAll = function() for method, func in pairs(org_func) do new_hook.unHookMethod(method) end end table.insert(vmt_hook.hooks, new_hook.unHookAll) return new_hook end -- @endregion -- @region: menu events local menu_database = { handler = { elements = {}, references = {} }, update_menu = function(self) for _, data in pairs(self.handler.references) do if data.condition ~= nil then data.reference:SetVisible(data.condition()) end end end, add_element = function(self, element_name, reference, condition) if type(element_name) ~= "string" or type(reference) ~= "userdata" then print(('[Half-life debugger] Wrong element userdata - ["%s"].'):format(element_name)) self.check_error() end if condition ~= nil and type(condition) ~= "function" then print(('[Half-life debugger] Wrong element condition - ["%s"].'):format(element_name)) self.check_error() end if self.handler.references[element_name] ~= nil then print(('[Half-life debugger] Element already exists - ["%s"].'):format(element_name)) self.check_error() end self.handler.references[element_name] = { reference = reference, name = unique_name, condition = condition } local execute_callbacks = function(new_value) self.handler.elements[element_name] = new_value self:update_menu() end execute_callbacks(reference:Get()) reference:RegisterCallback(execute_callbacks) end, set_value = function(self, element_name, value) local execute_callbacks = function() self.handler.elements[element_name] = value self:update_menu() end self.handler.references[element_name].reference:Set(value) execute_callbacks() end, phases_vars = { phases = {}, count = 0 }, all_elements = function(self) -- @note: strextter: ragebot tab -- @note: strexxter: dormant aimbot elements self:add_element("Enable dormant aimbot", Menu.Switch("-> Ragebot", "Dormant aimbotting", "Enable dormant aimbot", false)) local dormant_aimbot_elements = { names = {"Minimum damage"}, set_functions = {Menu.SliderInt}, values = {{5, 0, 105}} } for i = 1, #dormant_aimbot_elements.values do local callback_list = {"Minimum damage"} local callbacks = ("Dormant aimbot %s"):format(callback_list:lower()) local names = dormant_aimbot_elements.names local functions = dormant_aimbot_elements.set_functions local values = dormant_aimbot_elements.values self:add_element(callbacks, functions("-> Ragebot", "Dormant aimbotting", names, unpack(values)), function() return self.handler.elements["Enable dormant aimbot"] end) end self:add_element("Enable custom DT speed", Menu.Switch("-> Ragebot", "Doubletap speed", "Enable custom DT speed", false)) self:add_element("Custom DT speed", Menu.SliderInt("-> Ragebot", "Doubletap speed", "Custom DT speed", 16, 13, 16), function() return self.handler.elements["Enable custom DT speed"] end) -- @note: strexxter: anti-aimbotting tab -- @note: strextter: default anti-aimbotting elements self:add_element("Enable anti-aimbotting", Menu.Switch( "-> Anti-aimbotting", "Anti-aimbotting elements", "Enable anti-aimbotting elements", false) ) self:add_element("Anti-aimbotting presets", Menu.Combo( "-> Anti-aimbotting", "Anti-aimbotting elements", "Select preset:", { "Default", "Safe head", "Tank AA", "Experimental", "Customizable" }, 0 ), function() return self.handler.elements["Enable anti-aimbotting"] end) -- @note: strexxter: proccess of making custom aa elements local conditions = { "Hidden", "Standing", "Moving", "Ducking", "Fakeduck", "Slow Walk", "In air" } self:add_element("Conditions", Menu.Combo("-> Anti-aimbotting", "Anti-aimbotting elements", "Conditions", conditions, 0), function() return self.handler.elements["Enable anti-aimbotting"] and self.handler.elements["Anti-aimbotting presets"] == 4 end) for i = 1, #conditions do local condition_name = conditions[i + 1] local modes = { "Yaw Add Left", "Yaw Add Right", "Yaw Modifier", "Modifier Degree", "Fake Limit Type", "Left Limit", "Right Limit", "Fake Options", "LBY Mode", "Fake Desync", "Desync On Shot", "Inverter" } for k = 1, #modes do local mode_name = modes[k] local functions = { Menu.SliderInt, Menu.SliderInt, Menu.Combo, Menu.SliderInt, Menu.Combo, Menu.SliderInt, Menu.SliderInt, Menu.MultiCombo, Menu.Combo, Menu.Combo, Menu.Combo, Menu.Switch } local sub_functions = { {0, -180, 180}, {0, -180, 180}, {{"Disabled", "Center", "Offset", "Random", "Spin"}, 0}, {0, -180, 180}, {{"Static", "Jitter"}, 0}, {60, 0, 60}, {60, 0, 60}, {{"Avoid Overlap", "Jitter", "Randomize Jitter", "Anti Bruteforce"}, 0}, {{"Disabled", "Opposite", "Sway"}, 0}, {{"Off", "Peek Fake", "Peek Real"}, 0}, {{"Disabled", "Opposite", "Freestanding", "Switch"}, 0}, {false} } local total = { callbacks = ("%s %s"):format(condition_name, mode_name), names = ("[%s] %s\n"):format(i, mode_name) } self:add_element(total.callbacks, functions[k]( "-> Anti-aimbotting", "Anti-aimbotting elements", total.names, unpack(sub_functions[k]) ), function() return self.handler.elements["Enable anti-aimbotting"] and self.handler.elements["Anti-aimbotting presets"] == 4 and self.handler.elements["Conditions"] == i end) end end self:add_element("Update presets", Menu.Button( "-> Anti-aimbotting", "Anti-aimbotting elements", "Update alternative settings", "Load alternative settings!" ), function() return self.handler.elements["Enable anti-aimbotting"] and not (self.handler.elements["Anti-aimbotting presets"] == 4) end) local apply_presets = function() local current_preset = self.handler.elements["Anti-aimbotting presets"] local update_anti_bruteforce_phases = function() local remove_phases = function() local length = #self.phases_vars.phases if length == 0 then return end for i = 1, length do local remove_name = ("Phase #%s"):format(i) local directory = self.handler.references[remove_name].reference Menu.DestroyItem(directory) self.phases_vars.count = 0 local remove_key = function(table, key) local element = table[key] table[key] = nil return element end table.remove(self.phases_vars.phases) remove_key(self.handler.elements, remove_name) remove_key(self.handler.references, remove_name) end end local add_phases = function() local current_indexes = current_preset == 1 and 2 or 3 for i = 1, current_indexes do self.phases_vars.count = self.phases_vars.count + 1 table.insert(self.phases_vars.phases, self.phases_vars.count) local callbacks = ("Phase #%s"):format(self.phases_vars.count) local name = ("Phase #%s"):format(self.phases_vars.count) self:add_element(callbacks, Menu.SliderInt( "-> Anti-aimbotting", "Anti-bruteforce manager", name, 60, -60, 60 ), function() return self.handler.elements["Enable anti-aimbotting helpers"] and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 0)) ~= 0 end) self:set_value("Phase slider", self.phases_vars.count) end if current_preset == 0 then -- default self:set_value("Phase #1", -60) self:set_value("Phase #2", 60) self:set_value("Phase #3", -47) elseif current_preset == 1 then -- safe head self:set_value("Phase #1", -60) self:set_value("Phase #2", 60) elseif current_preset == 3 then -- experimental self:set_value("Phase #1", 60) self:set_value("Phase #2", -47) self:set_value("Phase #3", 60) end end remove_phases() add_phases() end local update_helpers = function(value) self:set_value("Enable anti-aimbotting helpers", true) self:set_value("Anti-aimbotting helpers", value) end if current_preset == 0 then -- default update_anti_bruteforce_phases() update_helpers(261) elseif current_preset == 1 then -- safe head update_anti_bruteforce_phases() update_helpers(277) elseif current_preset == 2 then -- tank aa update_helpers(260) elseif current_preset == 3 then -- experimental update_anti_bruteforce_phases() update_helpers(261) end end --@note: strexxter: anti-aimbotting helpers self:add_element("Enable anti-aimbotting helpers", Menu.Switch( "-> Anti-aimbotting", "Additional settings", "Enable additional settings", false) ) self:add_element("Anti-aimbotting helpers", Menu.MultiCombo( "-> Anti-aimbotting", "Additional settings", "Select helpers:", { "Anti-bruteforce", "Break lagcomp in air", "Anti-backstabbing", "Bombsite E-Fix", "Smart yaw ras-position", "Dynamic fake yaw", "Avoid onshoting", "Legit AA on E", "Disable fakelag on HS" }, 0 ), function() return self.handler.elements["Enable anti-aimbotting helpers"] end) self.handler.references["Update presets"].reference:RegisterCallback(apply_presets) self:add_element("Breaking lagcomp weapons", Menu.MultiCombo( "-> Anti-aimbotting", "Additional settings", "Teleport weapons", { "Default", "Pistols", "Heavy pistols", "Scout", "AWP", "Autosnipers", "Nades" }, 0 ), function() return self.handler.elements["Enable anti-aimbotting helpers"] and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 1)) ~= 0 end) self:add_element("Anti-aimbotting helpers text", Menu.Text( "-> Anti-aimbotting", "Additional settings", "Dont use it with custom anti-aim preset!" ), function() return self.handler.elements["Enable anti-aimbotting helpers"] and self.handler.elements["Anti-aimbotting presets"] == 4 and ( bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 4)) ~= 0 or bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 5)) ~= 0 or bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 6)) ~= 0 ) end) self:add_element("Copy config", Menu.Button( "-> Anti-aimbotting", "Config system", "Copy your config to clipboard.", "Copy your config to clipboard.") ) self:add_element("Import config", Menu.Button( "-> Anti-aimbotting", "Config system", "Import config from clipboard.", "Import your config from clipboard.") ) -- @note: strexxter: anti-bruteforce phases self:add_element("Anti-bruteforce add button", Menu.Button( "-> Anti-aimbotting", "Anti-bruteforce manager", "Add new phase", "Add new phase for anti-bruteforce!" ), function() return self.handler.elements["Enable anti-aimbotting helpers"] and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 0)) ~= 0 end) self:add_element("Anti-bruteforce remove button", Menu.Button( "-> Anti-aimbotting", "Anti-bruteforce manager", "Remove phase", "Remove phase for anti-bruteforce!" ), function() return self.handler.elements["Enable anti-aimbotting helpers"] and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 0)) ~= 0 end) self:add_element("Phase slider", Menu.SliderInt( "-> Anti-aimbotting", "Additional settings", "Phase slider", self.phases_vars.count, 0, 15) ) local add_new_phase = function() if #self.phases_vars.phases > 9 then table.insert(sauron_text, { text = "You cant make more phases than 10.", timer = GlobalVars.realtime, smooth_y = screen_size.y + 100, alpha = 0, first_circle = 0, second_circle = 0, box_left = screen_size.x / 2, box_right = screen_size.x / 2, box_left_1 = screen_size.x / 2, box_right_1 = screen_size.x / 2 }) print("[Half-life debugger] You cant make more than 10 phases.") return end self.phases_vars.count = self.phases_vars.count + 1 table.insert(self.phases_vars.phases, self.phases_vars.count) local callbacks = ("Phase #%s"):format(self.phases_vars.count) local name = ("Phase #%s"):format(self.phases_vars.count) self:add_element(callbacks, Menu.SliderInt( "-> Anti-aimbotting", "Anti-bruteforce manager", name, 60, -60, 60 ), function() return self.handler.elements["Enable anti-aimbotting helpers"] and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 0)) ~= 0 end) self:set_value("Phase slider", self.phases_vars.count) end local remove_phase = function() local length = #self.phases_vars.phases if length == 0 then return end local remove_name = ("Phase #%s"):format(length) local directory = self.handler.references[remove_name].reference Menu.DestroyItem(directory) self.phases_vars.count = self.phases_vars.count - 1 local remove_key = function(table, key) local element = table[key] table[key] = nil return element end table.remove(self.phases_vars.phases, length) remove_key(self.handler.elements, remove_name) remove_key(self.handler.references, remove_name) end self.handler.references["Anti-bruteforce add button"].reference:RegisterCallback(add_new_phase) self.handler.references["Anti-bruteforce remove button"].reference:RegisterCallback(remove_phase) local value_of_phases = self.handler.elements["Phase slider"] if value_of_phases ~= 0 then for i = 1, value_of_phases do self:add_element(("Phase #%s"):format(i), Menu.SliderInt( "-> Anti-aimbotting", "Anti-bruteforce manager", ("Phase #%s"):format(i), 0, -60, 60 ), function() return self.handler.elements["Enable anti-aimbotting helpers"] and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 0)) ~= 0 end) self.phases_vars.count = value_of_phases table.insert(self.phases_vars.phases, self.phases_vars.count) end end self.handler.references["Phase slider"].reference:SetVisible(false) self:add_element("Enable roll angles", Menu.Switch("-> Anti-aimbotting", "Roll angles", "Enable roll angles", false)) self:add_element("Only manual roll angles", Menu.Switch("-> Anti-aimbotting", "Roll angles", "Only on manual trigger", false), function() return self.handler.elements["Enable roll angles"] end) self:add_element("Manual roll angles", Menu.Combo( "-> Anti-aimbotting", "Roll angles", "Select yaw base", {"Disabled", "Left", "Right"}, 0, "Select yaw base or bind them!" ), function() return self.handler.elements["Enable roll angles"] and self.handler.elements["Only manual roll angles"] end) -- @note: strexxter: visuals tab -- @note: strexxter: all indicator elements self:add_element("Enable indicator list", Menu.Switch("-> Visuals", "All indicators", "Enable indicators", false)) self:add_element("Indicator list", Menu.MultiCombo("-> Visuals", "All indicators", "Select indicators:", { "Under crosshair", "Half-life watermark", "Damage indicator", "Skeet autopeek", "Side skeet indicators", "Disable animation on 3rd person", "Crosshair hitmarker", "Notifications", "Skeet damage markers" }, 0), function() return self.handler.elements["Enable indicator list"] end) self:add_element("Under crosshair style", Menu.Combo("-> Visuals", "All indicators", "Under crosshair style", { "Default", "Modern", "Legacy" }, 0), function() return self.handler.elements["Enable indicator list"] and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 0)) ~= 0 end) self:add_element("Minimum damage position", Menu.Combo("-> Visuals", "All indicators", "Damage position", { "Bottom Left", "Bottom Right", "Top Right", "Top Left", "Middle", "Far Left", "Far Right", "Far Up" }, 0), function() return self.handler.elements["Enable indicator list"] and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 2)) ~= 0 end) self:add_element("Skeet autopeek color", Menu.ColorEdit( "-> Visuals", "All indicators", "Skeet autopeek color", Color.RGBA(255, 255, 255, 255) ), function() return self.handler.elements["Enable indicator list"] and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 3)) ~= 0 end) self:add_element("Skeet autopeek type", Menu.Combo( "-> Visuals", "All indicators", "Skeet autopeek type", {"Default", "Quick peek"}, 0 ), function() return self.handler.elements["Enable indicator list"] and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 3)) ~= 0 end) self:add_element("Skeet indicator elements", Menu.MultiCombo("-> Visuals", "All indicators", "Indicator elements", { "AA With Circle", "Shot/Miss Percent", "FL Text indicator", "Body Aim", "Exploit", "Damage", "Dormant Aimbot", "Fake Ping", "Lag Compensation", "Fake Duck", "Bomb Info", "Double Tap" }, 0), function() return self.handler.elements["Enable indicator list"] and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 4)) ~= 0 end) self:add_element("Hit/miss type", Menu.Combo("-> Visuals", "All indicators", "Hit/miss type", {"Style 1", "Style 2"}, 0), function() return self.handler.elements["Enable indicator list"] and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 4)) ~= 0 and bit.band(self.handler.elements["Skeet indicator elements"], bit.lshift(1, 1)) ~= 0 end) self:add_element("Damage type", Menu.Combo("-> Visuals", "All indicators", "Damage type", {"Damage: ", "DMG", "Damage value"}, 0), function() return self.handler.elements["Enable indicator list"] and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 4)) ~= 0 and bit.band(self.handler.elements["Skeet indicator elements"], bit.lshift(1, 5)) ~= 0 end) self:add_element("Crosshair hitmarker color", Menu.ColorEdit( "-> Visuals", "All indicators", "Crosshair hitmarker color", Color.RGBA(255, 255, 255, 255) ), function() return self.handler.elements["Enable indicator list"] and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 6)) ~= 0 end) self:add_element("Hitmarker mode", Menu.Combo("-> Visuals", "All indicators", "Hitmarker mode", {"+", "x"}, 0), function() return self.handler.elements["Enable indicator list"] and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 8)) ~= 0 end) self:add_element("Hitmarker color", Menu.ColorEdit("-> Visuals", "All indicators", "Hitmarker color", Color.RGBA( 255, 255, 255, 255 )), function() return self.handler.elements["Enable indicator list"] and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 8)) ~= 0 end) self:add_element("Hitmarker size", Menu.SliderInt("-> Visuals", "All indicators", "Hitmarker size", 1, 4, 10), function() return self.handler.elements["Enable indicator list"] and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 8)) ~= 0 end) -- @note: strexxter: keybinds & watermark stuff self:add_element("Enable keybinds", Menu.Switch("-> Visuals", "Solus UI Elements", "Enable keybinds", false)) self:add_element("Keybinds color", Menu.ColorEdit( "-> Visuals", "Solus UI Elements", "Keybinds color", Color.RGBA(255, 255, 255, 255) ), function() return self.handler.elements["Enable keybinds"] end) self:add_element("Keybinds x-adding", Menu.SliderInt( "-> Visuals", "Solus UI Elements", "Keybinds x-adding", 325, 0, EngineClient.GetScreenSize().x) ) self:add_element("Keybinds y-adding", Menu.SliderInt( "-> Visuals", "Solus UI Elements", "Keybinds y-adding", 325, 0, EngineClient.GetScreenSize().y) ) self:add_element("Enable watermark", Menu.Switch("-> Visuals", "Solus UI Elements", "Enable watermark", false)) self:add_element("Watermark color", Menu.ColorEdit( "-> Visuals", "Solus UI Elements", "Watermark color", Color.RGBA(255, 255, 255, 255) ), function() return self.handler.elements["Enable watermark"] end) self:add_element("Watermark x-adding", Menu.SliderInt( "-> Visuals", "Solus UI Elements", "Watermark x-adding", 1060, 0, EngineClient.GetScreenSize().x) ) self:add_element("Watermark y-adding", Menu.SliderInt( "-> Visuals", "Solus UI Elements", "Watermark y-adding", 30, 0, EngineClient.GetScreenSize().y) ) self.handler.references["Keybinds x-adding"].reference:SetVisible(false) self.handler.references["Keybinds y-adding"].reference:SetVisible(false) self.handler.references["Watermark x-adding"].reference:SetVisible(false) self.handler.references["Watermark y-adding"].reference:SetVisible(false) self:add_element("Enable peek arrows", Menu.SwitchColor("-> Visuals", "Arrows Elements", "Enable peek arrows", false, Color.RGBA(255, 255, 255, 255))) self:add_element("Enable weapons in scope", Menu.Switch("-> Visuals", "Other Indicators", "Enable weapons in scope", false)) self:add_element("Enable custom scope", Menu.SwitchColor("-> Visuals", "Other Indicators", "Enable custom scope", false, Color.RGBA(255, 255, 255, 255))) local custom_scope_elements = {"Initial position", "Offset"} for index = 1, #custom_scope_elements do local current_element = custom_scope_elements[index] local functions = {Menu.SliderInt, Menu.SliderInt} local sub_functions = { {200, 0, 400}, {15, 0, 1000} } local callbacks = ("Custom scope %s"):format(current_element:lower()) self:add_element(callbacks, functions[index]("-> Visuals", "Other Indicators", current_element, unpack(sub_functions[index])), function() return self.handler.elements["Enable custom scope"] end) end -- @note: strexxter: miscellaneous tab -- @note: strexxter: default miscellaneous elements self:add_element("Enable hitlogs", Menu.Switch("-> Miscellaneous", "Hitlogging information", "Enable hitlogs", false)) self:add_element("Enable trashtalk", Menu.Switch("-> Miscellaneous", "Other functions", "Enable trashtalk", false)) self:add_element("Enable hitsounds", Menu.Switch("-> Miscellaneous", "Other functions", "Enable hitsounds", false)) self:add_element("Hitsound", Menu.TextBox("-> Miscellaneous", "Other functions", "Select your hitsound:", 64, "format.wav"), function() return self.handler.elements["Enable hitsounds"] end) self:add_element("Hitsound text", Menu.Text("-> Miscellaneous", "Other functions", "Directory: csgo/sound/your_file.wav"), function() return self.handler.elements["Enable hitsounds"] end) self:add_element("Enable anim breakers", Menu.Switch("-> Miscellaneous", "Animation breaker", "Enable animation breakers", false)) self:add_element("Anim breakers", Menu.MultiCombo("-> Miscellaneous", "Animation breaker", "Animation breakers", { "Static legs in air", "Break leg animation", "Pitch 0 on land" }, 0), function() return self.handler.elements["Enable anim breakers"] end) self:add_element("Static legs timer", Menu.SliderFloat("-> Miscellaneous", "Animation breaker", "Static legs timer", 0.5, 0, 1), function() return self.handler.elements["Enable anim breakers"] and bit.band(self.handler.elements["Anim breakers"], bit.lshift(1, 0)) ~= 0 end) self:add_element("Leg fucker type", Menu.Combo("-> Miscellaneous", "Animation breaker", "Leg breaker modes", {"Static", "Jitter"}, 0), function() return self.handler.elements["Enable anim breakers"] and bit.band(self.handler.elements["Anim breakers"], bit.lshift(1, 1)) ~= 0 end) local coded_value = {} local extract = function(v, from, width) return bit.band(bit.rshift(v, from), bit.lshift(1, width) - 1) end local function make_encoder(alphabet) local encoder = {} local decoder = {} for i = 1, 65 do local chr = string.byte(string.sub(alphabet, i, i)) or 32 if decoder[chr] ~= nil then print("[Half-life debugger] Invalid alphabet: duplicate character " .. tostring(chr), 3) end encoder[i - 1] = chr decoder[chr] = i - 1 end return encoder, decoder end local encoders, decoders = {}, {} local base64url = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" encoders["base64url"], decoders["base64url"] = make_encoder(base64url) local alphabet_mt = { __index = function(tbl, key) if type(key) == "string" and key:len() == 64 or key:len() == 65 then encoders[key], decoders[key] = make_encoder(key) return tbl[key] end end } setmetatable(encoders, alphabet_mt) setmetatable(decoders, alphabet_mt) function coded_value.encode(str, encoder) encoder = encoders[encoder or "base64"] or print( "[Half-life debugger] Invalid alphabet specified: 2" ) str = tostring(str) local t, k, n = {}, 1, #str local lastn = n % 3 local cache = {} for i = 1, n - lastn, 3 do local a, b, c = string.byte(str, i, i + 2) local v = a * 0x10000 + b * 0x100 + c local s = cache[v] if not s then s = string.char( encoder[extract(v, 18, 6)], encoder[extract(v, 12, 6)], encoder[extract(v, 6, 6)], encoder[extract(v, 0, 6)] ) cache[v] = s end t[k] = s k = k + 1 end if lastn == 2 then local a, b = string.byte(str, n - 1, n) local v = a * 0x10000 + b * 0x100 t[k] = string.char( encoder[extract(v, 18, 6)], encoder[extract(v, 12, 6)], encoder[extract(v, 6, 6)], encoder[64] ) elseif lastn == 1 then local v = string.byte(str, n) * 0x10000 t[k] = string.char( encoder[extract(v, 18, 6)], encoder[extract(v, 12, 6)], encoder[64], encoder[64] ) end return table.concat(t) end function coded_value.decode(b64, decoder) decoder = decoders[decoder or "base64"] or print( "[Half-life debugger] Invalid alphabet specified: 2" ) local pattern = "[^%w%+%/%=]" if decoder then local s62, s63 for charcode, b64code in pairs(decoder) do if b64code == 62 then s62 = charcode elseif b64code == 63 then s63 = charcode end end pattern = string.format("[^%%w%%%s%%%s%%=]", string.char(s62), string.char(s63)) end b64 = string.gsub(tostring(b64), pattern, "") local cache = {} local t, k = {}, 1 local n = #b64 local padding = string.sub(b64, -2) == "==" and 2 or string.sub(b64, -1) == "=" and 1 or 0 for i = 1, padding > 0 and n - 4 or n, 4 do local a, b, c, d = string.byte(b64, i, i + 3) if not d then d = string.byte(b64, i, i + 3) end if not c then c = string.byte(b64, i, i + 3) end if not b then c = string.byte(b64, i, i + 3) end if not a then c = string.byte(b64, i, i + 3) end if not a or not b or not c or not d then print("[Half-life debugger] Wrong clipboard data!") return end local v0 = a * 0x1000000 + b * 0x10000 + c * 0x100 + d local s = cache[v0] if not s then if not decoder[a] or not decoder or not decoder[c] or not decoder[d] then print("[Half-life debugger] Wrong clipboard data!") return end local v = decoder[a] * 0x40000 + decoder * 0x1000 + decoder[c] * 0x40 + decoder[d] s = string.char( extract(v, 16, 8), extract(v, 8, 8), extract(v, 0, 8) ) cache[v0] = s end t[k] = s k = k + 1 end if padding == 1 then local a, b, c = string.byte(b64, n - 3, n - 1) local v = decoder[a] * 0x40000 + decoder * 0x1000 + decoder[c] * 0x40 t[k] = string.char( extract(v, 16, 8), extract(v, 8, 8) ) elseif padding == 2 then local a, b = string.byte(b64, n - 3, n - 2) local v = decoder[a] * 0x40000 + decoder * 0x1000 t[k] = string.char( extract(v, 16, 8) ) end return table.concat(t) end local copy_proccess = function() set_clipboard_text("") local to_copy = { "Enable dormant aimbot", "Dormant aimbot minimum damage", "Enable anti-aimbotting", "Anti-aimbotting presets", "Enable anti-aimbotting helpers", "Anti-aimbotting helpers", "Enable hitlogs", "Enable trashtalk" } local custom_conditions = {"Standing", "Moving", "Ducking", "Fakeduck", "Slow Walk", "In air"} local modes = { "Yaw Add Left", "Yaw Add Right", "Yaw Modifier", "Modifier Degree", "Fake Limit Type", "Left Limit", "Right Limit", "Fake Options", "LBY Mode", "Fake Desync", "Desync On Shot", "Inverter" } for i = 1, #custom_conditions do local condition_name = custom_conditions for k = 1, #modes do local mode_name = modes[k] local end_name = ("%s %s"):format(condition_name, mode_name) table.insert(to_copy, end_name) end end local count = "Phase slider" table.insert(to_copy, count) for i = 1, self.handler.elements[count] do local phases_name = ("Phase #%s"):format(i) table.insert(to_copy, phases_name) end local copied_data = {} for i = 1, #to_copy do local directory = self.handler.elements local name = to_copy local data = ("%s"):format(directory[name]) table.insert(copied_data, data) end local concate_table = table.concat(copied_data, " ") local obfuscated_data = coded_value.encode(concate_table, "base64url") if set_clipboard_text ~= nil then set_clipboard_text(obfuscated_data) end copied_data = {} end local import_proccess = function() local exported_text = get_clipboard_text() if not exported_text then print("[Half-life debug] No text copied to clipboard!") return end local function split_string(s, delimiter) local result = {} for match in (s .. delimiter):gmatch("(.-)" .. delimiter) do table.insert(result, match) end return result end local deobfuscated_data = coded_value.decode(exported_text, "base64url") if deobfuscated_data ~= nil then local split_string = split_string(deobfuscated_data, " ") local exported = {} for i = 1, #split_string do table.insert(exported, split_string) end local to_paste = { "Enable dormant aimbot", "Dormant aimbot minimum damage", "Enable anti-aimbotting", "Anti-aimbotting presets", "Enable anti-aimbotting helpers", "Anti-aimbotting helpers", "Enable hitlogs", "Enable trashtalk" } local custom_conditions = {"Standing", "Moving", "Ducking", "Fakeduck", "Slow Walk", "In air"} local modes = { "Yaw Add Left", "Yaw Add Right", "Yaw Modifier", "Modifier Degree", "Fake Limit Type", "Left Limit", "Right Limit", "Fake Options", "LBY Mode", "Fake Desync", "Desync On Shot", "Inverter" } for i = 1, #custom_conditions do local condition_name = custom_conditions for k = 1, #modes do local mode_name = modes[k] local end_name = ("%s %s"):format(condition_name, mode_name) table.insert(to_paste, end_name) end end local update_anti_bruteforce_phases = function() local remove_phases = function() local length = #self.phases_vars.phases if length == 0 then return end for i = 1, length do local remove_name = ("Phase #%s"):format(i) local directory = self.handler.references[remove_name].reference Menu.DestroyItem(directory) self.phases_vars.count = 0 local remove_key = function(table, key) local element = table[key] table[key] = nil return element end table.remove(self.phases_vars.phases) self:set_value("Phase slider", 0) remove_key(self.handler.elements, remove_name) remove_key(self.handler.references, remove_name) end end local add_phases = function() if tonumber(exported[81]) ~= nil then for i = 1, exported[81] do local data = exported[i + 82] data = tonumber(data) if not data then data = 60 end self.phases_vars.count = self.phases_vars.count + 1 table.insert(self.phases_vars.phases, self.phases_vars.count) local callbacks = ("Phase #%s"):format(self.phases_vars.count) local name = ("Phase #%s"):format(self.phases_vars.count) self:add_element(callbacks, Menu.SliderInt( "-> Anti-aimbotting", "Anti-bruteforce manager", name, data or 60, -60, 60 ), function() return self.handler.elements["Enable anti-aimbotting helpers"] and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 0)) ~= 0 end) self:set_value("Phase slider", self.phases_vars.count) end end end remove_phases() add_phases() end for i = 1, 80 do local names = to_paste local data = exported if data == "true" then data = true elseif data == "false" then data = false else data = tonumber(data) end if data ~= nil then self:set_value(names, data) end end update_anti_bruteforce_phases() exported = {} end end self.handler.references["Copy config"].reference:RegisterCallback(copy_proccess) self.handler.references["Import config"].reference:RegisterCallback(import_proccess) -- @note: strexxter: the end of all menu elements end, register_callbacks = function(self) self:all_elements() end } menu_database:register_callbacks() -- @endregion -- @region: all math & vector & other operations. function C_BaseEntity:GetVelocity() local first_velocity = self:GetProp("m_vecVelocity[0]") local second_velocity = self:GetProp("m_vecVelocity[1]") local speed = math.floor(math.sqrt(first_velocity * first_velocity + second_velocity * second_velocity)) return speed end function C_BaseEntity:GetState() local flags = self:GetProp("m_fFlags") local velocity = self:GetVelocity() if bit.band(flags, 1) == 1 then if Menu.FindVar("Aimbot", "Anti Aim", "Misc", "Fake Duck"):GetBool() then return "FAKEDUCKING" else if bit.band(flags, 4) == 4 then if self:GetProp("m_iTeamNum") == 2 then return "CROUCHING T" elseif self:GetProp("m_iTeamNum") == 3 then return "CROUCHING CT" end else if Menu.FindVar("Aimbot", "Anti Aim", "Misc", "Slow Walk"):GetBool() then return "SLOWWALKING" else if velocity <= 3 then return "STANDING" else return "MOVING" end end end end elseif bit.band(flags, 1) == 0 then return "IN AIR" end end local all_utils = { normalize_yaw = function(yaw) while yaw > 180 do yaw = yaw - 360 end while yaw < -180 do yaw = yaw + 360 end return yaw end, update_enemies = function(self) local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then local players = EntityList.GetEntitiesByName("CCSPlayer") local fov_enemy, maximum_fov = nil, 180 for i = 1, #players do local enemy = players:GetPlayer() if enemy ~= my_index and not enemy:IsTeamMate() and enemy:IsAlive() then local my_origin = my_index:GetRenderOrigin() local enemy_origin = enemy:GetRenderOrigin() local world_to_screen = ( my_origin.x - enemy_origin.x == 0 and my_origin.y - enemy_origin.z == 0 ) and 0 or math.deg( math.atan2( my_origin.y - enemy_origin.y, my_origin.x - enemy_origin.x ) ) - EngineClient.GetViewAngles().yaw + 180 local calculated_fov = math.abs(self.normalize_yaw(world_to_screen)) if not fov_enemy or calculated_fov <= maximum_fov then fov_enemy = enemy maximum_fov = calculated_fov end end end return ({ enemy = fov_enemy, fov = maximum_fov }) end end, calculate_angles = function(self, local_x, local_y, enemy_x, enemy_y) local delta_y = local_y - enemy_y local delta_x = local_x - enemy_x local relative_yaw = math.atan(delta_y / delta_x) relative_yaw = self.normalize_yaw(relative_yaw * 180 / math.pi) if delta_x >= 0 then relative_yaw = self.normalize_yaw(relative_yaw + 180) end return relative_yaw end, angle_to_vec = function(pitch, yaw) local p = pitch / 180 * math.pi local y = yaw / 180 * math.pi local sin_p = math.sin(p) local cos_p = math.cos(p) local sin_y = math.sin(y) local cos_y = math.cos(y) return { cos_p * cos_y, cos_p * sin_y, -sin_p } end, easings = { lerp = function(start, vend, time) return start + (vend - start) * time end, clamp = function(val, min, max) if val > max then return max end if min > val then return min end return val end }, get_hit_side = function(self) if menu_database.handler.elements["Enable indicator list"] then if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 0)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then local data, current_enemy = self:update_enemies(), nil if data ~= nil then current_enemy = data.enemy end if current_enemy ~= nil and current_enemy:IsAlive() then local predict_damage = function(x, y, z) local a, b, c = {}, {}, {} local enemy_head_position = current_enemy:GetHitboxCenter(1) local ticks = 40 a[1], b[1], c[1] = enemy_head_position.x, enemy_head_position.y, enemy_head_position.z a[2], b[2], c[2] = enemy_head_position.x + ticks, enemy_head_position.y, enemy_head_position.z a[3], b[3], c[3] = enemy_head_position.x - ticks, enemy_head_position.y, enemy_head_position.z a[4], b[4], c[4] = enemy_head_position.x, enemy_head_position.y + ticks, enemy_head_position.z a[5], b[5], c[5] = enemy_head_position.x, enemy_head_position.y - ticks, enemy_head_position.z a[6], b[6], c[6] = enemy_head_position.x, enemy_head_position.y, enemy_head_position.z + ticks a[7], b[7], c[7] = enemy_head_position.x, enemy_head_position.y, enemy_head_position.z - ticks for i = 1, 7, 1 do local damage = 0 local trace_damage = Cheat.FireBullet( current_enemy, Vector.new(a, b, c), Vector.new(x, y, z) ).damage if trace_damage > damage then damage = trace_damage end return damage end end local my_eye_position = my_index:GetEyePosition() local enemy_head_position = current_enemy:GetHitboxCenter(0) local calculated_yaw = self:calculate_angles( my_eye_position.x, my_eye_position.y, enemy_head_position.x, enemy_head_position.y ) local left_direction_x, left_direction_y = self.angle_to_vec( 0, (calculated_yaw + 90) ), self.angle_to_vec(0, (calculated_yaw + 90)) local right_direction_x, right_direction_y = self.angle_to_vec( 0, (calculated_yaw - 90) ), self.angle_to_vec(0, (calculated_yaw - 90)) local rend_x = my_eye_position.x + right_direction_x[1] * 10 local rend_y = my_eye_position.y + right_direction_y[1] * 10 local lend_x = my_eye_position.x + left_direction_x[1] * 10 local lend_y = my_eye_position.y + left_direction_y[1] * 10 local rend_x_2 = my_eye_position.x + right_direction_x[1] * 100 local rend_y_2 = my_eye_position.y + left_direction_y[1] * 100 local lend_x_2 = my_eye_position.x + left_direction_x[1] * 100 local lend_y_2 = my_eye_position.y + left_direction_y[1] * 100 local left_trace = predict_damage(rend_x, rend_y, my_eye_position.z) local right_trace = predict_damage(lend_x, lend_y, my_eye_position.z) local left_trace_2 = predict_damage(rend_x_2, rend_y_2, my_eye_position.z) local right_trace_2 = predict_damage(lend_x_2, lend_y_2, my_eye_position.z) local hit_side = ( (left_trace > 0 or right_trace > 0 or left_trace_2 > 0 or right_trace_2 > 0) and ( left_trace > right_trace and 0.5 or right_trace > left_trace and -0.5 or left_trace_2 > right_trace_2 and 1 or right_trace_2 > left_trace_2 -1 ) or 0.0 ) return hit_side end end end end end } -- @region: all ragebot functions local ragebot_functions = { dormant_aimbot = { run_autostop = function(cmd, goal_speed) local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end local minspeed = math.sqrt((cmd.forwardmove * cmd.forwardmove) + (cmd.sidemove * cmd.sidemove)) if goal_speed <= 0 or minspeed <= 0 then return end local flags = my_index:GetProp("m_fFlags") if bit.band(flags, 4) == 4 then goal_speed = goal_speed * 2.94117647 end if minspeed <= goal_speed then return end local speed_factor = goal_speed / minspeed cmd.forwardmove = cmd.forwardmove * speed_factor cmd.sidemove = cmd.sidemove * speed_factor end, vars = { player_info_prev = {}, round_started = 0, is_dormant_flag = false, minimal_vector = Vector.new(), maximal_vector = Vector.new() }, calculate_angles = function(source, point) local world_to_screen = function(x_position, y_position) if x_position == 0 and y_position == 0 then return 0 end local atan_position = math.atan2(y_position, x_position) local deg_position = math.deg(atan_position) return deg_position end local delta_of_vectors = point - source local hyp = math.sqrt(delta_of_vectors.x * delta_of_vectors.x + delta_of_vectors.y * delta_of_vectors.y) local yaw = world_to_screen(delta_of_vectors.x, delta_of_vectors.y) local pitch = world_to_screen(hyp, -delta_of_vectors.z) return Vector.new(pitch, yaw, 0) end, get_hittable_damage = function(my_index, enemy, start_point, end_point) if my_index ~= nil then if enemy ~= nil then local bullet_data = Cheat.FireBullet(my_index, start_point, end_point) local bullet_damage = bullet_data.damage local minimum_damage = menu_database.handler.elements["Dormant aimbot minimum damage"] local enemy_health = enemy:GetProp("m_iHealth") if bullet_damage < math.min(minimum_damage, enemy_health) then return 0 end if bullet_data.trace.hit_entity ~= nil then if bullet_data.trace.hit_entity:EntIndex() ~= enemy:EntIndex() then return 0 end end if enemy:IsVisible(end_point) then return 0 end return bullet_damage end end end, run_work = function(self, cmd) if menu_database.handler.elements["Enable dormant aimbot"] then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end local my_weapon = my_index:GetActiveWeapon() if not my_weapon then return end local weapon_id = my_weapon:GetWeaponID() if not weapon_id then return end if EngineClient.IsConnected() and my_index:IsAlive() then local get_inaccuracy = my_weapon:GetInaccuracy(my_weapon) local tickcount = GlobalVars.tickcount local player_resource = EntityList.GetPlayerResource() local eye_position = my_index:GetEyePosition() local simulation_time = my_index:GetProp("m_flSimulationTime") local on_ground = bit.band(my_index:GetProp("m_fFlags"), bit.lshift(1, 0)) == 1 and true or false if tickcount < self.vars.round_started then return end local primary_attack = my_weapon:GetProp("m_flNextPrimaryAttack") local next_attack = my_index:GetProp("m_flNextAttack") local secondary_attack = my_weapon:GetProp("m_flNextSecondaryAttack") local can_shoot = false if weapon_id == 64 then -- revolver can_shoot = simulation_time > primary_attack elseif my_weapon:IsKnife() or my_weapon:IsGrenade() or weapon_id == 31 then can_shoot = false else can_shoot = simulation_time > math.max(next_attack, primary_attack, secondary_attack) end local player_info = {} local players = EntityList.GetEntitiesByName("CCSPlayer") for i = 1, #players do local enemy = players:GetPlayer() if enemy ~= my_index and not enemy:IsTeamMate() and enemy:IsAlive() then local network_state = enemy:GetNetworkState() if enemy:IsDormant() and network_state ~= -1 then local can_hit = false local origin = enemy:GetProp("m_vecOrigin") local alpha_multiplier = enemy:GetESPAlpha() if self.vars.player_info_prev ~= nil and origin.x ~= 0 and alpha_multiplier > 0 then local is_dormant_accurate = alpha_multiplier > 0.2 if is_dormant_accurate then local bounds = enemy:GetRenderBounds(self.vars.minimal_vector, self.vars.maximal_vector) local all_vector_points = { origin + Vector.new(0, 0, 38), origin + Vector.new(0, 0, 40), origin + Vector.new(0, 0, 42), origin + Vector.new(0, 0, 50) } local best_damage = 0 local best_point = Vector.new() local my_eye_position = my_index:GetEyePosition() for point = 1, #all_vector_points do local current_point = all_vector_points[point] local start_position = self.calculate_angles(my_eye_position, current_point) local damage = self.get_hittable_damage(my_index, enemy, my_eye_position, current_point) if damage > best_damage then best_damage = damage best_point = start_position can_hit = true end end local get_max_speed = my_weapon:GetMaxSpeed() if can_shoot and can_hit then self.vars.is_dormant_flag = true self.run_autostop(cmd, get_max_speed * 0.33) if get_inaccuracy < 0.009 then cmd.viewangles.pitch = best_point.x cmd.viewangles.yaw = best_point.y cmd.viewangles.roll = 0.0 cmd.buttons = bit.bor(cmd.buttons, 1) self.vars.is_dormant_flag = true can_shoot = false end elseif not can_hit then self.vars.is_dormant_flag = false end end end player_info = {origin, alpha_multiplier, can_hit} end end end self.vars.player_info_prev = player_info end end end, reset_data = function(self, e) if menu_database.handler.elements["Enable dormant aimbot"] then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then if e:GetName() == "round_prestart" then local mp_freezetime = CVar.FindVar("mp_freezetime"):GetFloat() local ticks = GlobalVars.interval_per_tick local freezetime = (mp_freezetime + 1) / ticks local tickcount = GlobalVars.tickcount self.vars.round_started = tickcount + freezetime end end end end }, doubletap_speed = function() if menu_database.handler.elements["Enable custom DT speed"] then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end local active_weapon = my_index:GetActiveWeapon() if not active_weapon then return end if EngineClient.IsConnected() and my_index:IsAlive() then local speed = menu_database.handler.elements["Custom DT speed"] Exploits.OverrideDoubleTapSpeed(speed) end end end, load_ragebot_functions = function(self, cmd) self.dormant_aimbot:run_work(cmd) self:doubletap_speed() end } ESP.CustomText("Dormant aimbot status", "enemies", "DA", function(ent) if ragebot_functions.dormant_aimbot.vars.is_dormant_flag then return "DA" else return false end end) ESP.CustomText("Resolver state", "enemies", "Resolver state", function(ent) local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end local enemy = ent:GetPlayer() local current_text = "" if not enemy:IsDormant() then local my_position_in_world = my_index:GetProp("m_vecOrigin") local enemy_eye_position = enemy:GetEyePosition() local delta_of_vectors = my_position_in_world - enemy_eye_position local reverse_vector_to_angle = Cheat.VectorToAngle(delta_of_vectors) local trace_data = { left = 0, right = 0 } for i = reverse_vector_to_angle.yaw - 90, reverse_vector_to_angle.yaw + 90, 25 do local radians = math.rad(i) local side = i < reverse_vector_to_angle.yaw and "left" or "right" local first_point = Vector.new( enemy_eye_position.x + 50 * math.cos(radians), enemy_eye_position.y + 50 * math.sin(radians), enemy_eye_position.z ) local last_point = Vector.new( enemy_eye_position.x + 256 * math.cos(radians), enemy_eye_position.y + 256 * math.sin(radians), enemy_eye_position.z ) local get_traced_impact = EngineTrace.TraceRay(first_point, last_point, my_index, 0xFFFFFFFF).fraction trace_data[side] = trace_data[side] + get_traced_impact end local current_side = trace_data.left < trace_data.right and "left" or "right" local current_delta = math.floor(get_max_feet_yaw(enemy)) local pitch = enemy:GetProp("m_angEyeAngles[0]") local is_legit_aa = (pitch >= 0 and pitch <= 50 or pitch >= 329 and pitch <= 360) and true or false local legit_aa_delta = math.floor(math.max(math.min( enemy:GetProp("m_angEyeAngles[1]") - current_delta, (enemy:GetProp("m_angEyeAngles[1]") - current_delta) / 4 ), 0)) if legit_aa_delta > 60 then legit_aa_delta = 60 end if legit_aa_delta < 0 then legit_aa_delta = 0 end current_text = enemy:GetPlayerInfo().fakeplayer and "DEFAULT[0.0]" or ("SIDE:%s[%s]"):format( current_side, is_legit_aa and legit_aa_delta or current_delta ) else current_text = "RESETING[0.0]" end return current_text end) -- @endregion -- @region: all anti-aimbotting functions local anti_aimbotting_functions = { anti_bruteforce = { vars = { is_anti_bruteforcing = false, anti_bruteforcing_timer = GlobalVars.realtime, anti_bruteforcing_counter = 1, anti_bruteforcing_side = 1, phases_counter = 1, phase_state = false }, run_work = function(self, e) if menu_database.handler.elements["Enable anti-aimbotting helpers"] then local directory = menu_database.handler.elements["Anti-aimbotting helpers"] if bit.band(directory, bit.lshift(1, 0)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then if e:GetName() ~= "bullet_impact" then return end local my_index = EntityList.GetLocalPlayer() local attacker = EntityList.GetPlayerForUserID(e:GetInt("userid")) if attacker == my_index or attacker:IsTeamMate() then return end local my_head_position = my_index:GetHitboxCenter(0) local bullet_vector = Vector.new(e:GetInt("x"), e:GetInt("y"), e:GetInt("z")) local my_origin = my_index:GetRenderOrigin() local attacker_origin = attacker:GetRenderOrigin() local check_for_unhittable_wall = Cheat.FireBullet(attacker, bullet_vector, my_head_position) if check_for_unhittable_wall.damage < 5 then return end local point_between_my_head_and_origin = {my_head_position.x - attacker_origin.x, my_head_position.y - attacker_origin.y} local point_between_bullet_and_origin = {bullet_vector.x - attacker_origin.x, bullet_vector.y - attacker_origin.y} local decrease_bullet_points = point_between_bullet_and_origin[1] ^ 2 + point_between_bullet_and_origin[2] ^ 2 local create_dot_points = ( point_between_my_head_and_origin[1] * point_between_bullet_and_origin[1] + point_between_my_head_and_origin[2] * point_between_bullet_and_origin[2] ) local final_dots = create_dot_points / decrease_bullet_points local final_distance = { attacker_origin.x + point_between_bullet_and_origin[1] * final_dots, attacker_origin.y + point_between_bullet_and_origin[2] * final_dots } local my_delta_value = {my_head_position.x - final_distance[1], my_head_position.y - final_distance[2]} local my_delta_to_world = math.abs(math.sqrt(my_delta_value[1] ^ 2 + my_delta_value[2] ^ 2)) local minimum_distance_to_trigger = my_origin:DistTo(attacker_origin) / 4 if my_delta_to_world <= minimum_distance_to_trigger then self.vars.is_anti_bruteforcing = true self.vars.phase_state = true self.vars.anti_bruteforcing_side = self.vars.anti_bruteforcing_side * -1 self.vars.anti_bruteforcing_counter = self.vars.anti_bruteforcing_counter + 1 if self.vars.anti_bruteforcing_counter > 10 then self.vars.anti_bruteforcing_counter = 1 end self.vars.phases_counter = self.vars.phases_counter + 1 if self.vars.phases_counter > #menu_database.phases_vars.phases then self.vars.phases_counter = 1 end else self.vars.is_anti_bruteforcing = false end end else self.vars.is_anti_bruteforcing = false end else self.vars.is_anti_bruteforcing = false end end }, run_main_anti_aim = function(self) if menu_database.handler.elements["Enable anti-aimbotting"] then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then if not self.anti_bruteforce.vars.is_anti_bruteforcing then local current_state = my_index:GetState() local current_preset = menu_database.handler.elements["Anti-aimbotting presets"] local set_values = function() local set_anti_aim = function(table) Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Add"):SetInt(table[1]) Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Modifier"):SetInt(table[2]) Menu.FindVar("Aimbot", "Anti Aim", "Main", "Modifier Degree"):SetInt(table[3]) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(table[4]) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(table[5]) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Fake Options"):SetInt(table[6]) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "LBY Mode"):SetInt(table[7]) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Freestanding Desync"):SetInt(table[8]) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Desync On Shot"):SetInt(table[9]) end local all_settings = { [0] = { ["STANDING"] = {GlobalVars.tickcount % 4 == 1 and -15 or 17, 1, 39, 0, 0, 2, 1, 0, 1}, ["MOVING"] = {GlobalVars.tickcount % 4 == 1 and 16 or -11, 1, 52, 0, 0, 2, 1, 0, 1}, ["CROUCHING T"] = {GlobalVars.tickcount % 4 == 1 and 2 or 11, 1, 39, 0, 0, 2, 0, 0, 1}, ["CROUCHING CT"] = {GlobalVars.tickcount % 4 == 1 and 2 or 11, 1, 39, 0, 0, 2, 0, 0, 1}, ["FAKEDUCKING"] = {0, 0, 0, 60, 60, 0, 0, 0, 0}, ["SLOWWALKING"] = {GlobalVars.tickcount % 4 == 1 and -11 or 11, 1, 50, 0, 0, 2, 1, 0, 1}, ["IN AIR"] = {GlobalVars.tickcount % 4 == 1 and 2 or -2, 1, 10, 0, 0, 2, 0, 0, 2}, }, [1] = { ["STANDING"] = {0, 0, 0, 56, 56, 0, 0, 1, 0}, ["MOVING"] = {0, 0, 0, 56, 56, 0, 0, 1, 0}, ["CROUCHING T"] = {0, 0, 0, 56, 56, 0, 0, 1, 0}, ["CROUCHING CT"] = {0, 1, 25, 40, 40, 6, 0, 0, 0}, ["FAKEDUCKING"] = {0, 0, 0, 56, 56, 0, 0, 0, 0}, ["SLOWWALKING"] = {0, 0, 0, 56, 56, 0, 0, 1, 0}, ["IN AIR"] = {0, 1, 65, 56, 56, 2, 0, 0, 0} }, [2] = { ["STANDING"] = {7, 1, 77, 60, 60, 2, 1, 0, 1}, ["MOVING"] = {7, 1, 77, 60, 60, 2, 1, 0, 1}, ["CROUCHING T"] = {7, 1, 77, 60, 60, 2, 1, 0, 1}, ["CROUCHING CT"] = {7, 1, 77, 60, 60, 2, 1, 0, 1}, ["FAKEDUCKING"] = {7, 1, 77, 60, 60, 2, 1, 0, 1}, ["SLOWWALKING"] = {7, 1, 77, 60, 60, 2, 1, 0, 1}, ["IN AIR"] = {7, 1, 77, 60, 60, 2, 1, 0, 1} }, [3] = { ["STANDING"] = {0, 1, 57, 18, 18, 2, 1, 0, 0}, ["MOVING"] = {0, 1, 57, 18, 18, 2, 1, 0, 0}, ["CROUCHING T"] = {0, 1, 57, 18, 18, 2, 1, 0, 0}, ["CROUCHING CT"] = {0, 1, 57, 18, 18, 2, 1, 0, 0}, ["FAKEDUCKING"] = {0, 0, 0, 60, 60, 0, 0, 0, 0}, ["SLOWWALKING"] = {0, 1, 57, 18, 21, 2, 1, 0, 0}, ["IN AIR"] = {0, 1, 57, 18, 18, 2, 1, 0, 0}, } } local current_settings = all_settings[current_preset][current_state] local flags = my_index:GetProp("m_fFlags") if current_preset ~= 4 then if Cheat.IsMenuVisible() then set_anti_aim({0, 0, 0, 0, 0, 0, 0, 0, 0}) else set_anti_aim(current_settings) end end end if current_preset == 4 then local set_custom_anti_aim = function(state) local get_state = function(base) return menu_database.handler.elements[("%s %s"):format(state, base)] end Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Add"):SetInt( GlobalVars.tickcount % 4 >= 2 and get_state("Yaw Add Left") or get_state("Yaw Add Right") ) Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Modifier"):SetInt(get_state("Yaw Modifier")) Menu.FindVar("Aimbot", "Anti Aim", "Main", "Modifier Degree"):SetInt(get_state("Modifier Degree")) local fake_type = get_state("Fake Limit Type") Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt( fake_type == 0 and get_state("Left Limit") or ( GlobalVars.tickcount % 4 >= 2 and 18 or get_state("Left Limit") ) ) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt( fake_type == 0 and get_state("Right Limit") or ( GlobalVars.tickcount % 4 >= 2 and 18 or get_state("Right Limit") ) ) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Fake Options"):SetInt(get_state("Fake Options")) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "LBY Mode"):SetInt(get_state("LBY Mode")) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Freestanding Desync"):SetInt(get_state("Fake Desync")) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Desync On Shot"):SetInt(get_state("Desync On Shot")) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Inverter"):SetBool(get_state("Inverter")) end if current_state == "STANDING" then set_custom_anti_aim("Standing") elseif current_state == "MOVING" then set_custom_anti_aim("Moving") elseif current_state == "FAKEDUCKING" then set_custom_anti_aim("Fakeduck") elseif ( current_state == "CROUCHING T" or current_state == "CROUCHING CT" ) then set_custom_anti_aim("Ducking") elseif current_state == "SLOWWALKING" then set_custom_anti_aim("Slow Walk") elseif current_state == "IN AIR" then set_custom_anti_aim("In air") end else set_values() end end end end if menu_database.handler.elements["Enable anti-aimbotting helpers"] then local directory = menu_database.handler.elements["Anti-aimbotting helpers"] if bit.band(directory, bit.lshift(1, 0)) ~= 0 then if self.anti_bruteforce.vars.is_anti_bruteforcing then local ab_counter = self.anti_bruteforce.vars.phases_counter if ab_counter ~= 0 then local get_path = ("Phase #%s"):format(ab_counter) if not get_path then self.anti_bruteforce.vars.is_anti_bruteforcing = false self.anti_bruteforce.vars.anti_bruteforcing_timer = GlobalVars.realtime return end local get_value = menu_database.handler.elements[get_path] if not get_value then self.anti_bruteforce.vars.is_anti_bruteforcing = false self.anti_bruteforce.vars.anti_bruteforcing_timer = GlobalVars.realtime return end local get_side = get_value < 0 and false or true if not get_side then self.anti_bruteforce.vars.is_anti_bruteforcing = false self.anti_bruteforce.vars.anti_bruteforcing_timer = GlobalVars.realtime return end AntiAim.OverrideInverter(get_side) AntiAim.OverrideLimit(get_value) end if self.anti_bruteforce.vars.anti_bruteforcing_timer + 3 < GlobalVars.realtime then self.anti_bruteforce.vars.is_anti_bruteforcing = false self.anti_bruteforce.vars.anti_bruteforcing_timer = GlobalVars.realtime end end end end end, break_lagcomp_in_air = function() if menu_database.handler.elements["Enable anti-aimbotting helpers"] then local directory = menu_database.handler.elements["Anti-aimbotting helpers"] if bit.band(directory, bit.lshift(1, 1)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end local active_weapon = my_index:GetActiveWeapon() if not active_weapon then return end local classname = active_weapon:GetClassName() if not classname then return end if EngineClient.IsConnected() and my_index:IsAlive() then local is_active = function() local table = {"Default", "Pistols", "Heavy pistols", "Scout", "AWP", "Autosnipers", "Nades"} for i = 1, #table do local directory = menu_database.handler.elements["Breaking lagcomp weapons"] if bit.band(directory, bit.lshift(1, i - 1)) ~= 0 then local current_weapon = table if active_weapon:IsPistol() then if current_weapon == "Heavy pistols" and classname == "CDEagle" then return true elseif current_weapon == "Pistols" and classname ~= "CDEagle" then return true end elseif classname == "CWeaponSSG08" and current_weapon == "Scout" then return true elseif classname == "CWeaponAWP" and current_weapon == "AWP" then return true elseif ( classname == "CWeaponSCAR20" or classname == "CWeaponG3SG1" ) and current_weapon == "Autosnipers" then return true elseif current_weapon == "Nades" and active_weapon:IsGrenade() then return true elseif current_weapon == "Default" and active_weapon:IsRifle() then return true end end end return false end if is_active() then local data, current_enemy = all_utils:update_enemies(), nil if data ~= nil then current_enemy = data.enemy end if current_enemy ~= nil and current_enemy:IsAlive() then if not current_enemy:IsDormant() then local isDT = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool() local in_air = my_index:GetState() == "IN AIR" if isDT and in_air then local enemy_origin = current_enemy:GetRenderOrigin() local my_origin = my_index:GetRenderOrigin() local traced_bullet = Cheat.FireBullet(current_enemy, enemy_origin, my_origin) if traced_bullet.damage > 0 then Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Freestanding Desync"):SetInt(1) Exploits.ForceTeleport() end end end end end end end end end, anti_backstabbing = function() if menu_database.handler.elements["Enable anti-aimbotting helpers"] then local directory = menu_database.handler.elements["Anti-aimbotting helpers"] if bit.band(directory, bit.lshift(1, 2)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then local data, current_enemy = all_utils:update_enemies(), nil if data ~= nil then current_enemy = data.enemy end if current_enemy ~= nil and current_enemy:IsAlive() then if not current_enemy:IsDormant() then local my_origin = my_index:GetRenderOrigin() local enemy_origin = current_enemy:GetRenderOrigin() local enemy_weapon = current_enemy:GetActiveWeapon() if not enemy_weapon then return end local our_distance = my_origin:DistTo(enemy_origin) local minimum_distance = 200 if enemy_weapon:IsKnife() then if our_distance <= minimum_distance then AntiAim.OverrideYawOffset(180) end end end end end end end end, bombsite_fix = { vars = { is_in_bombsite = false }, check_bombsite = function(self, e) if menu_database.handler.elements["Enable anti-aimbotting helpers"] then local directory = menu_database.handler.elements["Anti-aimbotting helpers"] if bit.band(directory, bit.lshift(1, 3)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then if e:GetName() == "enter_bombzone" then local user_id = EntityList.GetPlayerForUserID(e:GetInt("userid")) if user_id == my_index then self.vars.is_in_bombsite = true end end if e:GetName() == "exit_bombzone" then local user_id = EntityList.GetPlayerForUserID(e:GetInt("userid")) if user_id == my_index then self.vars.is_in_bombsite = false end end end else self.vars.is_in_bombsite = false end else self.vars.is_in_bombsite = false end end, run_work = function(self, cmd) if menu_database.handler.elements["Enable anti-aimbotting helpers"] then local directory = menu_database.handler.elements["Anti-aimbotting helpers"] if bit.band(directory, bit.lshift(1, 3)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then if my_index:GetProp("m_iTeamNum") == 2 then local is_near_with_door = function() for yaw = 18, 360, 18 do yaw = all_utils.normalize_yaw(yaw) local my_eye_position = my_index:GetEyePosition() local final_angle = QAngle.new(0, yaw, 0) local final_point = my_eye_position + Cheat.AngleToForward(final_angle) * 0x60 local trace_info = EngineTrace.TraceRay(my_eye_position, final_point, my_index, 0x200400B) local hit_entity = trace_info.hit_entity if hit_entity ~= nil then if trace_info.hit_entity:GetClassName() == "CPropDoorRotating" then return true end end end return false end if not is_near_with_door() then if self.vars.is_in_bombsite then if bit.band(cmd.buttons, 32) == 32 then AntiAim.OverrideYawOffset(180) AntiAim.OverridePitch(0) cmd.buttons = bit.band(cmd.buttons, bit.bnot(32)) end end end end end end end end }, quick_peek = function(cmd) if menu_database.handler.elements["Enable indicator list"] then if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 3)) ~= 0 then if menu_database.handler.elements["Skeet autopeek type"] == 1 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then local set_movement = function(cmd, xz, yz) local current_pos = my_index: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 local W = bit.band(cmd.buttons, 8) == 8 local S = bit.band(cmd.buttons, 16) == 16 local D = bit.band(cmd.buttons, 512) == 512 local A = bit.band(cmd.buttons, 1024) == 1024 local moving = W or S or D or A local is_peeking = Menu.FindVar("Miscellaneous", "Main", "Movement", "Auto Peek"):GetBool() if not is_peeking then cur_pos = my_index:GetProp("m_vecOrigin") end local default_origin = my_index:GetProp("m_vecOrigin") local is_in_air = my_index:GetState() == "IN AIR" if not is_in_air then if is_peeking then if cur_pos ~= nil then if not moving and cur_pos.x ~= default_origin.x and cur_pos.y ~= default_origin.y then set_movement(cmd, cur_pos.x, cur_pos.y) end end end end end end end end end, smart_yaw_position = function(self) if menu_database.handler.elements["Enable anti-aimbotting helpers"] then local directory = menu_database.handler.elements["Anti-aimbotting helpers"] if bit.band(directory, bit.lshift(1, 4)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then local data, current_enemy = all_utils:update_enemies(), nil if data ~= nil then current_enemy = data.enemy end if current_enemy ~= nil and current_enemy:IsAlive() then local lby_fraction = math.abs(my_index:GetProp("m_flLowerBodyYawTarget") / 180) local duck_amount = my_index:GetProp("m_flDuckAmount") local side = all_utils:get_hit_side() local yaw_path = Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Add") if not current_enemy:IsDormant() then if duck_amount > 0.4 then yaw_path:SetInt(-10) else if lby_fraction > 0.5 then yaw_path:SetInt(20) else yaw_path:SetInt(-20) end end else if duck_amount > 0.4 and not my_index:GetState(true) == "IN AIR" then yaw_path:SetInt(10) else if lby_fraction > 0.5 then yaw_path:SetInt(10) else if side == 0.5 or side == -0.5 then yaw_path:SetInt(-10) elseif side == 1 or side == -1 then yaw_path:SetInt(-20) else yaw_path:SetInt(20) end end end end end end end end end, dynamic_fake_yaw = function(self) if menu_database.handler.elements["Enable anti-aimbotting helpers"] then local directory = menu_database.handler.elements["Anti-aimbotting helpers"] if bit.band(directory, bit.lshift(1, 5)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then local data, current_enemy = all_utils:update_enemies(), nil if data ~= nil then current_enemy = data.enemy end if current_enemy ~= nil and current_enemy:IsAlive() then local lby_fraction = math.abs(my_index:GetProp("m_flLowerBodyYawTarget") / 180) local duck_amount = my_index:GetProp("m_flDuckAmount") local side = all_utils:get_hit_side() if not current_enemy:IsDormant() then if duck_amount > 0.4 then Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(56) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(56) else if lby_fraction > 0.5 then Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(25) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(25) else Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(56) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(56) end end else if duck_amount > 0.4 and not my_index:GetState(true) == "IN AIR" then Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(45) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(45) else if lby_fraction > 0.5 then Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt( math.floor(58 * lby_fraction) ) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt( math.floor(58 * lby_fraction) ) else if side == 0.5 or side == -0.5 then Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(35) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(35) elseif side == 1 or side == -1 then Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(15) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(15) else Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(56) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(56) end end end end end end end end end, better_onshot = function() if menu_database.handler.elements["Enable anti-aimbotting helpers"] then local directory = menu_database.handler.elements["Anti-aimbotting helpers"] if bit.band(directory, bit.lshift(1, 6)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end local active_weapon = my_index:GetActiveWeapon() if not active_weapon then return end local classname = active_weapon:GetClassName() if not classname then return end if EngineClient.IsConnected() and my_index:IsAlive() then if Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool() and Exploits.GetCharge() == 1 then if classname == "CWeaponSSG08" or classname == "CWeaponAWP" then Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Desync On Shot"):SetInt(1) else Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Desync On Shot"):SetInt(3) end elseif Exploits.GetCharge() < 1 then Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Desync On Shot"):SetInt(1) end end end end end, one_time_legit_aa = false, legit_aa_on_e = function(self, cmd) if menu_database.handler.elements["Enable anti-aimbotting helpers"] then local directory = menu_database.handler.elements["Anti-aimbotting helpers"] if bit.band(directory, bit.lshift(1, 7)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then local is_active = function() local maximum_distance = 99999999 local my_origin = my_index:GetRenderOrigin() local doors = EntityList.GetEntitiesByClassID(143) local bomb = EntityList.GetEntitiesByClassID(129) local hostages = EntityList.GetEntitiesByClassID(97) local my_view_angles = EngineClient.GetViewAngles() local my_angles = Vector2.new(my_view_angles.yaw, my_view_angles.pitch) my_angles.y = -my_angles.y for k, v in pairs(doors) do local doors_origin = v:GetRenderOrigin() local current_distance = my_origin:DistTo(doors_origin) if current_distance <= maximum_distance then maximum_distance = current_distance end end for k, v in pairs(bomb) do local bomb_origin = v:GetRenderOrigin() local current_distance = my_origin:DistTo(bomb_origin) if current_distance <= maximum_distance then maximum_distance = current_distance end end for k, v in pairs(hostages) do local hostages_origin = v:GetRenderOrigin() local current_distance = my_origin:DistTo(hostages_origin) if current_distance <= maximum_distance then maximum_distance = current_distance end end if maximum_distance <= 100 or (my_angles.y <= -25 and my_angles.y > -70) then return false end return true end if bit.band(cmd.buttons, 32) == 32 then if not self.one_time_legit_aa then self.one_time_legit_aa = true end if is_active() then if Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Base"):GetInt() == 5 then Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Base"):SetInt(4) end local yaw_base = Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Base"):GetInt() local yaw_value = ( yaw_base == 1 and 180 or yaw_base == 2 and 90 or yaw_base == 3 and -90 or yaw_base == 4 and 180 or 0 ) AntiAim.OverridePitch(0) AntiAim.OverrideYawOffset(yaw_value) AntiAim.OverrideLimit(60) cmd.buttons = bit.band(cmd.buttons, bit.bnot(32)) end else if self.one_time_legit_aa then self.one_time_legit_aa = false end end end end end end, backup_fakelag = false, disable_fakelag = function(self) if menu_database.handler.elements["Enable anti-aimbotting helpers"] then local directory = menu_database.handler.elements["Anti-aimbotting helpers"] if bit.band(directory, bit.lshift(1, 8)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then local fakelag_cache = 14 if not self.backup_fakelag then fakelag_cache = Menu.FindVar("Aimbot", "Anti Aim", "Fake Lag", "Limit"):GetInt() self.backup_fakelag = true end local isHS = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Hide Shots"):GetBool() if isHS then Menu.FindVar("Aimbot", "Anti Aim", "Fake Lag", "Limit"):SetInt(1) else if self.backup_fakelag then Menu.FindVar("Aimbot", "Anti Aim", "Fake Lag", "Limit"):SetInt(fakelag_cache) self.backup_fakelag = false end end end end end end, roll_angles = { is_rolling_and_controlling = false, -- good song :) override_manual_settings = function() Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Base"):SetInt(4) Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Add"):SetInt(-11) Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Modifier"):SetInt(0) Menu.FindVar("Aimbot", "Anti Aim", "Main", "Modifier Degree"):SetInt(0) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(60) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(60) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Fake Options"):SetInt(0) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "LBY Mode"):SetInt(1) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Freestanding Desync"):SetInt(0) Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Desync On Shot"):SetInt(0) end, on_pre_prediction = function(self, cmd) self.is_rolling_and_controlling = false if menu_database.handler.elements["Enable roll angles"] then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then local is_manuals_enabled = menu_database.handler.elements["Only manual roll angles"] local current_manual = menu_database.handler.elements["Manual roll angles"] local current_roll_angle = 100 if is_manuals_enabled then if current_manual ~= 0 then self.override_manual_settings() AntiAim.OverrideYawOffset(current_manual == 1 and -90 or 90) end self.is_rolling_and_controlling = current_manual ~= 0 else self.override_manual_settings() self.is_rolling_and_controlling = current_roll_angle == 100 end if is_manuals_enabled then current_roll_angle = current_manual ~= 0 and 50 or 0 end local current_state = my_index:GetState() if current_state == "IN AIR" then self.is_rolling_and_controlling = false end cmd.viewangles.roll = current_roll_angle end end end, on_createmove = function(self, cmd) if menu_database.handler.elements["Enable roll angles"] then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then local current_state = my_index:GetState() local is_chocking = FakeLag.Choking() if current_state == "IN AIR" or is_chocking then cmd.viewangles.roll = 0 end end end end }, load_anti_aimbotting_functions = function(self, cmd) self:break_lagcomp_in_air() self:anti_backstabbing() self.bombsite_fix:run_work(cmd) self.quick_peek(cmd) self:smart_yaw_position() self:dynamic_fake_yaw() self:better_onshot() self:legit_aa_on_e(cmd) self:disable_fakelag() end } -- @endregion -- @region: all visual functions local visual_functions = { utils = { fonts_library = { ["Smallest Pixel-7"] = { ["9"] = { [""] = { Render.InitFont("Smallest Pixel-7", 9) } }, ["10"] = { [""] = { Render.InitFont("Smallest Pixel-7", 10) } } }, ["Tahoma"] = { ["10"] = { [""] = { Render.InitFont("Tahoma", 10) } } }, ["Verdana"] = { ["10"] = { [""] = { Render.InitFont("Verdana", 10) }, ["b"] = { Render.InitFont("Verdana", 10, {"b"}) } }, ["11"] = { ["r"] = { Render.InitFont("Verdana", 11, {"r"}) } }, ["12"] = { [""] = { Render.InitFont("Verdana", 12) } }, ["21"] = { ["b"] = { Render.InitFont("Verdana", 21, {"b"}) } } }, ["Calibri"] = { ["30"] = { ["b"] = { Render.InitFont("Calibri", 30, {"b"}) } } }, ["Lucida Console"] = { ["10"] = { ["r"] = { Render.InitFont("Lucida Console", 10, {"r"}) } } } }, get_font = function(self, font_name, font_size, flags) local library_names = self.fonts_library[font_name] local library_fonts = library_names[font_size] local library_flags = library_fonts[not flags and "" or flags][1] return library_flags end, get_desync = function(comma_index) local real_rotation = AntiAim.GetCurrentRealRotation() local fake_rotation = AntiAim.GetFakeRotation() local max_delta = AntiAim.GetMaxDesyncDelta() local delta = math.min(math.abs(real_rotation - fake_rotation), max_delta) return tonumber(string.format("%." .. comma_index .. "f", delta)) end, draw_shadow = function(type, text, x, y, color, font_size, font, centered, shadow_color) local x_pos = type == 0 and 1 or type == 1 and 1 or type == 2 and 0 or 1 local y_pos = type == 0 and 1 or type == 1 and 0 or type == 2 and 1 or 1 Render.Text(text, Vector2.new(x + x_pos, y + y_pos), shadow_color, font_size, font, false, centered) Render.Text(text, Vector2.new(x + 0, y + 0), color, font_size, font, false, centered) end, hsv_to_rgb = function(h, s, v) local r, g, b local i = math.floor(h * 6); local f = h * 6 - i; local p = v * (1 - s); local q = v * (1 - f * s); local t = v * (1 - (1 - f) * s); i = i % 6 if i == 0 then r, g, b = v, t, p elseif i == 1 then r, g, b = q, v, p elseif i == 2 then r, g, b = p, v, t elseif i == 3 then r, g, b = p, q, v elseif i == 4 then r, g, b = t, p, v elseif i == 5 then r, g, b = v, p, q end return Color.new(r, g, b) end }, under_crosshair = function(self) if menu_database.handler.elements["Enable indicator list"] then if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 0)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end local active_weapon = my_index:GetActiveWeapon() if not active_weapon then return end if EngineClient.IsConnected() and my_index:IsAlive() then if menu_database.handler.elements["Under crosshair style"] == 0 then local add_y = 30 local alpha = math.floor( math.sin(math.abs(-math.pi + (GlobalVars.curtime * (1.25 / .75)) % (math.pi * 2))) * 200 ) local font = self.utils:get_font("Smallest Pixel-7", "9") local indicator_list = {} local inverter = AntiAim.GetInverterState() local current_fake = inverter and "R" or "L" Render.Text( "HALF-LIFE", Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y), Color.RGBA(255, 255, 255, 255), 9, font, true, false ) Render.Text( "BETA", Vector2.new(screen_size.x / 2 + 45, screen_size.y / 2 + add_y), Color.RGBA(200, 200, 200, alpha), 9, font, true, false ) add_y = add_y + 9 local is_anti_bruteforce = anti_aimbotting_functions.anti_bruteforce.vars.is_anti_bruteforcing local is_defensive = function() local state, shifting = false, 0 if Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool() then local hit_side = all_utils:get_hit_side() if hit_side == true or hit_side == false then hit_side = 0 state = false shifting = nil end if hit_side ~= nil then if hit_side > 0 then state = true local tickbase = my_index:GetProp("m_nTickBase") local next_attack = my_index:GetProp("m_flNextAttack") local next_primary_attack = my_index:GetActiveWeapon():GetProp("m_flNextPrimaryAttack") local ticks = GlobalVars.interval_per_tick * (tickbase - 16) local shifting_tickbase = (ticks - next_primary_attack) * 2 if shifting_tickbase <= 3 then shifting_tickbase = shifting_tickbase + ( next_attack * 0.001 ) * 2 end if shifting_tickbase >= 17 then shifting_tickbase = 17 end shifting_tickbase = math.floor(shifting_tickbase) shifting = shifting_tickbase else state = false shifting = nil end else state = false shifting = nil end else state = false shifting = nil end return ({ state = state, value = shifting }) end local get_dormant_players = function() local ret = {} local players = EntityList.GetEntitiesByName("CCSPlayer") for i = 1, #players do local enemy = players:GetPlayer() if enemy ~= my_index and not enemy:IsTeamMate() and enemy:IsAlive() then if enemy:IsDormant() then table.insert(ret, enemy) end end end return #ret end local data, current_enemy = all_utils:update_enemies(), nil if data ~= nil then current_enemy = data.enemy end local is_rolling = anti_aimbotting_functions.roll_angles.is_rolling_and_controlling if is_rolling then Render.Text( "EXPLOITING:", Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y), Color.RGBA(255, 255, 255, 255), 9, font, true, false ) Render.Text( "z°", Vector2.new(screen_size.x / 2 + 50, screen_size.y / 2 + add_y), Color.RGBA(255, 255, 255, 255), 9, font, true, false ) elseif is_anti_bruteforce then Render.Text( "ANTI ", Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y), Color.RGBA(255, 255, 255, 255), 9, font, true, false ) local counter = anti_aimbotting_functions.anti_bruteforce.vars.anti_bruteforcing_counter local side = anti_aimbotting_functions.anti_bruteforce.vars.anti_bruteforcing_side local timer = math.floor( anti_aimbotting_functions.anti_bruteforce.vars.anti_bruteforcing_timer % 10000 * 0.01 ) Render.Text( ("BRUTEFORCE[%s][%s][%s%%]"):format(counter, side, timer), Vector2.new(screen_size.x / 2 + 21, screen_size.y / 2 + add_y), Color.RGBA(255, 255, 255, 255), 9, font, true, false ) else if is_defensive().state then if is_defensive().value ~= nil then Render.Text( "DEFENSIVE:", Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y), Color.RGBA(255, 255, 255, 255), 9, font, true, false ) Render.Text( ("%s"):format(is_defensive().value), Vector2.new(screen_size.x / 2 + 47, screen_size.y / 2 + add_y), Color.RGBA(255, 255, 255, 255), 9, font, true, false ) end else Render.Text( "BODY", Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y), Color.RGBA(197, 122, 108, 255), 9, font, true, false ) Render.Text( " YAW: ", Vector2.new(screen_size.x / 2 + 16, screen_size.y / 2 + add_y), Color.RGBA(197, 122, 108, 255), 9, font, true, false ) Render.Text( current_fake, Vector2.new(screen_size.x / 2 + 40, screen_size.y / 2 + add_y), Color.RGBA(255, 255, 255, 255), 9, font, true, false ) end end add_y = add_y + 9 Render.Text( "DORMANCY:", Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y), Color.RGBA(255, 201, 132, 255), 9, font, true, false ) Render.Text( ("%s"):format(get_dormant_players()), Vector2.new(screen_size.x / 2 + 45, screen_size.y / 2 + add_y), Color.RGBA(255, 255, 255, 255), 9, font, true, false ) local isDT = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool() local isHS = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Hide Shots"):GetBool() local charge_color = Exploits.GetCharge() == 1 and Color.RGBA(133, 235, 89, 255) or Color.RGBA(244, 11, 12, 255) local binds = Cheat.GetBinds() local isDMG = false for i = 1, #binds do if binds:IsActive() then if binds:GetName() == "Minimum Damage" then isDMG = true end end end table.insert(indicator_list, {text = isDT and "DT" or "", color = charge_color}) table.insert(indicator_list, {text = isHS and "HS" or "", color = Color.RGBA(255, 211, 168, 255)}) table.insert(indicator_list, {text = isDMG and "DMG" or "", color = Color.RGBA(255, 255, 255, 255)}) for k, indicator in ipairs(indicator_list) do if indicator.text ~= nil and indicator.text ~= "" then add_y = add_y + 9 Render.Text( indicator.text, Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y), indicator.color, 9, font, true, false ) end end end if menu_database.handler.elements["Under crosshair style"] == 1 then local add_y = 30 local get_desync = self.utils.get_desync(0) local font = self.utils:get_font("Smallest Pixel-7", "9") local indicator_list = {} Render.Text( get_desync .. "", Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y), Color.RGBA(255, 255, 255, 255), 9, font, true, true ) Render.GradientBoxFilled( Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y + 8), Vector2.new(screen_size.x / 2 + (-math.abs(get_desync * 58 / 100)), screen_size.y / 2 + add_y + 11), Color.RGBA(255, 255, 120, 255), Color.RGBA(0, 255, 153, 0), Color.RGBA(255, 255, 120, 255), Color.RGBA(0, 255, 153, 0) ) Render.GradientBoxFilled( Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y + 8), Vector2.new(screen_size.x / 2 + (math.abs(get_desync * 58 / 100)), screen_size.y / 2 + add_y + 11), Color.RGBA(255, 255, 120, 255), Color.RGBA(153, 0, 255, 0), Color.RGBA(255, 255, 120, 255), Color.RGBA(153, 0, 255, 0) ) Render.Text( "HA", Vector2.new(screen_size.x / 2 - 18, screen_size.y / 2 + add_y + 20), Color.RGBA(30, 251, 146, 255), 9, font, true, true ) Render.Text( "LF", Vector2.new(screen_size.x / 2 - 8, screen_size.y / 2 + add_y + 20), Color.RGBA(125, 251, 146, 255), 9, font, true, true ) Render.Text( "-", Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y + 20), Color.RGBA(255, 199, 49, 255), 9, font, true, true ) Render.Text( "LI", Vector2.new(screen_size.x / 2 + 8, screen_size.y / 2 + add_y + 20), Color.RGBA(255, 150, 150, 255), 9, font, true, true ) Render.Text( "FE", Vector2.new(screen_size.x / 2 + 18, screen_size.y / 2 + add_y + 20), Color.RGBA(255, 120, 120, 255), 9, font, true, true ) local isDT = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool() local isHS = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Hide Shots"):GetBool() local charge_color = Exploits.GetCharge() == 1 and Color.RGBA(126, 214, 136, 255) or Color.RGBA(226, 54, 55, 255) local binds = Cheat.GetBinds() local isDMG = false for i = 1, #binds do if binds:IsActive() then if binds:GetName() == "Minimum Damage" then isDMG = true end end end table.insert(indicator_list, {text = isDT and "DT" or "", color = charge_color}) table.insert(indicator_list, {text = isHS and "HS" or "", color = Color.RGBA(255, 217, 116, 255)}) table.insert(indicator_list, {text = isDMG and "DMG" or "", color = Color.RGBA(255, 255, 255, 255)}) for k, indicator in ipairs(indicator_list) do if indicator.text ~= nil and indicator.text ~= "" then add_y = add_y + 9 Render.Text( indicator.text, Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y + 20), indicator.color, 9, font, true, true ) end end end if menu_database.handler.elements["Under crosshair style"] == 2 then local indicator_list = {} local other_font = self.utils:get_font("Smallest Pixel-7", "10") local add_y = 30 Render.Text( "HALf-LIFE", Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y), Color.RGBA(255, 255, 255, 255), 10, other_font, true, true ) local isHS = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Hide Shots"):GetBool() local isQP = Menu.FindVar("Miscellaneous", "Main", "Movement", "Auto Peek"):GetBool() local isDT = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool() local desync_value = ("%s%%"):format(self.utils.get_desync(0)) local binds = Cheat.GetBinds() local isDMG = false for i = 1, #binds do if binds:IsActive() then if binds:GetName() == "Minimum Damage" then isDMG = true end end end if isDT then local attack = my_index:GetProp("m_flNextAttack") + 0.25 local primary_attack = active_weapon:GetProp("m_flNextPrimaryAttack") + 0.25 local fraction = math.abs(GlobalVars.curtime - math.max(attack, primary_attack)) if fraction >= 1 then fraction = 1 end if Exploits.GetCharge() ~= 1 then Render.Circle( Vector2.new(screen_size.x / 2 + 10, screen_size.y / 2 + add_y + 19), 3, 60, Color.RGBA(190, 190, 190, 255), 2, 270, fraction * 640 ) end end table.insert(indicator_list, {text = desync_value, color = Color.RGBA(190, 190, 190, 255)}) table.insert(indicator_list, {text = isDT and "DT" or "", color = Color.RGBA(190, 190, 190, 255)}) table.insert(indicator_list, {text = isHS and "ONSHOT" or "", color = Color.RGBA(190, 190, 190, 255)}) table.insert(indicator_list, {text = isQP and "QP" or "", color = Color.RGBA(190, 190, 190, 255)}) table.insert(indicator_list, {text = isDMG and "DMG" or "", color = Color.RGBA(190, 190, 190, 255)}) for k, indicator in ipairs(indicator_list) do if indicator.text ~= nil and indicator.text ~= "" then add_y = add_y + 9 Render.Text( indicator.text, Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y), indicator.color, 10, other_font, true, true ) end end end end end end end, watermark_modules = { hit_counter = 0, count_hurt_shots = function(self, e) if menu_database.handler.elements["Enable indicator list"] then if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 1)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then if e:GetName() ~= "player_hurt" then return end local victim = EntityList.GetPlayerForUserID(e:GetInt("userid")) local attacker = EntityList.GetPlayerForUserID(e:GetInt("attacker")) if victim == attacker or attacker == my_index then return end self.hit_counter = self.hit_counter + 1 if self.hit_counter > 10 then self.hit_counter = 0 end end end end end }, watermark = function(self) if menu_database.handler.elements["Enable indicator list"] then if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 1)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then local font = self.utils:get_font("Verdana", "10", "b") local add_x, add_y = screen_size.x / 2 - (screen_size.x / 2 - 85), screen_size.y / 2 - 35 Render.Text( "half-life - version 0.3.0 beta", Vector2.new(add_x, add_y), Color.RGBA(255, 255, 255, 255), 10, font, true ) local aa_state = ( my_index:GetState() == "IN AIR" and "nil: (1. 0. 0)" or AntiAim.GetInverterState() and "0: (1. 0. 0)" or "1: (1. 0. 0)" ) Render.Text( ("> anti-aim info: side - %s;"):format(aa_state), Vector2.new(add_x, add_y + 15), Color.RGBA(255, 218, 244, 215), 10, font, true ) local data, current_enemy = all_utils:update_enemies(), nil if data ~= nil then current_enemy = data.enemy end local target_name = (current_enemy ~= nil and current_enemy:IsAlive()) and current_enemy:GetName() or "nil" local name_size = Render.CalcTextSize(("> anti-aim info: side - %s;"):format(aa_state), 10, font) Render.Text( ("target: %s"):format(target_name), Vector2.new(add_x + name_size.x / 2 + 85, add_y + 15), Color.RGBA(255, 218, 244, 215), 10, font, true ) local is_rolling = anti_aimbotting_functions.roll_angles.is_rolling_and_controlling local state = is_rolling and "exploiting" or (my_index:GetState()):lower() Render.Text( ("> player info: state - %s"):format(state), Vector2.new(add_x, add_y + 30), Color.RGBA(223, 255, 166, 215), 10, font, true ) Render.Text( ("> anti brute info: misses - %s: hurt - %s"):format( anti_aimbotting_functions.anti_bruteforce.vars.anti_bruteforcing_counter, self.watermark_modules.hit_counter ), Vector2.new(add_x, add_y + 45), Color.RGBA(255, 186, 145, 255), 10, font, true ) end end end end, minimum_damage = function(self) if menu_database.handler.elements["Enable indicator list"] then if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 2)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then local font = self.utils:get_font("Smallest Pixel-7", "10") local current_damage = ("%s"):format(Menu.FindVar("Aimbot", "Ragebot", "Accuracy", "Minimum Damage"):GetInt()) local text_size = Render.CalcTextSize(current_damage, 10, font) local position = menu_database.handler.elements["Minimum damage position"] local y_position_list = {10, 10, -30, -30, -30, -55, -55, -55} local x_position_list = {text_size.x / 2 + 5, -15, -55, 55, 0, 45, -45, 0} local add_y = y_position_list[position + 1] local add_x = x_position_list[position + 1] Render.Text( current_damage, Vector2.new(screen_size.x / 2 - add_x, screen_size.y / 2 + add_y), Color.RGBA(255, 255, 255, 255), 10, font, true, true ) end end end end, default_origin = Vector.new(0, 0, 0), skeet_autopeek = function(self) if menu_database.handler.elements["Enable indicator list"] then if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 3)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then if not Menu.FindVar("Miscellaneous", "Main", "Movement", "Auto Peek"):GetBool() then self.default_origin = my_index:GetProp("m_vecOrigin") end if Menu.FindVar("Miscellaneous", "Main", "Movement", "Auto Peek"):GetBool() then local color = menu_database.handler.references["Skeet autopeek color"].reference:Get() color.a = color.a / 50 for i = 1, 40 do Render.Circle3DFilled( self.default_origin, 60, i / 2, color, false ) end end end end end end, skeet_modules = { vars = { fakelags = { fakelag_1 = 0, fakelag_2 = 0, fakelag_3 = 0, fakelag_4 = 0, fakelag_5 = 0, old_choke = 0 }, lag_compensation = { is_lc = false, timer = GlobalVars.curtime }, fake = { smooth_fill = 0 }, shot_stats = { hits = 0, misses = 0, all_shots = 0, count_shots = function(self, shot) if menu_database.handler.elements["Enable indicator list"] then if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 4)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then if bit.band(menu_database.handler.elements["Skeet indicator elements"], bit.lshift(1, 1)) ~= 0 then if shot.reason == 0 then self.hits = self.hits + 1 else self.misses = self.misses + 1 end self.all_shots = self.all_shots + 1 end end end end end, }, bomb_info = { bombsite = -1, is_defusing = false, is_planting = false, plant_time = 0, on_begin_plant = function(self, e) if e:GetName() ~= "bomb_beginplant" then return end self.bombsite = e:GetInt("site") self.is_planting = true self.plant_time = GlobalVars.curtime end, on_bomb_plant = function(self, e) if e:GetName() ~= "bomb_planted" then return end self.bombsite = -1 self.is_planting = false end, on_abort_plant = function(self, e) if e:GetName() ~= "bomb_abortplant" then return end self.bombsite = -1 self.is_planting = false end, on_defusing = function(self, e) if e:GetName() ~= "bomb_begindefuse" then return end self.is_defusing = true end, on_abort_defusing = function(self, e) if e:GetName() ~= "bomb_abortdefuse" then return end self.is_defusing = false end, on_round_prestart = function(self, e) if e:GetName() ~= "round_prestart" then return end self.bombsite = -1 self.is_defusing = false self.is_planting = false self.plant_time = 0 end, on_self_connected = function(self, e) if e:GetName() ~= "player_connect_full" then return end self.plant_time = 0 local c4 = EntityList.GetEntitiesByClassID(129)[1] if not c4 then self.bombsite = -1 self.is_planting = false else self.is_planting = true self.bombsite = c4:GetProp("m_nBombSite") end end, load_bomb_modules = function(self, e) self:on_begin_plant(e) self:on_bomb_plant(e) self:on_abort_plant(e) self:on_round_prestart(e) self:on_defusing(e) self:on_abort_defusing(e) self:on_self_connected(e) end } }, directories = { isBaim = Menu.FindVar("Aimbot", "Ragebot", "Misc", "Body Aim") } }, side_skeet_indicators = function(self) if menu_database.handler.elements["Enable indicator list"] then if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 4)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then local indicator_list = {} local font = self.utils:get_font("Calibri", "30", "b") local add_x, add_y = 2, 50 local x, y = screen_size.x / 100 - 3, screen_size.y / 1.50 - 5 local render_indicator = function(text, color, add_y) local text_size = Render.CalcTextSize(text, 22, font) local back_alpha = 65 Render.GradientBoxFilled( Vector2.new(13, y + add_y), Vector2.new(13 + text_size.x / 2, y + add_y + 28), Color.RGBA(0, 0, 0, 0), Color.RGBA(0, 0, 0, back_alpha), Color.RGBA(0, 0, 0, 0), Color.RGBA(0, 0, 0, back_alpha) ) Render.GradientBoxFilled( Vector2.new(13 + text_size.x / 2, y + add_y), Vector2.new(13 + text_size.x, y + add_y + 28), Color.RGBA(0, 0, 0, back_alpha), Color.RGBA(0, 0, 0, 0), Color.RGBA(0, 0, 0, back_alpha), Color.RGBA(0, 0, 0, 0) ) self.utils.draw_shadow( 2, text, x + add_x + 2, y + add_y + 4, color, 23, font, false, Color.RGBA(0, 0, 0, 170) ) end local render_circle = function(text, x_position, y_position, add_y, size, color, value) local text_size = Render.CalcTextSize(text, 22, font) Render.Circle( Vector2.new(x + add_x + text_size.x + x_position + 3, y + add_y + text_size.y / 2 + y_position + 3), size + 1, 60, Color.RGBA(0, 0, 0, 255), 3 ) Render.Circle( Vector2.new(x + add_x + text_size.x + x_position + 3, y + add_y + text_size.y / 2 + y_position + 3), size, 60, color, 4, 0, value ) end local get_text_fakelag = function() local self_chocking = ClientState.m_choked_commands if self_chocking < self.skeet_modules.vars.fakelags.old_choke then self.skeet_modules.vars.fakelags.fakelag_1 = self.skeet_modules.vars.fakelags.fakelag_2 self.skeet_modules.vars.fakelags.fakelag_2 = self.skeet_modules.vars.fakelags.fakelag_3 self.skeet_modules.vars.fakelags.fakelag_3 = self.skeet_modules.vars.fakelags.fakelag_4 self.skeet_modules.vars.fakelags.fakelag_4 = self.skeet_modules.vars.fakelags.fakelag_5 self.skeet_modules.vars.fakelags.fakelag_5 = self.skeet_modules.vars.fakelags.old_choke end self.skeet_modules.vars.fakelags.old_choke = self_chocking return ("%i-%i-%i-%i-%i"):format( self.skeet_modules.vars.fakelags.fakelag_1, self.skeet_modules.vars.fakelags.fakelag_2, self.skeet_modules.vars.fakelags.fakelag_3, self.skeet_modules.vars.fakelags.fakelag_4, self.skeet_modules.vars.fakelags.fakelag_5 ) end local is_enabled = function(value) return bit.band(menu_database.handler.elements["Skeet indicator elements"], bit.lshift(1, value)) ~= 0 end self.skeet_modules.vars.fake.smooth_fill = all_utils.easings.lerp( self.skeet_modules.vars.fake.smooth_fill, self.utils.get_desync(0), GlobalVars.frametime * 5 ) local fake_color = Color.new( (170 + (154 - 186) * self.skeet_modules.vars.fake.smooth_fill / 60) / 255, (0 + (255 - 0) * self.skeet_modules.vars.fake.smooth_fill / 60) / 255, (16 + (0 - 16) * self.skeet_modules.vars.fake.smooth_fill / 60) / 255, 1 ) table.insert(indicator_list, { type = "circle", fl_text = "FAKE", fl_color = fake_color, x_pos = is_enabled(0) and 15 or "", y_pos = 0, size = 7, color = fake_color, value = self.skeet_modules.vars.fake.smooth_fill * 6.4 }) if is_enabled(1) then local hits = self.skeet_modules.vars.shot_stats.hits local misses = self.skeet_modules.vars.shot_stats.misses local all_shots = self.skeet_modules.vars.shot_stats.all_shots local selected_style = menu_database.handler.elements["Hit/miss type"] if selected_style == 0 then if all_shots > 0 then local result_stats = ("%.1f"):format((hits / all_shots) * 100) local result_text = ("%s/%s (%s)"):format(hits, all_shots, result_stats) table.insert(indicator_list, { type = "text", text = result_text, color = Color.RGBA(255, 255, 255, 255) }) end else local hard_math = math.floor((hits / all_shots) * 100) if hard_math ~= hard_math then hard_math = 100 end local result_stats = ("%s%%"):format(hard_math) local result_text = ("%s/%s"):format(misses, result_stats) table.insert(indicator_list, { type = "text", text = result_text, color = Color.RGBA(255, 255, 255, 255) }) end end table.insert(indicator_list, { type = "text", text = is_enabled(2) and get_text_fakelag() or "", color = Color.RGBA(255, 255, 255, 255) }) table.insert(indicator_list, { type = "text", text = (is_enabled(3) and self.skeet_modules.directories.isBaim:GetInt() == 2) and "BODY" or "", color = Color.RGBA(255, 255, 255, 255) }) local isDT = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool() local binds = Cheat.GetBinds() local isDMG, curDMG, isPing = false, 0, false for i = 1, #binds do local bind = binds if bind:IsActive() then if bind:GetName() == "Minimum Damage" then isDMG = true curDMG = bind:GetValue() end if bind:GetName() == "Fake Ping" then isPing = true end end end local current_state = my_index:GetState() if not current_state then return end table.insert(indicator_list, { type = "text", text = is_enabled(4) and "EX" or "", color = (isDT and current_state == "IN AIR") and Color.RGBA(132, 195, 16, 255) or Color.RGBA(208, 208, 20, 255) }) local damage_type = menu_database.handler.elements["Damage type"] table.insert(indicator_list, { type = "text", text = (is_enabled(5) and isDMG) and ( damage_type == 0 and ("Damage: %s"):format(curDMG) or damage_type == 1 and ("DMG: %s"):format(curDMG) or damage_type == 2 and tostring(curDMG) or "" ) or "", color = ( damage_type == 0 and Color.RGBA(255, 255, 255, 255) or damage_type == 1 and Color.RGBA(255, 255, 255, 150) or Color.RGBA(255, 255, 255, 255) ) }) local isDA = menu_database.handler.elements["Enable dormant aimbot"] table.insert(indicator_list, { type = "text", text = (is_enabled(6) and isDA) and "DA" or "", color = Color.RGBA(132, 195, 16, 255) }) local get_ping_color = function() local ping = EntityList.GetPlayerResource():GetProp("DT_CSPlayerResource", "m_iPing")[2] local color = Color.RGBA( math.floor(255 - ((ping / 189 * 60) * 2.29824561404)), math.floor((ping / 189 * 60) * 2.42105263158), math.floor((ping / 189 * 60) * 0.22807017543), 255 ) return color end table.insert(indicator_list, { type = "text", text = (is_enabled(7) and isPing) and "PING" or "", color = get_ping_color() }) if my_index:GetState() == "IN AIR" then self.skeet_modules.vars.lag_compensation.is_lc = true self.skeet_modules.vars.lag_compensation.timer = GlobalVars.curtime + 0.1 else if self.skeet_modules.vars.lag_compensation.timer > GlobalVars.curtime then self.skeet_modules.vars.lag_compensation.is_lc = true else self.skeet_modules.vars.lag_compensation.is_lc = false end end table.insert(indicator_list, { type = "text", text = (is_enabled(8) and self.skeet_modules.vars.lag_compensation.is_lc) and "LC" or "", color = my_index:GetVelocity() < 285 and Color.RGBA(255, 0, 0, 255) or Color.RGBA(132, 195, 16, 255) }) local isFD = Menu.FindVar("Aimbot", "Anti Aim", "Misc", "Fake Duck"):GetBool() table.insert(indicator_list, { type = "text", text = (is_enabled(9) and isFD) and "DUCK" or "", color = Color.RGBA(255, 255, 255, 255) }) if is_enabled(10) then local c4 = EntityList.GetEntitiesByClassID(129)[1] if c4 then if c4:GetProp("m_bBombTicking") and not c4:GetProp("m_bBombDefused") then local get_damage = function() local armor = my_index:GetProp("m_ArmorValue") local health = my_index:GetProp("m_iHealth") local c4_origin = c4:GetRenderOrigin() local my_origin = my_index:GetRenderOrigin() local distance = my_origin:DistTo(c4_origin) local a, b, c = 450.7, 75.68, 789.2 local d = (distance - b) / c local damage = a * math.exp(-d * d) if armor > 0 then local new_damage = damage * 0.5 local armor_damage = (damage - new_damage) * 0.5 if armor_damage > armor then armor = armor * (1 / .5) new_damage = damage - armor_damage end damage = new_damage end return ({ text = math.ceil(damage) >= health and "FATAL" or ("-%s HP"):format(math.ceil(damage)), color = math.ceil(damage) >= health and Color.RGBA(255, 0, 0, 255) or Color.RGBA(210, 216, 112, 255) }) end local current_site = self.skeet_modules.vars.bomb_info.bombsite % 2 == 1 and "B" or "A" local timer = c4:GetProp("m_flC4Blow") - GlobalVars.curtime if timer > 0.1 then local plant_info = ("%s - %ss"):format(current_site, ("%.1f"):format(timer)) table.insert(indicator_list, { type = "text", text = plant_info, color = Color.RGBA(255, 255, 255, 255) }) local health_info = get_damage() table.insert(indicator_list, { type = "text", text = health_info.text, color = health_info.color }) if self.skeet_modules.vars.bomb_info.is_defusing then local defuse_timer = c4:GetProp("m_flDefuseCountDown") - GlobalVars.curtime local defuse_length = c4:GetProp("m_flDefuseLength") local defuse_bar_length = ((screen_size.y - 50) / defuse_length) * defuse_timer local bar_color = timer > defuse_length and Color.RGBA(58, 191, 54, 120) or Color.RGBA(252, 18, 19, 120) Render.BoxFilled( Vector2.new(0, 0), Vector2.new(10, screen_size.y), Color.RGBA(25, 25, 25, 120) ) Render.BoxFilled( Vector2.new(0, screen_size.y - defuse_bar_length), Vector2.new(10, screen_size.y), bar_color ) Render.Box( Vector2.new(0, 0), Vector2.new(10, screen_size.y), Color.RGBA(25, 25, 25, 120) ) end end end end if self.skeet_modules.vars.bomb_info.is_planting then local current_site = self.skeet_modules.vars.bomb_info.bombsite % 2 == 1 and "B" or "A" local frac = all_utils.easings.clamp(3.125 - (3.125 + self.skeet_modules.vars.bomb_info.plant_time - GlobalVars.curtime), 0, 3.125) table.insert(indicator_list, { type = "circle", fl_text = ("Bombsite %s"):format(current_site), fl_color = Color.RGBA(234, 209, 138, 255), x_pos = 16, y_pos = 0, size = 8, color = Color.RGBA(255, 255, 255, 255), value = (frac / 3.3) * 360 }) end end table.insert(indicator_list, { type = "text", text = (is_enabled(11) and Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool()) and "DT" or "", color = Exploits.GetCharge() == 1 and Color.RGBA(255, 255, 255, 255) or Color.RGBA(255, 0, 0, 255) }) for k, indicator in ipairs(indicator_list) do if indicator.type == "text" then if indicator.text ~= nil and indicator.text ~= "" then render_indicator( indicator.text, indicator.color, add_y ) end end if indicator.type == "circle" then if indicator.x_pos ~= "" then render_indicator( indicator.fl_text, indicator.fl_color, add_y ) render_circle( indicator.fl_text, indicator.x_pos, indicator.y_pos, add_y, indicator.size, indicator.color, indicator.value ) end end if (indicator.text ~= nil and indicator.text ~= "") or (indicator.type == "circle" and indicator.x_pos ~= "") then add_y = add_y - 35 end end end end end end, thirdperson_animations = function() if menu_database.handler.elements["Enable indicator list"] then if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 5)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then Cheat.SetThirdPersonAnim(false) end else Cheat.SetThirdPersonAnim(true) end else Cheat.SetThirdPersonAnim(true) end end, hitmarker_modules = { hitmarkers = {}, on_registered_shot = function(self, shot) if menu_database.handler.elements["Enable indicator list"] then if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 6)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then if shot.reason == 0 then table.insert(self.hitmarkers, {timer = GlobalVars.realtime, alpha = 0}) end end end end end }, crosshair_hitmarker = function(self) if menu_database.handler.elements["Enable indicator list"] then if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 6)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then for i, info in ipairs(self.hitmarker_modules.hitmarkers) do if info.timer + 0.5 < GlobalVars.realtime then info.alpha = all_utils.easings.lerp( info.alpha, 0, GlobalVars.frametime * 15 ) else info.alpha = all_utils.easings.lerp( info.alpha, 255, GlobalVars.frametime * 15 ) end local alpha = math.floor(info.alpha) local color = menu_database.handler.references["Crosshair hitmarker color"].reference:Get() Render.Line( Vector2.new(screen_size.x / 2 - 5, screen_size.y / 2 - 5), Vector2.new(screen_size.x / 2 - 10, screen_size.y / 2 - 10), Color.new(color.r, color.g, color.b, alpha / 200) ) Render.Line( Vector2.new(screen_size.x / 2 + 5, screen_size.y / 2 - 5), Vector2.new(screen_size.x / 2 + 10, screen_size.y / 2 - 10), Color.new(color.r, color.g, color.b, alpha / 200) ) Render.Line( Vector2.new(screen_size.x / 2 + 5, screen_size.y / 2 + 5), Vector2.new(screen_size.x / 2 + 10, screen_size.y / 2 + 10), Color.new(color.r, color.g, color.b, alpha / 200) ) Render.Line( Vector2.new(screen_size.x / 2 - 5, screen_size.y / 2 + 5), Vector2.new(screen_size.x / 2 - 10, screen_size.y / 2 + 10), Color.new(color.r, color.g, color.b, alpha / 200) ) if info.timer + 1.5 < GlobalVars.realtime then table.remove(self.hitmarker_modules.hitmarkers, i) end end end end end end, script_start_modules = { show_one_time = false, timer = GlobalVars.realtime, smooth_y = screen_size.y - 100, alpha = 0, first_circle = 0, second_circle = 0, box_left = screen_size.x / 2, box_right = screen_size.x / 2, box_left_1 = screen_size.x / 2, box_right_1 = screen_size.x / 2 }, on_script_start = function(self) if not self.script_start_modules.show_one_time then local font = self.utils:get_font("Verdana", "12") local text = ("[half-life beta] Welcome back, %s! Successfully loaded half-life; build: beta; days left: lifetime."):format(Cheat.GetCheatUserName()) local text_size = Render.CalcTextSize(text, 12, font) self.script_start_modules.alpha = all_utils.easings.lerp( self.script_start_modules.alpha, 255, GlobalVars.frametime * 4 ) self.script_start_modules.first_circle = all_utils.easings.lerp( self.script_start_modules.first_circle, 275, GlobalVars.frametime * 5 ) self.script_start_modules.second_circle = all_utils.easings.lerp( self.script_start_modules.second_circle, -95, GlobalVars.frametime * 3 ) self.script_start_modules.box_left = all_utils.easings.lerp( self.script_start_modules.box_left, screen_size.x / 2 - text_size.x / 2 - 2, GlobalVars.frametime * 6 ) self.script_start_modules.box_right = all_utils.easings.lerp( self.script_start_modules.box_right, screen_size.x / 2 + text_size.x / 2 + 4, GlobalVars.frametime * 6 ) self.script_start_modules.box_left_1 = all_utils.easings.lerp( self.script_start_modules.box_left_1, screen_size.x / 2 - text_size.x / 2 - 2, GlobalVars.frametime * 6 ) self.script_start_modules.box_right_1 = all_utils.easings.lerp( self.script_start_modules.box_right_1, screen_size.x / 2 + text_size.x / 2 + 4, GlobalVars.frametime * 6 ) if self.script_start_modules.timer + 3.8 < GlobalVars.realtime then self.script_start_modules.first_circle = all_utils.easings.lerp( self.script_start_modules.first_circle, 0, GlobalVars.frametime * 1 ) self.script_start_modules.second_circle = all_utils.easings.lerp( self.script_start_modules.second_circle, 0, GlobalVars.frametime * 1 ) self.script_start_modules.box_left = all_utils.easings.lerp( self.script_start_modules.box_left, screen_size.x / 2, GlobalVars.frametime * 1 ) self.script_start_modules.box_right = all_utils.easings.lerp( self.script_start_modules.box_right, screen_size.x / 2, GlobalVars.frametime * 1 ) self.script_start_modules.box_left_1 = all_utils.easings.lerp( self.script_start_modules.box_left_1, screen_size.x / 2, GlobalVars.frametime * 1 ) self.script_start_modules.box_right_1 = all_utils.easings.lerp( self.script_start_modules.box_right_1, screen_size.x / 2, GlobalVars.frametime * 1 ) end if self.script_start_modules.timer + 4 < GlobalVars.realtime then self.script_start_modules.smooth_y = all_utils.easings.lerp( self.script_start_modules.smooth_y, screen_size.y + 100, GlobalVars.frametime * 4 ) self.script_start_modules.alpha = all_utils.easings.lerp( self.script_start_modules.alpha, 0, GlobalVars.frametime * 8 ) end local add_y = math.floor(self.script_start_modules.smooth_y) local alpha = math.floor(self.script_start_modules.alpha) local first_circle = math.floor(self.script_start_modules.first_circle) local second_circle = math.floor(self.script_start_modules.second_circle) local left_box = math.floor(self.script_start_modules.box_left) local right_box = math.floor(self.script_start_modules.box_right) local left_box_1 = math.floor(self.script_start_modules.box_left_1) local right_box_1 = math.floor(self.script_start_modules.box_right_1) local rgb = self.utils.hsv_to_rgb(GlobalVars.realtime / 4, 1, 1) local second_gradient = Color.new(rgb.b, rgb.r, rgb.g, 1) local third_gradient = Color.new(rgb.g, rgb.b, rgb.r, 1) Render.BoxFilled( Vector2.new(screen_size.x / 2 - text_size.x / 2 - 11, add_y - 26), Vector2.new(screen_size.x / 2 + text_size.x / 2 + 11, add_y - 4), Color.RGBA(17, 17, 17, alpha - 65), 90 ) Render.Circle( Vector2.new(screen_size.x / 2 - text_size.x / 2 - 2, add_y - 15), 10, 90, second_gradient, 2, 90, first_circle ) Render.Circle( Vector2.new(screen_size.x / 2 + text_size.x / 2 + 2, add_y - 15), 10, 90, third_gradient, 2, 90, second_circle ) for i = 1, 1 do for k = 1, 2 do Render.GradientBoxFilled( Vector2.new(left_box, add_y - 7 + i), Vector2.new(screen_size.x / 2, add_y - 5.5 + i), second_gradient, second_gradient, second_gradient, second_gradient ) Render.GradientBoxFilled( Vector2.new(right_box, add_y - 7 + i), Vector2.new(screen_size.x / 2, add_y - 5.5 + i), third_gradient, second_gradient, third_gradient, second_gradient ) Render.GradientBoxFilled( Vector2.new(screen_size.x / 2, add_y - 22.7 - i), Vector2.new(left_box_1, add_y - 24.5 - i), second_gradient, second_gradient, second_gradient, second_gradient ) Render.GradientBoxFilled( Vector2.new(screen_size.x / 2, add_y - 22.7 - i), Vector2.new(right_box_1, add_y - 24.5 - i), second_gradient, third_gradient, second_gradient, third_gradient ) end end self.utils.draw_shadow( 2, text, screen_size.x / 2 - text_size.x / 2, add_y - 21, Color.RGBA(255, 255, 255, alpha - 70), 12, font, false, Color.RGBA(0, 0, 0, alpha) ) if self.script_start_modules.timer + 5 < GlobalVars.realtime then self.script_start_modules.timer = GlobalVars.realtime self.script_start_modules.show_one_time = true end end end, hitlog_modules = { hitlogs = {}, count_shots = 0, on_registered_shot = function(self, shot) if menu_database.handler.elements["Enable hitlogs"] then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() then self.count_shots = self.count_shots + 1 if self.count_shots > 99 then self.count_shots = 0 end local other_info = function() local index = EntityList.GetClientEntity(shot.target_index) if not index then return end local target = index:GetPlayer() local name = target:GetName() local get_hitbox = function() local hitgroups = { "head", "neck", "pelvis", "stomach", "lower chest", "chest", "upper chest", "right leg", "left leg", "right leg", "left leg", "right foot", "left foot", "right hand", "left hand", "right arm", "right arm", "left arm", "left arm" } local hitboxes = {0, 3, 2, 16, 18, 11, 10, 0} local hitbox = hitboxes[shot.hitgroup] if hitbox == nil then hitbox = 3 end local hitbox = hitgroups[hitbox + 1] local wanted_hitgroup = hitgroups[shot.wanted_hitgroup] return ({ hitbox = hitbox, wanted = wanted_hitgroup }) end local damage = { hit = shot.damage, wanted = shot.wanted_damage, remain = target:GetProp("m_iHealth") - shot.damage } if damage.remain <= 0 then damage.remain = 0 end local hit_hitchance = shot.hitchance local is_missmatch = damage.hit ~= damage.wanted and true or false local backtrack = shot.backtrack local reasons = {"resolver", "spread", "occlusion", "prediction error"} local miss_reason = reasons[shot.reason] local second_correction = Utils.RandomInt(-15, 15) local first_correction = 0 if 1 - math.floor(hit_hitchance / 100) == 0 then first_correction = 1 elseif 1 - math.floor(hit_hitchance / 100) == 1 then first_correction = 2 else first_correction = 3 end return ({ name = name, hitbox = get_hitbox().hitbox, wanted_hitbox = get_hitbox().wanted, shot = self.count_shots, damage = damage.hit, wanted_damage = damage.wanted, remain_damage = damage.remain, hitchance = hit_hitchance, missmatch = is_missmatch, backtrack = backtrack, miss_reason = miss_reason, first_correction = first_correction, second_correction = second_correction }) end local text = "" local text_color = Color.RGBA(255, 255, 255, 255) local info = other_info() if shot.reason == 0 then if info.missmatch then text = string.format( "Registered %sth shot in %s's %s for %s damage [angle: 0.%s°, %s:%s°] ( hitchance: %s | history(Δ): %s | %s health | missmatch: [dmg: %s] )", info.shot, info.name, info.hitbox, info.damage, Utils.RandomInt(0, 60), info.first_correction, info.second_correction, info.hitchance, info.backtrack, info.remain_damage, info.wanted_damage ) else text = string.format( "Registered %sth shot in %s's %s for %s damage [angle: 0.%s°, %s:%s°] ( hitchance: %s | history(Δ): %s | %s health )", info.shot, info.name, info.hitbox, info.damage, Utils.RandomInt(0, 60), info.first_correction, info.second_correction, info.hitchance, info.backtrack, info.remain_damage ) end else text = string.format( "Missed %sth shot at %s's %s due to %s [angle: 0.%s°, %s:%s°] ( damage: %s | hitchance: %s | history(Δ): %s | %s health )", info.shot, info.name, info.wanted_hitbox, info.miss_reason, Utils.RandomInt(0, 60), info.first_correction, info.second_correction, info.wanted_damage, info.hitchance, info.backtrack, info.remain_damage ) end table.insert(self.hitlogs, { text = text, time = GlobalVars.realtime, color = text_color }) colored_print(Color.RGBA(255, 255, 102, 255), "[half-life] ") print(text) end end end, get_addictional_hits = function(self, e) if menu_database.handler.elements["Enable hitlogs"] then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() then if e:GetName() ~= "player_hurt" then return end 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 local victim_index = EntityList.GetPlayerForUserID(e:GetInt("userid")) if not victim_index then return end local target_name = victim_index:GetName() local health_damage = e:GetInt("dmg_health") local remaining_damage = e:GetInt("health") local weapon = e:GetString("weapon") local text = ( weapon == "hegrenade" and ("Naded %s for %s (%s remaining)"):format( target_name, health_damage, remaining_damage ) or weapon == "inferno" and ("Burned %s for %s (%s remaining)"):format( target_name, health_damage, remaining_damage ) or weapon == "knife" and ("Knifed %s for %s (%s remaining)"):format( target_name, health_damage, remaining_damage ) or nil ) if text ~= nil then table.insert(self.hitlogs, { text = text, time = GlobalVars.realtime, color = Color.RGBA(255, 255, 255, 255) }) colored_print(Color.RGBA(255, 255, 102, 255), "[half-life] ") print(text) end end end end }, hitlogs = function(self) if menu_database.handler.elements["Enable hitlogs"] then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() then local x, y = 5, 5 for k, information in ipairs(self.hitlog_modules.hitlogs) do if information.text and information.time and information.color then local text = information.text local font = self.utils:get_font("Lucida Console", "10", "r") local color = information.color self.utils.draw_shadow( 0, text, x, y, color, 10, font, false, Color.RGBA(0, 0, 0, 255) ) y = y + 15 if information.time + 3.8 < GlobalVars.realtime then table.remove(self.hitlog_modules.hitlogs, k) end end end end end end, execute_sauron_shots = function(self, shot) if menu_database.handler.elements["Enable indicator list"] then if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 7)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then local hitgroups = { "head", "neck", "pelvis", "stomach", "lower chest", "chest", "upper chest", "right leg", "left leg", "right leg", "left leg", "right foot", "left foot", "right hand", "left hand", "right arm", "right arm", "left arm", "left arm" } local all_hitgroups = {0, 3, 2, 16, 18, 11, 10, 0} local current_hitgroups = all_hitgroups[shot.hitgroup] if not current_hitgroups then current_hitgroups = 3 end local hitbox = hitgroups[current_hitgroups + 1] local target_name = EntityList.GetClientEntity(shot.target_index):GetPlayer():GetName() local hit_damage = shot.damage local hit_hitchance = shot.hitchance local wanted_damage = shot.wanted_damage local wanted_hitgroup = hitgroups[shot.wanted_hitgroup] local delta = self.utils.get_desync(0) local backtrack = shot.backtrack local spread = string.format("%.2f", shot.spread_degree) local reasons = {"resolver", "spread", "occlusion", "prediction error"} local miss_reason = reasons[shot.reason] local text = ( shot.reason == 0 and ("Registered shot at %s's %s for %s damage [angle: %s°] (hitchance: %s | history: %s)"):format( target_name, hitbox, hit_damage, spread, hit_hitchance, backtrack ) or shot.reason ~= 0 and ( "Missed shot at %s's %s due to %s [delta: %s, bt=%s, spread: %s°]" ):format( target_name, wanted_hitgroup, miss_reason, delta, backtrack, spread ) or "" ) table.insert(sauron_text, { text = text, timer = GlobalVars.realtime, smooth_y = screen_size.y + 100, alpha = 0, first_circle = 0, second_circle = 0, box_left = screen_size.x / 2, box_right = screen_size.x / 2, box_left_1 = screen_size.x / 2, box_right_1 = screen_size.x / 2 }) end end end end, notifications = function(self) if menu_database.handler.elements["Enable indicator list"] then if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 7)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then if anti_aimbotting_functions.anti_bruteforce.vars.phase_state then table.insert(sauron_text, { text = "Switched angle due to shot", timer = GlobalVars.realtime, smooth_y = screen_size.y + 100, alpha = 0, first_circle = 0, second_circle = 0, box_left = screen_size.x / 2, box_right = screen_size.x / 2, box_left_1 = screen_size.x / 2, box_right_1 = screen_size.x / 2 }) anti_aimbotting_functions.anti_bruteforce.vars.phase_state = false end local y = screen_size.y - 100 for i, info in ipairs(sauron_text) do if i > 3 then table.remove(sauron_text, i) end if info.text ~= nil and info.text ~= "" then local font = self.utils:get_font("Verdana", "12") local text_size = Render.CalcTextSize( info.text, 12, font ) if info.timer + 3.8 < GlobalVars.realtime then info.first_circle = all_utils.easings.lerp( info.first_circle, 0, GlobalVars.frametime * 1 ) info.second_circle = all_utils.easings.lerp( info.second_circle, 0, GlobalVars.frametime * 1 ) info.box_left = all_utils.easings.lerp( info.box_left, screen_size.x / 2, GlobalVars.frametime * 1 ) info.box_right = all_utils.easings.lerp( info.box_right, screen_size.x / 2, GlobalVars.frametime * 1 ) info.box_left_1 = all_utils.easings.lerp( info.box_left_1, screen_size.x / 2, GlobalVars.frametime * 1 ) info.box_right_1 = all_utils.easings.lerp( info.box_right_1, screen_size.x / 2, GlobalVars.frametime * 1 ) info.smooth_y = all_utils.easings.lerp( info.smooth_y, screen_size.y + 100, GlobalVars.frametime * 2 ) info.alpha = all_utils.easings.lerp( info.alpha, 0, GlobalVars.frametime * 4 ) else info.alpha = all_utils.easings.lerp( info.alpha, 255, GlobalVars.frametime * 4 ) info.smooth_y = all_utils.easings.lerp( info.smooth_y, y, GlobalVars.frametime * 4 ) info.first_circle = all_utils.easings.lerp( info.first_circle, 275, GlobalVars.frametime * 5 ) info.second_circle = all_utils.easings.lerp( info.second_circle, -95, GlobalVars.frametime * 3 ) info.box_left = all_utils.easings.lerp( info.box_left, screen_size.x / 2 - text_size.x / 2 - 2, GlobalVars.frametime * 6 ) info.box_right = all_utils.easings.lerp( info.box_right, screen_size.x / 2 + text_size.x / 2 + 4, GlobalVars.frametime * 6 ) info.box_left_1 = all_utils.easings.lerp( info.box_left_1, screen_size.x / 2 - text_size.x / 2 - 2, GlobalVars.frametime * 6 ) info.box_right_1 = all_utils.easings.lerp( info.box_right_1, screen_size.x / 2 + text_size.x / 2 + 4, GlobalVars.frametime * 6 ) end local add_y = math.floor(info.smooth_y) local alpha = math.floor(info.alpha) local first_circle = math.floor(info.first_circle) local second_circle = math.floor(info.second_circle) local left_box = math.floor(info.box_left) local right_box = math.floor(info.box_right) local left_box_1 = math.floor(info.box_left_1) local right_box_1 = math.floor(info.box_right_1) local rgb = self.utils.hsv_to_rgb(GlobalVars.realtime / 4, 1, 1) local second_gradient = Color.new(rgb.b, rgb.r, rgb.g, 1) local third_gradient = Color.new(rgb.g, rgb.b, rgb.r, 1) Render.BoxFilled( Vector2.new(screen_size.x / 2 - text_size.x / 2 - 13, add_y - 26), Vector2.new(screen_size.x / 2 + text_size.x / 2 + 13, add_y - 4), Color.RGBA(17, 17, 17, alpha - 65), 90 ) Render.Circle( Vector2.new(screen_size.x / 2 - text_size.x / 2 - 4, add_y - 15), 10, 90, second_gradient, 2, 90, first_circle ) Render.Circle( Vector2.new(screen_size.x / 2 + text_size.x / 2 + 4, add_y - 15), 10, 90, third_gradient, 2, 90, second_circle ) for i = 1, 1 do for k = 1, 2 do Render.GradientBoxFilled( Vector2.new(left_box - 2, add_y - 7 + i), Vector2.new(screen_size.x / 2, add_y - 5.5 + i), second_gradient, second_gradient, second_gradient, second_gradient ) Render.GradientBoxFilled( Vector2.new(right_box + 2, add_y - 7 + i), Vector2.new(screen_size.x / 2, add_y - 5.5 + i), third_gradient, second_gradient, third_gradient, second_gradient ) Render.GradientBoxFilled( Vector2.new(screen_size.x / 2, add_y - 23 - i), Vector2.new(left_box_1 - 1, add_y - 25 - i), second_gradient, second_gradient, second_gradient, second_gradient ) Render.GradientBoxFilled( Vector2.new(screen_size.x / 2, add_y - 23 - i), Vector2.new(right_box_1 + 1, add_y - 25 - i), second_gradient, third_gradient, second_gradient, third_gradient ) end end self.utils.draw_shadow( 0, info.text, screen_size.x / 2 - text_size.x / 2, add_y - 21, Color.RGBA(255, 255, 255, alpha), 12, font, false, Color.RGBA(0, 0, 0, alpha) ) y = y - 30 if info.timer + 4 < GlobalVars.realtime then table.remove(sauron_text, i) end end end end end end end, keybind_modules = { vars = { keybinds_alpha = {}, keybinds_y = {}, width = 0, is_draggable = false, cursor_last_pos = Vector2.new(0, 0) } }, keybinds = function(self) if menu_database.handler.elements["Enable keybinds"] then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then local x = menu_database.handler.elements["Keybinds x-adding"] local y = menu_database.handler.elements["Keybinds y-adding"] local max_width = 0 local font = self.utils:get_font("Verdana", "11", "r") local render_container = function(x, y, w) local color = menu_database.handler.references["Keybinds color"].reference:Get() local name_size = Render.CalcTextSize("keybinds", 11, font) local height = 18 local line_height = 1.5 local render_rounded_line = function() Render.BoxFilled( Vector2.new(x - 70, y), Vector2.new(x + w, y + height), Color.RGBA(17, 17, 17, math.floor(color.a * 255)) ) Render.Circle( -- right Vector2.new(x + w - 4, y + line_height + 2), 5, 90, Color.new(color.r, color.g, color.b, 1), 2, 270, 370 ) Render.Circle( -- left Vector2.new(x - 66, y + line_height + 2), 5, 90, Color.new(color.r, color.g, color.b, 1), 2, 270, 170 ) Render.BoxFilled( Vector2.new(x - 66, y), Vector2.new(x + w - 4, y - line_height - 0.5), Color.new(color.r, color.g, color.b, 1) ) Render.GradientBoxFilled( Vector2.new(x + w - 0.2, y + 4), Vector2.new(x + w + 1.5, y + 10), Color.new(color.r, color.g, color.b, 1), Color.new(color.r, color.g, color.b, 1), Color.new(color.r, color.g, color.b, 1), Color.new(color.r, color.g, color.b, 0.6) ) Render.GradientBoxFilled( Vector2.new(x - 69.8, y + 4), Vector2.new(x - 71.5, y + 10), Color.new(color.r, color.g, color.b, 1), Color.new(color.r, color.g, color.b, 1), Color.new(color.r, color.g, color.b, 1), Color.new(color.r, color.g, color.b, 0.6) ) end render_rounded_line() self.utils.draw_shadow( 2, "keybinds", x - 35 + w / 2 - name_size.x / 2, y + 2, Color.RGBA(255, 255, 255, 255), 11, font, false, Color.RGBA(0, 0, 0, 205) ) end local binds = Cheat.GetBinds() local add_y = 0 for i = 1, #binds do table.insert(self.keybind_modules.vars.keybinds_alpha, 0) local bind = binds local yaw_base = Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Base"):Get() local isFS = yaw_base == 5 local bind_name = bind:GetName() bind_name = bind_name:gsub("Double Tap", "Double tap") bind_name = bind_name:gsub("Fake Duck", "Duck peek assist") bind_name = bind_name:gsub("Auto Peek", "Quick peek assist") bind_name = isFS and bind_name:gsub("Yaw Base", "Freestanding") or bind_name:gsub("Yaw Base", "") add_y = add_y + 13 if bind_name ~= "" then if bind:IsActive() then self.keybind_modules.vars.keybinds_alpha = all_utils.easings.lerp( self.keybind_modules.vars.keybinds_alpha, 255, GlobalVars.frametime * 8 ) else self.keybind_modules.vars.keybinds_alpha = all_utils.easings.lerp( self.keybind_modules.vars.keybinds_alpha, 0, GlobalVars.frametime * 8 ) end local render_binds = function(binds, name) local bind_state = binds:GetMode() == 1 and "[holding]" or "[toggled]" local bind_name = name local bind_state_size = Render.CalcTextSize(bind_state, 11, font) local bind_name_size = Render.CalcTextSize(bind_name, 11, font) local smooth_alpha = math.floor(self.keybind_modules.vars.keybinds_alpha) local width = math.floor(self.keybind_modules.vars.width) self.utils.draw_shadow( 1, bind_name, x - 63, y + 7 + add_y, Color.RGBA(255, 255, 255, smooth_alpha), 11, font, false, Color.RGBA(0, 0, 0, smooth_alpha - 50) ) self.utils.draw_shadow( 1, bind_state, x + (width - bind_state_size.x) - 5, y + 7 + add_y, Color.RGBA(255, 255, 255, smooth_alpha), 11, font, false, Color.RGBA(0, 0, 0, smooth_alpha - 50) ) local bind_width = bind_state_size.x + bind_name_size.x - 40 local length = 75 if bind_width > length then if bind_width > max_width then max_width = bind_width end end end render_binds(bind, bind_name) else add_y = add_y - 13 end end self.keybind_modules.vars.width = math.max(75, max_width) if not Cheat.IsMenuVisible() then self.keybind_modules.vars.is_draggable = false end local width = math.floor(self.keybind_modules.vars.width) if Cheat.IsMenuVisible() or #binds > 0 then render_container(x, y, width, 18) local mouse = Cheat.GetMousePos() if Cheat.IsKeyDown(0x1) then if not self.keybind_modules.vars.is_draggable then if mouse.x >= x - 70 and mouse.y >= y and mouse.x <= x + width and mouse.y <= y + 18 then self.keybind_modules.vars.is_draggable = true end else local x_pos = x + (mouse.x - self.keybind_modules.vars.cursor_last_pos.x) local y_pos = y + (mouse.y - self.keybind_modules.vars.cursor_last_pos.y) menu_database:set_value("Keybinds x-adding", math.floor(x_pos)) menu_database:set_value("Keybinds y-adding", math.floor(y_pos)) end else self.keybind_modules.vars.is_draggable = false end self.keybind_modules.vars.cursor_last_pos = mouse end end end end, solus_watermark_modules = { vars = { width = 0, current_time = GlobalVars.curtime, current_fps = 0, is_draggable = false, cursor_last_pos = Vector2.new(0, 0) } }, fps_counter = 0, solus_watermark = function(self) if menu_database.handler.elements["Enable watermark"] then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then local x = menu_database.handler.elements["Watermark x-adding"] local y = menu_database.handler.elements["Watermark y-adding"] local utils = { get_ping = function() local netchann_info = EngineClient.GetNetChannelInfo() if not netchann_info then return "0" end local latency = netchann_info:GetLatency(0) return string.format("%1.f", math.max(0.0, latency) * 1000.0) end, get_current_time = function() local seconds = math.floor(Utils.UnixTime() / 1000) local hours = math.floor((seconds / 3600 + 3) % 24) local minutes = math.floor(seconds / 60 % 60) return string.format("%02d:%02d:%02d", hours, minutes, (seconds % 60)) end, get_ticks = function() return math.floor(1.0 / GlobalVars.interval_per_tick) end, get_fps = function() local get_fps = function() self.fps_counter = 0.9 * self.fps_counter + (1.0 - 0.9) * GlobalVars.absoluteframetime return math.floor((1.0 / self.fps_counter) + 0.5) end local current_fps = get_fps() if self.solus_watermark_modules.vars.current_time + 0.3 < GlobalVars.curtime then self.solus_watermark_modules.vars.current_fps = current_fps self.solus_watermark_modules.vars.current_time = GlobalVars.curtime end return self.solus_watermark_modules.vars.current_fps end } local max_width = 0 local font = self.utils:get_font("Verdana", "11", "r") local name = Cheat.GetCheatUserName() local ticks = utils.get_ticks() local fps = utils.get_fps() local ping = utils.get_ping() local time = utils.get_current_time() local render_container = function() local text = ("%s %s fps delay: %sms %s tick %s"):format(name, fps, ping, ticks, time) local text_size = Render.CalcTextSize(text, 11, font) local color = menu_database.handler.references["Watermark color"].reference:Get() local width = self.solus_watermark_modules.vars.width local start_position = x - 22 local render_rounded_line = function() Render.BoxFilled( Vector2.new(start_position, y - 8), Vector2.new(x + width + 53, y + text_size.y - 2), Color.RGBA(17, 17, 17, 85), 10 ) Render.BoxFilled( Vector2.new(start_position + 4, y - 10), Vector2.new(x + width + 47, y + text_size.y - 19), color ) Render.GradientBoxFilled( Vector2.new(x + width + 50.8, y + text_size.y - 15), Vector2.new(x + width + 52.4, y + text_size.y - 8), color, Color.new(color.r, color.g, color.b, 1), color, Color.new(color.r, color.g, color.b, 0.6) ) Render.GradientBoxFilled( Vector2.new(start_position, y + text_size.y - 15), Vector2.new(start_position - 1.7, y + text_size.y - 8), color, color, color, Color.new(color.r, color.g, color.b, color.a - 0.4) ) Render.Circle( -- right Vector2.new(x + width + 47, y + text_size.y - 15.2), 5, 90, color, 2, 270, 370 ) Render.Circle( -- left Vector2.new(start_position + 4, y + text_size.y - 15.2), 5, 90, color, 2, 270, 170 ) end render_rounded_line() self.utils.draw_shadow( 2, "half", x - 18, y - 6, color, 11, font, false, Color.RGBA(0, 0, 0, 205) ) self.utils.draw_shadow( 2, "-life [beta]", x, y - 6, Color.RGBA(255, 255, 255, 255), 11, font, false, Color.RGBA(0, 0, 0, 205) ) self.utils.draw_shadow( 2, text, x + 57, y - 6, Color.RGBA(255, 255, 255, 255), 11, font, false, Color.RGBA(0, 0, 0, 205) ) local max_width = 0 local text_width = text_size.x + 10 if text_width > 5 then if text_width > max_width then max_width = text_width end end self.solus_watermark_modules.vars.width = math.max(5, max_width) end render_container() if Cheat.IsMenuVisible() then local mouse = Cheat.GetMousePos() local width = math.floor(self.solus_watermark_modules.vars.width) if Cheat.IsKeyDown(0x1) then if not self.solus_watermark_modules.vars.is_draggable then if mouse.x >= x and mouse.y >= y - 10 and mouse.x <= x + width and mouse.y <= y + 11 then self.solus_watermark_modules.vars.is_draggable = true end else local x_pos = x + (mouse.x - self.solus_watermark_modules.vars.cursor_last_pos.x) local y_pos = y + (mouse.y - self.solus_watermark_modules.vars.cursor_last_pos.y) menu_database:set_value("Watermark x-adding", math.floor(x_pos)) menu_database:set_value("Watermark y-adding", math.floor(y_pos)) end else self.solus_watermark_modules.vars.is_draggable = false end self.solus_watermark_modules.vars.cursor_last_pos = mouse end else self.solus_watermark_modules.vars.current_time = GlobalVars.curtime end else self.solus_watermark_modules.vars.current_time = GlobalVars.curtime end end, weapons_in_scope = function(self) if menu_database.handler.elements["Enable weapons in scope"] then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then local is_scoped = my_index:GetProp("m_bIsScoped") if is_scoped then if Menu.FindVar("Visuals", "View", "Thirdperson", "Enable Thirdperson"):GetBool() then CVar.FindVar("fov_cs_debug"):SetInt(0) else CVar.FindVar("fov_cs_debug"):SetInt(90) end else CVar.FindVar("fov_cs_debug"):SetInt(0) end end else CVar.FindVar("fov_cs_debug"):SetInt(0) end end, damage_markers = { particles = {}, hitmarkers = {}, on_registered_shot = function(self, shot) if menu_database.handler.elements["Enable indicator list"] then if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 8)) ~= 0 then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then local index = EntityList.GetClientEntity(shot.target_index) if not index then return end local get_player = index:GetPlayer() if not get_player then return end if shot.reason == 0 then local damage = shot.damage if damage < 1 then return end local bullet_position = get_player:GetHitboxCenter(shot.hitgroup) if not bullet_position then bullet_position = get_player:GetRenderOrigin() bullet_position.y = bullet_position.y + 30 end bullet_position.x = (bullet_position.x - 10) + (math.random() * 20) bullet_position.y = (bullet_position.y - 10) + (math.random() * 20) bullet_position.z = (bullet_position.z - 15) + (math.random() * 30) table.insert(self.particles, { position = bullet_position, timer = GlobalVars.tickcount + 80, damage = damage, is_killed = get_player:GetProp("m_iHealth") - damage <= 0 and true or false }) table.insert(self.hitmarkers, { position = get_player:GetHitboxCenter(shot.hitgroup), timer = GlobalVars.realtime, alpha = 0, }) end end end end end, move_position = function(self) if menu_database.handler.elements["Enable indicator list"] then if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 8)) ~= 0 then if #self.particles > 0 then for k, information in pairs(self.particles) do local delta = information.timer - GlobalVars.tickcount if delta > 0 then information.position.z = information.position.z + 0.3 end end end end end end, on_round_prestart = function(self, e) if e:GetName() ~= "round_prestart" then return end self.particles = {} self.hitmarkers = {} end, on_self_connected = function(self, e) if e:GetName() ~= "player_connect_full" then return end self.particles = {} self.hitmarkers = {} end, load_markers_modules = function(self, e) self:on_round_prestart(e) self:on_self_connected(e) end }, draw_damage_markers = function(self) if menu_database.handler.elements["Enable indicator list"] then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 8)) ~= 0 then if #self.damage_markers.particles > 0 then for k, information in ipairs(self.damage_markers.particles) do if information.position and information.timer and (information.damage and information.damage > 0) then local position = Render.WorldToScreen(information.position) local time = math.floor(information.timer - GlobalVars.tickcount) if time > 255 then time = 255 end if (not(time < 0)) then local damage = information.damage .. "" local color = information.is_killed and Color.RGBA(255, 236, 132, 255) or Color.RGBA(255, 255, 255, 255) color.a = time local font = self.utils:get_font("Tahoma", "10") self.utils.draw_shadow( 1, damage, position.x, position.y, color, 10, font, false, Color.RGBA(0, 0, 0, 255) ) end end end end if #self.damage_markers.hitmarkers > 0 then for k, information in ipairs(self.damage_markers.hitmarkers) do if information.position and information.timer and information.alpha then local position = Render.WorldToScreen(information.position) if information.timer + 4 < GlobalVars.realtime then information.alpha = math.max(0, information.alpha - 2) else information.alpha = math.min(information.alpha + 3, 255) end local alpha = math.floor(information.alpha) local current_size = menu_database.handler.elements["Hitmarker size"] local current_mode = menu_database.handler.elements["Hitmarker mode"] local current_color = menu_database.handler.references["Hitmarker color"].reference:Get() local color = Color.new(current_color.r, current_color.g, current_color.b, alpha / 255) if current_mode == 0 then Render.Line(Vector2.new(position.x, position.y - current_size), position, color) Render.Line(Vector2.new(position.x - current_size, position.y), position, color) Render.Line(Vector2.new(position.x, position.y + current_size), position, color) Render.Line(Vector2.new(position.x + current_size, position.y), position, color) else Render.Line(position, Vector2.new(position.x - current_size, position.y - current_size), color) Render.Line(position, Vector2.new(position.x - current_size, position.y + current_size), color) Render.Line(position, Vector2.new(position.x + current_size, position.y + current_size), color) Render.Line(position, Vector2.new(position.x + current_size, position.y - current_size), color) end if information.timer + 5 < GlobalVars.realtime then table.remove(self.damage_markers.hitmarkers, k) end end end end end end end end, scope_cache = false, scope_time = 0, custom_scope = function(self) if menu_database.handler.elements["Enable custom scope"] then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then if not self.scope_cache then self.scope_cache = true end local is_scoped = my_index:GetProp("m_bIsScoped") if is_scoped then Menu.FindVar("Visuals", "View", "Camera", "Remove Scope"):SetInt(2) local initial_position = menu_database.handler.elements["Custom scope initial position"] local offset = menu_database.handler.elements["Custom scope offset"] if self.scope_time < initial_position / 2 + offset then self.scope_time = self.scope_time + 100 else self.scope_time = initial_position / 2 + offset end local color = menu_database.handler.references["Enable custom scope"].reference:GetColor() local col = Color.new(color.r, color.g, color.b, 0.05) local first_col = (function(a, b) if initial_position <= 30 then return b else return a end end)(color, col) local second_col = (function(a, b) if initial_position <= 30 then return a else return b end end)(color, col) local alpha_time = self.scope_time Render.GradientBoxFilled( Vector2.new(screen_size.x / 2 - 0.1, screen_size.y / 2 - math.min(initial_position, alpha_time)), Vector2.new( screen_size.x / 2 + 1, screen_size.y / 2 - math.min(initial_position, alpha_time) - math.min(offset, alpha_time) ), second_col, second_col, first_col, first_col ) -- upper Render.GradientBoxFilled( Vector2.new(screen_size.x / 2 - math.min(initial_position, alpha_time), screen_size.y / 2 - 0.1), Vector2.new( screen_size.x / 2 - math.min(initial_position, alpha_time) - math.min(offset, alpha_time), screen_size.y / 2 + 1 ), second_col, first_col, second_col, first_col ) -- left Render.GradientBoxFilled( Vector2.new(screen_size.x / 2 - 0.1, screen_size.y / 2 + math.min(initial_position, alpha_time)), Vector2.new( screen_size.x / 2 + 1, screen_size.y / 2 + math.min(initial_position, alpha_time) + math.min(offset, alpha_time) ), second_col, second_col, first_col, first_col ) -- down Render.GradientBoxFilled( Vector2.new(screen_size.x / 2 + math.min(initial_position, alpha_time), screen_size.y / 2 - 0.1), Vector2.new( screen_size.x / 2 + math.min(initial_position, alpha_time) + math.min(offset, alpha_time), screen_size.y / 2 + 1 ), second_col, first_col, second_col, first_col ) -- right else if self.scope_time > 0 then self.scope_time = self.scope_time - 100 else self.scope_time = 0 end end else if self.scope_cache then Menu.FindVar("Visuals", "View", "Camera", "Remove Scope"):SetInt(1) self.scope_cache = false end end else if self.scope_cache then Menu.FindVar("Visuals", "View", "Camera", "Remove Scope"):SetInt(1) self.scope_cache = false end end end, peek_arrows = function(self) if menu_database.handler.elements["Enable peek arrows"] then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then local font = self.utils:get_font("Verdana", "21", "b") local color = menu_database.handler.references["Enable peek arrows"].reference:GetColor() local inverted = AntiAim.GetInverterState() self.utils.draw_shadow( 3, ">", screen_size.x / 2 + 50, screen_size.y / 2 - 12, inverted and color or Color.RGBA(255, 255, 255, 255), 21, font, false, Color.RGBA(0, 0, 0, 170) ) self.utils.draw_shadow( 3, "<", screen_size.x / 2 - 65, screen_size.y / 2 - 12, not inverted and color or Color.RGBA(255, 255, 255, 255), 21, font, false, Color.RGBA(0, 0, 0, 170) ) end end end, load_indicators = function(self) self:under_crosshair() self:watermark() self:minimum_damage() self:skeet_autopeek() self:side_skeet_indicators() self:thirdperson_animations() self:crosshair_hitmarker() self:on_script_start() self:hitlogs() self:notifications() self:keybinds() self:solus_watermark() self:weapons_in_scope() self.damage_markers:move_position() self:draw_damage_markers() self:custom_scope() self:peek_arrows() end } -- @endregion -- @region: all miscellaneous functions local miscellaneous_functions = { trashtalk = function(e) if menu_database.handler.elements["Enable trashtalk"] then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() then if e:GetName() ~= "player_death" then return end 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 local phrases = { "Найс дед скачай конфиг от алексбомбера", "Made your mom proud,at payhip.com/Ivanovo", "Прости shoppy.gg/@Ivanovo", "Ничего страшного ты хорошо играешь", "Мне друг (витма) (бигнейм) сказал в таких случаях 1 писать но я добрый так что не буду", "Блин друг прости пожалуйста не увидел", "Я с конфигом от кеннеди", "Была бы газелька с салом выиграл бы", "Ты все равно лучше меня не расстраивайся", "Опять ты, прости я без ников убил", "Нифига смачный бектрек", "Был бы пелучкорд тапнул бы", "Сори что убил я просто отвернулся и не увидел", "laff u suck AHAHAHAHAAH", "Посаны а как вам микрофон яспер мо о глод у фипа такой вроде", "Какой у тебя мейн Ник ? Мне сказали это важна чтоб медия сделать, ты витма ?", "by Kennedy hvh boss", "спать покемон ушастый" } local get_phrase = phrases[Utils.RandomInt(1, #phrases)]:gsub('\"', '') EngineClient.ExecuteClientCmd((' say "%s"'):format(get_phrase)) end end end, hitsounds = function(self, e) if menu_database.handler.elements["Enable hitsounds"] then local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() then if e:GetName() ~= "player_hurt" then return end local attacker = EntityList.GetPlayerForUserID(e:GetInt("attacker")) if attacker == my_index then local file_name = menu_database.handler.references["Hitsound"].reference:Get() local path = ("playvol %s %s"):format(file_name, "0.8") EngineClient.ExecuteClientCmd(path) end end end end } -- @endregion -- @region: animation breaker local hooked_function = nil local is_jumping = false local updateCSA = function(thisptr, edx) local is_localplayer = ffi.cast("uintptr_t", thisptr) == get_entity_address(EngineClient.GetLocalPlayer()) hooked_function(thisptr, edx) if is_localplayer then if menu_database.handler.elements["Enable anim breakers"] then local addons = menu_database.handler.elements["Anim breakers"] if bit.band(addons, bit.lshift(1, 0)) ~= 0 then local static_legs_value = menu_database.handler.elements["Static legs timer"] ffi.cast("float*", ffi.cast("uintptr_t", thisptr) + 10104)[6] = static_legs_value end if bit.band(addons, bit.lshift(1, 1)) ~= 0 then local leg_breaker_value = menu_database.handler.elements["Leg fucker type"] ffi.cast("float*", ffi.cast("uintptr_t", thisptr) + 10104)[0] = leg_breaker_value == 0 and 1 or ( GlobalVars.tickcount % 4 == 0 and 0.5 or 0 ) end if bit.band(addons, bit.lshift(1, 2)) ~= 0 then if ffi.cast("CCSGOPlayerAnimationState_534535_t**", ffi.cast("uintptr_t", thisptr) + 0x9960)[0].bHitGroundAnimation then if not is_jumping then ffi.cast("float*", ffi.cast("uintptr_t", thisptr) + 10104)[12] = 0.5 end end end end end end local breaker_functions = { on_pre_prediction = function(cmd) is_jumping = bit.band(cmd.buttons, bit.lshift(1, 1)) ~= 0 end, on_create_move = function() local local_player = EntityList.GetLocalPlayer() if not local_player then return end local local_player_ptr = get_entity_address(local_player:EntIndex()) if not local_player_ptr or hooked_function then return end local C_CSPLAYER = vmt_hook.new(local_player_ptr) hooked_function = C_CSPLAYER.hookMethod("void(__fastcall*)(void*, void*)", updateCSA, 224) end, on_destroy = function() for i, unHookFunc in ipairs(vmt_hook.hooks) do unHookFunc() end for i, free in ipairs(buff.free) do free() end end, on_prediction = function(cmd) local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()) if not localplayer then return end local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer() if not my_index then return end if EngineClient.IsConnected() and my_index:IsAlive() then if menu_database.handler.elements["Enable anim breakers"] then local addons = menu_database.handler.elements["Anim breakers"] if bit.band(addons, bit.lshift(1, 1)) ~= 0 then local directory = Menu.FindVar("Aimbot", "Anti Aim", "Misc", "Leg Movement") directory:Set(cmd.command_number % 3 == 0 and 0 or 1) end end end end } -- @endregion -- @region: all callbacks local all_callbacks = { on_prediction = function(cmd) ragebot_functions:load_ragebot_functions(cmd) anti_aimbotting_functions:load_anti_aimbotting_functions(cmd) breaker_functions.on_prediction(cmd) end, on_events = function(e) ragebot_functions.dormant_aimbot:reset_data(e) anti_aimbotting_functions.anti_bruteforce:run_work(e) anti_aimbotting_functions.bombsite_fix:check_bombsite(e) visual_functions.watermark_modules:count_hurt_shots(e) visual_functions.hitlog_modules:get_addictional_hits(e) visual_functions.damage_markers:load_markers_modules(e) visual_functions.skeet_modules.vars.bomb_info:load_bomb_modules(e) miscellaneous_functions.trashtalk(e) miscellaneous_functions:hitsounds(e) end, on_draw = function() visual_functions:load_indicators() anti_aimbotting_functions:run_main_anti_aim() end, on_pre_prediction = function(cmd) breaker_functions.on_pre_prediction(cmd) anti_aimbotting_functions.roll_angles:on_pre_prediction(cmd) end, on_registered_shot = function(shot) visual_functions.hitmarker_modules:on_registered_shot(shot) visual_functions.hitlog_modules:on_registered_shot(shot) visual_functions:execute_sauron_shots(shot) visual_functions.damage_markers:on_registered_shot(shot) visual_functions.skeet_modules.vars.shot_stats:count_shots(shot) end, on_destroy = function() breaker_functions.on_destroy() end, on_create_move = function(cmd) breaker_functions.on_create_move() anti_aimbotting_functions.roll_angles:on_createmove(cmd) end, load_callbacks = function(self) Cheat.RegisterCallback("prediction", self.on_prediction) Cheat.RegisterCallback("createmove", self.on_create_move) Cheat.RegisterCallback("pre_prediction", self.on_pre_prediction) Cheat.RegisterCallback("events", self.on_events) Cheat.RegisterCallback("draw", self.on_draw) Cheat.RegisterCallback("registered_shot", self.on_registered_shot) Cheat.RegisterCallback("destroy", self.on_destroy) end } all_callbacks:load_callbacks() -- @endregion end --[[ if __name__ == "__main__": __main__ O_O O_O O_O O_O O_O O_O O_O O_O --]] __main__()
а эта штука без мема как с химерой ликом
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
exscord & xo-yaw > half-paste
 
local sauron_text = {}
Пелучар, слушай дружище, а ты ничего не забыл?
Кто кого снесет еще?
Credits: Hellfish#9343

Код:
Expand Collapse Copy
-- @region: script information
    -- @ Half-life parody.
    -- @ Created by попросил скрыть ник, но все мы его знаем
    -- @ Version: 0.3.0 [debug].
    -- @ Last update: 01.0.1.2022.
-- @endregion

local screen_size = EngineClient.GetScreenSize()
local sauron_text = {}

local __main__ = function()
    -- @region: ffi elements
    local ffi = require("ffi")
    ffi.cdef[[
        typedef struct {
            uint8_t r; uint8_t g; uint8_t b; uint8_t a;
        } color_struct_t;

        typedef void (*console_color_print)(const color_struct_t&, const char*, ...);
        void* GetProcAddress(void* hModule, const char* lpProcName);
        void* GetModuleHandleA(const char* lpModuleName);

        typedef uintptr_t (__thiscall* GetClientEntity_4242425_t)(void*, int);
        struct Animstate_t
        {
            char pad[3];
            char m_bForceWeaponUpdate;
            char pad1[91];
            void* m_pBaseEntity;
            void* m_pActiveWeapon;
            void* m_pLastActiveWeapon;
            float m_flLastClientSideAnimationUpdateTime;
            int m_iLastClientSideAnimationUpdateFramecount;
            float m_flAnimUpdateDelta;
            float m_flEyeYaw;
            float m_flPitch;
            float m_flGoalFeetYaw;
            float m_flCurrentFeetYaw;
            float m_flCurrentTorsoYaw;
            float m_flUnknownVelocityLean;
            float m_flLeanAmount;
            char pad2[4];
            float m_flFeetCycle;
            float m_flFeetYawRate;
            char pad3[4];
            float m_fDuckAmount;
            float m_fLandingDuckAdditiveSomething;
            char pad4[4];
            float m_vOriginX;
            float m_vOriginY;
            float m_vOriginZ;
            float m_vLastOriginX;
            float m_vLastOriginY;
            float m_vLastOriginZ;
            float m_vVelocityX;
            float m_vVelocityY;
            char pad5[4];
            float m_flUnknownFloat1;
            char pad6[8];
            float m_flUnknownFloat2;
            float m_flUnknownFloat3;
            float m_flUnknown;
            float m_flSpeed2D;
            float m_flUpVelocity;
            float m_flSpeedNormalized;
            float m_flFeetSpeedForwardsOrSideWays;
            float m_flFeetSpeedUnknownForwardOrSideways;
            float m_flTimeSinceStartedMoving;
            float m_flTimeSinceStoppedMoving;
            bool m_bOnGround;
            bool m_bInHitGroundAnimation;
            float m_flTimeSinceInAir;
            float m_flLastOriginZ;
            float m_flHeadHeightOrOffsetFromHittingGroundAnimation;
            float m_flStopToFullRunningFraction;
            char pad7[4];
            float m_flMagicFraction;
            char pad8[60];
            float m_flWorldForce;
            char pad9[462];
            float m_flMaxYaw;
        };

        int VirtualProtect(void* lpAddress, unsigned long dwSize, unsigned long flNewProtect, unsigned long* lpflOldProtect);
        void* VirtualAlloc(void* lpAddress, unsigned long dwSize, unsigned long  flAllocationType, unsigned long flProtect);
        int VirtualFree(void* lpAddress, unsigned long dwSize, unsigned long dwFreeType);

        typedef uintptr_t (__thiscall* GetClientEntity_4242425_t)(void*, int);
        typedef struct
        {
            float x;
            float y;
            float z;
        } Vector_t;

        typedef struct
        {
            char    pad0[0x60]; // 0x00
            void* pEntity; // 0x60
            void* pActiveWeapon; // 0x64
            void* pLastActiveWeapon; // 0x68
            float        flLastUpdateTime; // 0x6C
            int            iLastUpdateFrame; // 0x70
            float        flLastUpdateIncrement; // 0x74
            float        flEyeYaw; // 0x78
            float        flEyePitch; // 0x7C
            float        flGoalFeetYaw; // 0x80
            float        flLastFeetYaw; // 0x84
            float        flMoveYaw; // 0x88
            float        flLastMoveYaw; // 0x8C // changes when moving/jumping/hitting ground
            float        flLeanAmount; // 0x90
            char    pad1[0x4]; // 0x94
            float        flFeetCycle; // 0x98 0 to 1
            float        flMoveWeight; // 0x9C 0 to 1
            float        flMoveWeightSmoothed; // 0xA0
            float        flDuckAmount; // 0xA4
            float        flHitGroundCycle; // 0xA8
            float        flRecrouchWeight; // 0xAC
            Vector_t        vecOrigin; // 0xB0
            Vector_t        vecLastOrigin;// 0xBC
            Vector_t        vecVelocity; // 0xC8
            Vector_t        vecVelocityNormalized; // 0xD4
            Vector_t        vecVelocityNormalizedNonZero; // 0xE0
            float        flVelocityLenght2D; // 0xEC
            float        flJumpFallVelocity; // 0xF0
            float        flSpeedNormalized; // 0xF4 // clamped velocity from 0 to 1
            float        flRunningSpeed; // 0xF8
            float        flDuckingSpeed; // 0xFC
            float        flDurationMoving; // 0x100
            float        flDurationStill; // 0x104
            bool        bOnGround; // 0x108
            bool        bHitGroundAnimation; // 0x109
            char    pad2[0x2]; // 0x10A
            float        flNextLowerBodyYawUpdateTime; // 0x10C
            float        flDurationInAir; // 0x110
            float        flLeftGroundHeight; // 0x114
            float        flHitGroundWeight; // 0x118 // from 0 to 1, is 1 when standing
            float        flWalkToRunTransition; // 0x11C // from 0 to 1, doesnt change when walking or crouching, only running
            char    pad3[0x4]; // 0x120
            float        flAffectedFraction; // 0x124 // affected while jumping and running, or when just jumping, 0 to 1
            char    pad4[0x208]; // 0x128
            float        flMinBodyYaw; // 0x330
            float        flMaxBodyYaw; // 0x334
            float        flMinPitch; //0x338
            float        flMaxPitch; // 0x33C
            int            iAnimsetVersion; // 0x340
        } CCSGOPlayerAnimationState_534535_t;

        typedef struct {
            char  pad_0000[20];
            int m_nOrder; //0x0014
            int m_nSequence; //0x0018
            float m_flPrevCycle; //0x001C
            float m_flWeight; //0x0020
            float m_flWeightDeltaRate; //0x0024
            float m_flPlaybackRate; //0x0028
            float m_flCycle; //0x002C
            void *m_pOwner; //0x0030
            char  pad_0038[4]; //0x0034
        } CAnimationLayer_t;
    ]]

    local color_print_fn = ffi.cast(
        "console_color_print", ffi.C.GetProcAddress(ffi.C.GetModuleHandleA("tier0.dll"), "?ConColorMsg@@YAXABVColor@@PBDZZ")
    )

    local colored_print = function(color, text)
        local col = ffi.new("color_struct_t")
        for i, v in pairs({"r", "g", "b", "a"}) do
            col[v] = color[v] * 255
        end

        color_print_fn(col, text)
    end

    local vtable = {
        entry = function(instance, index, type)
            return ffi.cast(type, (ffi.cast("void***", instance)[0])[index])
        end,
 
        thunk = function(self, index, typestring)
            local t = ffi.typeof(typestring)
            return function(instance, ...)
                assert(instance ~= nil)
                if instance then
                    return self.entry(instance, index, t)(instance, ...)
                end
            end
        end,
 
        bind = function(self, module, interface, index, typestring)
            local instance = Utils.CreateInterface(module, interface)
            local fnptr = self.entry(instance, index, ffi.typeof(typestring))
            return function(...)
                return fnptr(instance, ...)
            end
        end
    }

    local native_GetClipboardTextCount = vtable:bind("vgui2.dll", "VGUI_System010", 7, "int(__thiscall*)(void*)")
    local native_SetClipboardText = vtable:bind("vgui2.dll", "VGUI_System010", 9, "void(__thiscall*)(void*, const char*, int)")
    local native_GetClipboardText = vtable:bind("vgui2.dll", "VGUI_System010", 11, "int(__thiscall*)(void*, int, const char*, int)")
    local new_char_arr = ffi.typeof("char[?]")

    local function set_clipboard_text(text)
        native_SetClipboardText(text, text:len())
    end

    local function get_clipboard_text()
        local len = native_GetClipboardTextCount()
        if len > 0 then
            local char_arr = new_char_arr(len)
            native_GetClipboardText(0, char_arr, len)
            return ffi.string(char_arr, len-1)
        end
    end

    local entity_list_pointer = ffi.cast("void***", Utils.CreateInterface("client.dll", "VClientEntityList003"))
    local get_client_entity_fn = ffi.cast("GetClientEntity_4242425_t", entity_list_pointer[0][3])
    local get_entity_address = function(ent_index)
        local addr = get_client_entity_fn(entity_list_pointer, ent_index)
        return addr
    end

    local get_max_feet_yaw = function(player)
        local animstate = ffi.cast("struct Animstate_t**", get_entity_address(player:EntIndex()) + 0x9960)[0]
        if animstate ~= nil then
            local duck_amount = animstate.m_fDuckAmount
            local forward_or_sideways_speed = math.max(0, math.min(1, animstate.m_flFeetSpeedForwardsOrSideWays))
            local unknown_forward_or_sideways_speed = math.max(1, animstate.m_flFeetSpeedUnknownForwardOrSideways)
            local result_value = (animstate.m_flStopToFullRunningFraction * -0.30000001 - 0.19999999) * forward_or_sideways_speed + 1

            if duck_amount > 0 then
                result_value = result_value + duck_amount * unknown_forward_or_sideways_speed * (0.5 - result_value)
            end
     
            local return_delta_yaw = math.abs(animstate.m_flMaxYaw * result_value)
            return return_delta_yaw
        end
    end

    local hook_helpers = {
        copy = function(dst, src, len)
            return ffi.copy(ffi.cast('void*', dst), ffi.cast('const void*', src), len)
        end,
     
        virtual_protect = function(lpAddress, dwSize, flNewProtect, lpflOldProtect)
            return ffi.C.VirtualProtect(ffi.cast('void*', lpAddress), dwSize, flNewProtect, lpflOldProtect)
        end,
     
        virtual_alloc = function(lpAddress, dwSize, flAllocationType, flProtect, blFree)
            local alloc = ffi.C.VirtualAlloc(lpAddress, dwSize, flAllocationType, flProtect)
            if blFree then
                table.insert(buff.free, function()
                    ffi.C.VirtualFree(alloc, 0, 0x8000)
                end)
            end
            return ffi.cast('intptr_t', alloc)
        end
    }

    local buff = {free = {}}
    local vmt_hook = {hooks = {}}

    function vmt_hook.new(vt)
        local new_hook = {}
        local org_func = {}
        local old_prot = ffi.new('unsigned long[1]')
        local virtual_table = ffi.cast('intptr_t**', vt)[0]
 
        new_hook.this = virtual_table
        new_hook.hookMethod = function(cast, func, method)
            org_func[method] = virtual_table[method]
            hook_helpers.virtual_protect(virtual_table + method, 4, 0x4, old_prot)
 
            virtual_table[method] = ffi.cast('intptr_t', ffi.cast(cast, func))
            hook_helpers.virtual_protect(virtual_table + method, 4, old_prot[0], old_prot)
 
            return ffi.cast(cast, org_func[method])
        end
 
        new_hook.unHookMethod = function(method)
            hook_helpers.virtual_protect(virtual_table + method, 4, 0x4, old_prot)
            local alloc_addr = hook_helpers.virtual_alloc(nil, 5, 0x1000, 0x40, false)
            local trampoline_bytes = ffi.new('uint8_t[?]', 5, 0x90)
 
            trampoline_bytes[0] = 0xE9
            ffi.cast('int32_t*', trampoline_bytes + 1)[0] = org_func[method] - tonumber(alloc_addr) - 5
 
            hook_helpers.copy(alloc_addr, trampoline_bytes, 5)
            virtual_table[method] = ffi.cast('intptr_t', alloc_addr)
 
            hook_helpers.virtual_protect(virtual_table + method, 4, old_prot[0], old_prot)
            org_func[method] = nil
        end
 
        new_hook.unHookAll = function()
            for method, func in pairs(org_func) do
                new_hook.unHookMethod(method)
            end
        end
 
        table.insert(vmt_hook.hooks, new_hook.unHookAll)
        return new_hook
    end
    -- @endregion

    -- @region: menu events
    local menu_database = {
        handler = {
            elements = {},
            references = {}
        },

        update_menu = function(self)
            for _, data in pairs(self.handler.references) do
                if data.condition ~= nil then
                    data.reference:SetVisible(data.condition())
                end
            end
        end,

        add_element = function(self, element_name, reference, condition)
            if type(element_name) ~= "string" or type(reference) ~= "userdata" then
                print(('[Half-life debugger] Wrong element userdata - ["%s"].'):format(element_name))
                self.check_error()
            end

            if condition ~= nil and type(condition) ~= "function" then
                print(('[Half-life debugger] Wrong element condition - ["%s"].'):format(element_name))
                self.check_error()
            end

            if self.handler.references[element_name] ~= nil then
                print(('[Half-life debugger] Element already exists - ["%s"].'):format(element_name))
                self.check_error()
            end

            self.handler.references[element_name] = {
                reference = reference,
                name = unique_name,
                condition = condition
            }

            local execute_callbacks = function(new_value)
                self.handler.elements[element_name] = new_value
                self:update_menu()
            end

            execute_callbacks(reference:Get())
            reference:RegisterCallback(execute_callbacks)
        end,

        set_value = function(self, element_name, value)
            local execute_callbacks = function()
                self.handler.elements[element_name] = value
                self:update_menu()
            end

            self.handler.references[element_name].reference:Set(value)
            execute_callbacks()
        end,

        phases_vars = {
            phases = {},
            count = 0
        },

        all_elements = function(self)
            -- @note: strextter: ragebot tab
                -- @note: strexxter: dormant aimbot elements
                self:add_element("Enable dormant aimbot", Menu.Switch("-> Ragebot", "Dormant aimbotting", "Enable dormant aimbot", false))
                local dormant_aimbot_elements = {
                    names = {"Minimum damage"},
                    set_functions = {Menu.SliderInt},
                    values = {{5, 0, 105}}
                }

                for i = 1, #dormant_aimbot_elements.values do
                    local callback_list = {"Minimum damage"}
                    local callbacks = ("Dormant aimbot %s"):format(callback_list[i]:lower())

                    local names = dormant_aimbot_elements.names[i]
                    local functions = dormant_aimbot_elements.set_functions[i]
                    local values = dormant_aimbot_elements.values[i]

                    self:add_element(callbacks, functions("-> Ragebot", "Dormant aimbotting", names, unpack(values)), function()
                        return self.handler.elements["Enable dormant aimbot"]
                    end)
                end

                self:add_element("Enable custom DT speed", Menu.Switch("-> Ragebot", "Doubletap speed", "Enable custom DT speed", false))
                self:add_element("Custom DT speed", Menu.SliderInt("-> Ragebot", "Doubletap speed", "Custom DT speed", 16, 13, 16), function()
                    return self.handler.elements["Enable custom DT speed"]
                end)
            -- @note: strexxter: anti-aimbotting tab
                -- @note: strextter: default anti-aimbotting elements
                self:add_element("Enable anti-aimbotting", Menu.Switch(
                    "-> Anti-aimbotting", "Anti-aimbotting elements", "Enable anti-aimbotting elements", false)
                )

                self:add_element("Anti-aimbotting presets", Menu.Combo(
                    "-> Anti-aimbotting", "Anti-aimbotting elements", "Select preset:", {
                        "Default", "Safe head", "Tank AA", "Experimental", "Customizable"
                    }, 0
                ), function()
                    return self.handler.elements["Enable anti-aimbotting"]
                end)

                -- @note: strexxter: proccess of making custom aa elements
                local conditions = {
                    "Hidden", "Standing", "Moving", "Ducking", "Fakeduck", "Slow Walk", "In air"
                }

                self:add_element("Conditions", Menu.Combo("-> Anti-aimbotting", "Anti-aimbotting elements", "Conditions", conditions, 0),
                function()
                    return self.handler.elements["Enable anti-aimbotting"]
                    and self.handler.elements["Anti-aimbotting presets"] == 4
                end)

                for i = 1, #conditions do
                    local condition_name = conditions[i + 1]
                    local modes = {
                        "Yaw Add Left", "Yaw Add Right",
                        "Yaw Modifier", "Modifier Degree",
                        "Fake Limit Type", "Left Limit", "Right Limit",
                        "Fake Options", "LBY Mode", "Fake Desync", "Desync On Shot", "Inverter"
                    }
 
                    for k = 1, #modes do
                        local mode_name = modes[k]
                        local functions = {
                            Menu.SliderInt, Menu.SliderInt,
                            Menu.Combo, Menu.SliderInt,
                            Menu.Combo, Menu.SliderInt, Menu.SliderInt,
                            Menu.MultiCombo, Menu.Combo, Menu.Combo, Menu.Combo, Menu.Switch
                        }
 
                        local sub_functions = {
                            {0, -180, 180}, {0, -180, 180},
                            {{"Disabled", "Center", "Offset", "Random", "Spin"}, 0}, {0, -180, 180},
                            {{"Static", "Jitter"}, 0}, {60, 0, 60}, {60, 0, 60},
                            {{"Avoid Overlap", "Jitter", "Randomize Jitter", "Anti Bruteforce"}, 0},
                            {{"Disabled", "Opposite", "Sway"}, 0}, {{"Off", "Peek Fake", "Peek Real"}, 0},
                            {{"Disabled", "Opposite", "Freestanding", "Switch"}, 0}, {false}
                        }
 
                        local total = {
                            callbacks = ("%s %s"):format(condition_name, mode_name),
                            names = ("[%s] %s\n"):format(i, mode_name)
                        }

 
                        self:add_element(total.callbacks, functions[k](
                            "-> Anti-aimbotting", "Anti-aimbotting elements", total.names, unpack(sub_functions[k])
                        ), function()
                            return self.handler.elements["Enable anti-aimbotting"]
                            and self.handler.elements["Anti-aimbotting presets"] == 4
                            and self.handler.elements["Conditions"] == i
                        end)
                    end
                end

                self:add_element("Update presets", Menu.Button(
                    "-> Anti-aimbotting", "Anti-aimbotting elements", "Update alternative settings", "Load alternative settings!"
                ), function()
                    return self.handler.elements["Enable anti-aimbotting"]
                    and not (self.handler.elements["Anti-aimbotting presets"] == 4)
                end)

                local apply_presets = function()
                    local current_preset = self.handler.elements["Anti-aimbotting presets"]
                    local update_anti_bruteforce_phases = function()
                        local remove_phases = function()
                            local length = #self.phases_vars.phases
                            if length == 0 then return end
         
                            for i = 1, length do
                                local remove_name = ("Phase #%s"):format(i)
                                local directory = self.handler.references[remove_name].reference
             
                                Menu.DestroyItem(directory)
                                self.phases_vars.count = 0
             
                                local remove_key = function(table, key)
                                    local element = table[key]
                                    table[key] = nil
                                    return element
                                end
             
                                table.remove(self.phases_vars.phases)
                                remove_key(self.handler.elements, remove_name)
                                remove_key(self.handler.references, remove_name)
                            end
                        end

                        local add_phases = function()
                            local current_indexes = current_preset == 1 and 2 or 3
                            for i = 1, current_indexes do
                                self.phases_vars.count = self.phases_vars.count + 1
                                table.insert(self.phases_vars.phases, self.phases_vars.count)
             
                                local callbacks = ("Phase #%s"):format(self.phases_vars.count)
                                local name = ("Phase #%s"):format(self.phases_vars.count)
             
                                self:add_element(callbacks, Menu.SliderInt(
                                    "-> Anti-aimbotting", "Anti-bruteforce manager", name, 60, -60, 60
                                ), function()
                                    return self.handler.elements["Enable anti-aimbotting helpers"]
                                    and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 0)) ~= 0
                                end)
             
                                self:set_value("Phase slider", self.phases_vars.count)
                            end

                            if current_preset == 0 then -- default
                                self:set_value("Phase #1", -60)
                                self:set_value("Phase #2", 60)
                                self:set_value("Phase #3", -47)
                            elseif current_preset == 1 then -- safe head
                                self:set_value("Phase #1", -60)
                                self:set_value("Phase #2", 60)
                            elseif current_preset == 3 then -- experimental
                                self:set_value("Phase #1", 60)
                                self:set_value("Phase #2", -47)
                                self:set_value("Phase #3", 60)
                            end
                        end

                        remove_phases()
                        add_phases()
                    end

                    local update_helpers = function(value)
                        self:set_value("Enable anti-aimbotting helpers", true)
                        self:set_value("Anti-aimbotting helpers", value)
                    end

                    if current_preset == 0 then -- default
                        update_anti_bruteforce_phases()
                        update_helpers(261)
                    elseif current_preset == 1 then -- safe head
                        update_anti_bruteforce_phases()
                        update_helpers(277)
                    elseif current_preset == 2 then -- tank aa
                        update_helpers(260)
                    elseif current_preset == 3 then -- experimental
                        update_anti_bruteforce_phases()
                        update_helpers(261)
                    end
                end

                --@note: strexxter: anti-aimbotting helpers
                self:add_element("Enable anti-aimbotting helpers", Menu.Switch(
                    "-> Anti-aimbotting", "Additional settings", "Enable additional settings", false)
                )

                self:add_element("Anti-aimbotting helpers", Menu.MultiCombo(
                    "-> Anti-aimbotting", "Additional settings", "Select helpers:", {
                        "Anti-bruteforce", "Break lagcomp in air", "Anti-backstabbing", "Bombsite E-Fix",
                        "Smart yaw ras-position", "Dynamic fake yaw", "Avoid onshoting", "Legit AA on E",
                        "Disable fakelag on HS"
                    }, 0
                ), function()
                    return self.handler.elements["Enable anti-aimbotting helpers"]
                end)

                self.handler.references["Update presets"].reference:RegisterCallback(apply_presets)
                self:add_element("Breaking lagcomp weapons", Menu.MultiCombo(
                    "-> Anti-aimbotting", "Additional settings", "Teleport weapons", {
                        "Default", "Pistols", "Heavy pistols", "Scout", "AWP", "Autosnipers", "Nades"
                    }, 0
                ), function()
                    return self.handler.elements["Enable anti-aimbotting helpers"]
                    and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 1)) ~= 0
                end)

                self:add_element("Anti-aimbotting helpers text", Menu.Text(
                    "-> Anti-aimbotting", "Additional settings", "Dont use it with custom anti-aim preset!"
                ), function()
                    return self.handler.elements["Enable anti-aimbotting helpers"]
                    and self.handler.elements["Anti-aimbotting presets"] == 4
                    and (
                        bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 4)) ~= 0
                        or bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 5)) ~= 0
                        or bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 6)) ~= 0
                    )
                end)

                self:add_element("Copy config", Menu.Button(
                    "-> Anti-aimbotting", "Config system", "Copy your config to clipboard.", "Copy your config to clipboard.")
                )

                self:add_element("Import config", Menu.Button(
                    "-> Anti-aimbotting", "Config system", "Import config from clipboard.", "Import your config from clipboard.")
                )

                -- @note: strexxter: anti-bruteforce phases
                self:add_element("Anti-bruteforce add button", Menu.Button(
                    "-> Anti-aimbotting", "Anti-bruteforce manager", "Add new phase", "Add new phase for anti-bruteforce!"
                ), function()
                    return self.handler.elements["Enable anti-aimbotting helpers"]
                    and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 0)) ~= 0
                end)

                self:add_element("Anti-bruteforce remove button", Menu.Button(
                    "-> Anti-aimbotting", "Anti-bruteforce manager", "Remove phase", "Remove phase for anti-bruteforce!"
                ), function()
                    return self.handler.elements["Enable anti-aimbotting helpers"]
                    and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 0)) ~= 0
                end)

                self:add_element("Phase slider", Menu.SliderInt(
                    "-> Anti-aimbotting", "Additional settings", "Phase slider", self.phases_vars.count, 0, 15)
                )

                local add_new_phase = function()
                    if #self.phases_vars.phases > 9 then
                        table.insert(sauron_text, {
                            text = "You cant make more phases than 10.",
 
                            timer = GlobalVars.realtime,
                            smooth_y = screen_size.y + 100,
                            alpha = 0,
             
                            first_circle = 0,
                            second_circle = 0,
             
                            box_left = screen_size.x / 2,
                            box_right = screen_size.x / 2,
             
                            box_left_1 = screen_size.x / 2,
                            box_right_1 = screen_size.x / 2
                        })
 
                        print("[Half-life debugger] You cant make more than 10 phases.")
                        return
                    end
 
                    self.phases_vars.count = self.phases_vars.count + 1
                    table.insert(self.phases_vars.phases, self.phases_vars.count)
 
                    local callbacks = ("Phase #%s"):format(self.phases_vars.count)
                    local name = ("Phase #%s"):format(self.phases_vars.count)
 
                    self:add_element(callbacks, Menu.SliderInt(
                        "-> Anti-aimbotting", "Anti-bruteforce manager", name, 60, -60, 60
                    ), function()
                        return self.handler.elements["Enable anti-aimbotting helpers"]
                        and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 0)) ~= 0
                    end)
 
                    self:set_value("Phase slider", self.phases_vars.count)
                end

                local remove_phase = function()
                    local length = #self.phases_vars.phases
                    if length == 0 then
                        return
                    end
 
                    local remove_name = ("Phase #%s"):format(length)
                    local directory = self.handler.references[remove_name].reference
 
                    Menu.DestroyItem(directory)
                    self.phases_vars.count = self.phases_vars.count - 1
 
                    local remove_key = function(table, key)
                        local element = table[key]
                        table[key] = nil
                        return element
                    end
 
                    table.remove(self.phases_vars.phases, length)
                    remove_key(self.handler.elements, remove_name)
                    remove_key(self.handler.references, remove_name)
                end
 
                self.handler.references["Anti-bruteforce add button"].reference:RegisterCallback(add_new_phase)
                self.handler.references["Anti-bruteforce remove button"].reference:RegisterCallback(remove_phase)

                local value_of_phases = self.handler.elements["Phase slider"]
                if value_of_phases ~= 0 then
                    for i = 1, value_of_phases do
                        self:add_element(("Phase #%s"):format(i), Menu.SliderInt(
                            "-> Anti-aimbotting", "Anti-bruteforce manager", ("Phase #%s"):format(i), 0, -60, 60
                        ), function()
                            return self.handler.elements["Enable anti-aimbotting helpers"]
                            and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 0)) ~= 0
                        end)

                        self.phases_vars.count = value_of_phases
                        table.insert(self.phases_vars.phases, self.phases_vars.count)
                    end
                end

                self.handler.references["Phase slider"].reference:SetVisible(false)
                self:add_element("Enable roll angles", Menu.Switch("-> Anti-aimbotting", "Roll angles", "Enable roll angles", false))
                self:add_element("Only manual roll angles", Menu.Switch("-> Anti-aimbotting", "Roll angles", "Only on manual trigger", false), function()
                    return self.handler.elements["Enable roll angles"]
                end)

                self:add_element("Manual roll angles", Menu.Combo(
                    "-> Anti-aimbotting", "Roll angles", "Select yaw base", {"Disabled", "Left", "Right"}, 0, "Select yaw base or bind them!"
                ), function()
                    return self.handler.elements["Enable roll angles"]
                    and self.handler.elements["Only manual roll angles"]
                end)
            -- @note: strexxter: visuals tab
                -- @note: strexxter: all indicator elements
                self:add_element("Enable indicator list", Menu.Switch("-> Visuals", "All indicators", "Enable indicators", false))
                self:add_element("Indicator list", Menu.MultiCombo("-> Visuals", "All indicators", "Select indicators:", {
                    "Under crosshair", "Half-life watermark", "Damage indicator", "Skeet autopeek",
                    "Side skeet indicators", "Disable animation on 3rd person", "Crosshair hitmarker",
                    "Notifications", "Skeet damage markers"
                }, 0), function()
                    return self.handler.elements["Enable indicator list"]
                end)

                self:add_element("Under crosshair style", Menu.Combo("-> Visuals", "All indicators", "Under crosshair style", {
                    "Default", "Modern", "Legacy"
                }, 0), function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 0)) ~= 0
                end)

                self:add_element("Minimum damage position", Menu.Combo("-> Visuals", "All indicators", "Damage position", {
                    "Bottom Left", "Bottom Right", "Top Right", "Top Left", "Middle", "Far Left", "Far Right", "Far Up"
                }, 0), function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 2)) ~= 0
                end)

                self:add_element("Skeet autopeek color", Menu.ColorEdit(
                    "-> Visuals", "All indicators", "Skeet autopeek color", Color.RGBA(255, 255, 255, 255)
                ), function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 3)) ~= 0
                end)

                self:add_element("Skeet autopeek type", Menu.Combo(
                    "-> Visuals", "All indicators", "Skeet autopeek type", {"Default", "Quick peek"}, 0
                ), function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 3)) ~= 0
                end)

                self:add_element("Skeet indicator elements", Menu.MultiCombo("-> Visuals", "All indicators", "Indicator elements", {
                    "AA With Circle", "Shot/Miss Percent", "FL Text indicator", "Body Aim", "Exploit",
                    "Damage", "Dormant Aimbot", "Fake Ping", "Lag Compensation", "Fake Duck",
                    "Bomb Info", "Double Tap"
                }, 0), function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 4)) ~= 0
                end)

                self:add_element("Hit/miss type", Menu.Combo("-> Visuals", "All indicators", "Hit/miss type", {"Style 1", "Style 2"}, 0), function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 4)) ~= 0
                    and bit.band(self.handler.elements["Skeet indicator elements"], bit.lshift(1, 1)) ~= 0
                end)

                self:add_element("Damage type", Menu.Combo("-> Visuals", "All indicators", "Damage type", {"Damage: ", "DMG", "Damage value"}, 0), function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 4)) ~= 0
                    and bit.band(self.handler.elements["Skeet indicator elements"], bit.lshift(1, 5)) ~= 0
                end)

                self:add_element("Crosshair hitmarker color", Menu.ColorEdit(
                    "-> Visuals", "All indicators", "Crosshair hitmarker color", Color.RGBA(255, 255, 255, 255)
                ), function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 6)) ~= 0
                end)

                self:add_element("Hitmarker mode", Menu.Combo("-> Visuals", "All indicators", "Hitmarker mode", {"+", "x"}, 0),
                function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 8)) ~= 0
                end)
             
                self:add_element("Hitmarker color", Menu.ColorEdit("-> Visuals", "All indicators", "Hitmarker color", Color.RGBA(
                    255, 255, 255, 255
                )), function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 8)) ~= 0
                end)
             
                self:add_element("Hitmarker size", Menu.SliderInt("-> Visuals", "All indicators", "Hitmarker size", 1, 4, 10),
                function()
                    return self.handler.elements["Enable indicator list"]
                    and bit.band(self.handler.elements["Indicator list"], bit.lshift(1, 8)) ~= 0
                end)

                -- @note: strexxter: keybinds & watermark stuff
                self:add_element("Enable keybinds", Menu.Switch("-> Visuals", "Solus UI Elements", "Enable keybinds", false))
                self:add_element("Keybinds color", Menu.ColorEdit(
                    "-> Visuals", "Solus UI Elements", "Keybinds color", Color.RGBA(255, 255, 255, 255)
                ), function()
                    return self.handler.elements["Enable keybinds"]
                end)

                self:add_element("Keybinds x-adding", Menu.SliderInt(
                    "-> Visuals", "Solus UI Elements", "Keybinds x-adding", 325, 0, EngineClient.GetScreenSize().x)
                )

                self:add_element("Keybinds y-adding", Menu.SliderInt(
                    "-> Visuals", "Solus UI Elements", "Keybinds y-adding", 325, 0, EngineClient.GetScreenSize().y)
                )

                self:add_element("Enable watermark", Menu.Switch("-> Visuals", "Solus UI Elements", "Enable watermark", false))
                self:add_element("Watermark color", Menu.ColorEdit(
                    "-> Visuals", "Solus UI Elements", "Watermark color", Color.RGBA(255, 255, 255, 255)
                ), function()
                    return self.handler.elements["Enable watermark"]
                end)

                self:add_element("Watermark x-adding", Menu.SliderInt(
                    "-> Visuals", "Solus UI Elements", "Watermark x-adding", 1060, 0, EngineClient.GetScreenSize().x)
                )

                self:add_element("Watermark y-adding", Menu.SliderInt(
                    "-> Visuals", "Solus UI Elements", "Watermark y-adding", 30, 0, EngineClient.GetScreenSize().y)
                )

                self.handler.references["Keybinds x-adding"].reference:SetVisible(false)
                self.handler.references["Keybinds y-adding"].reference:SetVisible(false)
                self.handler.references["Watermark x-adding"].reference:SetVisible(false)
                self.handler.references["Watermark y-adding"].reference:SetVisible(false)

                self:add_element("Enable peek arrows", Menu.SwitchColor("-> Visuals", "Arrows Elements", "Enable peek arrows", false, Color.RGBA(255, 255, 255, 255)))
                self:add_element("Enable weapons in scope", Menu.Switch("-> Visuals", "Other Indicators", "Enable weapons in scope", false))
                self:add_element("Enable custom scope", Menu.SwitchColor("-> Visuals", "Other Indicators", "Enable custom scope", false, Color.RGBA(255, 255, 255, 255)))

                local custom_scope_elements = {"Initial position", "Offset"}
                for index = 1, #custom_scope_elements do
                    local current_element = custom_scope_elements[index]
                    local functions = {Menu.SliderInt, Menu.SliderInt}
                    local sub_functions = {
                        {200, 0, 400}, {15, 0, 1000}
                    }

                    local callbacks = ("Custom scope %s"):format(current_element:lower())
                    self:add_element(callbacks, functions[index]("-> Visuals", "Other Indicators", current_element, unpack(sub_functions[index])), function()
                        return self.handler.elements["Enable custom scope"]
                    end)
                end

            -- @note: strexxter: miscellaneous tab
                -- @note: strexxter: default miscellaneous elements
                self:add_element("Enable hitlogs", Menu.Switch("-> Miscellaneous", "Hitlogging information", "Enable hitlogs", false))
                self:add_element("Enable trashtalk", Menu.Switch("-> Miscellaneous", "Other functions", "Enable trashtalk", false))

                self:add_element("Enable hitsounds", Menu.Switch("-> Miscellaneous", "Other functions", "Enable hitsounds", false))
                self:add_element("Hitsound", Menu.TextBox("-> Miscellaneous", "Other functions", "Select your hitsound:", 64, "format.wav"), function()
                    return self.handler.elements["Enable hitsounds"]
                end)

                self:add_element("Hitsound text", Menu.Text("-> Miscellaneous", "Other functions", "Directory: csgo/sound/your_file.wav"), function()
                    return self.handler.elements["Enable hitsounds"]
                end)

                self:add_element("Enable anim breakers", Menu.Switch("-> Miscellaneous", "Animation breaker", "Enable animation breakers", false))
                self:add_element("Anim breakers", Menu.MultiCombo("-> Miscellaneous", "Animation breaker", "Animation breakers", {
                    "Static legs in air", "Break leg animation", "Pitch 0 on land"
                }, 0), function()
                    return self.handler.elements["Enable anim breakers"]
                end)

                self:add_element("Static legs timer", Menu.SliderFloat("-> Miscellaneous", "Animation breaker", "Static legs timer", 0.5, 0, 1), function()
                    return self.handler.elements["Enable anim breakers"]
                    and bit.band(self.handler.elements["Anim breakers"], bit.lshift(1, 0)) ~= 0
                end)

                self:add_element("Leg fucker type", Menu.Combo("-> Miscellaneous", "Animation breaker", "Leg breaker modes", {"Static", "Jitter"}, 0), function()
                    return self.handler.elements["Enable anim breakers"]
                    and bit.band(self.handler.elements["Anim breakers"], bit.lshift(1, 1)) ~= 0
                end)

                local coded_value = {}
                local extract = function(v, from, width)
                    return bit.band(bit.rshift(v, from), bit.lshift(1, width) - 1)
                end

                local function make_encoder(alphabet)
                    local encoder = {}
                    local decoder = {}

                    for i = 1, 65 do
                        local chr = string.byte(string.sub(alphabet, i, i)) or 32

                        if decoder[chr] ~= nil then
                            print("[Half-life debugger] Invalid alphabet: duplicate character " .. tostring(chr), 3)
                        end

                        encoder[i - 1] = chr
                        decoder[chr] = i - 1
                    end

                    return encoder, decoder
                end

                local encoders, decoders = {}, {}
                local base64url = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"
                encoders["base64url"], decoders["base64url"] = make_encoder(base64url)

                local alphabet_mt = {
                    __index = function(tbl, key)
                        if type(key) == "string" and key:len() == 64 or key:len() == 65 then
                            encoders[key], decoders[key] = make_encoder(key)
                            return tbl[key]
                        end
                    end
                }

                setmetatable(encoders, alphabet_mt)
                setmetatable(decoders, alphabet_mt)

                function coded_value.encode(str, encoder)
                    encoder = encoders[encoder or "base64"] or print(
                        "[Half-life debugger] Invalid alphabet specified: 2"
                    )

                    str = tostring(str)
                    local t, k, n = {}, 1, #str
                    local lastn = n % 3
                    local cache = {}

                    for i = 1, n - lastn, 3 do
                        local a, b, c = string.byte(str, i, i + 2)
                        local v = a * 0x10000 + b * 0x100 + c
                        local s = cache[v]

                        if not s then
                            s = string.char(
                                encoder[extract(v, 18, 6)],
                                encoder[extract(v, 12, 6)],
                                encoder[extract(v, 6, 6)],
                                encoder[extract(v, 0, 6)]
                            )

                            cache[v] = s
                        end

                        t[k] = s
                        k = k + 1
                    end

                    if lastn == 2 then
                        local a, b = string.byte(str, n - 1, n)
                        local v = a * 0x10000 + b * 0x100

                        t[k] = string.char(
                            encoder[extract(v, 18, 6)],
                            encoder[extract(v, 12, 6)],
                            encoder[extract(v, 6, 6)],
                            encoder[64]
                        )
                    elseif lastn == 1 then
                        local v = string.byte(str, n) * 0x10000
                        t[k] = string.char(
                            encoder[extract(v, 18, 6)],
                            encoder[extract(v, 12, 6)],
                            encoder[64],
                            encoder[64]
                        )
                    end

                    return table.concat(t)
                end

                function coded_value.decode(b64, decoder)
                    decoder = decoders[decoder or "base64"] or print(
                        "[Half-life debugger] Invalid alphabet specified: 2"
                    )

                    local pattern = "[^%w%+%/%=]"
                    if decoder then
                        local s62, s63
                        for charcode, b64code in pairs(decoder) do
                            if b64code == 62 then
                                s62 = charcode
                            elseif b64code == 63 then
                                s63 = charcode
                            end
                        end

                        pattern = string.format("[^%%w%%%s%%%s%%=]", string.char(s62), string.char(s63))
                    end

                    b64 = string.gsub(tostring(b64), pattern, "")
                    local cache = {}
                    local t, k = {}, 1
                    local n = #b64
                    local padding = string.sub(b64, -2) == "==" and 2 or string.sub(b64, -1) == "=" and 1 or 0

                    for i = 1, padding > 0 and n - 4 or n, 4 do
                        local a, b, c, d = string.byte(b64, i, i + 3)

                        if not d then
                            d = string.byte(b64, i, i + 3)
                        end

                        if not c then
                            c = string.byte(b64, i, i + 3)
                        end

                        if not b then
                            c = string.byte(b64, i, i + 3)
                        end

                        if not a then
                            c = string.byte(b64, i, i + 3)
                        end

                        if not a or not b or not c or not d then
                            print("[Half-life debugger] Wrong clipboard data!")
                            return
                        end

                        local v0 = a * 0x1000000 + b * 0x10000 + c * 0x100 + d
                        local s = cache[v0]

                        if not s then
                            if not decoder[a] or not decoder[b] or not decoder[c] or not decoder[d] then
                                print("[Half-life debugger] Wrong clipboard data!")
                                return
                            end

                            local v = decoder[a] * 0x40000 + decoder[b] * 0x1000 + decoder[c] * 0x40 + decoder[d]
                            s = string.char(
                                extract(v, 16, 8),
                                extract(v, 8, 8),
                                extract(v, 0, 8)
                            )

                            cache[v0] = s
                        end

                        t[k] = s
                        k = k + 1
                    end

                    if padding == 1 then
                        local a, b, c = string.byte(b64, n - 3, n - 1)
                        local v = decoder[a] * 0x40000 + decoder[b] * 0x1000 + decoder[c] * 0x40
                     
                        t[k] = string.char(
                            extract(v, 16, 8),
                            extract(v, 8, 8)
                        )
                    elseif padding == 2 then
                        local a, b = string.byte(b64, n - 3, n - 2)
                        local v = decoder[a] * 0x40000 + decoder[b] * 0x1000

                        t[k] = string.char(
                            extract(v, 16, 8)
                        )
                    end
                 
                    return table.concat(t)
                end

                local copy_proccess = function()
                    set_clipboard_text("")
 
                    local to_copy = {
                        "Enable dormant aimbot", "Dormant aimbot minimum damage",
                        "Enable anti-aimbotting", "Anti-aimbotting presets",
                        "Enable anti-aimbotting helpers", "Anti-aimbotting helpers",
                        "Enable hitlogs", "Enable trashtalk"
                    }
 
                    local custom_conditions = {"Standing", "Moving", "Ducking", "Fakeduck", "Slow Walk", "In air"}                
                    local modes = {
                        "Yaw Add Left", "Yaw Add Right",
                        "Yaw Modifier", "Modifier Degree",
                        "Fake Limit Type", "Left Limit", "Right Limit",
                        "Fake Options", "LBY Mode", "Fake Desync", "Desync On Shot", "Inverter"
                    }
 
                    for i = 1, #custom_conditions do
                        local condition_name = custom_conditions[i]
                        for k = 1, #modes do
                            local mode_name = modes[k]
                            local end_name = ("%s %s"):format(condition_name, mode_name)
 
                            table.insert(to_copy, end_name)
                        end
                    end

                    local count = "Phase slider"
                    table.insert(to_copy, count)

                    for i = 1, self.handler.elements[count] do
                        local phases_name = ("Phase #%s"):format(i)
                        table.insert(to_copy, phases_name)
                    end

                    local copied_data = {}
                    for i = 1, #to_copy do
                        local directory = self.handler.elements
                        local name = to_copy[i]
 
                        local data = ("%s"):format(directory[name])
                        table.insert(copied_data, data)
                    end

                    local concate_table = table.concat(copied_data, " ")
                    local obfuscated_data = coded_value.encode(concate_table, "base64url")

                    if set_clipboard_text ~= nil then
                        set_clipboard_text(obfuscated_data)
                    end
 
                    copied_data = {}
                end

                local import_proccess = function()
                    local exported_text = get_clipboard_text()
                    if not exported_text then
                        print("[Half-life debug] No text copied to clipboard!")
                        return
                    end
 
                    local function split_string(s, delimiter)
                        local result = {}
                        for match in (s .. delimiter):gmatch("(.-)" .. delimiter) do
                            table.insert(result, match)
                        end
 
                        return result
                    end

                    local deobfuscated_data = coded_value.decode(exported_text, "base64url")
                    if deobfuscated_data ~= nil then
                        local split_string = split_string(deobfuscated_data, " ")
                        local exported = {}

                        for i = 1, #split_string do
                            table.insert(exported, split_string[i])
                        end

                        local to_paste = {
                            "Enable dormant aimbot", "Dormant aimbot minimum damage",
                            "Enable anti-aimbotting", "Anti-aimbotting presets",
                            "Enable anti-aimbotting helpers", "Anti-aimbotting helpers",
                            "Enable hitlogs", "Enable trashtalk"
                        }
     
                        local custom_conditions = {"Standing", "Moving", "Ducking", "Fakeduck", "Slow Walk", "In air"}                
                        local modes = {
                            "Yaw Add Left", "Yaw Add Right",
                            "Yaw Modifier", "Modifier Degree",
                            "Fake Limit Type", "Left Limit", "Right Limit",
                            "Fake Options", "LBY Mode", "Fake Desync", "Desync On Shot", "Inverter"
                        }
     
                        for i = 1, #custom_conditions do
                            local condition_name = custom_conditions[i]
                            for k = 1, #modes do
                                local mode_name = modes[k]
                                local end_name = ("%s %s"):format(condition_name, mode_name)
 
                                table.insert(to_paste, end_name)
                            end
                        end

                        local update_anti_bruteforce_phases = function()
                            local remove_phases = function()
                                local length = #self.phases_vars.phases
                                if length == 0 then return end
             
                                for i = 1, length do
                                    local remove_name = ("Phase #%s"):format(i)
                                    local directory = self.handler.references[remove_name].reference
                 
                                    Menu.DestroyItem(directory)
                                    self.phases_vars.count = 0
                 
                                    local remove_key = function(table, key)
                                        local element = table[key]
                                        table[key] = nil
                                        return element
                                    end
                 
                                    table.remove(self.phases_vars.phases)
                                    self:set_value("Phase slider", 0)

                                    remove_key(self.handler.elements, remove_name)
                                    remove_key(self.handler.references, remove_name)
                                end
                            end
 
                            local add_phases = function()
                                if tonumber(exported[81]) ~= nil then
                                    for i = 1, exported[81] do
                                        local data = exported[i + 82]
                                        data = tonumber(data)
                                        if not data then data = 60 end

                                        self.phases_vars.count = self.phases_vars.count + 1
                                        table.insert(self.phases_vars.phases, self.phases_vars.count)

                                        local callbacks = ("Phase #%s"):format(self.phases_vars.count)
                                        local name = ("Phase #%s"):format(self.phases_vars.count)

                                        self:add_element(callbacks, Menu.SliderInt(
                                            "-> Anti-aimbotting", "Anti-bruteforce manager", name, data or 60, -60, 60
                                        ), function()
                                            return self.handler.elements["Enable anti-aimbotting helpers"]
                                            and bit.band(self.handler.elements["Anti-aimbotting helpers"], bit.lshift(1, 0)) ~= 0
                                        end)

                                        self:set_value("Phase slider", self.phases_vars.count)
                                    end
                                end
                            end
 
                            remove_phases()
                            add_phases()
                        end

                        for i = 1, 80 do
                            local names = to_paste[i]
                            local data = exported[i]

                            if data == "true" then
                                data = true
                            elseif data == "false" then
                                data = false
                            else
                                data = tonumber(data)
                            end

                            if data ~= nil then
                                self:set_value(names, data)
                            end
                        end
                     
                        update_anti_bruteforce_phases()
                        exported = {}
                    end
                end

                self.handler.references["Copy config"].reference:RegisterCallback(copy_proccess)
                self.handler.references["Import config"].reference:RegisterCallback(import_proccess)
            -- @note: strexxter: the end of all menu elements
        end,

        register_callbacks = function(self)
            self:all_elements()
        end
    }

    menu_database:register_callbacks()
    -- @endregion

    -- @region: all math & vector & other operations.
    function C_BaseEntity:GetVelocity()
        local first_velocity = self:GetProp("m_vecVelocity[0]")
        local second_velocity = self:GetProp("m_vecVelocity[1]")

        local speed = math.floor(math.sqrt(first_velocity * first_velocity + second_velocity * second_velocity))
        return speed
    end

    function C_BaseEntity:GetState()
        local flags = self:GetProp("m_fFlags")
        local velocity = self:GetVelocity()

        if bit.band(flags, 1) == 1 then
            if Menu.FindVar("Aimbot", "Anti Aim", "Misc", "Fake Duck"):GetBool() then
                return "FAKEDUCKING"
            else
                if bit.band(flags, 4) == 4 then
                    if self:GetProp("m_iTeamNum") == 2 then
                        return "CROUCHING T"
                    elseif self:GetProp("m_iTeamNum") == 3 then
                        return "CROUCHING CT"
                    end
                else
                    if Menu.FindVar("Aimbot", "Anti Aim", "Misc", "Slow Walk"):GetBool() then
                        return "SLOWWALKING"
                    else
                        if velocity <= 3 then
                            return "STANDING"
                        else
                            return "MOVING"
                        end
                    end
                end
            end
        elseif bit.band(flags, 1) == 0 then
            return "IN AIR"
        end
    end

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

        update_enemies = function(self)
            local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
            if not localplayer then return end
         
            local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
            if not my_index then return end

            if EngineClient.IsConnected() and my_index:IsAlive() then
                local players = EntityList.GetEntitiesByName("CCSPlayer")
                local fov_enemy, maximum_fov = nil, 180
             
                for i = 1, #players do
                    local enemy = players[i]:GetPlayer()
                    if enemy ~= my_index and not enemy:IsTeamMate() and enemy:IsAlive() then
                        local my_origin = my_index:GetRenderOrigin()
                        local enemy_origin = enemy:GetRenderOrigin()

                        local world_to_screen = (
                            my_origin.x - enemy_origin.x == 0 and my_origin.y - enemy_origin.z == 0
                        ) and 0 or math.deg(
                            math.atan2(
                                my_origin.y - enemy_origin.y, my_origin.x - enemy_origin.x
                            )
                        ) - EngineClient.GetViewAngles().yaw + 180

                        local calculated_fov = math.abs(self.normalize_yaw(world_to_screen))
                        if not fov_enemy or calculated_fov <= maximum_fov then
                            fov_enemy = enemy
                            maximum_fov = calculated_fov
                        end
                    end
                end

                return ({
                    enemy = fov_enemy,
                    fov = maximum_fov
                })
            end
        end,

        calculate_angles = function(self, local_x, local_y, enemy_x, enemy_y)
            local delta_y = local_y - enemy_y
            local delta_x = local_x - enemy_x

            local relative_yaw = math.atan(delta_y / delta_x)
            relative_yaw = self.normalize_yaw(relative_yaw * 180 / math.pi)

            if delta_x >= 0 then
                relative_yaw = self.normalize_yaw(relative_yaw + 180)
            end
         
            return relative_yaw
        end,

        angle_to_vec = function(pitch, yaw)
            local p = pitch / 180 * math.pi
            local y = yaw / 180 * math.pi

            local sin_p = math.sin(p)
            local cos_p = math.cos(p)
            local sin_y = math.sin(y)
            local cos_y = math.cos(y)

            return {
                cos_p * cos_y,
                cos_p * sin_y,
                -sin_p
            }
        end,

        easings = {
            lerp = function(start, vend, time)
                return start + (vend - start) * time
            end,

            clamp = function(val, min, max)
                if val > max then return max end
                if min > val then return min end
                return val
            end
        },

        get_hit_side = function(self)
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 0)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local data, current_enemy = self:update_enemies(), nil
                        if data ~= nil then
                            current_enemy = data.enemy
                        end
                     
                        if current_enemy ~= nil and current_enemy:IsAlive() then
                            local predict_damage = function(x, y, z)
                                local a, b, c = {}, {}, {}
                                local enemy_head_position = current_enemy:GetHitboxCenter(1)
                                local ticks = 40

                                a[1], b[1], c[1] = enemy_head_position.x, enemy_head_position.y, enemy_head_position.z
                                a[2], b[2], c[2] = enemy_head_position.x + ticks, enemy_head_position.y, enemy_head_position.z
                                a[3], b[3], c[3] = enemy_head_position.x - ticks, enemy_head_position.y, enemy_head_position.z
                             
                                a[4], b[4], c[4] = enemy_head_position.x, enemy_head_position.y + ticks, enemy_head_position.z
                                a[5], b[5], c[5] = enemy_head_position.x, enemy_head_position.y - ticks, enemy_head_position.z
 
                                a[6], b[6], c[6] = enemy_head_position.x, enemy_head_position.y, enemy_head_position.z + ticks
                                a[7], b[7], c[7] = enemy_head_position.x, enemy_head_position.y, enemy_head_position.z - ticks

                                for i = 1, 7, 1 do
                                    local damage = 0
                                    local trace_damage = Cheat.FireBullet(
                                        current_enemy, Vector.new(a[i], b[i], c[i]), Vector.new(x, y, z)
                                    ).damage
                         
                                    if trace_damage > damage then
                                        damage = trace_damage
                                    end
                         
                                    return damage
                                end
                            end

                            local my_eye_position = my_index:GetEyePosition()
                            local enemy_head_position = current_enemy:GetHitboxCenter(0)
                            local calculated_yaw = self:calculate_angles(
                                my_eye_position.x, my_eye_position.y, enemy_head_position.x, enemy_head_position.y
                            )

                            local left_direction_x, left_direction_y = self.angle_to_vec(
                                0, (calculated_yaw + 90)
                            ), self.angle_to_vec(0, (calculated_yaw + 90))

                            local right_direction_x, right_direction_y = self.angle_to_vec(
                                0, (calculated_yaw - 90)
                            ), self.angle_to_vec(0, (calculated_yaw - 90))
                         
                            local rend_x = my_eye_position.x + right_direction_x[1] * 10
                            local rend_y = my_eye_position.y + right_direction_y[1] * 10

                            local lend_x = my_eye_position.x + left_direction_x[1] * 10
                            local lend_y = my_eye_position.y + left_direction_y[1] * 10

                            local rend_x_2 = my_eye_position.x + right_direction_x[1] * 100
                            local rend_y_2 = my_eye_position.y + left_direction_y[1] * 100

                            local lend_x_2 = my_eye_position.x + left_direction_x[1] * 100
                            local lend_y_2 = my_eye_position.y + left_direction_y[1] * 100
                         
                            local left_trace = predict_damage(rend_x, rend_y, my_eye_position.z)
                            local right_trace = predict_damage(lend_x, lend_y, my_eye_position.z)
                            local left_trace_2 = predict_damage(rend_x_2, rend_y_2, my_eye_position.z)
                            local right_trace_2 = predict_damage(lend_x_2, lend_y_2, my_eye_position.z)

                            local hit_side = (
                                (left_trace > 0 or right_trace > 0 or left_trace_2 > 0 or right_trace_2 > 0) and
                                (
                                    left_trace > right_trace and 0.5 or right_trace > left_trace and -0.5
                                    or left_trace_2 > right_trace_2 and 1 or right_trace_2 > left_trace_2 -1
                                ) or 0.0
                            )

                            return hit_side
                        end
                    end
                end
            end
        end
    }

    -- @region: all ragebot functions
    local ragebot_functions = {
        dormant_aimbot = {
            run_autostop = function(cmd, goal_speed)
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
     
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                local minspeed = math.sqrt((cmd.forwardmove * cmd.forwardmove) + (cmd.sidemove * cmd.sidemove))
                if goal_speed <= 0 or minspeed <= 0 then return end
 
                local flags = my_index:GetProp("m_fFlags")
                if bit.band(flags, 4) == 4 then
                    goal_speed = goal_speed * 2.94117647
                end
 
                if minspeed <= goal_speed then return end
                local speed_factor = goal_speed / minspeed
 
                cmd.forwardmove = cmd.forwardmove * speed_factor
                cmd.sidemove = cmd.sidemove * speed_factor
            end,

            vars = {
                player_info_prev = {},
                round_started = 0,
                is_dormant_flag = false,

                minimal_vector = Vector.new(),
                maximal_vector = Vector.new()
            },

            calculate_angles = function(source, point)
                local world_to_screen = function(x_position, y_position)
                    if x_position == 0 and y_position == 0 then return 0 end
         
                    local atan_position = math.atan2(y_position, x_position)
                    local deg_position = math.deg(atan_position)
         
                    return deg_position
                end

                local delta_of_vectors = point - source
                local hyp = math.sqrt(delta_of_vectors.x * delta_of_vectors.x + delta_of_vectors.y * delta_of_vectors.y)
     
                local yaw = world_to_screen(delta_of_vectors.x, delta_of_vectors.y)
                local pitch = world_to_screen(hyp, -delta_of_vectors.z)
     
                return Vector.new(pitch, yaw, 0)
            end,

            get_hittable_damage = function(my_index, enemy, start_point, end_point)
                if my_index ~= nil then
                    if enemy ~= nil then
                        local bullet_data = Cheat.FireBullet(my_index, start_point, end_point)
                        local bullet_damage = bullet_data.damage

                        local minimum_damage = menu_database.handler.elements["Dormant aimbot minimum damage"]
                        local enemy_health = enemy:GetProp("m_iHealth")

                        if bullet_damage < math.min(minimum_damage, enemy_health) then
                            return 0
                        end

                        if bullet_data.trace.hit_entity ~= nil then
                            if bullet_data.trace.hit_entity:EntIndex() ~= enemy:EntIndex() then
                                return 0
                            end
                        end

                        if enemy:IsVisible(end_point) then
                            return 0
                        end

                        return bullet_damage
                    end
                end
            end,

            run_work = function(self, cmd)
                if menu_database.handler.elements["Enable dormant aimbot"] then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
         
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
         
                    local my_weapon = my_index:GetActiveWeapon()
                    if not my_weapon then return end
         
                    local weapon_id = my_weapon:GetWeaponID()
                    if not weapon_id then return end
         
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local get_inaccuracy = my_weapon:GetInaccuracy(my_weapon)
                        local tickcount = GlobalVars.tickcount
         
                        local player_resource = EntityList.GetPlayerResource()
                        local eye_position = my_index:GetEyePosition()
         
                        local simulation_time = my_index:GetProp("m_flSimulationTime")
                        local on_ground = bit.band(my_index:GetProp("m_fFlags"), bit.lshift(1, 0)) == 1 and true or false

                        if tickcount < self.vars.round_started then
                            return
                        end

                        local primary_attack = my_weapon:GetProp("m_flNextPrimaryAttack")
                        local next_attack = my_index:GetProp("m_flNextAttack")
                        local secondary_attack = my_weapon:GetProp("m_flNextSecondaryAttack")

                        local can_shoot = false
                        if weapon_id == 64 then -- revolver
                            can_shoot = simulation_time > primary_attack
                        elseif my_weapon:IsKnife() or my_weapon:IsGrenade() or weapon_id == 31 then
                            can_shoot = false
                        else
                            can_shoot = simulation_time > math.max(next_attack, primary_attack, secondary_attack)
                        end

                        local player_info = {}
                        local players = EntityList.GetEntitiesByName("CCSPlayer")
                     
                        for i = 1, #players do
                            local enemy = players[i]:GetPlayer()
                            if enemy ~= my_index and not enemy:IsTeamMate() and enemy:IsAlive() then
                                local network_state = enemy:GetNetworkState()
                                if enemy:IsDormant() and network_state ~= -1 then
                                    local can_hit = false
                                    local origin = enemy:GetProp("m_vecOrigin")
                                    local alpha_multiplier = enemy:GetESPAlpha()

                                    if self.vars.player_info_prev[i] ~= nil and origin.x ~= 0 and alpha_multiplier > 0 then
                                        local is_dormant_accurate = alpha_multiplier > 0.2
                                        if is_dormant_accurate then
                                            local bounds = enemy:GetRenderBounds(self.vars.minimal_vector, self.vars.maximal_vector)
                                            local all_vector_points = {
                                                origin + Vector.new(0, 0, 38),
                                                origin + Vector.new(0, 0, 40),
                                                origin + Vector.new(0, 0, 42),
                                                origin + Vector.new(0, 0, 50)
                                            }

                                            local best_damage = 0
                                            local best_point = Vector.new()
                                            local my_eye_position = my_index:GetEyePosition()
                                         
                                            for point = 1, #all_vector_points do
                                                local current_point = all_vector_points[point]
                                                local start_position = self.calculate_angles(my_eye_position, current_point)
                                                local damage = self.get_hittable_damage(my_index, enemy, my_eye_position, current_point)

                                                if damage > best_damage then
                                                    best_damage = damage
                                                    best_point = start_position
                                                    can_hit = true
                                                end
                                            end

                                            local get_max_speed = my_weapon:GetMaxSpeed()
                                            if can_shoot and can_hit then
                                                self.vars.is_dormant_flag = true
                                                self.run_autostop(cmd, get_max_speed * 0.33)

                                                if get_inaccuracy < 0.009 then
                                                    cmd.viewangles.pitch = best_point.x
                                                    cmd.viewangles.yaw = best_point.y
                                                    cmd.viewangles.roll = 0.0

                                                    cmd.buttons = bit.bor(cmd.buttons, 1)
                                                    self.vars.is_dormant_flag = true

                                                    can_shoot = false
                                                end
                                            elseif not can_hit then
                                                self.vars.is_dormant_flag = false
                                            end
                                        end
                                    end
                                    player_info[i] = {origin, alpha_multiplier, can_hit}
                                end
                            end
                        end
                        self.vars.player_info_prev = player_info
                    end
                end
            end,

            reset_data = function(self, e)
                if menu_database.handler.elements["Enable dormant aimbot"] then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
         
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
         
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        if e:GetName() == "round_prestart" then
                            local mp_freezetime = CVar.FindVar("mp_freezetime"):GetFloat()
                            local ticks = GlobalVars.interval_per_tick
                 
                            local freezetime = (mp_freezetime + 1) / ticks
                            local tickcount = GlobalVars.tickcount
                 
                            self.vars.round_started = tickcount + freezetime
                        end
                    end
                end
            end
        },

        doubletap_speed = function()
            if menu_database.handler.elements["Enable custom DT speed"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
     
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end
     
                local active_weapon = my_index:GetActiveWeapon()
                if not active_weapon then return end
     
                if EngineClient.IsConnected() and my_index:IsAlive() then
                    local speed = menu_database.handler.elements["Custom DT speed"]
                    Exploits.OverrideDoubleTapSpeed(speed)
                end
            end
        end,

        load_ragebot_functions = function(self, cmd)
            self.dormant_aimbot:run_work(cmd)
            self:doubletap_speed()
        end
    }

    ESP.CustomText("Dormant aimbot status", "enemies", "DA", function(ent)
        if ragebot_functions.dormant_aimbot.vars.is_dormant_flag then
            return "DA"
        else
            return false
        end
    end)

    ESP.CustomText("Resolver state", "enemies", "Resolver state", function(ent)
        local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
        if not localplayer then return end
     
        local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
        if not my_index then return end

        local enemy = ent:GetPlayer()
        local current_text = ""

        if not enemy:IsDormant() then
            local my_position_in_world = my_index:GetProp("m_vecOrigin")
            local enemy_eye_position = enemy:GetEyePosition()

            local delta_of_vectors = my_position_in_world - enemy_eye_position
            local reverse_vector_to_angle = Cheat.VectorToAngle(delta_of_vectors)
            local trace_data = {
                left = 0,
                right = 0
            }

            for i = reverse_vector_to_angle.yaw - 90, reverse_vector_to_angle.yaw + 90, 25 do
                local radians = math.rad(i)
                local side = i < reverse_vector_to_angle.yaw and "left" or "right"

                local first_point = Vector.new(
                    enemy_eye_position.x + 50 * math.cos(radians),
                    enemy_eye_position.y + 50 * math.sin(radians),
                    enemy_eye_position.z
                )

                local last_point = Vector.new(
                    enemy_eye_position.x + 256 * math.cos(radians),
                    enemy_eye_position.y + 256 * math.sin(radians),
                    enemy_eye_position.z
                )

                local get_traced_impact = EngineTrace.TraceRay(first_point, last_point, my_index, 0xFFFFFFFF).fraction
                trace_data[side] = trace_data[side] + get_traced_impact
            end

            local current_side = trace_data.left < trace_data.right and "left" or "right"
            local current_delta = math.floor(get_max_feet_yaw(enemy))

            local pitch = enemy:GetProp("m_angEyeAngles[0]")
            local is_legit_aa = (pitch >= 0 and pitch <= 50 or pitch >= 329 and pitch <= 360) and true or false
            local legit_aa_delta = math.floor(math.max(math.min(
                enemy:GetProp("m_angEyeAngles[1]") - current_delta,
                (enemy:GetProp("m_angEyeAngles[1]") - current_delta) / 4
            ), 0))

            if legit_aa_delta > 60 then legit_aa_delta = 60 end
            if legit_aa_delta < 0 then legit_aa_delta = 0 end

            current_text = enemy:GetPlayerInfo().fakeplayer and "DEFAULT[0.0]" or ("SIDE:%s[%s]"):format(
                current_side, is_legit_aa and legit_aa_delta or current_delta
            )
        else
            current_text = "RESETING[0.0]"
        end

        return current_text
    end)
    -- @endregion

    -- @region: all anti-aimbotting functions
    local anti_aimbotting_functions = {
        anti_bruteforce = {
            vars = {
                is_anti_bruteforcing = false,
                anti_bruteforcing_timer = GlobalVars.realtime,

                anti_bruteforcing_counter = 1,
                anti_bruteforcing_side = 1,

                phases_counter = 1,
                phase_state = false
            },
 
            run_work = function(self, e)
                if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                    local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                    if bit.band(directory, bit.lshift(1, 0)) ~= 0 then
                        local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                        if not localplayer then return end
                     
                        local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                        if not my_index then return end
     
                        if EngineClient.IsConnected() and my_index:IsAlive() then
                            if e:GetName() ~= "bullet_impact" then return end
             
                            local my_index = EntityList.GetLocalPlayer()
                            local attacker = EntityList.GetPlayerForUserID(e:GetInt("userid"))
             
                            if attacker == my_index or attacker:IsTeamMate() then
                                return
                            end
             
                            local my_head_position = my_index:GetHitboxCenter(0)
                            local bullet_vector = Vector.new(e:GetInt("x"), e:GetInt("y"), e:GetInt("z"))
             
                            local my_origin = my_index:GetRenderOrigin()
                            local attacker_origin = attacker:GetRenderOrigin()
             
                            local check_for_unhittable_wall = Cheat.FireBullet(attacker, bullet_vector, my_head_position)
                            if check_for_unhittable_wall.damage < 5 then return end
             
                            local point_between_my_head_and_origin = {my_head_position.x - attacker_origin.x, my_head_position.y - attacker_origin.y}
                            local point_between_bullet_and_origin = {bullet_vector.x - attacker_origin.x, bullet_vector.y - attacker_origin.y}
             
                            local decrease_bullet_points = point_between_bullet_and_origin[1] ^ 2 + point_between_bullet_and_origin[2] ^ 2
                            local create_dot_points = (
                                point_between_my_head_and_origin[1] * point_between_bullet_and_origin[1] +
                                point_between_my_head_and_origin[2] * point_between_bullet_and_origin[2]
                            )
             
                            local final_dots = create_dot_points / decrease_bullet_points
                            local final_distance = {
                                attacker_origin.x + point_between_bullet_and_origin[1] * final_dots,
                                attacker_origin.y + point_between_bullet_and_origin[2] * final_dots
                            }
             
                            local my_delta_value = {my_head_position.x - final_distance[1], my_head_position.y - final_distance[2]}
                            local my_delta_to_world = math.abs(math.sqrt(my_delta_value[1] ^ 2 + my_delta_value[2] ^ 2))
             
                            local minimum_distance_to_trigger = my_origin:DistTo(attacker_origin) / 4
                            if my_delta_to_world <= minimum_distance_to_trigger then
                                self.vars.is_anti_bruteforcing = true
                                self.vars.phase_state = true
                             
                                self.vars.anti_bruteforcing_side = self.vars.anti_bruteforcing_side * -1
                                self.vars.anti_bruteforcing_counter = self.vars.anti_bruteforcing_counter + 1

                                if self.vars.anti_bruteforcing_counter > 10 then
                                    self.vars.anti_bruteforcing_counter = 1
                                end

                                self.vars.phases_counter = self.vars.phases_counter + 1
                                if self.vars.phases_counter > #menu_database.phases_vars.phases then
                                    self.vars.phases_counter = 1
                                end
                            else
                                self.vars.is_anti_bruteforcing = false
                            end
                        end
                    else
                        self.vars.is_anti_bruteforcing = false
                    end
                else
                    self.vars.is_anti_bruteforcing = false
                end
            end
        },
     
        run_main_anti_aim = function(self)
            if menu_database.handler.elements["Enable anti-aimbotting"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
             
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                if EngineClient.IsConnected() and my_index:IsAlive() then
                    if not self.anti_bruteforce.vars.is_anti_bruteforcing then
                        local current_state = my_index:GetState()
                        local current_preset = menu_database.handler.elements["Anti-aimbotting presets"]

                        local set_values = function()
                            local set_anti_aim = function(table)
                                Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Add"):SetInt(table[1])
                                Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Modifier"):SetInt(table[2])
                                Menu.FindVar("Aimbot", "Anti Aim", "Main", "Modifier Degree"):SetInt(table[3])

                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(table[4])
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(table[5])

                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Fake Options"):SetInt(table[6])
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "LBY Mode"):SetInt(table[7])
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Freestanding Desync"):SetInt(table[8])
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Desync On Shot"):SetInt(table[9])
                            end

                            local all_settings = {
                                [0] = {
                                    ["STANDING"] = {GlobalVars.tickcount % 4 == 1 and -15 or 17, 1, 39, 0, 0, 2, 1, 0, 1},
                                    ["MOVING"] = {GlobalVars.tickcount % 4 == 1 and 16 or -11, 1, 52, 0, 0, 2, 1, 0, 1},

                                    ["CROUCHING T"] = {GlobalVars.tickcount % 4 == 1 and 2 or 11, 1, 39, 0, 0, 2, 0, 0, 1},
                                    ["CROUCHING CT"] = {GlobalVars.tickcount % 4 == 1 and 2 or 11, 1, 39, 0, 0, 2, 0, 0, 1},

                                    ["FAKEDUCKING"] = {0, 0, 0, 60, 60, 0, 0, 0, 0},
                                    ["SLOWWALKING"] = {GlobalVars.tickcount % 4 == 1 and -11 or 11, 1, 50, 0, 0, 2, 1, 0, 1},
                                    ["IN AIR"] = {GlobalVars.tickcount % 4 == 1 and 2 or -2, 1, 10, 0, 0, 2, 0, 0, 2},
                                },

                                [1] = {
                                    ["STANDING"] = {0, 0, 0, 56, 56, 0, 0, 1, 0},
                                    ["MOVING"] = {0, 0, 0, 56, 56, 0, 0, 1, 0},

                                    ["CROUCHING T"] = {0, 0, 0, 56, 56, 0, 0, 1, 0},
                                    ["CROUCHING CT"] = {0, 1, 25, 40, 40, 6, 0, 0, 0},

                                    ["FAKEDUCKING"] = {0, 0, 0, 56, 56, 0, 0, 0, 0},
                                    ["SLOWWALKING"] = {0, 0, 0, 56, 56, 0, 0, 1, 0},
                                    ["IN AIR"] = {0, 1, 65, 56, 56, 2, 0, 0, 0}
                                },

                                [2] = {
                                    ["STANDING"] = {7, 1, 77, 60, 60, 2, 1, 0, 1},
                                    ["MOVING"] = {7, 1, 77, 60, 60, 2, 1, 0, 1},

                                    ["CROUCHING T"] = {7, 1, 77, 60, 60, 2, 1, 0, 1},
                                    ["CROUCHING CT"] = {7, 1, 77, 60, 60, 2, 1, 0, 1},

                                    ["FAKEDUCKING"] = {7, 1, 77, 60, 60, 2, 1, 0, 1},
                                    ["SLOWWALKING"] = {7, 1, 77, 60, 60, 2, 1, 0, 1},
                                    ["IN AIR"] = {7, 1, 77, 60, 60, 2, 1, 0, 1}
                                },

                                [3] = {
                                    ["STANDING"] = {0, 1, 57, 18, 18, 2, 1, 0, 0},
                                    ["MOVING"] = {0, 1, 57, 18, 18, 2, 1, 0, 0},

                                    ["CROUCHING T"] = {0, 1, 57, 18, 18, 2, 1, 0, 0},
                                    ["CROUCHING CT"] = {0, 1, 57, 18, 18, 2, 1, 0, 0},

                                    ["FAKEDUCKING"] = {0, 0, 0, 60, 60, 0, 0, 0, 0},
                                    ["SLOWWALKING"] = {0, 1, 57, 18, 21, 2, 1, 0, 0},
                                    ["IN AIR"] = {0, 1, 57, 18, 18, 2, 1, 0, 0},
                                }
                            }

                            local current_settings = all_settings[current_preset][current_state]
                            local flags = my_index:GetProp("m_fFlags")

                            if current_preset ~= 4 then
                                if Cheat.IsMenuVisible() then
                                    set_anti_aim({0, 0, 0, 0, 0, 0, 0, 0, 0})
                                else
                                    set_anti_aim(current_settings)
                                end
                            end
                        end

                        if current_preset == 4 then
                            local set_custom_anti_aim = function(state)
                                local get_state = function(base)
                                    return menu_database.handler.elements[("%s %s"):format(state, base)]
                                end

                                Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Add"):SetInt(
                                    GlobalVars.tickcount % 4 >= 2 and get_state("Yaw Add Left") or get_state("Yaw Add Right")
                                )

                                Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Modifier"):SetInt(get_state("Yaw Modifier"))
                                Menu.FindVar("Aimbot", "Anti Aim", "Main", "Modifier Degree"):SetInt(get_state("Modifier Degree"))

                                local fake_type = get_state("Fake Limit Type")
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(
                                    fake_type == 0 and get_state("Left Limit") or (
                                        GlobalVars.tickcount % 4 >= 2 and 18 or get_state("Left Limit")
                                    )
                                )

                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(
                                    fake_type == 0 and get_state("Right Limit") or (
                                        GlobalVars.tickcount % 4 >= 2 and 18 or get_state("Right Limit")
                                    )
                                )
         
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Fake Options"):SetInt(get_state("Fake Options"))
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "LBY Mode"):SetInt(get_state("LBY Mode"))
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Freestanding Desync"):SetInt(get_state("Fake Desync"))
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Desync On Shot"):SetInt(get_state("Desync On Shot"))
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Inverter"):SetBool(get_state("Inverter"))
                            end

                            if current_state == "STANDING" then set_custom_anti_aim("Standing")
                            elseif current_state == "MOVING" then set_custom_anti_aim("Moving")
                            elseif current_state == "FAKEDUCKING" then set_custom_anti_aim("Fakeduck")
                            elseif (
                                current_state == "CROUCHING T" or current_state == "CROUCHING CT"
                            ) then set_custom_anti_aim("Ducking")
                            elseif current_state == "SLOWWALKING" then set_custom_anti_aim("Slow Walk")
                            elseif current_state == "IN AIR" then set_custom_anti_aim("In air")
                            end
                        else
                            set_values()
                        end
                    end
                end
            end

            if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                if bit.band(directory, bit.lshift(1, 0)) ~= 0 then
                    if self.anti_bruteforce.vars.is_anti_bruteforcing then
                        local ab_counter = self.anti_bruteforce.vars.phases_counter
                        if ab_counter ~= 0 then
                            local get_path = ("Phase #%s"):format(ab_counter)
                            if not get_path then
                                self.anti_bruteforce.vars.is_anti_bruteforcing = false
                                self.anti_bruteforce.vars.anti_bruteforcing_timer = GlobalVars.realtime
                                return
                            end

                            local get_value = menu_database.handler.elements[get_path]
                            if not get_value then
                                self.anti_bruteforce.vars.is_anti_bruteforcing = false
                                self.anti_bruteforce.vars.anti_bruteforcing_timer = GlobalVars.realtime
                                return
                            end

                            local get_side = get_value < 0 and false or true
                            if not get_side then
                                self.anti_bruteforce.vars.is_anti_bruteforcing = false
                                self.anti_bruteforce.vars.anti_bruteforcing_timer = GlobalVars.realtime
                                return
                            end

                            AntiAim.OverrideInverter(get_side)
                            AntiAim.OverrideLimit(get_value)
                        end

                        if self.anti_bruteforce.vars.anti_bruteforcing_timer + 3 < GlobalVars.realtime then
                            self.anti_bruteforce.vars.is_anti_bruteforcing = false
                            self.anti_bruteforce.vars.anti_bruteforcing_timer = GlobalVars.realtime
                        end
                    end
                end
            end
        end,

        break_lagcomp_in_air = function()
            if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                if bit.band(directory, bit.lshift(1, 1)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    local active_weapon = my_index:GetActiveWeapon()
                    if not active_weapon then return end

                    local classname = active_weapon:GetClassName()
                    if not classname then return end
 
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local is_active = function()
                            local table = {"Default", "Pistols", "Heavy pistols", "Scout", "AWP", "Autosnipers", "Nades"}
                            for i = 1, #table do
                                local directory = menu_database.handler.elements["Breaking lagcomp weapons"]
                                if bit.band(directory, bit.lshift(1, i - 1)) ~= 0 then
                                    local current_weapon = table[i]

                                    if active_weapon:IsPistol() then
                                        if current_weapon == "Heavy pistols" and classname == "CDEagle" then
                                            return true
                                        elseif current_weapon == "Pistols" and classname ~= "CDEagle" then
                                            return true
                                        end
                                    elseif classname == "CWeaponSSG08" and current_weapon == "Scout" then
                                        return true
                                    elseif classname == "CWeaponAWP" and current_weapon == "AWP" then
                                        return true
                                    elseif (
                                        classname == "CWeaponSCAR20" or
                                        classname == "CWeaponG3SG1"
                                    ) and current_weapon == "Autosnipers" then
                                        return true
                                    elseif current_weapon == "Nades" and active_weapon:IsGrenade() then
                                        return true
                                    elseif current_weapon == "Default" and active_weapon:IsRifle() then
                                        return true
                                    end
                                end
                            end
                            return false
                        end

                        if is_active() then
                            local data, current_enemy = all_utils:update_enemies(), nil
                            if data ~= nil then
                                current_enemy = data.enemy
                            end
                         
                            if current_enemy ~= nil and current_enemy:IsAlive() then
                                if not current_enemy:IsDormant() then
                                    local isDT = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool()
                                    local in_air = my_index:GetState() == "IN AIR"

                                    if isDT and in_air then
                                        local enemy_origin = current_enemy:GetRenderOrigin()
                                        local my_origin = my_index:GetRenderOrigin()
                                     
                                        local traced_bullet = Cheat.FireBullet(current_enemy, enemy_origin, my_origin)
                                        if traced_bullet.damage > 0 then
                                            Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Freestanding Desync"):SetInt(1)
                                            Exploits.ForceTeleport()
                                        end
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end,

        anti_backstabbing = function()
            if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                if bit.band(directory, bit.lshift(1, 2)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
 
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local data, current_enemy = all_utils:update_enemies(), nil
                        if data ~= nil then
                            current_enemy = data.enemy
                        end
                     
                        if current_enemy ~= nil and current_enemy:IsAlive() then
                            if not current_enemy:IsDormant() then
                                local my_origin = my_index:GetRenderOrigin()
                                local enemy_origin = current_enemy:GetRenderOrigin()

                                local enemy_weapon = current_enemy:GetActiveWeapon()
                                if not enemy_weapon then return end

                                local our_distance = my_origin:DistTo(enemy_origin)
                                local minimum_distance = 200

                                if enemy_weapon:IsKnife() then
                                    if our_distance <= minimum_distance then
                                        AntiAim.OverrideYawOffset(180)
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end,

        bombsite_fix = {
            vars = {
                is_in_bombsite = false
            },

            check_bombsite = function(self, e)
                if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                    local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                    if bit.band(directory, bit.lshift(1, 3)) ~= 0 then
                        local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                        if not localplayer then return end
                     
                        local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                        if not my_index then return end
     
                        if EngineClient.IsConnected() and my_index:IsAlive() then
                            if e:GetName() == "enter_bombzone" then
                                local user_id = EntityList.GetPlayerForUserID(e:GetInt("userid"))
                                if user_id == my_index then
                                    self.vars.is_in_bombsite = true
                                end
                            end

                            if e:GetName() == "exit_bombzone" then
                                local user_id = EntityList.GetPlayerForUserID(e:GetInt("userid"))
                                if user_id == my_index then
                                    self.vars.is_in_bombsite = false
                                end
                            end
                        end
                    else
                        self.vars.is_in_bombsite = false
                    end
                else
                    self.vars.is_in_bombsite = false
                end
            end,
         
            run_work = function(self, cmd)
                if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                    local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                    if bit.band(directory, bit.lshift(1, 3)) ~= 0 then
                        local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                        if not localplayer then return end
                     
                        local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                        if not my_index then return end
     
                        if EngineClient.IsConnected() and my_index:IsAlive() then
                            if my_index:GetProp("m_iTeamNum") == 2 then
                                local is_near_with_door = function()
                                    for yaw = 18, 360, 18 do
                                        yaw = all_utils.normalize_yaw(yaw)
                                     
                                        local my_eye_position = my_index:GetEyePosition()
                                        local final_angle = QAngle.new(0, yaw, 0)

                                        local final_point = my_eye_position + Cheat.AngleToForward(final_angle) * 0x60
                                        local trace_info = EngineTrace.TraceRay(my_eye_position, final_point, my_index, 0x200400B)
                                        local hit_entity = trace_info.hit_entity

                                        if hit_entity ~= nil then
                                            if trace_info.hit_entity:GetClassName() == "CPropDoorRotating" then
                                                return true
                                            end
                                        end
                                    end
                                    return false
                                end

                                if not is_near_with_door() then
                                    if self.vars.is_in_bombsite then
                                        if bit.band(cmd.buttons, 32) == 32 then
                                            AntiAim.OverrideYawOffset(180)
                                            AntiAim.OverridePitch(0)

                                            cmd.buttons = bit.band(cmd.buttons, bit.bnot(32))
                                        end
                                    end
                                end
                            end
                        end
                    end
                end
            end
        },

        quick_peek = function(cmd)
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 3)) ~= 0 then
                    if menu_database.handler.elements["Skeet autopeek type"] == 1 then
                        local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                        if not localplayer then return end
                     
                        local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                        if not my_index then return end

                        if EngineClient.IsConnected() and my_index:IsAlive() then
                            local set_movement = function(cmd, xz, yz)
                                local current_pos = my_index: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

                            local W = bit.band(cmd.buttons, 8) == 8
                            local S = bit.band(cmd.buttons, 16) == 16
                            local D = bit.band(cmd.buttons, 512) == 512
                            local A = bit.band(cmd.buttons, 1024) == 1024
                            local moving = W or S or D or A

                            local is_peeking = Menu.FindVar("Miscellaneous", "Main", "Movement", "Auto Peek"):GetBool()
                            if not is_peeking then
                                cur_pos = my_index:GetProp("m_vecOrigin")
                            end

                            local default_origin = my_index:GetProp("m_vecOrigin")
                            local is_in_air = my_index:GetState() == "IN AIR"

                            if not is_in_air then
                                if is_peeking then
                                    if cur_pos ~= nil then
                                        if not moving and cur_pos.x ~= default_origin.x and cur_pos.y ~= default_origin.y then
                                            set_movement(cmd, cur_pos.x, cur_pos.y)
                                        end
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end,

        smart_yaw_position = function(self)
            if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                if bit.band(directory, bit.lshift(1, 4)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
 
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local data, current_enemy = all_utils:update_enemies(), nil
                        if data ~= nil then
                            current_enemy = data.enemy
                        end
                     
                        if current_enemy ~= nil and current_enemy:IsAlive() then
                            local lby_fraction = math.abs(my_index:GetProp("m_flLowerBodyYawTarget") / 180)
                            local duck_amount = my_index:GetProp("m_flDuckAmount")

                            local side = all_utils:get_hit_side()
                            local yaw_path = Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Add")

                            if not current_enemy:IsDormant() then
                                if duck_amount > 0.4 then
                                    yaw_path:SetInt(-10)
                                else
                                    if lby_fraction > 0.5 then
                                        yaw_path:SetInt(20)
                                    else
                                        yaw_path:SetInt(-20)
                                    end
                                end
                            else
                                if duck_amount > 0.4 and not my_index:GetState(true) == "IN AIR" then
                                    yaw_path:SetInt(10)
                                else
                                    if lby_fraction > 0.5 then
                                        yaw_path:SetInt(10)
                                    else
                                        if side == 0.5 or side == -0.5 then
                                            yaw_path:SetInt(-10)
                                        elseif side == 1 or side == -1 then
                                            yaw_path:SetInt(-20)
                                        else
                                            yaw_path:SetInt(20)
                                        end
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end,

        dynamic_fake_yaw = function(self)
            if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                if bit.band(directory, bit.lshift(1, 5)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
 
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local data, current_enemy = all_utils:update_enemies(), nil
                        if data ~= nil then
                            current_enemy = data.enemy
                        end
                     
                        if current_enemy ~= nil and current_enemy:IsAlive() then
                            local lby_fraction = math.abs(my_index:GetProp("m_flLowerBodyYawTarget") / 180)
                            local duck_amount = my_index:GetProp("m_flDuckAmount")
                            local side = all_utils:get_hit_side()

                            if not current_enemy:IsDormant() then
                                if duck_amount > 0.4 then
                                    Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(56)
                                    Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(56)
                                else
                                    if lby_fraction > 0.5 then
                                        Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(25)
                                        Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(25)
                                    else
                                        Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(56)
                                        Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(56)
                                    end
                                end
                            else
                                if duck_amount > 0.4 and not my_index:GetState(true) == "IN AIR" then
                                    Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(45)
                                    Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(45)
                                else
                                    if lby_fraction > 0.5 then
                                        Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(
                                            math.floor(58 * lby_fraction)
                                        )

                                        Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(
                                            math.floor(58 * lby_fraction)
                                        )
                                    else
                                        if side == 0.5 or side == -0.5 then
                                            Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(35)
                                            Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(35)
                                        elseif side == 1 or side == -1 then
                                            Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(15)
                                            Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(15)
                                        else
                                            Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(56)
                                            Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(56)
                                        end
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end,

        better_onshot = function()
            if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                if bit.band(directory, bit.lshift(1, 6)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    local active_weapon = my_index:GetActiveWeapon()
                    if not active_weapon then return end

                    local classname = active_weapon:GetClassName()
                    if not classname then return end
 
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        if Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool() and Exploits.GetCharge() == 1 then
                            if classname == "CWeaponSSG08" or classname == "CWeaponAWP" then
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Desync On Shot"):SetInt(1)
                            else
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Desync On Shot"):SetInt(3)
                            end
                        elseif Exploits.GetCharge() < 1 then
                            Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Desync On Shot"):SetInt(1)
                        end
                    end
                end
            end
        end,

        one_time_legit_aa = false,
        legit_aa_on_e = function(self, cmd)
            if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                if bit.band(directory, bit.lshift(1, 7)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
 
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local is_active = function()
                            local maximum_distance = 99999999
                            local my_origin = my_index:GetRenderOrigin()

                            local doors = EntityList.GetEntitiesByClassID(143)
                            local bomb = EntityList.GetEntitiesByClassID(129)
                            local hostages = EntityList.GetEntitiesByClassID(97)

                            local my_view_angles = EngineClient.GetViewAngles()
                            local my_angles = Vector2.new(my_view_angles.yaw, my_view_angles.pitch)
                            my_angles.y = -my_angles.y

                            for k, v in pairs(doors) do
                                local doors_origin = v:GetRenderOrigin()
                                local current_distance = my_origin:DistTo(doors_origin)

                                if current_distance <= maximum_distance then maximum_distance = current_distance end
                            end

                            for k, v in pairs(bomb) do
                                local bomb_origin = v:GetRenderOrigin()
                                local current_distance = my_origin:DistTo(bomb_origin)

                                if current_distance <= maximum_distance then maximum_distance = current_distance end
                            end

                            for k, v in pairs(hostages) do
                                local hostages_origin = v:GetRenderOrigin()
                                local current_distance = my_origin:DistTo(hostages_origin)

                                if current_distance <= maximum_distance then maximum_distance = current_distance end
                            end

                            if maximum_distance <= 100 or (my_angles.y <= -25 and my_angles.y > -70) then
                                return false
                            end
                            return true
                        end

                        if bit.band(cmd.buttons, 32) == 32 then
                            if not self.one_time_legit_aa then
                                self.one_time_legit_aa = true
                            end

                            if is_active() then
                                if Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Base"):GetInt() == 5 then
                                    Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Base"):SetInt(4)
                                end

                                local yaw_base = Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Base"):GetInt()
                                local yaw_value = (
                                    yaw_base == 1 and 180 or yaw_base == 2 and 90 or yaw_base == 3 and -90 or
                                    yaw_base == 4 and 180 or 0
                                )

                                AntiAim.OverridePitch(0)
                                AntiAim.OverrideYawOffset(yaw_value)
                                AntiAim.OverrideLimit(60)

                                cmd.buttons = bit.band(cmd.buttons, bit.bnot(32))
                            end
                        else
                            if self.one_time_legit_aa then
                                self.one_time_legit_aa = false
                            end
                        end
                    end
                end
            end
        end,

        backup_fakelag = false,
        disable_fakelag = function(self)
            if menu_database.handler.elements["Enable anti-aimbotting helpers"] then
                local directory = menu_database.handler.elements["Anti-aimbotting helpers"]
                if bit.band(directory, bit.lshift(1, 8)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
 
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local fakelag_cache = 14
                        if not self.backup_fakelag then
                            fakelag_cache = Menu.FindVar("Aimbot", "Anti Aim", "Fake Lag", "Limit"):GetInt()
                            self.backup_fakelag = true
                        end

                        local isHS = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Hide Shots"):GetBool()
                        if isHS then
                            Menu.FindVar("Aimbot", "Anti Aim", "Fake Lag", "Limit"):SetInt(1)
                        else
                            if self.backup_fakelag then
                                Menu.FindVar("Aimbot", "Anti Aim", "Fake Lag", "Limit"):SetInt(fakelag_cache)
                                self.backup_fakelag = false
                            end
                        end
                    end
                end
            end
        end,

        roll_angles = {
            is_rolling_and_controlling = false, -- good song :)
            override_manual_settings = function()
                Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Base"):SetInt(4)

                Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Add"):SetInt(-11)
                Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Modifier"):SetInt(0)
                Menu.FindVar("Aimbot", "Anti Aim", "Main", "Modifier Degree"):SetInt(0)

                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Left Limit"):SetInt(60)
                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Right Limit"):SetInt(60)

                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Fake Options"):SetInt(0)
                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "LBY Mode"):SetInt(1)
                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Freestanding Desync"):SetInt(0)
                Menu.FindVar("Aimbot", "Anti Aim", "Fake Angle", "Desync On Shot"):SetInt(0)
            end,

            on_pre_prediction = function(self, cmd)
                self.is_rolling_and_controlling = false
                if menu_database.handler.elements["Enable roll angles"] then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
 
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local is_manuals_enabled = menu_database.handler.elements["Only manual roll angles"]
                        local current_manual = menu_database.handler.elements["Manual roll angles"]
                        local current_roll_angle = 100

                        if is_manuals_enabled then
                            if current_manual ~= 0 then
                                self.override_manual_settings()
                                AntiAim.OverrideYawOffset(current_manual == 1 and -90 or 90)
                            end

                            self.is_rolling_and_controlling = current_manual ~= 0
                        else
                            self.override_manual_settings()
                            self.is_rolling_and_controlling = current_roll_angle == 100
                        end

                        if is_manuals_enabled then
                            current_roll_angle = current_manual ~= 0 and 50 or 0
                        end

                        local current_state = my_index:GetState()
                        if current_state == "IN AIR" then
                            self.is_rolling_and_controlling = false
                        end

                        cmd.viewangles.roll = current_roll_angle
                    end
                end
            end,

            on_createmove = function(self, cmd)
                if menu_database.handler.elements["Enable roll angles"] then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
 
                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local current_state = my_index:GetState()
                        local is_chocking = FakeLag.Choking()

                        if current_state == "IN AIR" or is_chocking then
                            cmd.viewangles.roll = 0
                        end
                    end
                end
            end
        },

        load_anti_aimbotting_functions = function(self, cmd)
            self:break_lagcomp_in_air()
            self:anti_backstabbing()
            self.bombsite_fix:run_work(cmd)
            self.quick_peek(cmd)
            self:smart_yaw_position()
            self:dynamic_fake_yaw()
            self:better_onshot()
            self:legit_aa_on_e(cmd)
            self:disable_fakelag()
        end
    }
    -- @endregion

    -- @region: all visual functions
    local visual_functions = {
        utils = {
            fonts_library = {
                ["Smallest Pixel-7"] = {
                    ["9"] = {
                        [""] = {
                            Render.InitFont("Smallest Pixel-7", 9)
                        }
                    },
                 
                    ["10"] = {
                        [""] = {
                            Render.InitFont("Smallest Pixel-7", 10)
                        }
                    }
                },

                ["Tahoma"] = {
                    ["10"] = {
                        [""] = {
                            Render.InitFont("Tahoma", 10)
                        }
                    }
                },

                ["Verdana"] = {
                    ["10"] = {
                        [""] = {
                            Render.InitFont("Verdana", 10)
                        },

                        ["b"] = {
                            Render.InitFont("Verdana", 10, {"b"})
                        }
                    },

                    ["11"] = {
                        ["r"] = {
                            Render.InitFont("Verdana", 11, {"r"})
                        }
                    },

                    ["12"] = {
                        [""] = {
                            Render.InitFont("Verdana", 12)
                        }
                    },

                    ["21"] = {
                        ["b"] = {
                            Render.InitFont("Verdana", 21, {"b"})
                        }
                    }
                },

                ["Calibri"] = {
                    ["30"] = {
                        ["b"] = {
                            Render.InitFont("Calibri", 30, {"b"})
                        }
                    }
                },

                ["Lucida Console"] = {
                    ["10"] = {
                        ["r"] = {
                            Render.InitFont("Lucida Console", 10, {"r"})
                        }
                    }
                }
            },

            get_font = function(self, font_name, font_size, flags)
                local library_names = self.fonts_library[font_name]
                local library_fonts = library_names[font_size]
                local library_flags = library_fonts[not flags and "" or flags][1]

                return library_flags
            end,

            get_desync = function(comma_index)
                local real_rotation = AntiAim.GetCurrentRealRotation()
                local fake_rotation = AntiAim.GetFakeRotation()
                local max_delta = AntiAim.GetMaxDesyncDelta()
                local delta = math.min(math.abs(real_rotation - fake_rotation), max_delta)

                return tonumber(string.format("%." .. comma_index .. "f", delta))
            end,

            draw_shadow = function(type, text, x, y, color, font_size, font, centered, shadow_color)
                local x_pos = type == 0 and 1 or type == 1 and 1 or type == 2 and 0 or 1
                local y_pos = type == 0 and 1 or type == 1 and 0 or type == 2 and 1 or 1

                Render.Text(text, Vector2.new(x + x_pos, y + y_pos), shadow_color, font_size, font, false, centered)
                Render.Text(text, Vector2.new(x + 0, y + 0), color, font_size, font, false, centered)
            end,

            hsv_to_rgb = function(h, s, v)
                local r, g, b

                local i = math.floor(h * 6);
                local f = h * 6 - i;
                local p = v * (1 - s);
                local q = v * (1 - f * s);
                local t = v * (1 - (1 - f) * s);
         
                i = i % 6
         
                if i == 0 then r, g, b = v, t, p
                elseif i == 1 then r, g, b = q, v, p
                elseif i == 2 then r, g, b = p, v, t
                elseif i == 3 then r, g, b = p, q, v
                elseif i == 4 then r, g, b = t, p, v
                elseif i == 5 then r, g, b = v, p, q
                end
         
                return Color.new(r, g, b)
            end
        },

        under_crosshair = function(self)
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 0)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    local active_weapon = my_index:GetActiveWeapon()
                    if not active_weapon then return end

                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        if menu_database.handler.elements["Under crosshair style"] == 0 then
                            local add_y = 30
                            local alpha = math.floor(
                                math.sin(math.abs(-math.pi + (GlobalVars.curtime * (1.25 / .75)) % (math.pi * 2))) * 200
                            )

                            local font = self.utils:get_font("Smallest Pixel-7", "9")
                            local indicator_list = {}

                            local inverter = AntiAim.GetInverterState()
                            local current_fake = inverter and "R" or "L"

                            Render.Text(
                                "HALF-LIFE",
                                Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y),
                                Color.RGBA(255, 255, 255, 255),
                                9, font,
                                true, false
                            )

                            Render.Text(
                                "BETA",
                                Vector2.new(screen_size.x / 2 + 45, screen_size.y / 2 + add_y),
                                Color.RGBA(200, 200, 200, alpha),
                                9, font,
                                true, false
                            )

                            add_y = add_y + 9
                            local is_anti_bruteforce = anti_aimbotting_functions.anti_bruteforce.vars.is_anti_bruteforcing

                            local is_defensive = function()
                                local state, shifting = false, 0

                                if Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool() then
                                    local hit_side = all_utils:get_hit_side()
                                    if hit_side == true or hit_side == false then
                                        hit_side = 0
                                        state = false
                                        shifting = nil
                                    end

                                    if hit_side ~= nil then
                                        if hit_side > 0 then
                                            state = true

                                            local tickbase = my_index:GetProp("m_nTickBase")
                                            local next_attack = my_index:GetProp("m_flNextAttack")
                                            local next_primary_attack = my_index:GetActiveWeapon():GetProp("m_flNextPrimaryAttack")

                                            local ticks = GlobalVars.interval_per_tick * (tickbase - 16)
                                            local shifting_tickbase = (ticks - next_primary_attack) * 2

                                            if shifting_tickbase <= 3 then shifting_tickbase = shifting_tickbase + (
                                                next_attack * 0.001
                                            ) * 2 end

                                            if shifting_tickbase >= 17 then shifting_tickbase = 17 end
                                            shifting_tickbase = math.floor(shifting_tickbase)

                                            shifting = shifting_tickbase
                                        else
                                            state = false
                                            shifting = nil
                                        end
                                    else
                                        state = false
                                        shifting = nil
                                    end
                                else
                                    state = false
                                    shifting = nil
                                end

                                return ({
                                    state = state,
                                    value = shifting
                                })
                            end

                            local get_dormant_players = function()
                                local ret = {}

                                local players = EntityList.GetEntitiesByName("CCSPlayer")
                                for i = 1, #players do
                                    local enemy = players[i]:GetPlayer()
                                    if enemy ~= my_index and not enemy:IsTeamMate() and enemy:IsAlive() then
                                        if enemy:IsDormant() then
                                            table.insert(ret, enemy)
                                        end
                                    end
                                end
                         
                                return #ret
                            end

                            local data, current_enemy = all_utils:update_enemies(), nil
                            if data ~= nil then
                                current_enemy = data.enemy
                            end

                            local is_rolling = anti_aimbotting_functions.roll_angles.is_rolling_and_controlling
                            if is_rolling then
                                Render.Text(
                                    "EXPLOITING:",
                                    Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y),
                                    Color.RGBA(255, 255, 255, 255),
                                    9, font,
                                    true, false
                                )

                                Render.Text(
                                    "z°",
                                    Vector2.new(screen_size.x / 2 + 50, screen_size.y / 2 + add_y),
                                    Color.RGBA(255, 255, 255, 255),
                                    9, font,
                                    true, false
                                )
                            elseif is_anti_bruteforce then
                                Render.Text(
                                    "ANTI ",
                                    Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y),
                                    Color.RGBA(255, 255, 255, 255),
                                    9, font,
                                    true, false
                                )
     
                                local counter = anti_aimbotting_functions.anti_bruteforce.vars.anti_bruteforcing_counter
                                local side = anti_aimbotting_functions.anti_bruteforce.vars.anti_bruteforcing_side
                                local timer = math.floor(
                                    anti_aimbotting_functions.anti_bruteforce.vars.anti_bruteforcing_timer % 10000 * 0.01
                                )

                                Render.Text(
                                    ("BRUTEFORCE[%s][%s][%s%%]"):format(counter, side, timer),
                                    Vector2.new(screen_size.x / 2 + 21, screen_size.y / 2 + add_y),
                                    Color.RGBA(255, 255, 255, 255),
                                    9, font,
                                    true, false
                                )
                            else
                                if is_defensive().state then
                                    if is_defensive().value ~= nil then
                                        Render.Text(
                                            "DEFENSIVE:",
                                            Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y),
                                            Color.RGBA(255, 255, 255, 255),
                                            9, font,
                                            true, false
                                        )

                                        Render.Text(
                                            ("%s"):format(is_defensive().value),
                                            Vector2.new(screen_size.x / 2 + 47, screen_size.y / 2 + add_y),
                                            Color.RGBA(255, 255, 255, 255),
                                            9, font,
                                            true, false
                                        )
                                    end
                                else
                                    Render.Text(
                                        "BODY",
                                        Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y),
                                        Color.RGBA(197, 122, 108, 255),
                                        9, font,
                                        true, false
                                    )
         
                                    Render.Text(
                                        " YAW: ",
                                        Vector2.new(screen_size.x / 2 + 16, screen_size.y / 2 + add_y),
                                        Color.RGBA(197, 122, 108, 255),
                                        9, font,
                                        true, false
                                    )
     
                                    Render.Text(
                                        current_fake,
                                        Vector2.new(screen_size.x / 2 + 40, screen_size.y / 2 + add_y),
                                        Color.RGBA(255, 255, 255, 255),
                                        9, font,
                                        true, false
                                    )
                                end
                            end

                            add_y = add_y + 9
                            Render.Text(
                                "DORMANCY:",
                                Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y),
                                Color.RGBA(255, 201, 132, 255),
                                9, font,
                                true, false
                            )

                            Render.Text(
                                ("%s"):format(get_dormant_players()),
                                Vector2.new(screen_size.x / 2 + 45, screen_size.y / 2 + add_y),
                                Color.RGBA(255, 255, 255, 255),
                                9, font,
                                true, false
                            )

                            local isDT = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool()
                            local isHS = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Hide Shots"):GetBool()
                         
                            local charge_color = Exploits.GetCharge() == 1 and Color.RGBA(133, 235, 89, 255) or Color.RGBA(244, 11, 12, 255)
                            local binds = Cheat.GetBinds()
                            local isDMG = false
         
                            for i = 1, #binds do
                                if binds[i]:IsActive() then
                                    if binds[i]:GetName() == "Minimum Damage" then
                                        isDMG = true
                                    end
                                end
                            end
     
                            table.insert(indicator_list, {text = isDT and "DT" or "", color = charge_color})
                            table.insert(indicator_list, {text = isHS and "HS" or "", color = Color.RGBA(255, 211, 168, 255)})
                            table.insert(indicator_list, {text = isDMG and "DMG" or "", color = Color.RGBA(255, 255, 255, 255)})

                            for k, indicator in ipairs(indicator_list) do
                                if indicator.text ~= nil and indicator.text ~= "" then
                                    add_y = add_y + 9
                                    Render.Text(
                                        indicator.text,
                                        Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y),
                                        indicator.color,
                                        9, font,
                                        true, false
                                    )
                                end
                            end
                        end

                        if menu_database.handler.elements["Under crosshair style"] == 1 then
                            local add_y = 30
                            local get_desync = self.utils.get_desync(0)

                            local font = self.utils:get_font("Smallest Pixel-7", "9")
                            local indicator_list = {}

                            Render.Text(
                                get_desync .. "",
                                Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y),
                                Color.RGBA(255, 255, 255, 255),
                                9, font,
                                true, true
                            )

                            Render.GradientBoxFilled(
                                Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y + 8),
                                Vector2.new(screen_size.x / 2 + (-math.abs(get_desync * 58 / 100)), screen_size.y / 2 + add_y + 11),
                                Color.RGBA(255, 255, 120, 255), Color.RGBA(0, 255, 153, 0),
                                Color.RGBA(255, 255, 120, 255), Color.RGBA(0, 255, 153, 0)
                            )

                            Render.GradientBoxFilled(
                                Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y + 8),
                                Vector2.new(screen_size.x / 2 + (math.abs(get_desync * 58 / 100)), screen_size.y / 2 + add_y + 11),
                                Color.RGBA(255, 255, 120, 255), Color.RGBA(153, 0, 255, 0),
                                Color.RGBA(255, 255, 120, 255), Color.RGBA(153, 0, 255, 0)
                            )

                            Render.Text(
                                "HA",
                                Vector2.new(screen_size.x / 2 - 18, screen_size.y / 2 + add_y + 20),
                                Color.RGBA(30, 251, 146, 255),
                                9, font,
                                true, true
                            )

                            Render.Text(
                                "LF",
                                Vector2.new(screen_size.x / 2 - 8, screen_size.y / 2 + add_y + 20),
                                Color.RGBA(125, 251, 146, 255),
                                9, font,
                                true, true
                            )

                            Render.Text(
                                "-",
                                Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y + 20),
                                Color.RGBA(255, 199, 49, 255),
                                9, font,
                                true, true
                            )

                            Render.Text(
                                "LI",
                                Vector2.new(screen_size.x / 2 + 8, screen_size.y / 2 + add_y + 20),
                                Color.RGBA(255, 150, 150, 255),
                                9, font,
                                true, true
                            )

                            Render.Text(
                                "FE",
                                Vector2.new(screen_size.x / 2 + 18, screen_size.y / 2 + add_y + 20),
                                Color.RGBA(255, 120, 120, 255),
                                9, font,
                                true, true
                            )

                            local isDT = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool()
                            local isHS = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Hide Shots"):GetBool()
                         
                            local charge_color = Exploits.GetCharge() == 1 and Color.RGBA(126, 214, 136, 255) or Color.RGBA(226, 54, 55, 255)
                            local binds = Cheat.GetBinds()
                            local isDMG = false
         
                            for i = 1, #binds do
                                if binds[i]:IsActive() then
                                    if binds[i]:GetName() == "Minimum Damage" then
                                        isDMG = true
                                    end
                                end
                            end

                            table.insert(indicator_list, {text = isDT and "DT" or "", color = charge_color})
                            table.insert(indicator_list, {text = isHS and "HS" or "", color = Color.RGBA(255, 217, 116, 255)})
                            table.insert(indicator_list, {text = isDMG and "DMG" or "", color = Color.RGBA(255, 255, 255, 255)})

                            for k, indicator in ipairs(indicator_list) do
                                if indicator.text ~= nil and indicator.text ~= "" then
                                    add_y = add_y + 9
                                    Render.Text(
                                        indicator.text,
                                        Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y + 20),
                                        indicator.color,
                                        9, font,
                                        true, true
                                    )
                                end
                            end
                        end

                        if menu_database.handler.elements["Under crosshair style"] == 2 then
                            local indicator_list = {}
                            local other_font = self.utils:get_font("Smallest Pixel-7", "10")
                            local add_y = 30

                            Render.Text(
                                "HALf-LIFE",
                                Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y),
                                Color.RGBA(255, 255, 255, 255),
                                10, other_font,
                                true, true
                            )

                            local isHS = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Hide Shots"):GetBool()
                            local isQP = Menu.FindVar("Miscellaneous", "Main", "Movement", "Auto Peek"):GetBool()
                            local isDT = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool()
                            local desync_value = ("%s%%"):format(self.utils.get_desync(0))

                            local binds = Cheat.GetBinds()
                            local isDMG = false
         
                            for i = 1, #binds do
                                if binds[i]:IsActive() then
                                    if binds[i]:GetName() == "Minimum Damage" then
                                        isDMG = true
                                    end
                                end
                            end

                            if isDT then
                                local attack = my_index:GetProp("m_flNextAttack") + 0.25
                                local primary_attack = active_weapon:GetProp("m_flNextPrimaryAttack") + 0.25
 
                                local fraction = math.abs(GlobalVars.curtime - math.max(attack, primary_attack))
                                if fraction >= 1 then fraction = 1 end

                                if Exploits.GetCharge() ~= 1 then
                                    Render.Circle(
                                        Vector2.new(screen_size.x / 2 + 10, screen_size.y / 2 + add_y + 19),
                                        3, 60, Color.RGBA(190, 190, 190, 255), 2,
                                        270, fraction * 640
                                    )
                                end
                            end

                            table.insert(indicator_list, {text = desync_value, color = Color.RGBA(190, 190, 190, 255)})
                            table.insert(indicator_list, {text = isDT and "DT" or "", color = Color.RGBA(190, 190, 190, 255)})
                            table.insert(indicator_list, {text = isHS and "ONSHOT" or "", color = Color.RGBA(190, 190, 190, 255)})
                            table.insert(indicator_list, {text = isQP and "QP" or "", color = Color.RGBA(190, 190, 190, 255)})
                            table.insert(indicator_list, {text = isDMG and "DMG" or "", color = Color.RGBA(190, 190, 190, 255)})
                         
                            for k, indicator in ipairs(indicator_list) do
                                if indicator.text ~= nil and indicator.text ~= "" then
                                    add_y = add_y + 9
                                    Render.Text(
                                        indicator.text,
                                        Vector2.new(screen_size.x / 2, screen_size.y / 2 + add_y),
                                        indicator.color,
                                        10, other_font,
                                        true, true
                                    )
                                end
                            end
                        end
                    end
                end
            end
        end,

        watermark_modules = {
            hit_counter = 0,
            count_hurt_shots = function(self, e)
                if menu_database.handler.elements["Enable indicator list"] then
                    if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 1)) ~= 0 then
                        local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                        if not localplayer then return end
                     
                        local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                        if not my_index then return end
 
                        if EngineClient.IsConnected() and my_index:IsAlive() then
                            if e:GetName() ~= "player_hurt" then return end

                            local victim = EntityList.GetPlayerForUserID(e:GetInt("userid"))
                            local attacker = EntityList.GetPlayerForUserID(e:GetInt("attacker"))
                            if victim == attacker or attacker == my_index then return end

                            self.hit_counter = self.hit_counter + 1
                            if self.hit_counter > 10 then self.hit_counter = 0 end
                        end
                    end
                end
            end
        },

        watermark = function(self)
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 1)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local font = self.utils:get_font("Verdana", "10", "b")
                        local add_x, add_y = screen_size.x / 2 - (screen_size.x / 2 - 85), screen_size.y / 2 - 35

                        Render.Text(
                            "half-life - version 0.3.0 beta",
                            Vector2.new(add_x, add_y),
                            Color.RGBA(255, 255, 255, 255),
                            10, font,
                            true
                        )

                        local aa_state = (
                            my_index:GetState() == "IN AIR" and "nil: (1. 0. 0)"
                            or AntiAim.GetInverterState() and "0: (1. 0. 0)" or "1: (1. 0. 0)"
                        )
                     
                        Render.Text(
                            ("> anti-aim info: side - %s;"):format(aa_state),
                            Vector2.new(add_x, add_y + 15),
                            Color.RGBA(255, 218, 244, 215),
                            10, font,
                            true
                        )
 
                        local data, current_enemy = all_utils:update_enemies(), nil
                        if data ~= nil then
                            current_enemy = data.enemy
                        end
                     
                        local target_name = (current_enemy ~= nil and current_enemy:IsAlive()) and current_enemy:GetName() or "nil"
                        local name_size = Render.CalcTextSize(("> anti-aim info: side - %s;"):format(aa_state), 10, font)
                     
                        Render.Text(
                            ("target: %s"):format(target_name),
                            Vector2.new(add_x + name_size.x / 2 + 85, add_y + 15),
                            Color.RGBA(255, 218, 244, 215),
                            10, font,
                            true
                        )
 
                        local is_rolling = anti_aimbotting_functions.roll_angles.is_rolling_and_controlling
                        local state = is_rolling and "exploiting" or (my_index:GetState()):lower()

                        Render.Text(
                            ("> player info: state - %s"):format(state),
                            Vector2.new(add_x, add_y + 30),
                            Color.RGBA(223, 255, 166, 215),
                            10, font,
                            true
                        )
 
                        Render.Text(
                            ("> anti brute info: misses - %s: hurt - %s"):format(
                                anti_aimbotting_functions.anti_bruteforce.vars.anti_bruteforcing_counter,
                                self.watermark_modules.hit_counter
                            ),
                            Vector2.new(add_x, add_y + 45),
                            Color.RGBA(255, 186, 145, 255),
                            10, font,
                            true
                        )
                    end
                end
            end
        end,

        minimum_damage = function(self)
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 2)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local font = self.utils:get_font("Smallest Pixel-7", "10")
                        local current_damage = ("%s"):format(Menu.FindVar("Aimbot", "Ragebot", "Accuracy", "Minimum Damage"):GetInt())
                        local text_size = Render.CalcTextSize(current_damage, 10, font)
                     
                        local position = menu_database.handler.elements["Minimum damage position"]
                        local y_position_list = {10, 10, -30, -30, -30, -55, -55, -55}
                        local x_position_list = {text_size.x / 2 + 5, -15, -55, 55, 0, 45, -45, 0}

                        local add_y = y_position_list[position + 1]
                        local add_x = x_position_list[position + 1]

                        Render.Text(
                            current_damage,
                            Vector2.new(screen_size.x / 2 - add_x, screen_size.y / 2 + add_y),
                            Color.RGBA(255, 255, 255, 255),
                            10, font,
                            true, true
                        )
                    end
                end
            end
        end,

        default_origin = Vector.new(0, 0, 0),
        skeet_autopeek = function(self)
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 3)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        if not Menu.FindVar("Miscellaneous", "Main", "Movement", "Auto Peek"):GetBool() then
                            self.default_origin = my_index:GetProp("m_vecOrigin")
                        end

                        if Menu.FindVar("Miscellaneous", "Main", "Movement", "Auto Peek"):GetBool() then
                            local color = menu_database.handler.references["Skeet autopeek color"].reference:Get()
                            color.a = color.a / 50
                         
                            for i = 1, 40 do
                                Render.Circle3DFilled(
                                    self.default_origin,
                                    60,
                                    i / 2,
                                    color,
                                    false
                                )
                            end
                        end
                    end
                end
            end
        end,

        skeet_modules = {
            vars = {
                fakelags = {
                    fakelag_1 = 0,
                    fakelag_2 = 0,
                    fakelag_3 = 0,
                    fakelag_4 = 0,
                    fakelag_5 = 0,
                    old_choke = 0
                },

                lag_compensation = {
                    is_lc = false,
                    timer = GlobalVars.curtime
                },

                fake = {
                    smooth_fill = 0
                },

                shot_stats = {
                    hits = 0,
                    misses = 0,
                    all_shots = 0,

                    count_shots = function(self, shot)
                        if menu_database.handler.elements["Enable indicator list"] then
                            if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 4)) ~= 0 then
                                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                                if not localplayer then return end
                             
                                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                                if not my_index then return end
         
                                if EngineClient.IsConnected() and my_index:IsAlive() then
                                    if bit.band(menu_database.handler.elements["Skeet indicator elements"], bit.lshift(1, 1)) ~= 0 then
                                        if shot.reason == 0 then
                                            self.hits = self.hits + 1
                                        else
                                            self.misses = self.misses + 1
                                        end

                                        self.all_shots = self.all_shots + 1
                                    end
                                end
                            end
                        end
                    end,
                },

                bomb_info = {
                    bombsite = -1,
                    is_defusing = false,
                    is_planting = false,
                    plant_time = 0,

                    on_begin_plant = function(self, e)
                        if e:GetName() ~= "bomb_beginplant" then return end
     
                        self.bombsite = e:GetInt("site")
                        self.is_planting = true
                        self.plant_time = GlobalVars.curtime
                    end,
 
                    on_bomb_plant = function(self, e)
                        if e:GetName() ~= "bomb_planted" then return end
 
                        self.bombsite = -1
                        self.is_planting = false
                    end,
 
                    on_abort_plant = function(self, e)
                        if e:GetName() ~= "bomb_abortplant" then return end
     
                        self.bombsite = -1
                        self.is_planting = false
                    end,
 
                    on_defusing = function(self, e)
                        if e:GetName() ~= "bomb_begindefuse" then return end
 
                        self.is_defusing = true
                    end,
 
                    on_abort_defusing = function(self, e)
                        if e:GetName() ~= "bomb_abortdefuse" then return end
                     
                        self.is_defusing = false
                    end,
 
                    on_round_prestart = function(self, e)
                        if e:GetName() ~= "round_prestart" then return end
     
                        self.bombsite = -1
                        self.is_defusing = false
                        self.is_planting = false
                        self.plant_time = 0
                    end,
 
                    on_self_connected = function(self, e)
                        if e:GetName() ~= "player_connect_full" then return end
 
                        self.plant_time = 0
                        local c4 = EntityList.GetEntitiesByClassID(129)[1]
 
                        if not c4 then
                            self.bombsite = -1
                            self.is_planting = false
                        else
                            self.is_planting = true
                            self.bombsite = c4:GetProp("m_nBombSite")
                        end
                    end,
 
                    load_bomb_modules = function(self, e)
                        self:on_begin_plant(e)
                        self:on_bomb_plant(e)
                        self:on_abort_plant(e)
                        self:on_round_prestart(e)
                        self:on_defusing(e)
                        self:on_abort_defusing(e)
                        self:on_self_connected(e)
                    end
                }
            },

            directories = {
                isBaim = Menu.FindVar("Aimbot", "Ragebot", "Misc", "Body Aim")
            }
        },

        side_skeet_indicators = function(self)
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 4)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local indicator_list = {}
                        local font = self.utils:get_font("Calibri", "30", "b")

                        local add_x, add_y = 2, 50
                        local x, y = screen_size.x / 100 - 3, screen_size.y / 1.50 - 5

                        local render_indicator = function(text, color, add_y)
                            local text_size = Render.CalcTextSize(text, 22, font)
                            local back_alpha = 65
                         
                            Render.GradientBoxFilled(
                                Vector2.new(13, y + add_y),
                                Vector2.new(13 + text_size.x / 2, y + add_y + 28),
                                Color.RGBA(0, 0, 0, 0), Color.RGBA(0, 0, 0, back_alpha),
                                Color.RGBA(0, 0, 0, 0), Color.RGBA(0, 0, 0, back_alpha)
                            )

                            Render.GradientBoxFilled(
                                Vector2.new(13 + text_size.x / 2, y + add_y),
                                Vector2.new(13 + text_size.x, y + add_y + 28),
                                Color.RGBA(0, 0, 0, back_alpha), Color.RGBA(0, 0, 0, 0),
                                Color.RGBA(0, 0, 0, back_alpha), Color.RGBA(0, 0, 0, 0)
                            )

                            self.utils.draw_shadow(
                                2,
                                text,
                                x + add_x + 2, y + add_y + 4,
                                color,
                                23, font,
                                false, Color.RGBA(0, 0, 0, 170)
                            )
                        end

                        local render_circle = function(text, x_position, y_position, add_y, size, color, value)  
                            local text_size = Render.CalcTextSize(text, 22, font)
                         
                            Render.Circle(
                                Vector2.new(x + add_x + text_size.x + x_position + 3, y + add_y + text_size.y / 2 + y_position + 3),
                                size + 1, 60, Color.RGBA(0, 0, 0, 255), 3
                            )
                         
                            Render.Circle(
                                Vector2.new(x + add_x + text_size.x + x_position + 3, y + add_y + text_size.y / 2 + y_position + 3),
                                size, 60,
                                color,
                                4, 0, value
                            )
                        end

                        local get_text_fakelag = function()
                            local self_chocking = ClientState.m_choked_commands
                            if self_chocking < self.skeet_modules.vars.fakelags.old_choke then
                                self.skeet_modules.vars.fakelags.fakelag_1 = self.skeet_modules.vars.fakelags.fakelag_2
                                self.skeet_modules.vars.fakelags.fakelag_2 = self.skeet_modules.vars.fakelags.fakelag_3
                                self.skeet_modules.vars.fakelags.fakelag_3 = self.skeet_modules.vars.fakelags.fakelag_4
                                self.skeet_modules.vars.fakelags.fakelag_4 = self.skeet_modules.vars.fakelags.fakelag_5
                                self.skeet_modules.vars.fakelags.fakelag_5 = self.skeet_modules.vars.fakelags.old_choke
                            end

                            self.skeet_modules.vars.fakelags.old_choke = self_chocking
                            return ("%i-%i-%i-%i-%i"):format(
                                self.skeet_modules.vars.fakelags.fakelag_1,
                                self.skeet_modules.vars.fakelags.fakelag_2,
                                self.skeet_modules.vars.fakelags.fakelag_3,
                                self.skeet_modules.vars.fakelags.fakelag_4,
                                self.skeet_modules.vars.fakelags.fakelag_5
                            )
                        end

                        local is_enabled = function(value)
                            return bit.band(menu_database.handler.elements["Skeet indicator elements"], bit.lshift(1, value)) ~= 0
                        end

                        self.skeet_modules.vars.fake.smooth_fill = all_utils.easings.lerp(
                            self.skeet_modules.vars.fake.smooth_fill,
                            self.utils.get_desync(0),
                            GlobalVars.frametime * 5
                        )
 
                        local fake_color = Color.new(
                            (170 + (154 - 186) * self.skeet_modules.vars.fake.smooth_fill / 60) / 255,
                            (0 + (255 - 0) * self.skeet_modules.vars.fake.smooth_fill / 60) / 255,
                            (16 + (0 - 16) * self.skeet_modules.vars.fake.smooth_fill / 60) / 255,
                            1
                        )

                        table.insert(indicator_list, {
                            type = "circle",
 
                            fl_text = "FAKE",
                            fl_color = fake_color,
 
                            x_pos = is_enabled(0) and 15 or "",
                            y_pos = 0,
                            size = 7,
                            color = fake_color,
                            value = self.skeet_modules.vars.fake.smooth_fill * 6.4
                        })

                        if is_enabled(1) then
                            local hits = self.skeet_modules.vars.shot_stats.hits
                            local misses = self.skeet_modules.vars.shot_stats.misses
                            local all_shots = self.skeet_modules.vars.shot_stats.all_shots

                            local selected_style = menu_database.handler.elements["Hit/miss type"]
                            if selected_style == 0 then
                                if all_shots > 0 then
                                    local result_stats = ("%.1f"):format((hits / all_shots) * 100)
                                    local result_text = ("%s/%s (%s)"):format(hits, all_shots, result_stats)
     
                                    table.insert(indicator_list, {
                                        type = "text",
                                        text = result_text,
                                        color = Color.RGBA(255, 255, 255, 255)
                                    })
                                end
                            else
                                local hard_math = math.floor((hits / all_shots) * 100)
                                if hard_math ~= hard_math then hard_math = 100 end

                                local result_stats = ("%s%%"):format(hard_math)
                                local result_text = ("%s/%s"):format(misses, result_stats)
 
                                table.insert(indicator_list, {
                                    type = "text",
                                    text = result_text,
                                    color = Color.RGBA(255, 255, 255, 255)
                                })
                            end
                        end

                        table.insert(indicator_list, {
                            type = "text",
                            text = is_enabled(2) and get_text_fakelag() or "",
                            color = Color.RGBA(255, 255, 255, 255)
                        })

                        table.insert(indicator_list, {
                            type = "text",
                            text = (is_enabled(3) and self.skeet_modules.directories.isBaim:GetInt() == 2) and "BODY" or "",
                            color = Color.RGBA(255, 255, 255, 255)
                        })

                        local isDT = Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool()
                        local binds = Cheat.GetBinds()
                        local isDMG, curDMG, isPing = false, 0, false
     
                        for i = 1, #binds do
                            local bind = binds[i]
                            if bind:IsActive() then
                                if bind:GetName() == "Minimum Damage" then
                                    isDMG = true
                                    curDMG = bind:GetValue()
                                end

                                if bind:GetName() == "Fake Ping" then
                                    isPing = true
                                end
                            end
                        end

                        local current_state = my_index:GetState()
                        if not current_state then return end

                        table.insert(indicator_list, {
                            type = "text",
                            text = is_enabled(4) and "EX" or "",
                            color = (isDT and current_state == "IN AIR") and Color.RGBA(132, 195, 16, 255) or Color.RGBA(208, 208, 20, 255)
                        })

                        local damage_type = menu_database.handler.elements["Damage type"]
                        table.insert(indicator_list, {
                            type = "text",
                            text = (is_enabled(5) and isDMG) and (
                                damage_type == 0 and ("Damage: %s"):format(curDMG) or damage_type == 1 and ("DMG: %s"):format(curDMG)
                                or damage_type == 2 and tostring(curDMG) or ""
                            ) or "",
                            color = (
                                damage_type == 0 and Color.RGBA(255, 255, 255, 255) or damage_type == 1 and Color.RGBA(255, 255, 255, 150) or Color.RGBA(255, 255, 255, 255)
                            )
                        })

                        local isDA = menu_database.handler.elements["Enable dormant aimbot"]
                        table.insert(indicator_list, {
                            type = "text",
                            text = (is_enabled(6) and isDA) and "DA" or "",
                            color = Color.RGBA(132, 195, 16, 255)
                        })

                        local get_ping_color = function()
                            local ping = EntityList.GetPlayerResource():GetProp("DT_CSPlayerResource", "m_iPing")[2]
                            local color = Color.RGBA(
                                math.floor(255 - ((ping / 189 * 60) * 2.29824561404)),
                                math.floor((ping / 189 * 60) * 2.42105263158),
                                math.floor((ping / 189 * 60) * 0.22807017543),
                                255
                            )

                            return color
                        end

                        table.insert(indicator_list, {
                            type = "text",
                            text = (is_enabled(7) and isPing) and "PING" or "",
                            color = get_ping_color()
                        })

                        if my_index:GetState() == "IN AIR" then
                            self.skeet_modules.vars.lag_compensation.is_lc = true
                            self.skeet_modules.vars.lag_compensation.timer = GlobalVars.curtime + 0.1
                        else
                            if self.skeet_modules.vars.lag_compensation.timer > GlobalVars.curtime then
                                self.skeet_modules.vars.lag_compensation.is_lc = true
                            else
                                self.skeet_modules.vars.lag_compensation.is_lc = false
                            end
                        end

                        table.insert(indicator_list, {
                            type = "text",
                            text = (is_enabled(8) and self.skeet_modules.vars.lag_compensation.is_lc) and "LC" or "",
                            color = my_index:GetVelocity() < 285 and Color.RGBA(255, 0, 0, 255) or Color.RGBA(132, 195, 16, 255)
                        })

                        local isFD = Menu.FindVar("Aimbot", "Anti Aim", "Misc", "Fake Duck"):GetBool()
                        table.insert(indicator_list, {
                            type = "text",
                            text = (is_enabled(9) and isFD) and "DUCK" or "",
                            color = Color.RGBA(255, 255, 255, 255)
                        })

                        if is_enabled(10) then
                            local c4 = EntityList.GetEntitiesByClassID(129)[1]
                            if c4 then
                                if c4:GetProp("m_bBombTicking") and not c4:GetProp("m_bBombDefused") then
                                    local get_damage = function()
                                        local armor = my_index:GetProp("m_ArmorValue")
                                        local health = my_index:GetProp("m_iHealth")
 
                                        local c4_origin = c4:GetRenderOrigin()
                                        local my_origin = my_index:GetRenderOrigin()
                                        local distance = my_origin:DistTo(c4_origin)
 
                                        local a, b, c = 450.7, 75.68, 789.2
                                        local d = (distance - b) / c
                                        local damage = a * math.exp(-d * d)
 
                                        if armor > 0 then
                                            local new_damage = damage * 0.5
                                            local armor_damage = (damage - new_damage) * 0.5
 
                                            if armor_damage > armor then
                                                armor = armor * (1 / .5)
                                                new_damage = damage - armor_damage
                                            end
 
                                            damage = new_damage
                                        end
 
                                        return ({
                                            text = math.ceil(damage) >= health and "FATAL" or ("-%s HP"):format(math.ceil(damage)),
                                            color = math.ceil(damage) >= health and Color.RGBA(255, 0, 0, 255)
                                            or Color.RGBA(210, 216, 112, 255)
                                        })
                                    end
 
                                    local current_site = self.skeet_modules.vars.bomb_info.bombsite % 2 == 1 and "B" or "A"
                                    local timer = c4:GetProp("m_flC4Blow") - GlobalVars.curtime
 
                                    if timer > 0.1 then
                                        local plant_info = ("%s - %ss"):format(current_site, ("%.1f"):format(timer))
                                        table.insert(indicator_list, {
                                            type = "text",
                                            text = plant_info,
                                            color = Color.RGBA(255, 255, 255, 255)
                                        })
 
                                        local health_info = get_damage()
                                        table.insert(indicator_list, {
                                            type = "text",
                                            text = health_info.text,
                                            color = health_info.color
                                        })
 
                                        if self.skeet_modules.vars.bomb_info.is_defusing then
                                            local defuse_timer = c4:GetProp("m_flDefuseCountDown") - GlobalVars.curtime
                                            local defuse_length = c4:GetProp("m_flDefuseLength")
                                            local defuse_bar_length = ((screen_size.y - 50) / defuse_length) * defuse_timer
                                            local bar_color = timer > defuse_length and Color.RGBA(58, 191, 54, 120)
                                            or Color.RGBA(252, 18, 19, 120)
 
                                            Render.BoxFilled(
                                                Vector2.new(0, 0),
                                                Vector2.new(10, screen_size.y),
                                                Color.RGBA(25, 25, 25, 120)
                                            )
 
                                            Render.BoxFilled(
                                                Vector2.new(0, screen_size.y - defuse_bar_length),
                                                Vector2.new(10, screen_size.y),
                                                bar_color
                                            )
 
                                            Render.Box(
                                                Vector2.new(0, 0),
                                                Vector2.new(10, screen_size.y),
                                                Color.RGBA(25, 25, 25, 120)
                                            )
                                        end
                                    end
                                end
                            end
 
                            if self.skeet_modules.vars.bomb_info.is_planting then
                                local current_site = self.skeet_modules.vars.bomb_info.bombsite % 2 == 1 and "B" or "A"
                                local frac = all_utils.easings.clamp(3.125 - (3.125 + self.skeet_modules.vars.bomb_info.plant_time - GlobalVars.curtime), 0, 3.125)

                                table.insert(indicator_list, {
                                    type = "circle",
         
                                    fl_text = ("Bombsite %s"):format(current_site),
                                    fl_color = Color.RGBA(234, 209, 138, 255),
         
                                    x_pos = 16,
                                    y_pos = 0,
                                    size = 8,
                                    color = Color.RGBA(255, 255, 255, 255),
                                    value = (frac / 3.3) * 360
                                })
                            end
                        end

                        table.insert(indicator_list, {
                            type = "text",
                            text = (is_enabled(11) and Menu.FindVar("Aimbot", "Ragebot", "Exploits", "Double Tap"):GetBool()) and "DT" or "",
                            color = Exploits.GetCharge() == 1 and Color.RGBA(255, 255, 255, 255) or Color.RGBA(255, 0, 0, 255)
                        })

                        for k, indicator in ipairs(indicator_list) do
                            if indicator.type == "text" then
                                if indicator.text ~= nil and indicator.text ~= "" then
                                    render_indicator(
                                        indicator.text,
                                        indicator.color,
                                        add_y
                                    )
                                end
                            end

                            if indicator.type == "circle" then
                                if indicator.x_pos ~= "" then
                                    render_indicator(
                                        indicator.fl_text,
                                        indicator.fl_color,
                                        add_y
                                    )
 
                                    render_circle(
                                        indicator.fl_text,
                                        indicator.x_pos, indicator.y_pos, add_y,
                                        indicator.size,
                                        indicator.color,
                                        indicator.value
                                    )
                                end
                            end

                            if (indicator.text ~= nil and indicator.text ~= "") or (indicator.type == "circle" and indicator.x_pos ~= "") then
                                add_y = add_y - 35
                            end
                        end
                    end
                end
            end
        end,

        thirdperson_animations = function()
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 5)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        Cheat.SetThirdPersonAnim(false)
                    end
                else
                    Cheat.SetThirdPersonAnim(true)
                end
            else
                Cheat.SetThirdPersonAnim(true)
            end
        end,

        hitmarker_modules = {
            hitmarkers = {},
            on_registered_shot = function(self, shot)
                if menu_database.handler.elements["Enable indicator list"] then
                    if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 6)) ~= 0 then
                        local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                        if not localplayer then return end
                     
                        local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                        if not my_index then return end
 
                        if EngineClient.IsConnected() and my_index:IsAlive() then
                            if shot.reason == 0 then
                                table.insert(self.hitmarkers, {timer = GlobalVars.realtime, alpha = 0})
                            end
                        end
                    end
                end
            end
        },

        crosshair_hitmarker = function(self)
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 6)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        for i, info in ipairs(self.hitmarker_modules.hitmarkers) do
                            if info.timer + 0.5 < GlobalVars.realtime then
                                info.alpha = all_utils.easings.lerp(
                                    info.alpha, 0, GlobalVars.frametime * 15
                                )
                            else
                                info.alpha = all_utils.easings.lerp(
                                    info.alpha, 255, GlobalVars.frametime * 15
                                )
                            end

                            local alpha = math.floor(info.alpha)
                            local color = menu_database.handler.references["Crosshair hitmarker color"].reference:Get()

                            Render.Line(
                                Vector2.new(screen_size.x / 2 - 5, screen_size.y / 2 - 5),
                                Vector2.new(screen_size.x / 2 - 10, screen_size.y / 2 - 10),
                                Color.new(color.r, color.g, color.b, alpha / 200)
                            )

                            Render.Line(
                                Vector2.new(screen_size.x / 2 + 5, screen_size.y / 2 - 5),
                                Vector2.new(screen_size.x / 2 + 10, screen_size.y / 2 - 10),
                                Color.new(color.r, color.g, color.b, alpha / 200)
                            )
                         
                            Render.Line(
                                Vector2.new(screen_size.x / 2 + 5, screen_size.y / 2 + 5),
                                Vector2.new(screen_size.x / 2 + 10, screen_size.y / 2 + 10),
                                Color.new(color.r, color.g, color.b, alpha / 200)
                            )

                            Render.Line(
                                Vector2.new(screen_size.x / 2 - 5, screen_size.y / 2 + 5),
                                Vector2.new(screen_size.x / 2 - 10, screen_size.y / 2 + 10),
                                Color.new(color.r, color.g, color.b, alpha / 200)
                            )

                            if info.timer + 1.5 < GlobalVars.realtime then table.remove(self.hitmarker_modules.hitmarkers, i) end
                        end
                    end
                end
            end
        end,

        script_start_modules = {
            show_one_time = false,
            timer = GlobalVars.realtime,

            smooth_y = screen_size.y - 100,
            alpha = 0,

            first_circle = 0,
            second_circle = 0,

            box_left = screen_size.x / 2,
            box_right = screen_size.x / 2,

            box_left_1 = screen_size.x / 2,
            box_right_1 = screen_size.x / 2
        },

        on_script_start = function(self)
            if not self.script_start_modules.show_one_time then
                local font = self.utils:get_font("Verdana", "12")
                local text = ("[half-life beta] Welcome back, %s! Successfully loaded half-life; build: beta; days left: lifetime."):format(Cheat.GetCheatUserName())
                local text_size = Render.CalcTextSize(text, 12, font)

                self.script_start_modules.alpha = all_utils.easings.lerp(
                    self.script_start_modules.alpha,
                    255,
                    GlobalVars.frametime * 4
                )

                self.script_start_modules.first_circle = all_utils.easings.lerp(
                    self.script_start_modules.first_circle, 275, GlobalVars.frametime * 5
                )

                self.script_start_modules.second_circle = all_utils.easings.lerp(
                    self.script_start_modules.second_circle, -95, GlobalVars.frametime * 3
                )

                self.script_start_modules.box_left = all_utils.easings.lerp(
                    self.script_start_modules.box_left, screen_size.x / 2 - text_size.x / 2 - 2, GlobalVars.frametime * 6
                )

                self.script_start_modules.box_right = all_utils.easings.lerp(
                    self.script_start_modules.box_right, screen_size.x / 2 + text_size.x / 2 + 4, GlobalVars.frametime * 6
                )

                self.script_start_modules.box_left_1 = all_utils.easings.lerp(
                    self.script_start_modules.box_left_1, screen_size.x / 2 - text_size.x / 2 - 2, GlobalVars.frametime * 6
                )

                self.script_start_modules.box_right_1 = all_utils.easings.lerp(
                    self.script_start_modules.box_right_1, screen_size.x / 2 + text_size.x / 2 + 4, GlobalVars.frametime * 6
                )

                if self.script_start_modules.timer + 3.8 < GlobalVars.realtime then
                    self.script_start_modules.first_circle = all_utils.easings.lerp(
                        self.script_start_modules.first_circle, 0, GlobalVars.frametime * 1
                    )
 
                    self.script_start_modules.second_circle = all_utils.easings.lerp(
                        self.script_start_modules.second_circle, 0, GlobalVars.frametime * 1
                    )
 
                    self.script_start_modules.box_left = all_utils.easings.lerp(
                        self.script_start_modules.box_left, screen_size.x / 2, GlobalVars.frametime * 1
                    )
 
                    self.script_start_modules.box_right = all_utils.easings.lerp(
                        self.script_start_modules.box_right, screen_size.x / 2, GlobalVars.frametime * 1
                    )
 
                    self.script_start_modules.box_left_1 = all_utils.easings.lerp(
                        self.script_start_modules.box_left_1, screen_size.x / 2, GlobalVars.frametime * 1
                    )
 
                    self.script_start_modules.box_right_1 = all_utils.easings.lerp(
                        self.script_start_modules.box_right_1, screen_size.x / 2, GlobalVars.frametime * 1
                    )
                end

                if self.script_start_modules.timer + 4 < GlobalVars.realtime then
                    self.script_start_modules.smooth_y = all_utils.easings.lerp(
                        self.script_start_modules.smooth_y,
                        screen_size.y + 100,
                        GlobalVars.frametime * 4
                    )

                    self.script_start_modules.alpha = all_utils.easings.lerp(
                        self.script_start_modules.alpha,
                        0,
                        GlobalVars.frametime * 8
                    )
                end

                local add_y = math.floor(self.script_start_modules.smooth_y)
                local alpha = math.floor(self.script_start_modules.alpha)

                local first_circle = math.floor(self.script_start_modules.first_circle)
                local second_circle = math.floor(self.script_start_modules.second_circle)

                local left_box = math.floor(self.script_start_modules.box_left)
                local right_box = math.floor(self.script_start_modules.box_right)

                local left_box_1 = math.floor(self.script_start_modules.box_left_1)
                local right_box_1 = math.floor(self.script_start_modules.box_right_1)

                local rgb = self.utils.hsv_to_rgb(GlobalVars.realtime / 4, 1, 1)
                local second_gradient = Color.new(rgb.b, rgb.r, rgb.g, 1)
                local third_gradient = Color.new(rgb.g, rgb.b, rgb.r, 1)

                Render.BoxFilled(
                    Vector2.new(screen_size.x / 2 - text_size.x / 2 - 11, add_y - 26),
                    Vector2.new(screen_size.x / 2 + text_size.x / 2 + 11, add_y - 4),
                    Color.RGBA(17, 17, 17, alpha - 65), 90
                )
             
                Render.Circle(
                    Vector2.new(screen_size.x / 2 - text_size.x / 2 - 2, add_y - 15),
                    10, 90, second_gradient, 2, 90, first_circle
                )

                Render.Circle(
                    Vector2.new(screen_size.x / 2 + text_size.x / 2 + 2, add_y - 15),
                    10, 90, third_gradient, 2, 90, second_circle
                )

                for i = 1, 1 do
                    for k = 1, 2 do
                        Render.GradientBoxFilled(
                            Vector2.new(left_box, add_y - 7 + i),
                            Vector2.new(screen_size.x / 2, add_y - 5.5 + i),
                            second_gradient, second_gradient, second_gradient, second_gradient
                        )

                        Render.GradientBoxFilled(
                            Vector2.new(right_box, add_y - 7 + i),
                            Vector2.new(screen_size.x / 2, add_y - 5.5 + i),
                            third_gradient, second_gradient, third_gradient, second_gradient
                        )
                     
                        Render.GradientBoxFilled(
                            Vector2.new(screen_size.x / 2, add_y - 22.7 - i),
                            Vector2.new(left_box_1, add_y - 24.5 - i),
                            second_gradient, second_gradient, second_gradient, second_gradient
                        )

                        Render.GradientBoxFilled(
                            Vector2.new(screen_size.x / 2, add_y - 22.7 - i),
                            Vector2.new(right_box_1, add_y - 24.5 - i),
                            second_gradient, third_gradient, second_gradient, third_gradient
                        )
                    end
                end

                self.utils.draw_shadow(
                    2,
                    text,
                    screen_size.x / 2 - text_size.x / 2, add_y - 21,
                    Color.RGBA(255, 255, 255, alpha - 70),
                    12, font,
                    false, Color.RGBA(0, 0, 0, alpha)
                )

                if self.script_start_modules.timer + 5 < GlobalVars.realtime then
                    self.script_start_modules.timer = GlobalVars.realtime
                    self.script_start_modules.show_one_time = true
                end
            end
        end,

        hitlog_modules = {
            hitlogs = {},
            count_shots = 0,

            on_registered_shot = function(self, shot)
                if menu_database.handler.elements["Enable hitlogs"] then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
 
                    if EngineClient.IsConnected() then
                        self.count_shots = self.count_shots + 1
                        if self.count_shots > 99 then self.count_shots = 0 end

                        local other_info = function()
                            local index = EntityList.GetClientEntity(shot.target_index)
                            if not index then return end

                            local target = index:GetPlayer()
                            local name = target:GetName()
 
                            local get_hitbox = function()
                                local hitgroups = {
                                    "head", "neck", "pelvis",
                                    "stomach", "lower chest", "chest",
                                    "upper chest", "right leg", "left leg",
                                    "right leg", "left leg", "right foot",
                                    "left foot", "right hand", "left hand",
                                    "right arm", "right arm", "left arm", "left arm"
                                }

                                local hitboxes = {0, 3, 2, 16, 18, 11, 10, 0}
                                local hitbox = hitboxes[shot.hitgroup]
                                if hitbox == nil then hitbox = 3 end
 
                                local hitbox = hitgroups[hitbox + 1]
                                local wanted_hitgroup = hitgroups[shot.wanted_hitgroup]
 
                                return ({
                                    hitbox = hitbox,
                                    wanted = wanted_hitgroup
                                })
                            end

                            local damage = {
                                hit = shot.damage,
                                wanted = shot.wanted_damage,
                                remain = target:GetProp("m_iHealth") - shot.damage
                            }
                         
                            if damage.remain <= 0 then damage.remain = 0 end

                            local hit_hitchance = shot.hitchance
                            local is_missmatch = damage.hit ~= damage.wanted and true or false

                            local backtrack = shot.backtrack
                            local reasons = {"resolver", "spread", "occlusion", "prediction error"}
                            local miss_reason = reasons[shot.reason]

                            local second_correction = Utils.RandomInt(-15, 15)
                            local first_correction = 0
                            if 1 - math.floor(hit_hitchance / 100) == 0 then
                                first_correction = 1
                            elseif 1 - math.floor(hit_hitchance / 100) == 1 then
                                first_correction = 2
                            else
                                first_correction = 3
                            end

                            return ({
                                name = name,
                                hitbox = get_hitbox().hitbox,
                                wanted_hitbox = get_hitbox().wanted,

                                shot = self.count_shots,
                                damage = damage.hit,
                                wanted_damage = damage.wanted,
                                remain_damage = damage.remain,

                                hitchance = hit_hitchance,
                                missmatch = is_missmatch,

                                backtrack = backtrack,
                                miss_reason = miss_reason,

                                first_correction = first_correction,
                                second_correction = second_correction
                            })
                        end

                        local text = ""
                        local text_color = Color.RGBA(255, 255, 255, 255)
                        local info = other_info()

                        if shot.reason == 0 then
                            if info.missmatch then
                                text = string.format(
                                    "Registered %sth shot in %s's %s for %s damage [angle: 0.%s°, %s:%s°] ( hitchance: %s | history(Δ): %s | %s health | missmatch: [dmg: %s] )",
                                    info.shot, info.name, info.hitbox, info.damage, Utils.RandomInt(0, 60),
                                    info.first_correction, info.second_correction, info.hitchance, info.backtrack,
                                    info.remain_damage, info.wanted_damage
                                )
                            else
                                text = string.format(
                                    "Registered %sth shot in %s's %s for %s damage [angle: 0.%s°, %s:%s°] ( hitchance: %s | history(Δ): %s | %s health )",
                                    info.shot, info.name, info.hitbox, info.damage, Utils.RandomInt(0, 60),
                                    info.first_correction, info.second_correction, info.hitchance, info.backtrack,
                                    info.remain_damage
                                )
                            end
                        else
                            text = string.format(
                                "Missed %sth shot at %s's %s due to %s [angle: 0.%s°, %s:%s°] ( damage: %s | hitchance: %s | history(Δ): %s | %s health )",
                                info.shot, info.name, info.wanted_hitbox,
                                info.miss_reason, Utils.RandomInt(0, 60), info.first_correction,
                                info.second_correction, info.wanted_damage,
                                info.hitchance, info.backtrack, info.remain_damage
                            )
                        end

                        table.insert(self.hitlogs, {
                            text = text, time = GlobalVars.realtime, color = text_color
                        })

                        colored_print(Color.RGBA(255, 255, 102, 255), "[half-life] ")
                        print(text)
                    end
                end
            end,

            get_addictional_hits = function(self, e)
                if menu_database.handler.elements["Enable hitlogs"] then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end
 
                    if EngineClient.IsConnected() then
                        if e:GetName() ~= "player_hurt" then return end

                        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

                        local victim_index = EntityList.GetPlayerForUserID(e:GetInt("userid"))
                        if not victim_index then return end

                        local target_name = victim_index:GetName()
                        local health_damage = e:GetInt("dmg_health")
                        local remaining_damage = e:GetInt("health")

                        local weapon = e:GetString("weapon")
                        local text = (
                            weapon == "hegrenade" and ("Naded %s for %s (%s remaining)"):format(
                                target_name, health_damage, remaining_damage
                            ) or weapon == "inferno" and ("Burned %s for %s (%s remaining)"):format(
                                target_name, health_damage, remaining_damage
                            ) or weapon == "knife" and ("Knifed %s for %s (%s remaining)"):format(
                                target_name, health_damage, remaining_damage
                            ) or nil
                        )

                        if text ~= nil then
                            table.insert(self.hitlogs, {
                                text = text, time = GlobalVars.realtime, color = Color.RGBA(255, 255, 255, 255)
                            })
 
                            colored_print(Color.RGBA(255, 255, 102, 255), "[half-life] ")
                            print(text)
                        end
                    end
                end
            end
        },

        hitlogs = function(self)
            if menu_database.handler.elements["Enable hitlogs"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
             
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                if EngineClient.IsConnected() then
                    local x, y = 5, 5

                    for k, information in ipairs(self.hitlog_modules.hitlogs) do
                        if information.text and information.time and information.color then
                            local text = information.text
                            local font = self.utils:get_font("Lucida Console", "10", "r")
                            local color = information.color

                            self.utils.draw_shadow(
                                0,
                                text,
                                x, y,
                                color,
                                10, font,
                                false, Color.RGBA(0, 0, 0, 255)
                            )

                            y = y + 15
                            if information.time + 3.8 < GlobalVars.realtime then
                                table.remove(self.hitlog_modules.hitlogs, k)
                            end
                        end
                    end
                end
            end
        end,

        execute_sauron_shots = function(self, shot)
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 7)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        local hitgroups = {
                            "head", "neck", "pelvis", "stomach", "lower chest", "chest", "upper chest",
                            "right leg", "left leg", "right leg", "left leg", "right foot", "left foot",
                            "right hand", "left hand", "right arm", "right arm", "left arm", "left arm"
                        }

                        local all_hitgroups = {0, 3, 2, 16, 18, 11, 10, 0}
                        local current_hitgroups = all_hitgroups[shot.hitgroup]
                        if not current_hitgroups then current_hitgroups = 3 end
                        local hitbox = hitgroups[current_hitgroups + 1]

                        local target_name = EntityList.GetClientEntity(shot.target_index):GetPlayer():GetName()
                        local hit_damage = shot.damage
                        local hit_hitchance = shot.hitchance
                        local wanted_damage = shot.wanted_damage
                        local wanted_hitgroup = hitgroups[shot.wanted_hitgroup]
                        local delta = self.utils.get_desync(0)
                        local backtrack = shot.backtrack
                        local spread = string.format("%.2f", shot.spread_degree)

                        local reasons = {"resolver", "spread", "occlusion", "prediction error"}
                        local miss_reason = reasons[shot.reason]

                        local text = (
                            shot.reason == 0 and
                            ("Registered shot at %s's %s for %s damage [angle: %s°] (hitchance: %s | history: %s)"):format(
                                target_name, hitbox, hit_damage, spread, hit_hitchance, backtrack
                            ) or shot.reason ~= 0 and (
                                "Missed shot at %s's %s due to %s [delta: %s, bt=%s, spread: %s°]"
                            ):format(
                                target_name, wanted_hitgroup, miss_reason, delta, backtrack, spread
                            ) or ""
                        )

                        table.insert(sauron_text, {
                            text = text,
                            timer = GlobalVars.realtime,

                            smooth_y = screen_size.y + 100,
                            alpha = 0,
             
                            first_circle = 0,
                            second_circle = 0,
             
                            box_left = screen_size.x / 2,
                            box_right = screen_size.x / 2,
             
                            box_left_1 = screen_size.x / 2,
                            box_right_1 = screen_size.x / 2
                        })
                    end
                end
            end
        end,

        notifications = function(self)
            if menu_database.handler.elements["Enable indicator list"] then
                if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 7)) ~= 0 then
                    local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                    if not localplayer then return end
                 
                    local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                    if not my_index then return end

                    if EngineClient.IsConnected() and my_index:IsAlive() then
                        if anti_aimbotting_functions.anti_bruteforce.vars.phase_state then
                            table.insert(sauron_text, {
                                text = "Switched angle due to shot",

                                timer = GlobalVars.realtime,
                                smooth_y = screen_size.y + 100,
                                alpha = 0,
                 
                                first_circle = 0,
                                second_circle = 0,
                 
                                box_left = screen_size.x / 2,
                                box_right = screen_size.x / 2,
                 
                                box_left_1 = screen_size.x / 2,
                                box_right_1 = screen_size.x / 2
                            })
                         
                            anti_aimbotting_functions.anti_bruteforce.vars.phase_state = false
                        end

                        local y = screen_size.y - 100
                        for i, info in ipairs(sauron_text) do
                            if i > 3 then
                                table.remove(sauron_text, i)
                            end

                            if info.text ~= nil and info.text ~= "" then
                                local font = self.utils:get_font("Verdana", "12")
                                local text_size = Render.CalcTextSize(
                                    info.text,
                                    12,
                                    font
                                )

                                if info.timer + 3.8 < GlobalVars.realtime then
                                    info.first_circle = all_utils.easings.lerp(
                                        info.first_circle, 0, GlobalVars.frametime * 1
                                    )
                 
                                    info.second_circle = all_utils.easings.lerp(
                                        info.second_circle, 0, GlobalVars.frametime * 1
                                    )
                 
                                    info.box_left = all_utils.easings.lerp(
                                        info.box_left, screen_size.x / 2, GlobalVars.frametime * 1
                                    )
                 
                                    info.box_right = all_utils.easings.lerp(
                                        info.box_right, screen_size.x / 2, GlobalVars.frametime * 1
                                    )
                 
                                    info.box_left_1 = all_utils.easings.lerp(
                                        info.box_left_1, screen_size.x / 2, GlobalVars.frametime * 1
                                    )
                 
                                    info.box_right_1 = all_utils.easings.lerp(
                                        info.box_right_1, screen_size.x / 2, GlobalVars.frametime * 1
                                    )

                                    info.smooth_y = all_utils.easings.lerp(
                                        info.smooth_y,
                                        screen_size.y + 100,
                                        GlobalVars.frametime * 2
                                    )
             
                                    info.alpha = all_utils.easings.lerp(
                                        info.alpha,
                                        0,
                                        GlobalVars.frametime * 4
                                    )
                                else
                                    info.alpha = all_utils.easings.lerp(
                                        info.alpha,
                                        255,
                                        GlobalVars.frametime * 4
                                    )
                                 
                                    info.smooth_y = all_utils.easings.lerp(
                                        info.smooth_y,
                                        y,
                                        GlobalVars.frametime * 4
                                    )
 
                                    info.first_circle = all_utils.easings.lerp(
                                        info.first_circle, 275, GlobalVars.frametime * 5
                                    )
 
                                    info.second_circle = all_utils.easings.lerp(
                                        info.second_circle, -95, GlobalVars.frametime * 3
                                    )
 
                                    info.box_left = all_utils.easings.lerp(
                                        info.box_left, screen_size.x / 2 - text_size.x / 2 - 2, GlobalVars.frametime * 6
                                    )
 
                                    info.box_right = all_utils.easings.lerp(
                                        info.box_right, screen_size.x / 2 + text_size.x / 2 + 4, GlobalVars.frametime * 6
                                    )
 
                                    info.box_left_1 = all_utils.easings.lerp(
                                        info.box_left_1, screen_size.x / 2 - text_size.x / 2 - 2, GlobalVars.frametime * 6
                                    )
 
                                    info.box_right_1 = all_utils.easings.lerp(
                                        info.box_right_1, screen_size.x / 2 + text_size.x / 2 + 4, GlobalVars.frametime * 6
                                    )
                                end

                                local add_y = math.floor(info.smooth_y)
                                local alpha = math.floor(info.alpha)
             
                                local first_circle = math.floor(info.first_circle)
                                local second_circle = math.floor(info.second_circle)
             
                                local left_box = math.floor(info.box_left)
                                local right_box = math.floor(info.box_right)
             
                                local left_box_1 = math.floor(info.box_left_1)
                                local right_box_1 = math.floor(info.box_right_1)

                                local rgb = self.utils.hsv_to_rgb(GlobalVars.realtime / 4, 1, 1)
                                local second_gradient = Color.new(rgb.b, rgb.r, rgb.g, 1)
                                local third_gradient = Color.new(rgb.g, rgb.b, rgb.r, 1)

                                Render.BoxFilled(
                                    Vector2.new(screen_size.x / 2 - text_size.x / 2 - 13, add_y - 26),
                                    Vector2.new(screen_size.x / 2 + text_size.x / 2 + 13, add_y - 4),
                                    Color.RGBA(17, 17, 17, alpha - 65), 90
                                )
                             
                                Render.Circle(
                                    Vector2.new(screen_size.x / 2 - text_size.x / 2 - 4, add_y - 15),
                                    10, 90, second_gradient, 2, 90, first_circle
                                )

                                Render.Circle(
                                    Vector2.new(screen_size.x / 2 + text_size.x / 2 + 4, add_y - 15),
                                    10, 90, third_gradient, 2, 90, second_circle
                                )

                                for i = 1, 1 do
                                    for k = 1, 2 do
                                        Render.GradientBoxFilled(
                                            Vector2.new(left_box - 2, add_y - 7 + i),
                                            Vector2.new(screen_size.x / 2, add_y - 5.5 + i),
                                            second_gradient, second_gradient, second_gradient, second_gradient
                                        )

                                        Render.GradientBoxFilled(
                                            Vector2.new(right_box + 2, add_y - 7 + i),
                                            Vector2.new(screen_size.x / 2, add_y - 5.5 + i),
                                            third_gradient, second_gradient, third_gradient, second_gradient
                                        )
                                     
                                        Render.GradientBoxFilled(
                                            Vector2.new(screen_size.x / 2, add_y - 23 - i),
                                            Vector2.new(left_box_1 - 1, add_y - 25 - i),
                                            second_gradient, second_gradient, second_gradient, second_gradient
                                        )

                                        Render.GradientBoxFilled(
                                            Vector2.new(screen_size.x / 2, add_y - 23 - i),
                                            Vector2.new(right_box_1 + 1, add_y - 25 - i),
                                            second_gradient, third_gradient, second_gradient, third_gradient
                                        )
                                    end
                                end

                                self.utils.draw_shadow(
                                    0,
                                    info.text,
                                    screen_size.x / 2 - text_size.x / 2, add_y - 21,
                                    Color.RGBA(255, 255, 255, alpha),
                                    12, font,
                                    false, Color.RGBA(0, 0, 0, alpha)
                                )

                                y = y - 30
                                if info.timer + 4 < GlobalVars.realtime then table.remove(sauron_text, i) end
                            end
                        end
                    end
                end
            end
        end,

        keybind_modules = {
            vars = {
                keybinds_alpha = {},
                keybinds_y = {},

                width = 0,
                is_draggable = false,
                cursor_last_pos = Vector2.new(0, 0)
            }
        },

        keybinds = function(self)
            if menu_database.handler.elements["Enable keybinds"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
             
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                if EngineClient.IsConnected() and my_index:IsAlive() then
                    local x = menu_database.handler.elements["Keybinds x-adding"]
                    local y = menu_database.handler.elements["Keybinds y-adding"]

                    local max_width = 0
                    local font = self.utils:get_font("Verdana", "11", "r")

                    local render_container = function(x, y, w)
                        local color = menu_database.handler.references["Keybinds color"].reference:Get()
                        local name_size = Render.CalcTextSize("keybinds", 11, font)

                        local height = 18
                        local line_height = 1.5
                 
                        local render_rounded_line = function()
                            Render.BoxFilled(
                                Vector2.new(x - 70, y),
                                Vector2.new(x + w, y + height),
                                Color.RGBA(17, 17, 17, math.floor(color.a * 255))
                            )

                            Render.Circle( -- right
                                Vector2.new(x + w - 4, y + line_height + 2),
                                5, 90, Color.new(color.r, color.g, color.b, 1), 2, 270, 370
                            )

                            Render.Circle( -- left
                                Vector2.new(x - 66, y + line_height + 2),
                                5, 90, Color.new(color.r, color.g, color.b, 1), 2, 270, 170
                            )

                            Render.BoxFilled(
                                Vector2.new(x - 66, y),
                                Vector2.new(x + w - 4, y - line_height - 0.5),
                                Color.new(color.r, color.g, color.b, 1)
                            )

                            Render.GradientBoxFilled(
                                Vector2.new(x + w - 0.2, y + 4),
                                Vector2.new(x + w + 1.5, y + 10),
                                Color.new(color.r, color.g, color.b, 1), Color.new(color.r, color.g, color.b, 1),
                                Color.new(color.r, color.g, color.b, 1), Color.new(color.r, color.g, color.b, 0.6)
                            )

                            Render.GradientBoxFilled(
                                Vector2.new(x - 69.8, y + 4),
                                Vector2.new(x - 71.5, y + 10),
                                Color.new(color.r, color.g, color.b, 1), Color.new(color.r, color.g, color.b, 1),
                                Color.new(color.r, color.g, color.b, 1), Color.new(color.r, color.g, color.b, 0.6)
                            )
                        end

                        render_rounded_line()
                        self.utils.draw_shadow(
                            2,
                            "keybinds",
                            x - 35 + w / 2 - name_size.x / 2, y + 2,
                            Color.RGBA(255, 255, 255, 255),
                            11, font,
                            false, Color.RGBA(0, 0, 0, 205)
                        )
                    end

                    local binds = Cheat.GetBinds()
                    local add_y = 0

                    for i = 1, #binds do
                        table.insert(self.keybind_modules.vars.keybinds_alpha, 0)
                        local bind = binds[i]

                        local yaw_base = Menu.FindVar("Aimbot", "Anti Aim", "Main", "Yaw Base"):Get()
                        local isFS = yaw_base == 5

                        local bind_name = bind:GetName()
                        bind_name = bind_name:gsub("Double Tap", "Double tap")
                        bind_name = bind_name:gsub("Fake Duck", "Duck peek assist")
                        bind_name = bind_name:gsub("Auto Peek", "Quick peek assist")
                        bind_name = isFS and bind_name:gsub("Yaw Base", "Freestanding") or bind_name:gsub("Yaw Base", "")

                        add_y = add_y + 13
                        if bind_name ~= "" then
                            if bind:IsActive() then
                                self.keybind_modules.vars.keybinds_alpha[i] = all_utils.easings.lerp(
                                    self.keybind_modules.vars.keybinds_alpha[i],
                                    255,
                                    GlobalVars.frametime * 8
                                )
                            else
                                self.keybind_modules.vars.keybinds_alpha[i] = all_utils.easings.lerp(
                                    self.keybind_modules.vars.keybinds_alpha[i],
                                    0,
                                    GlobalVars.frametime * 8
                                )
                            end

                            local render_binds = function(binds, name)
                                local bind_state = binds:GetMode() == 1 and "[holding]" or "[toggled]"
                                local bind_name = name

                                local bind_state_size = Render.CalcTextSize(bind_state, 11, font)
                                local bind_name_size = Render.CalcTextSize(bind_name, 11, font)

                                local smooth_alpha = math.floor(self.keybind_modules.vars.keybinds_alpha[i])
                                local width = math.floor(self.keybind_modules.vars.width)
                             
                                self.utils.draw_shadow(
                                    1,
                                    bind_name,
                                    x - 63, y + 7 + add_y,
                                    Color.RGBA(255, 255, 255, smooth_alpha),
                                    11, font,
                                    false, Color.RGBA(0, 0, 0, smooth_alpha - 50)
                                )

                                self.utils.draw_shadow(
                                    1,
                                    bind_state,
                                    x + (width - bind_state_size.x) - 5, y + 7 + add_y,
                                    Color.RGBA(255, 255, 255, smooth_alpha),
                                    11, font,
                                    false, Color.RGBA(0, 0, 0, smooth_alpha - 50)
                                )

                                local bind_width = bind_state_size.x + bind_name_size.x - 40
                                local length = 75
     
                                if bind_width > length then
                                    if bind_width > max_width then
                                        max_width = bind_width
                                    end
                                end
                            end
                            render_binds(bind, bind_name)
                        else
                            add_y = add_y - 13
                        end
                    end

                    self.keybind_modules.vars.width = math.max(75, max_width)
                    if not Cheat.IsMenuVisible() then
                        self.keybind_modules.vars.is_draggable = false
                    end

                    local width = math.floor(self.keybind_modules.vars.width)
                    if Cheat.IsMenuVisible() or #binds > 0 then
                        render_container(x, y, width, 18)
                        local mouse = Cheat.GetMousePos()

                        if Cheat.IsKeyDown(0x1) then
                            if not self.keybind_modules.vars.is_draggable then
                                if mouse.x >= x - 70 and mouse.y >= y and mouse.x <= x + width and mouse.y <= y + 18 then
                                    self.keybind_modules.vars.is_draggable = true
                                end
                            else
                                local x_pos = x + (mouse.x - self.keybind_modules.vars.cursor_last_pos.x)
                                local y_pos = y + (mouse.y - self.keybind_modules.vars.cursor_last_pos.y)

                                menu_database:set_value("Keybinds x-adding", math.floor(x_pos))
                                menu_database:set_value("Keybinds y-adding", math.floor(y_pos))
                            end
                        else
                            self.keybind_modules.vars.is_draggable = false
                        end

                        self.keybind_modules.vars.cursor_last_pos = mouse
                    end
                end
            end
        end,

        solus_watermark_modules = {
            vars = {
                width = 0,

                current_time = GlobalVars.curtime,
                current_fps = 0,

                is_draggable = false,
                cursor_last_pos = Vector2.new(0, 0)
            }
        },

        fps_counter = 0,
        solus_watermark = function(self)
            if menu_database.handler.elements["Enable watermark"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
             
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                if EngineClient.IsConnected() and my_index:IsAlive() then
                    local x = menu_database.handler.elements["Watermark x-adding"]
                    local y = menu_database.handler.elements["Watermark y-adding"]

                    local utils = {
                        get_ping = function()
                            local netchann_info = EngineClient.GetNetChannelInfo()
                            if not netchann_info then return "0" end
     
                            local latency = netchann_info:GetLatency(0)
                            return string.format("%1.f", math.max(0.0, latency) * 1000.0)
                        end,
     
                        get_current_time = function()
                            local seconds = math.floor(Utils.UnixTime() / 1000)
                            local hours = math.floor((seconds / 3600 + 3) % 24)
                            local minutes = math.floor(seconds / 60 % 60)

                            return string.format("%02d:%02d:%02d", hours, minutes, (seconds % 60))
                        end,

                        get_ticks = function()
                            return math.floor(1.0 / GlobalVars.interval_per_tick)
                        end,

                        get_fps = function()
                            local get_fps = function()
                                self.fps_counter = 0.9 * self.fps_counter + (1.0 - 0.9) * GlobalVars.absoluteframetime
                                return math.floor((1.0 / self.fps_counter) + 0.5)
                            end

                            local current_fps = get_fps()
                            if self.solus_watermark_modules.vars.current_time + 0.3 < GlobalVars.curtime then
                                self.solus_watermark_modules.vars.current_fps = current_fps
                                self.solus_watermark_modules.vars.current_time = GlobalVars.curtime
                            end
     
                            return self.solus_watermark_modules.vars.current_fps
                        end
                    }

                    local max_width = 0
                    local font = self.utils:get_font("Verdana", "11", "r")

                    local name = Cheat.GetCheatUserName()
                    local ticks = utils.get_ticks()
                    local fps = utils.get_fps()
                    local ping = utils.get_ping()
                    local time = utils.get_current_time()

                    local render_container = function()
                        local text = ("%s  %s fps  delay: %sms  %s tick  %s"):format(name, fps, ping, ticks, time)
                        local text_size = Render.CalcTextSize(text, 11, font)

                        local color = menu_database.handler.references["Watermark color"].reference:Get()
                        local width = self.solus_watermark_modules.vars.width
                        local start_position = x - 22

                        local render_rounded_line = function()
                            Render.BoxFilled(
                                Vector2.new(start_position, y - 8),
                                Vector2.new(x + width + 53, y + text_size.y - 2),
                                Color.RGBA(17, 17, 17, 85), 10
                            )

                            Render.BoxFilled(
                                Vector2.new(start_position + 4, y - 10),
                                Vector2.new(x + width + 47, y + text_size.y - 19),
                                color
                            )

                            Render.GradientBoxFilled(
                                Vector2.new(x + width + 50.8, y + text_size.y - 15),
                                Vector2.new(x + width + 52.4, y + text_size.y - 8),
                                color, Color.new(color.r, color.g, color.b, 1),
                                color, Color.new(color.r, color.g, color.b, 0.6)
                            )

                            Render.GradientBoxFilled(
                                Vector2.new(start_position, y + text_size.y - 15),
                                Vector2.new(start_position - 1.7, y + text_size.y - 8),
                                color, color,
                                color, Color.new(color.r, color.g, color.b, color.a - 0.4)
                            )

                            Render.Circle( -- right
                                Vector2.new(x + width + 47, y + text_size.y - 15.2),
                                5, 90, color, 2, 270, 370
                            )

                            Render.Circle( -- left
                                Vector2.new(start_position + 4, y + text_size.y - 15.2),
                                5, 90, color, 2, 270, 170
                            )
                        end

                        render_rounded_line()
                        self.utils.draw_shadow(
                            2,
                            "half",
                            x - 18, y - 6,
                            color,
                            11, font,
                            false, Color.RGBA(0, 0, 0, 205)
                        )

                        self.utils.draw_shadow(
                            2,
                            "-life [beta]",
                            x, y - 6,
                            Color.RGBA(255, 255, 255, 255),
                            11, font,
                            false, Color.RGBA(0, 0, 0, 205)
                        )

                        self.utils.draw_shadow(
                            2,
                            text,
                            x + 57, y - 6,
                            Color.RGBA(255, 255, 255, 255),
                            11, font,
                            false, Color.RGBA(0, 0, 0, 205)
                        )

                        local max_width = 0
                        local text_width = text_size.x + 10
         
                        if text_width > 5 then
                            if text_width > max_width then
                                max_width = text_width
                            end
                        end

                        self.solus_watermark_modules.vars.width = math.max(5, max_width)
                    end

                    render_container()
                    if Cheat.IsMenuVisible() then
                        local mouse = Cheat.GetMousePos()
                        local width = math.floor(self.solus_watermark_modules.vars.width)

                        if Cheat.IsKeyDown(0x1) then
                            if not self.solus_watermark_modules.vars.is_draggable then
                                if mouse.x >= x and mouse.y >= y - 10 and mouse.x <= x + width and mouse.y <= y + 11 then
                                    self.solus_watermark_modules.vars.is_draggable = true
                                end
                            else
                                local x_pos = x + (mouse.x - self.solus_watermark_modules.vars.cursor_last_pos.x)
                                local y_pos = y + (mouse.y - self.solus_watermark_modules.vars.cursor_last_pos.y)

                                menu_database:set_value("Watermark x-adding", math.floor(x_pos))
                                menu_database:set_value("Watermark y-adding", math.floor(y_pos))
                            end
                        else
                            self.solus_watermark_modules.vars.is_draggable = false
                        end
                        self.solus_watermark_modules.vars.cursor_last_pos = mouse
                    end
                else
                    self.solus_watermark_modules.vars.current_time = GlobalVars.curtime
                end
            else
                self.solus_watermark_modules.vars.current_time = GlobalVars.curtime
            end
        end,

        weapons_in_scope = function(self)
            if menu_database.handler.elements["Enable weapons in scope"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
             
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                if EngineClient.IsConnected() and my_index:IsAlive() then
                    local is_scoped = my_index:GetProp("m_bIsScoped")
                    if is_scoped then
                        if Menu.FindVar("Visuals", "View", "Thirdperson", "Enable Thirdperson"):GetBool() then
                            CVar.FindVar("fov_cs_debug"):SetInt(0)
                        else
                            CVar.FindVar("fov_cs_debug"):SetInt(90)
                        end
                    else
                        CVar.FindVar("fov_cs_debug"):SetInt(0)
                    end
                end
            else
                CVar.FindVar("fov_cs_debug"):SetInt(0)
            end
        end,

        damage_markers = {
            particles = {},
            hitmarkers = {},

            on_registered_shot = function(self, shot)
                if menu_database.handler.elements["Enable indicator list"] then
                    if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 8)) ~= 0 then
                        local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                        if not localplayer then return end
                     
                        local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                        if not my_index then return end

                        if EngineClient.IsConnected() and my_index:IsAlive() then
                            local index = EntityList.GetClientEntity(shot.target_index)
                            if not index then return end

                            local get_player = index:GetPlayer()
                            if not get_player then return end

                            if shot.reason == 0 then
                                local damage = shot.damage
                                if damage < 1 then return end

                                local bullet_position = get_player:GetHitboxCenter(shot.hitgroup)
                                if not bullet_position then
                                    bullet_position = get_player:GetRenderOrigin()
                                    bullet_position.y = bullet_position.y + 30
                                end
                             
                                bullet_position.x = (bullet_position.x - 10) + (math.random() * 20)
                                bullet_position.y = (bullet_position.y - 10) + (math.random() * 20)
                                bullet_position.z = (bullet_position.z - 15) + (math.random() * 30)

                                table.insert(self.particles, {
                                    position = bullet_position,
                                    timer = GlobalVars.tickcount + 80,
                                    damage = damage,
                                    is_killed = get_player:GetProp("m_iHealth") - damage <= 0 and true or false
                                })

                                table.insert(self.hitmarkers, {
                                    position = get_player:GetHitboxCenter(shot.hitgroup),
                                    timer = GlobalVars.realtime,
                                    alpha = 0,
                                })
                            end
                        end
                    end
                end
            end,

            move_position = function(self)
                if menu_database.handler.elements["Enable indicator list"] then
                    if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 8)) ~= 0 then
                        if #self.particles > 0 then
                            for k, information in pairs(self.particles) do
                                local delta = information.timer - GlobalVars.tickcount
                                if delta > 0 then
                                    information.position.z = information.position.z + 0.3
                                end
                            end
                        end
                    end
                end
            end,

            on_round_prestart = function(self, e)
                if e:GetName() ~= "round_prestart" then return end
                self.particles = {}
                self.hitmarkers = {}
            end,

            on_self_connected = function(self, e)
                if e:GetName() ~= "player_connect_full" then return end
                self.particles = {}
                self.hitmarkers = {}
            end,

            load_markers_modules = function(self, e)
                self:on_round_prestart(e)
                self:on_self_connected(e)
            end
        },

        draw_damage_markers = function(self)
            if menu_database.handler.elements["Enable indicator list"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
             
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                if EngineClient.IsConnected() and my_index:IsAlive() then
                    if bit.band(menu_database.handler.elements["Indicator list"], bit.lshift(1, 8)) ~= 0 then
                        if #self.damage_markers.particles > 0 then
                            for k, information in ipairs(self.damage_markers.particles) do
                                if information.position and information.timer and (information.damage and information.damage > 0) then
                                    local position = Render.WorldToScreen(information.position)
                                    local time = math.floor(information.timer - GlobalVars.tickcount)
                                 
                                    if time > 255 then time = 255 end
                                    if (not(time < 0)) then
                                        local damage = information.damage .. ""
                                        local color = information.is_killed and Color.RGBA(255, 236, 132, 255) or Color.RGBA(255, 255, 255, 255)
                                        color.a = time

                                        local font = self.utils:get_font("Tahoma", "10")
                                        self.utils.draw_shadow(
                                            1,
                                            damage,
                                            position.x, position.y,
                                            color,
                                            10, font,
                                            false, Color.RGBA(0, 0, 0, 255)
                                        )
                                    end
                                end
                            end
                        end
                     
                        if #self.damage_markers.hitmarkers > 0 then
                            for k, information in ipairs(self.damage_markers.hitmarkers) do
                                if information.position and information.timer and information.alpha then
                                    local position = Render.WorldToScreen(information.position)
                                    if information.timer + 4 < GlobalVars.realtime then
                                        information.alpha = math.max(0, information.alpha - 2)
                                    else
                                        information.alpha = math.min(information.alpha + 3, 255)
                                    end

                                    local alpha = math.floor(information.alpha)
                                    local current_size = menu_database.handler.elements["Hitmarker size"]
                                    local current_mode = menu_database.handler.elements["Hitmarker mode"]

                                    local current_color = menu_database.handler.references["Hitmarker color"].reference:Get()
                                    local color = Color.new(current_color.r, current_color.g, current_color.b, alpha / 255)

                                    if current_mode == 0 then
                                        Render.Line(Vector2.new(position.x, position.y - current_size), position, color)
                                        Render.Line(Vector2.new(position.x - current_size, position.y), position, color)
                                        Render.Line(Vector2.new(position.x, position.y + current_size), position, color)
                                        Render.Line(Vector2.new(position.x + current_size, position.y), position, color)
                                    else
                                        Render.Line(position, Vector2.new(position.x - current_size, position.y - current_size), color)
                                        Render.Line(position, Vector2.new(position.x - current_size, position.y + current_size), color)
                                        Render.Line(position, Vector2.new(position.x + current_size, position.y + current_size), color)
                                        Render.Line(position, Vector2.new(position.x + current_size, position.y - current_size), color)
                                    end

                                    if information.timer + 5 < GlobalVars.realtime then
                                        table.remove(self.damage_markers.hitmarkers, k)
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end,

        scope_cache = false,
        scope_time = 0,

        custom_scope = function(self)
            if menu_database.handler.elements["Enable custom scope"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
             
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                if EngineClient.IsConnected() and my_index:IsAlive() then
                    if not self.scope_cache then self.scope_cache = true end
                    local is_scoped = my_index:GetProp("m_bIsScoped")

                    if is_scoped then
                        Menu.FindVar("Visuals", "View", "Camera", "Remove Scope"):SetInt(2)

                        local initial_position = menu_database.handler.elements["Custom scope initial position"]
                        local offset = menu_database.handler.elements["Custom scope offset"]

                        if self.scope_time < initial_position / 2 + offset then
                            self.scope_time = self.scope_time + 100
                        else
                            self.scope_time = initial_position / 2 + offset
                        end

                        local color = menu_database.handler.references["Enable custom scope"].reference:GetColor()
                        local col = Color.new(color.r, color.g, color.b, 0.05)
                        local first_col = (function(a, b) if initial_position <= 30 then return b else return a end end)(color, col)
                        local second_col = (function(a, b) if initial_position <= 30 then return a else return b end end)(color, col)
                        local alpha_time = self.scope_time
                     
                        Render.GradientBoxFilled(
                            Vector2.new(screen_size.x / 2 - 0.1, screen_size.y / 2 - math.min(initial_position, alpha_time)),
                            Vector2.new(
                                screen_size.x / 2 + 1,
                                screen_size.y / 2 - math.min(initial_position, alpha_time) - math.min(offset, alpha_time)
                            ),
                            second_col, second_col,
                            first_col, first_col
                        ) -- upper

                        Render.GradientBoxFilled(
                            Vector2.new(screen_size.x / 2 - math.min(initial_position, alpha_time), screen_size.y / 2 - 0.1),
                            Vector2.new(
                                screen_size.x / 2 - math.min(initial_position, alpha_time) - math.min(offset, alpha_time),
                                screen_size.y / 2 + 1
                            ),
                            second_col, first_col,
                            second_col, first_col
                        ) -- left

                        Render.GradientBoxFilled(
                            Vector2.new(screen_size.x / 2 - 0.1, screen_size.y / 2 + math.min(initial_position, alpha_time)),
                            Vector2.new(
                                screen_size.x / 2 + 1,
                                screen_size.y / 2  + math.min(initial_position, alpha_time) + math.min(offset, alpha_time)
                            ),
                            second_col, second_col,
                            first_col, first_col
                        ) -- down

                        Render.GradientBoxFilled(
                            Vector2.new(screen_size.x / 2 + math.min(initial_position, alpha_time), screen_size.y / 2 - 0.1),
                            Vector2.new(
                                screen_size.x / 2  + math.min(initial_position, alpha_time) + math.min(offset, alpha_time),
                                screen_size.y / 2 + 1
                            ),
                            second_col, first_col,
                            second_col, first_col
                        ) -- right
                    else
                        if self.scope_time > 0 then
                            self.scope_time = self.scope_time - 100
                        else
                            self.scope_time = 0
                        end
                    end
                else
                    if self.scope_cache then
                        Menu.FindVar("Visuals", "View", "Camera", "Remove Scope"):SetInt(1)
                        self.scope_cache = false
                    end
                end
            else
                if self.scope_cache then
                    Menu.FindVar("Visuals", "View", "Camera", "Remove Scope"):SetInt(1)
                    self.scope_cache = false
                end
            end
        end,

        peek_arrows = function(self)
            if menu_database.handler.elements["Enable peek arrows"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
             
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                if EngineClient.IsConnected() and my_index:IsAlive() then
                    local font = self.utils:get_font("Verdana", "21", "b")
                    local color = menu_database.handler.references["Enable peek arrows"].reference:GetColor()
                    local inverted = AntiAim.GetInverterState()

                    self.utils.draw_shadow(
                        3,
                        ">",
                        screen_size.x / 2 + 50, screen_size.y / 2 - 12,
                        inverted and color or Color.RGBA(255, 255, 255, 255),
                        21, font,
                        false, Color.RGBA(0, 0, 0, 170)
                    )

                    self.utils.draw_shadow(
                        3,
                        "<",
                        screen_size.x / 2 - 65, screen_size.y / 2 - 12,
                        not inverted and color or Color.RGBA(255, 255, 255, 255),
                        21, font,
                        false, Color.RGBA(0, 0, 0, 170)
                    )
                end
            end
        end,

        load_indicators = function(self)
            self:under_crosshair()
            self:watermark()
            self:minimum_damage()
            self:skeet_autopeek()
            self:side_skeet_indicators()
            self:thirdperson_animations()
            self:crosshair_hitmarker()
            self:on_script_start()
            self:hitlogs()
            self:notifications()
            self:keybinds()
            self:solus_watermark()
            self:weapons_in_scope()
            self.damage_markers:move_position()
            self:draw_damage_markers()
            self:custom_scope()
            self:peek_arrows()
        end
    }
    -- @endregion

    -- @region: all miscellaneous functions
    local miscellaneous_functions = {
        trashtalk = function(e)
            if menu_database.handler.elements["Enable trashtalk"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
             
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                if EngineClient.IsConnected() then
                    if e:GetName() ~= "player_death" then return end
             
                    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

                    local phrases = {
                        "Найс дед скачай конфиг от алексбомбера",
                        "Made your mom proud,at payhip.com/Ivanovo", "Прости shoppy.gg/@Ivanovo",
                        "Ничего страшного ты  хорошо играешь",
                        "Мне друг (витма) (бигнейм) сказал в таких случаях 1 писать но я добрый так что не буду",
                        "Блин друг прости пожалуйста не увидел",
                        "Я с конфигом от кеннеди",
                        "Была бы газелька с салом выиграл бы",
                        "Ты все равно лучше меня не расстраивайся",
                        "Опять ты, прости я без ников убил",
                        "Нифига смачный бектрек", "Был бы пелучкорд тапнул бы",
                        "Сори что убил я просто отвернулся и не увидел",
                        "laff u suck AHAHAHAHAAH",
                        "Посаны а как вам микрофон яспер мо о глод у фипа такой вроде",
                        "Какой у тебя мейн Ник ? Мне сказали это важна чтоб медия сделать, ты витма ?",
                        "by Kennedy hvh boss", "спать покемон ушастый"
                    }

                    local get_phrase = phrases[Utils.RandomInt(1, #phrases)]:gsub('\"', '')
                    EngineClient.ExecuteClientCmd((' say "%s"'):format(get_phrase))
                end
            end
        end,

        hitsounds = function(self, e)
            if menu_database.handler.elements["Enable hitsounds"] then
                local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
                if not localplayer then return end
             
                local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
                if not my_index then return end

                if EngineClient.IsConnected() then
                    if e:GetName() ~= "player_hurt" then return end

                    local attacker = EntityList.GetPlayerForUserID(e:GetInt("attacker"))
                    if attacker == my_index then
                        local file_name = menu_database.handler.references["Hitsound"].reference:Get()
                        local path = ("playvol %s %s"):format(file_name, "0.8")

                        EngineClient.ExecuteClientCmd(path)
                    end
                end
            end
        end
    }
    -- @endregion

    -- @region: animation breaker
    local hooked_function = nil
    local is_jumping = false

    local updateCSA = function(thisptr, edx)
        local is_localplayer = ffi.cast("uintptr_t", thisptr) == get_entity_address(EngineClient.GetLocalPlayer())
        hooked_function(thisptr, edx)
     
        if is_localplayer then
            if menu_database.handler.elements["Enable anim breakers"] then
                local addons = menu_database.handler.elements["Anim breakers"]
                if bit.band(addons, bit.lshift(1, 0)) ~= 0 then
                    local static_legs_value = menu_database.handler.elements["Static legs timer"]
                    ffi.cast("float*", ffi.cast("uintptr_t", thisptr) + 10104)[6] = static_legs_value
                end

                if bit.band(addons, bit.lshift(1, 1)) ~= 0 then
                    local leg_breaker_value = menu_database.handler.elements["Leg fucker type"]
                    ffi.cast("float*", ffi.cast("uintptr_t", thisptr) + 10104)[0] = leg_breaker_value == 0 and 1 or (
                        GlobalVars.tickcount % 4 == 0 and 0.5 or 0
                    )
                end

                if bit.band(addons, bit.lshift(1, 2)) ~= 0 then
                    if ffi.cast("CCSGOPlayerAnimationState_534535_t**", ffi.cast("uintptr_t", thisptr) + 0x9960)[0].bHitGroundAnimation then
                        if not is_jumping then
                            ffi.cast("float*", ffi.cast("uintptr_t", thisptr) + 10104)[12] = 0.5
                        end
                    end
                end
            end
        end
    end

    local breaker_functions = {
        on_pre_prediction = function(cmd)
            is_jumping = bit.band(cmd.buttons, bit.lshift(1, 1)) ~= 0
        end,

        on_create_move = function()
            local local_player = EntityList.GetLocalPlayer()
            if not local_player then return end
         
            local local_player_ptr = get_entity_address(local_player:EntIndex())
            if not local_player_ptr or hooked_function then return end

            local C_CSPLAYER = vmt_hook.new(local_player_ptr)
            hooked_function = C_CSPLAYER.hookMethod("void(__fastcall*)(void*, void*)", updateCSA, 224)
        end,

        on_destroy = function()
            for i, unHookFunc in ipairs(vmt_hook.hooks) do
                unHookFunc()
            end
     
            for i, free in ipairs(buff.free) do
                free()
            end
        end,

        on_prediction = function(cmd)
            local localplayer = EntityList.GetClientEntity(EngineClient.GetLocalPlayer())
            if not localplayer then return end
         
            local my_index = EntityList.GetClientEntity(EngineClient.GetLocalPlayer()):GetPlayer()
            if not my_index then return end

            if EngineClient.IsConnected() and my_index:IsAlive() then
                if menu_database.handler.elements["Enable anim breakers"] then
                    local addons = menu_database.handler.elements["Anim breakers"]
                    if bit.band(addons, bit.lshift(1, 1)) ~= 0 then
                        local directory = Menu.FindVar("Aimbot", "Anti Aim", "Misc", "Leg Movement")
                        directory:Set(cmd.command_number % 3 == 0 and 0 or 1)
                    end
                end
            end
        end
    }
    -- @endregion

    -- @region: all callbacks
    local all_callbacks = {
        on_prediction = function(cmd)
            ragebot_functions:load_ragebot_functions(cmd)
            anti_aimbotting_functions:load_anti_aimbotting_functions(cmd)
            breaker_functions.on_prediction(cmd)
        end,

        on_events = function(e)
            ragebot_functions.dormant_aimbot:reset_data(e)
            anti_aimbotting_functions.anti_bruteforce:run_work(e)
            anti_aimbotting_functions.bombsite_fix:check_bombsite(e)

            visual_functions.watermark_modules:count_hurt_shots(e)
            visual_functions.hitlog_modules:get_addictional_hits(e)
            visual_functions.damage_markers:load_markers_modules(e)
            visual_functions.skeet_modules.vars.bomb_info:load_bomb_modules(e)

            miscellaneous_functions.trashtalk(e)
            miscellaneous_functions:hitsounds(e)
        end,

        on_draw = function()
            visual_functions:load_indicators()
            anti_aimbotting_functions:run_main_anti_aim()
        end,

        on_pre_prediction = function(cmd)
            breaker_functions.on_pre_prediction(cmd)
            anti_aimbotting_functions.roll_angles:on_pre_prediction(cmd)
        end,

        on_registered_shot = function(shot)
            visual_functions.hitmarker_modules:on_registered_shot(shot)
            visual_functions.hitlog_modules:on_registered_shot(shot)
            visual_functions:execute_sauron_shots(shot)
            visual_functions.damage_markers:on_registered_shot(shot)
            visual_functions.skeet_modules.vars.shot_stats:count_shots(shot)
        end,

        on_destroy = function()
            breaker_functions.on_destroy()
        end,

        on_create_move = function(cmd)
            breaker_functions.on_create_move()
            anti_aimbotting_functions.roll_angles:on_createmove(cmd)
        end,

        load_callbacks = function(self)
            Cheat.RegisterCallback("prediction", self.on_prediction)
            Cheat.RegisterCallback("createmove", self.on_create_move)
            Cheat.RegisterCallback("pre_prediction", self.on_pre_prediction)
            Cheat.RegisterCallback("events", self.on_events)
            Cheat.RegisterCallback("draw", self.on_draw)
            Cheat.RegisterCallback("registered_shot", self.on_registered_shot)
            Cheat.RegisterCallback("destroy", self.on_destroy)
        end
    }

    all_callbacks:load_callbacks()
    -- @endregion
end

--[[
    if __name__ == "__main__":
        __main__
    O_O O_O O_O O_O O_O O_O O_O O_O
--]]

__main__()
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
1646234872560.png
1646234893440.png

у тебя какие-то вопросы? =D
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Назад
Сверху Снизу