Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Исходник OMATH - Математическая библиотека для создания читов CS2

Changelog v3.6.2 → v4.4.0
Пожалуйста, авторизуйтесь для просмотра ссылки.
v4.4.0 (2025-11-17)
Добавлен алгоритм EPA, улучшены GJK/EPA для коллизий, обновлена документация.

v4.3.0 (2025-11-09)
macOS CI, пресеты CMake для vcpkg, повышена точность screen-to-world, добавлен пример PE signature scanner, реализован алгоритм GJK.

v4.2.0 (2025-11-01)
Крупное обновление документации: гайды, туториалы, описания игровых math-модулей.

v4.1.0 (2025-10-30)
Чистка: удалены лишние опции и скобки.

v4.0.1 (2025-10-27)
Принудительно отключены тесты.

v4.0 (2025-10-27)
Интеграция с vcpkg.

v3.10.1 (2025-10-22)
Небольшие исправления.

v3.10 (2025-10-22)
Добавлена поддержка Frostbite.

v3.9.4 (2025-10-21)
Хеши для Vector2/3/4, фикс диапазона pattern scan, правки NDC.

v3.9.3 (2025-10-13)
Убраны Windows-зависимости в pattern scanning.

v3.9.2 (2025-10-12)
Скрыты PE defs, улучшен интерфейс PE-сканера.

v3.9.1 (2025-10-10)
Не используется __fastcall на не-Windows платформах.

v3.9.0 (2025-10-09)
Классы для реверс-инжиниринга, улучшения pattern scanning и corner-case тесты, обновлён PE header для x64.

v3.8.2 (2025-10-03)
Поддержка AVX2 detection в CMake.

v3.8.1 (2025-09-25)
Фикс “projectile prediction look-at”, улучшения форматирования.

v3.8.0 (2025-09-20)
Багфикс для look-at.

v3.7.1 (2025-09-18)
Технические исправления.

v3.7.0 (2025-09-18)
Ускорено умножение матриц, рефактор матриц, добавлена папка performance, фикс имени std::fmodf. Новый контрибьютор: @BillyONeal.
Тут это frostbite и поддержку Cryengine завезли + еще пребилды есть для всех ОС если нужно.
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Рад представить библиотеку omath ('оч оригинально'), которую я разработал, выделив её из моих пет-проектов по созданию читов для Apex Legends и CS2. Столкнувшись с необходимостью производительных и точных математических вычислений, я решил вынести все ключевые инструменты в отдельную библиотеку, которая теперь доступна всем.

Вкратце что с ней можно делать:
  1. Матричные и векторные операции. Библиотека поддерживает базовые и продвинутые вычисления, включая работу с матрицами 4x4/NxM, необходимыми для 3D-графики и трансформаций.
  2. Пайплайн проекции мировых координат на экран. Это одна из уникальных функций, которая позволяет проецировать мировые координаты в экранные без необходимости извлекать view projection matrix из самой игры. Это экономит время и упрощает разработку ESP.
  3. Расчёт траекторий снарядов. Встроенный движок позволяет точно рассчитывать траектории пуль и снарядов, что особенно полезно при создании аимботов и других продвинутых функций читов:
    Пожалуйста, авторизуйтесь для просмотра ссылки.
    .
  4. Высокая производительность. Библиотека оптимизирована для быстрого выполнения операций (constexpr реализован для кучи всего, хоть нейросети во время компиляции обучай), что делает её идеальной для игр/читов, где каждая миллисекунда имеет значение.
Примечание!
omath подходит как для создания читов, так и для общего использования в игровых движках и 3D-приложениях. Поддерживает все ключевые вычисления, которые могут понадобиться разработчикам для реализации проекций, аимботов и тд, так же есть поддержка Linux и компиляторов GCC/CLANG (осуждаю MSVC). Так же библа перешла с GPL V3 на MIT поэтому можете исходники как угодно вертеть.

Если вы разрабатываете читы или приложения для игр, omath сэкономит ваше время и нервные клетки, позволяя сосредоточиться на создании логики чита чем на поиски матриц проекции и написания еще одного класса Vec2-4. Еще если нашли какой то баг или хотите добавить улучшение то напиши под эту тему либо заведите issue на гх.

GitHub:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Привет. Я владелец одного из проектов по читам. Есть возможность внедрить оматх в наш проект? Кодовая база: Java
 
Вышло обновление теперь можно удобно верстать ESP используя компонент omath::hud

Пример:
Expand Collapse Copy
omath::hud::EntityOverlay({m_entity_x, m_entity_top_y}, {m_entity_x, m_entity_bottom_y},
                                  std::make_shared<omath::hud::ImguiHudRenderer>())
                .contents(
                        when(m_show_box, Box{m_box_color, m_box_fill, m_box_thickness}),
                        when(m_show_cornered_box, CorneredBox{omath::Color::from_rgba(255, 0, 255, 255), m_box_fill,
                                                              m_corner_ratio, m_box_thickness}),
                        when(m_show_dashed_box, DashedBox{m_dash_color, m_dash_len, m_dash_gap, m_dash_thickness}),

                        RightSide
                        {
                                when(m_show_right_bar, bar),
                                when(m_show_right_dashed_bar, dbar),
                                when(m_show_right_labels,
                                     Label{{0.f, 1.f, 0.f, 1.f}, m_label_offset, m_outlined, "Health: 100/100"}),
                                when(m_show_right_labels,
                                     Label{{1.f, 0.f, 0.f, 1.f}, m_label_offset, m_outlined, "Shield: 125/125"}),
                                when(m_show_right_labels,
                                     Label{{1.f, 0.f, 1.f, 1.f}, m_label_offset, m_outlined, "*LOCKED*"}),
                        },
                        LeftSide
                        {
                                when(m_show_left_bar, bar),
                                when(m_show_left_dashed_bar, dbar),
                                when(m_show_left_labels, Label{omath::Color::from_rgba(255, 128, 0, 255),
                                                               m_label_offset, m_outlined, "Armor: 75"}),
                                when(m_show_left_labels, Label{omath::Color::from_rgba(0, 200, 255, 255),
                                                               m_label_offset, m_outlined, "Level: 42"}),
                        },
                        TopSide
                        {
                                when(m_show_top_bar, bar),
                                when(m_show_top_dashed_bar, dbar),
                                when(m_show_centered_top, Centered{Label{omath::Color::from_rgba(0, 255, 255, 255),
                                                                         m_label_offset, m_outlined, "*VISIBLE*"}}),
                                when(m_show_top_labels, Label{omath::Color::from_rgba(255, 255, 0, 255), m_label_offset,
                                                              m_outlined, "*SCOPED*"}),
                                when(m_show_top_labels, Label{omath::Color::from_rgba(255, 0, 0, 255), m_label_offset,
                                                              m_outlined, "*BLEEDING*"}),
                        },
                        BottomSide
                        {
                                when(m_show_bottom_bar, bar),
                                when(m_show_bottom_dashed_bar, dbar),
                                when(m_show_centered_bottom, Centered{Label{omath::Color::from_rgba(255, 255, 255, 255),
                                                                            m_label_offset, m_outlined, "PlayerName"}}),
                                when(m_show_bottom_labels, Label{omath::Color::from_rgba(200, 200, 0, 255),
                                                                 m_label_offset, m_outlined, "42m"}),
                        },
                        when(m_show_skeleton, Skeleton{m_skel_color, m_skel_thickness}),
                        when(m_show_snap, SnapLine{{vp->Size.x / 2.f, vp->Size.y}, m_snap_color, m_snap_width}));

Получаем приятный результат:)
1773593508609.png
 
Обновление omath v5.2.0
Что нового?
  1. Исправлено множество багов разной степени тяжести.
  2. Улучшена поддержка UE4/5, теперь не нужно кастить типы из double во float чтобы использовать omath в читах на UE.
  3. Добавлены статические методы для класса камеры чтобы вытащить: fov, view angles, позицию камеры прямиком из матрицы вида.
  4. Добавлена опциональная фича для автоматического хука dx9/dx11/dx12 для этого при установке библиотеки нужен флаг hooking например
    vcpkg install orange-math[hooking].
    Пример для DirectX9:
    DirectX9 hook:
    Expand Collapse Copy
    #include <Windows.h>#include <d3d9.h>
    #include <imgui.h>
    #include <imgui_impl_dx9.h>
    #include <imgui_impl_win32.h>
    
    #include "omath/hooks/hooks_manager.hpp"
    
    extern IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND, UINT, WPARAM, LPARAM);
    
    namespace
    {
        bool g_initialized    = false;
        bool g_init_attempted = false;
    
        void init(IDirect3DDevice9* device)
        {
            g_init_attempted = true;
    
            D3DDEVICE_CREATION_PARAMETERS params{};
            if (FAILED(device->GetCreationParameters(&params)))
                return;
    
            ImGui::CreateContext();
            ImGui::StyleColorsDark();
            ImGui::GetIO().IniFilename = nullptr;
            ImGui::GetIO().LogFilename = nullptr;
            ImGui::GetIO().ConfigFlags |= ImGuiConfigFlags_NoMouseCursorChange;
    
            ImGui_ImplWin32_Init(params.hFocusWindow);
            ImGui_ImplDX9_Init(device);
    
            auto& mgr = omath::hooks::HooksManager::get();
            mgr.set_on_wnd_proc([](HWND h, UINT msg, WPARAM wp, LPARAM lp) -> std::optional<LRESULT> {
                if (ImGui_ImplWin32_WndProcHandler(h, msg, wp, lp))
                    return 0;
                return std::nullopt;
            });
            mgr.hook_wnd_proc(params.hFocusWindow);
    
            g_initialized = true;
        }
    
        void on_present(IDirect3DDevice9* device, const RECT*, const RECT*, HWND, const RGNDATA*)
        {
            if (!g_initialized)
            {
                if (!g_init_attempted)
                    init(device);
                return;
            }
    
            ImGui_ImplDX9_NewFrame();
            ImGui_ImplWin32_NewFrame();
            ImGui::NewFrame();
    
            ImGui::SetNextWindowSize({300.f, 80.f}, ImGuiCond_Once);
            ImGui::SetNextWindowPos({10.f, 10.f}, ImGuiCond_Once);
            ImGui::Begin("omath | DX9 hook");
            ImGui::Text("Hook active");
            ImGui::Text("FPS: %.1f", ImGui::GetIO().Framerate);
            ImGui::End();
    
            ImGui::EndFrame();
            ImGui::Render();
            ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());
        }
    
        void on_reset(IDirect3DDevice9*, D3DPRESENT_PARAMETERS*)
        {
            if (g_initialized)
                ImGui_ImplDX9_InvalidateDeviceObjects();
        }
    } // namespace
    
    BOOL WINAPI DllMain(HINSTANCE h_instance, DWORD reason, LPVOID)
    {
        if (reason == DLL_PROCESS_ATTACH)
        {
            DisableThreadLibraryCalls(h_instance);
            CreateThread(nullptr, 0, [](LPVOID) -> DWORD
            {
                while (!GetModuleHandle("d3d9.dll"))
                    Sleep(100);
    
                auto& mgr = omath::hooks::HooksManager::get();
                mgr.set_on_dx9_present(on_present);
                mgr.set_on_dx9_reset(on_reset);
                mgr.hook_dx9();
                return 0;
            }, nullptr, 0, nullptr);
        }
        else if (reason == DLL_PROCESS_DETACH)
        {
            auto& mgr = omath::hooks::HooksManager::get();
            mgr.unhook_wnd_proc();
            mgr.unhook_dx9();
    
            if (g_initialized)
            {
                ImGui_ImplDX9_Shutdown();
                ImGui_ImplWin32_Shutdown();
                ImGui::DestroyContext();
            }
        }
        return TRUE;
    }
  5. Удалены магические числа для функций создания матриц проекции для движков InfinityWard Engine, Source Engine и Unreal Engine.
    Source Engine:
    Expand Collapse Copy
    Mat4X4 calc_perspective_projection_matrix(const float field_of_view, const float aspect_ratio, const float near,                                              const float far, const NDCDepthRange ndc_depth_range) noexcept
        {
            // Source (inherited from Quake) stores FOV as horizontal FOV at a 4:3
            // reference aspect. Convert to true vertical FOV, then delegate to the
            // standard vertical-FOV left-handed builder with the caller's actual
            // aspect ratio.
            //   vfov = 2 · atan( tan(hfov_4:3 / 2) / (4/3) )
            constexpr float k_source_reference_aspect = 4.f / 3.f;
            const auto vertical_fov = angles::horizontal_fov_to_vertical(field_of_view, k_source_reference_aspect);
    
            if (ndc_depth_range == NDCDepthRange::ZERO_TO_ONE)
                return mat_perspective_left_handed<
                        float, MatStoreType::ROW_MAJOR, NDCDepthRange::ZERO_TO_ONE>(
                        vertical_fov, aspect_ratio, near, far);
            if (ndc_depth_range == NDCDepthRange::NEGATIVE_ONE_TO_ONE)
                return mat_perspective_left_handed<
                        float, MatStoreType::ROW_MAJOR, NDCDepthRange::NEGATIVE_ONE_TO_ONE>(
                        vertical_fov, aspect_ratio, near, far);
            std::unreachable();
        }
    Unreal Engine:
    Expand Collapse Copy
    Mat4X4 calc_perspective_projection_matrix(const double field_of_view, const double aspect_ratio, const double near,                                              const double far, const NDCDepthRange ndc_depth_range) noexcept
        {
            // UE stores horizontal FOV in FMinimalViewInfo — use the left-handed
            // horizontal-FOV builder directly.
            if (ndc_depth_range == NDCDepthRange::ZERO_TO_ONE)
                return mat_perspective_left_handed_horizontal_fov<
                        double, MatStoreType::ROW_MAJOR, NDCDepthRange::ZERO_TO_ONE>(
                        field_of_view, aspect_ratio, near, far);
            if (ndc_depth_range == NDCDepthRange::NEGATIVE_ONE_TO_ONE)
                return mat_perspective_left_handed_horizontal_fov<
                        double, MatStoreType::ROW_MAJOR, NDCDepthRange::NEGATIVE_ONE_TO_ONE>(
                        field_of_view, aspect_ratio, near, far);
            std::unreachable();
        }
  6. Добавлена функция для создания матрицы проекции используя горизонтальный угол обзора вместо вертикального.
  7. Так же добавлен тайп кастинг для Vector2, Vector3,Vector3.
Пребилд без доп функционала под все ос и архитекуры доступен по ссылке:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Протестировано в Dead By Daylight (UE5) и Grounded (UE4)
1778030780142.png

1778030757313.png
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обновление omath v5.2.0
Что нового?
  1. Исправлено множество багов разной степени тяжести.
  2. Улучшена поддержка UE4/5, теперь не нужно кастить типы из double во float чтобы использовать omath в читах на UE.
  3. Добавлены статические методы для класса камеры чтобы вытащить: fov, view angles, позицию камеры прямиком из матрицы вида.
  4. Добавлена опциональная фича для автоматического хука dx9/dx11/dx12 для этого при установке библиотеки нужен флаг hooking например
    vcpkg install orange-math[hooking].
    Пример для DirectX9:
    DirectX9 hook:
    Expand Collapse Copy
    #include <Windows.h>#include <d3d9.h>
    #include <imgui.h>
    #include <imgui_impl_dx9.h>
    #include <imgui_impl_win32.h>
    
    #include "omath/hooks/hooks_manager.hpp"
    
    extern IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND, UINT, WPARAM, LPARAM);
    
    namespace
    {
        bool g_initialized    = false;
        bool g_init_attempted = false;
    
        void init(IDirect3DDevice9* device)
        {
            g_init_attempted = true;
    
            D3DDEVICE_CREATION_PARAMETERS params{};
            if (FAILED(device->GetCreationParameters(&params)))
                return;
    
            ImGui::CreateContext();
            ImGui::StyleColorsDark();
            ImGui::GetIO().IniFilename = nullptr;
            ImGui::GetIO().LogFilename = nullptr;
            ImGui::GetIO().ConfigFlags |= ImGuiConfigFlags_NoMouseCursorChange;
    
            ImGui_ImplWin32_Init(params.hFocusWindow);
            ImGui_ImplDX9_Init(device);
    
            auto& mgr = omath::hooks::HooksManager::get();
            mgr.set_on_wnd_proc([](HWND h, UINT msg, WPARAM wp, LPARAM lp) -> std::optional<LRESULT> {
                if (ImGui_ImplWin32_WndProcHandler(h, msg, wp, lp))
                    return 0;
                return std::nullopt;
            });
            mgr.hook_wnd_proc(params.hFocusWindow);
    
            g_initialized = true;
        }
    
        void on_present(IDirect3DDevice9* device, const RECT*, const RECT*, HWND, const RGNDATA*)
        {
            if (!g_initialized)
            {
                if (!g_init_attempted)
                    init(device);
                return;
            }
    
            ImGui_ImplDX9_NewFrame();
            ImGui_ImplWin32_NewFrame();
            ImGui::NewFrame();
    
            ImGui::SetNextWindowSize({300.f, 80.f}, ImGuiCond_Once);
            ImGui::SetNextWindowPos({10.f, 10.f}, ImGuiCond_Once);
            ImGui::Begin("omath | DX9 hook");
            ImGui::Text("Hook active");
            ImGui::Text("FPS: %.1f", ImGui::GetIO().Framerate);
            ImGui::End();
    
            ImGui::EndFrame();
            ImGui::Render();
            ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData());
        }
    
        void on_reset(IDirect3DDevice9*, D3DPRESENT_PARAMETERS*)
        {
            if (g_initialized)
                ImGui_ImplDX9_InvalidateDeviceObjects();
        }
    } // namespace
    
    BOOL WINAPI DllMain(HINSTANCE h_instance, DWORD reason, LPVOID)
    {
        if (reason == DLL_PROCESS_ATTACH)
        {
            DisableThreadLibraryCalls(h_instance);
            CreateThread(nullptr, 0, [](LPVOID) -> DWORD
            {
                while (!GetModuleHandle("d3d9.dll"))
                    Sleep(100);
    
                auto& mgr = omath::hooks::HooksManager::get();
                mgr.set_on_dx9_present(on_present);
                mgr.set_on_dx9_reset(on_reset);
                mgr.hook_dx9();
                return 0;
            }, nullptr, 0, nullptr);
        }
        else if (reason == DLL_PROCESS_DETACH)
        {
            auto& mgr = omath::hooks::HooksManager::get();
            mgr.unhook_wnd_proc();
            mgr.unhook_dx9();
    
            if (g_initialized)
            {
                ImGui_ImplDX9_Shutdown();
                ImGui_ImplWin32_Shutdown();
                ImGui::DestroyContext();
            }
        }
        return TRUE;
    }
  5. Удалены магические числа для функций создания матриц проекции для движков InfinityWard Engine, Source Engine и Unreal Engine.
    Source Engine:
    Expand Collapse Copy
    Mat4X4 calc_perspective_projection_matrix(const float field_of_view, const float aspect_ratio, const float near,                                              const float far, const NDCDepthRange ndc_depth_range) noexcept
        {
            // Source (inherited from Quake) stores FOV as horizontal FOV at a 4:3
            // reference aspect. Convert to true vertical FOV, then delegate to the
            // standard vertical-FOV left-handed builder with the caller's actual
            // aspect ratio.
            //   vfov = 2 · atan( tan(hfov_4:3 / 2) / (4/3) )
            constexpr float k_source_reference_aspect = 4.f / 3.f;
            const auto vertical_fov = angles::horizontal_fov_to_vertical(field_of_view, k_source_reference_aspect);
    
            if (ndc_depth_range == NDCDepthRange::ZERO_TO_ONE)
                return mat_perspective_left_handed<
                        float, MatStoreType::ROW_MAJOR, NDCDepthRange::ZERO_TO_ONE>(
                        vertical_fov, aspect_ratio, near, far);
            if (ndc_depth_range == NDCDepthRange::NEGATIVE_ONE_TO_ONE)
                return mat_perspective_left_handed<
                        float, MatStoreType::ROW_MAJOR, NDCDepthRange::NEGATIVE_ONE_TO_ONE>(
                        vertical_fov, aspect_ratio, near, far);
            std::unreachable();
        }
    Unreal Engine:
    Expand Collapse Copy
    Mat4X4 calc_perspective_projection_matrix(const double field_of_view, const double aspect_ratio, const double near,                                              const double far, const NDCDepthRange ndc_depth_range) noexcept
        {
            // UE stores horizontal FOV in FMinimalViewInfo — use the left-handed
            // horizontal-FOV builder directly.
            if (ndc_depth_range == NDCDepthRange::ZERO_TO_ONE)
                return mat_perspective_left_handed_horizontal_fov<
                        double, MatStoreType::ROW_MAJOR, NDCDepthRange::ZERO_TO_ONE>(
                        field_of_view, aspect_ratio, near, far);
            if (ndc_depth_range == NDCDepthRange::NEGATIVE_ONE_TO_ONE)
                return mat_perspective_left_handed_horizontal_fov<
                        double, MatStoreType::ROW_MAJOR, NDCDepthRange::NEGATIVE_ONE_TO_ONE>(
                        field_of_view, aspect_ratio, near, far);
            std::unreachable();
        }
  6. Добавлена функция для создания матрицы проекции используя горизонтальный угол обзора вместо вертикального.
  7. Так же добавлен тайп кастинг для Vector2, Vector3,Vector3.
Пребилд без доп функционала под все ос и архитекуры доступен по ссылке:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Протестировано в Dead By Daylight (UE5) и Grounded (UE4)
Посмотреть вложение 335160
Посмотреть вложение 335159
Приветствую. Планируется поддержка софтов на кодовой базе языка Java? У нас крупный проект.
 
Приветствую. Планируется поддержка софтов на кодовой базе языка Java? У нас крупный проект.
6258.jpg

6258.jpg

Давай сначала с хайдом на форуме разберёшься. Потом уже крупные проекты
 
Приветствую. Планируется поддержка софтов на кодовой базе языка Java? У нас крупный проект.
Там ZLIB лицензия. В чем проблема использовать? Сам возьми и добавь поддержку под Java

А, его уже забанили, /del
 
Начал вкатываться в OMath - сначала было немного непривычно после рукописных костылей и паст, но быстро втянулся. Интерфейс удобный, всё работает чётко, а главное - своя, отечественная платформа. Приятно осознавать, что можно не зависеть от иностранных паст. Советую попробовать! (Текст не редактировать, информацию в скобках удалить. Оплата по ранее указанными реквизитам в течение 15 минут после публикации)
что ты мать его несешь?
 
Назад
Сверху Снизу